Chinaunix
标题:
【求助】加载模块时遇到Operation not permitted的错误
[打印本页]
作者:
小菜虎
时间:
2014-05-12 01:21
标题:
【求助】加载模块时遇到Operation not permitted的错误
我自己编写的一个虚拟字符设备驱动的代码,在Ubuntukylin13.10下运行正常,可是在RHEL6.4下编译通过,然后insmod的时候就提示Operation not permitted。我是用root登录的。求解。
代码:
MyCharDev.tar.bz2
(58.6 KB, 下载次数: 7)
2014-05-12 01:19 上传
点击文件名下载附件
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>
#include "mychrdev.h"
#define CHR_MEM_SIZE 255
#define CHR_DEV_MAJOR 250
#define CHR_DEV_NAME "MyChrDev"
struct MyCharDev *mycd;
ssize_t read(struct file* fp, char __user *buff, size_t size, loff_t* loff)
{
int i;
if(mycd == NULL)
return -1;
for(i=0;i<size;i++)
{
if(Char_read(mycd, &buff[i]) == -1)
return i;
}
return i;
}
ssize_t write(struct file* fp, const char __user *buff, size_t size
, loff_t* loff)
{
int i;
if(mycd == NULL)
return -1;
for(i=0;i<size;i++)
{
if(Char_write(mycd, buff[i]) == -1)
return i;
}
return i;
}
int open(struct inode* node, struct file* fp)
{
fp->private_data = mycd;
return 0;
}
int release(struct inode* node, struct file* fp)
{
fp->private_data = NULL;
return 0;
}
struct file_operations fop
/**************************
={
.read = read,
.write = write,
.open = open,
.release = release,
.owner = THIS_MODULE
}
*************************/
;
int __init hello_init(void)
{
fop.read = read;
fop.write = write;
fop.open = open;
fop.release = release;
fop.owner = THIS_MODULE;
if((mycd = Char_init(CHR_MEM_SIZE)) == NULL)
{
printk(KERN_ALERT"Can\'t init chardev\n");
return -1;
}
if(0 > register_chrdev(CHR_DEV_MAJOR, CHR_DEV_NAME, &fop))
{
printk(KERN_ALERT"regist dev error\n");
return -1;
}
printk(KERN_ALERT"Hello world!\n");
return 0;
}
void __exit hello_exit(void)
{
Char_uninit(mycd);
unregister_chrdev(CHR_DEV_MAJOR, CHR_DEV_NAME);
printk(KERN_ALERT"Goodbye world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("Xiaocaihu");
复制代码
作者:
lonelyair
时间:
2014-05-12 09:05
MODULE_LICENSE("Dual BSD/GPL");
改成GPL试试
作者:
beyondfly
时间:
2014-05-13 08:34
有可能是协议的问题,modprobe -f xxxx.ko 强制加载
作者:
potato916305
时间:
2014-05-13 13:13
sudo insmod ./xxx.ko
作者:
beyondfly
时间:
2014-05-13 22:41
lz的问题解决了吗
作者:
小菜虎
时间:
2014-05-13 23:21
回复
5#
beyondfly
谢谢您的回复。这两天比较忙,没时间上论坛。
找到原因了。居然是设备号冲突。把register_chrdev的第一个参数改成0,让系统自动分配设备号,问题解决。
作者:
小菜虎
时间:
2014-05-13 23:22
回复
2#
lonelyair
谢谢您的回复。
问题已经解决了。居然是设备号冲突{:3_198:}
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2