- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试运行我学习的 Linux 驱动程序书籍中的示例程序。
但它崩溃了,我不知道为什么。
是否有可能控制 DEVICE_ATTR 宏?因为可能存在问题。
这是我的代码:
#include <linux/fs.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#define DRIVER_MAJOR 240
static struct file_operations fops;
static DECLARE_COMPLETION( dev_obj_is_free );
static int frequenz;
static void mydevice_release( struct device *dev )
struct platform_device mydevice = {
.name = "MyDevice",
.id = 0,
.dev = {
.release = mydevice_release,
}
};
static struct device_driver mydriver = {
.name = "MyDevice",
.bus = &platform_bus_type,
};
static ssize_t read_freq( struct device *dev, struct device_attribute *attr,
char *buf )
{
snprintf(buf, 256, "frequenz: %d", frequenz );
return strlen(buf)+1;
}
static ssize_t write_freq( struct device *dev, struct device_attribute *attr,
const char *buf, size_t count )
{
frequenz = simple_strtoul( buf, NULL, 0 );
return strlen(buf)+1;
}
static DEVICE_ATTR( freq ,S_IRUGO|S_IWUGO, read_freq, write_freq );
static int __init drv_init(void)
{
if(register_chrdev(DRIVER_MAJOR, "MyDevice", &fops) == 0) {
driver_register(&mydriver); // register the driver
platform_device_register( &mydevice );// register the device
mydevice.dev.driver = &mydriver; // now tie them together
device_bind_driver( &mydevice.dev ); // links the driver to the device
device_create_file( &mydevice.dev, &dev_attr_freq );
return 0;
}
return -EIO;
}
static void __exit drv_exit(void)
{
device_remove_file( &mydevice.dev, &dev_attr_freq );
device_release_driver( &mydevice.dev );
platform_device_unregister( &mydevice );
driver_unregister(&mydriver);
unregister_chrdev(DRIVER_MAJOR,"MyDevice");
wait_for_completion( &dev_obj_is_free );
}
module_init( drv_init );
module_exit( drv_exit );
MODULE_LICENSE("GPL");
这是糟糕消息:
Unable to handle kernel paging request for data at address 0x00000001
Faulting instruction address: 0xc01661b0
Oops: Kernel access of bad area, sig: 11 [#1]
SBC8548
last sysfs file:
Modules linked in: temp(+)
NIP: c01661b0 LR: c0166194 CTR: c0166170
REGS: cf8a3d50 TRAP: 0300 Not tainted (2.6.36)
MSR: 00029000 <EE,ME,CE> CR: 84000424 XER: 00000000
DEAR: 00000001, ESR: 00000000
TASK = cf9fd240[994] 'insmod' THREAD: cf8a2000
GPR00: c0166194 cf8a3e00 cf9fd240 00000001 c02ca2c8 00000000 c0164cdc 00000020
GPR08: 000003c0 c02d3298 00001386 cf81f940 84000442 1004950c 00000240 00000000
GPR16: 10103980 1009ea94 100f0000 100f7ac8 00000000 101039a8 101052b8 bfd6ecc8
GPR24: c02e0000 c02d3140 00000000 cfafc540 c02ca2c0 d102b2f8 c02ca2c8 00000001
NIP [c01661b0] platform_match+0x40/0xcc
LR [c0166194] platform_match+0x24/0xcc
Call Trace:
[cf8a3e00] [c0166194] platform_match+0x24/0xcc (unreliable)
[cf8a3e20] [c0164d0c] __driver_attach+0x30/0xa8
[cf8a3e40] [c0163bb0] bus_for_each_dev+0x60/0x9c
[cf8a3e70] [c01647b4] driver_attach+0x24/0x34
[cf8a3e80] [c0164444] bus_add_driver+0xb8/0x274
[cf8a3eb0] [c0164fe4] driver_register+0x70/0x168
[cf8a3ed0] [d102e058] drv_init+0x58/0xe0 [temp]
[cf8a3ef0] [c0001ef8] do_one_initcall+0x16c/0x1b8
[cf8a3f20] [c005ff8c] sys_init_module+0xd4/0x1e4
[cf8a3f40] [c000dae0] ret_from_syscall+0x0/0x3c
--- Exception: c01 at 0xff3b388
LR = 0x10000dbc
Instruction dump:
90010024 7c9d2378 80640014 7fc4f378 48017051 2f830000 38600001 409e005c
83fd0038 3b9efff8 2f9f0000 419e0078 <881f0000> 2f800000 419e0054 83defff8
---[ end trace 2c20538ad6d3f6d6 ]---
Segmentation fault
-bash-3.2#
Message from syslogd@ at Thu Jan 1 01:00:11 1970 ...
最佳答案
我能找到的所有带有 .bus = &platform_bus_type
的 struct device_driver
示例都包含在 struct platform_driver
中。我怀疑你需要其中之一。`
关于linux - 添加 Linux 驱动属性文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12244262/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!