Linux设备驱动
不停歇的蚂蚁
一步太小,所以不敢停!
展开
-
Linux内核同步方法
原子操作“原子”不可分割,原子操作,就是不能被分割的指令。 原子类型实际上是一个整数:typedef struct { volatile int counter;} atomic_t;使用定义atomic_t v;atomic_t u=ATOMIC_INIT(0);//定义并初始化atomic_set(&v,4);atomic_add(2,&v);atomic_inc(&v);原创 2016-05-10 22:55:17 · 1254 阅读 · 0 评论 -
Linux设备驱动(2)字符设备
设备号设备号由主设备号和次设备号组成。linux下,一切设备皆文件,所有的设备都能在/dev目录下找到相应的文件。这些文件除了名字不一样以外,还每个设备文件都有不一样的设备号; 一般地,主设备号对应一个类型的驱动设备,之所以有次设备号,它是用来驱动同类型的设备。如串口,所有的串口共用一个主设备号,每个串口有不同的次设备号。dev_t类型用来保存设备编号(包含主设备号和次设备号),实际上是一个3原创 2016-05-08 11:52:21 · 686 阅读 · 0 评论 -
Linux设备驱动(3)常用的宏、结构体、数据类型、函数等
struct file重要成员mode_t f_mode:文件模式,可读(FMODE_READ)?可写(FMODE_WRITE)?loff_t f_pos:这是用来记录文件的偏移量。在应用程序中,打开文件时偏移量为0,每次的读写操作都会使偏移量增加;void *private_data:struct file_operations *fops:打开文件后,内核会把fops存放在这里,以后的操作就在原创 2016-05-08 15:47:02 · 476 阅读 · 0 评论 -
Linux设备驱动(1)模块的相关概念
最简单的内核模块#include<linux/init.h>#include<linux/module.h>static int __init hello_init(void) //内核初始化函数 { printk("hello world!\n"); //打印函数,和prinft类似 return 0; } static void __exit原创 2016-05-08 09:33:50 · 566 阅读 · 0 评论