免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 848 | 回复: 0
打印 上一主题 下一主题

Linux 驱动程序的基本函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-03 16:42 |只看该作者 |倒序浏览

类别
函数名
功能
函数形成
参数
描述
驱动程序入口和出口点
module_init
驱动程序初始化入口点
module_init ( x)
x为启动时或插入模块时要运行的函数
如果在启动时就确认把这个驱动程序 插入内核或以静态形成链接,则module_init 将其初始化例程加入到"__initcall.int"代码段,否则将用init_module封装其初始化例程,以便该驱动程序作为模块来使用。
module_exit
驱动程序退出出口点
module_exit ( x)
x为驱动程序被卸载时要运行的函数
当驱动程序是一个模块,用rmmod卸载一个模块时module_exit()将用cleanup_module()封装clean-up代码。如果驱动程序是静态地链接进内核,则module_exit()函数不起任何作用。
原子和指针操作
atomic_read
读取原子变量
atomic_read ( v)
v为指向atomic_t类型的指针
原子地读取v的值。注意要保证atomic的有用范围只有24位。
atomic_set
设置原子变量
atomic_set ( v, i)
v为指向atomic_t类型的指针,i为待设置的值
原子地把v的值设置为i。注意要保证atomic的有用范围只有24位。
atomic_add
把整数增加到原子变量
void atomic_add (int i, atomic_t * v)
i为要增加的值,v为指向atomic_t类型的指针。
原子地把i 增加到v。注意要保证atomic的有用范围只有24位。
atomic_sub
减原子变量的值
void atomic_sub (int i, atomic_t * v)
i为要减取的值,v为指向atomic_t类型的指针。
原子地从v减取i。注意要保证atomic的有用范围只有24位。
atomic_sub_and_test
从变量中减去值,并测试结果
int atomic_sub_and_test (int i, atomic_t * v)
i为要减取的值,v为指向atomic_t类型的指针。
原子地从v减取i的值,如果结果为0,则返回真,其他所有情况都返回假。注意要保证atomic的有用范围只有24位。
atomic_inc
增加原子变量的值
void atomic_inc (atomic_t * v)
v为指向atomic_t类型的指针。
原子地从v减取1。注意要保证atomic的有用范围只有24位。
atomic_dec
减取原子变量的值
void atomic_dec (atomic_t * v)
v为指向atomic_t类型的指针。
原子地给v增加1。注意要保证atomic的有用范围只有24位。
atomic_dec_and_test
减少和测试
int atomic_dec_and_test (atomic_t * v)
v为指向atomic_t类型的指针。
原子地给v减取1,如果结果为0,则返回真,其他所有情况都返回假。注意要保证atomic的有用范围只有24位。
atomic_inc_and_test
增加和测试
int atomic_ inc _and_test (atomic_t * v)
v为指向atomic_t类型的指针。
原子地给v增加1,如果结果为0,则返回真,其他所有情况都返回假。注意要保证atomic的有用范围只有24位。
atomic_add_negative
如果结果为负数,增加并测试
int atomic_add_negative (int i, atomic_t * v)
i为要减取的值,v为指向atomic_t类型的指针。
原子地给v增加i,如果结果为负数,则返回真,如果结果大于等于0,则返回假。注意要保证atomic的有用范围只有24位。
et_unaligned
从非对齐位置获取值
get_unaligned ( ptr)
ptr指向获取的值

这个宏应该用来访问大于单个字节的值,该值所处的位置不在按字节对齐的位置,例如从非u16对齐的位置检索一个u16的值。注意,在某些体系结构中,非对齐访问要化费较高的代价。
put_unaligned
把值放在一个非对齐位置
put_unaligned ( val, ptr)
val为要放置的值,ptr指向要放置的位置

这个宏用来把大于单个字节的值放置在不按字节对齐的位置,例如把一个u16值写到一个非u16对齐的位置。注意事项同上。
延时、调度及定时器例程
schedule_timeout
睡眠到定时时间到
signed long schedule_timeout (signed long timeout)
timeout为以jiffies为单位的到期时间
使当前进程睡眠,直到所设定的时间到期。如果当前进程的状态没有进行专门的设置,则睡眠时间一到该例程就立即返回。如果当前进程的状态设置为:
 TASK_UNINTERRUPTIBLE:则睡眠到期该例程返回0
‚ TASK_INTERRUPTIBLE:如果当前进程接收到一个信号,则该例程就返回,返回值取决于剩余到期时间。
  当该例程返回时,要确保当前进程处于TASK_RUNNING状态。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/45170/showart_488594.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP