- 论坛徽章:
- 0
|
5可用积分
#define __NO_VERSION__
#include <linux/module.h>
#include <linux/config.h>
#include <linux/version.h>
#include <asm/uaccess.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/errno.h>
#include <asm/segment.h>
unsigned int test_major = 0;
static ssize_t read_test(struct file *file,char *buf,size_t count,loff_t *f_pos)
{ int left;
if (verify_area(VERIFY_WRITE,buf,count) == -EFAULT )
return -EFAULT;
for(left = count ; left > 0 ; left--)
{
__put_user(1,buf);
buf++;
}
return count;
}
static ssize_t write_test(struct file *file, const char *buf, size_t count, loff_t *f_pos)
{
return count;
}
static int open_test(struct inode *inode,struct file *file )
{
MOD_INC_USE_COUNT;
return 0;
}
static int release_test(struct inode *inode,struct file *file )
{
MOD_DEC_USE_COUNT;
return 0;
}
struct file_operations test_fops = {
read:read_test,
write:write_test,
open: open_test,
release:release_test
};
int init_module(void)
{
int result;
result = register_chrdev(0, "test", &test_fops);
if (result < 0) {
printk(KERN_INFO "test: can't get major number\n");
return result;
}
if (test_major == 0) test_major = result; /* dynamic */
return 0;
}
void cleanup_module(void)
{
unregister_chrdev(test_major, "test");
}
还是老问题,呵呵,这样一个字符设备的驱动程序,已经加载到内核模块中,通过什么操作"用户可以像处理普通文件一样,对硬件设备进行打开(open)、关闭(close)、读写(read/write)等操作"(书上写的一句话)???麻烦高手解答下,其他的问题就解决了,我的意思是不进入程序内部,来对此设备进行操作,该如何实现,谢谢~ |
最佳答案
查看完整内容
你也挺粗心的啊,好像应该是printf("%d\n", buf[ i ])吧,用%d主要是楼主实际上是想传一个整数值,1用%c打印不好看出来。[ 本帖最后由 Cyberman.Wu 于 2008-8-11 12:50 编辑 ]
|