请大家帮看看,用户程序调用write 会产生oops消息,虽找到出错的地方,可怎么也没弄明白是什么原因,代码如下: struct scull_qset { void * *data; struct scull_qset *next; }; struct scull_dev { struct scull_qset *data; int quan; int qset; unsigned long size; unsigned int access_key; struct semaphore sem; struct cdev cdev; }; ssize_t scull_write(struct...
by 云上 - C/C++ - 2007-01-04 15:04:54 阅读(836) 回复(0)
[code]
#include
请大家帮看看,在执行时总会产生oops消息,虽找到出错的地方,想了一天也没弄明白是什么原因,代码如下: struct scull_qset { void * *data; struct scull_qset *next; }; struct scull_dev { struct scull_qset *data; int quan; int qset; unsigned long size; unsigned int access_key; struct semaphore sem; struct cdev cdev; }; ssize_t scull_write(struct file ...
我insmod驱动的时候提示::: [root@localhost snull]# insmod snull.ko insmod: error inserting 'snull.ko': -1 Unknown symbol in module <4>snull: Unknown symbol irq_stat 但是在原文件中并没有这个变量.
《Linux设备驱动程序》第三版,第十七章,网络驱动源码示例的注释。
事实上,作者已经写得很明白了,再注释是显得苍白的,不过近来有朋友有问,偶把它注释出来,以作回答,希望能做为补充和旁注之用,水平有限,不对之处还要请各位一一指正!!
[code]
#include
如下: struct file_operations scull_fops = { .owner = THIS_MODULE, .llseek = scull_llseek, .read = scull_read, .write = scull_write, .ioctl = scull_ioctl, .open = scull_open, .release = scull_release, }; 请问每行头起的“点号”起什么作用,之前我没有见过这种用法,谢谢!
看到内核版有赠书奖励计划,驱动版现在人气不足,而且长时间没有版主,我想把他繁荣起来,能不能搞一个类似的赠书计划啊。 个人建议,希望管理员考虑考虑,呵呵。:mrgreen:
ssize_t do_short_write (struct inode *inode, struct file *filp, const char __user *buf, size_t count, loff_t *f_pos) { int retval = count, minor = iminor(inode); unsigned long port = short_base + (minor&0x0f);//port根据不同的子设备号递增 void *address = (void *) short_base + (minor&0x0f); int mode = (minor&0x70) >> 4; unsigned char *kbuf = kmalloc(count, GFP_KERNEL), *ptr; if (!kbuf) ret...