一般在linux下设备分为字符设备和块设备。
字符设备是指设备发送和接收数据以字符的形式进行;而块设备则以整个数据缓冲区的形式进行。
在linux下对任何的操作可以看成是对设备的操作。简单而言之,可以是看成对设备文件的读写操作。
那么,怎样对linux 的设备文件进行读写呢?我们通过一段小程序来模拟linux下对字符设备文件的读写操作。
程序如下(本程序基于linux2.6内核):
1.定义自己的设备文件驱动
// my_driver.c
MODULE_LICENSE("GPL");
// 定义自己的操作类型
struct file_operations my_driver_fops =
{
read:
my_driver_read,
write:
my_driver_write,
};
static int my_ver = 0;
static struct semaphore sem;
static wait_queue_head_t outq;
static int flag = 0;
// 初始化文件设备
static int __init my_driver_init(void)
{
int ret;
ret = register_chrdev(MAJOR_NUM, "my_driver", &my_driver_fops);
if (ret) {
printk("my_driver register failure/n");
} else {
printk("my_driver register success/n");
i