Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121021
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-31 12:34
文章分类

全部博文(31)

文章存档

2017年(5)

2016年(25)

2015年(1)

我的朋友

分类: LINUX

2017-08-31 11:49:41

第一章 驱动程序基本函数

第一节 驱动程序的进出口


module_init

名称 模块初始化入口函数
用例 module_init(x)
参数 运行于系统启动或者模块加载时的函数
简介 打开加载模块的编译选项MODULE以后,本函数将参数中的模块加载到 __initcall.int代码段
或者将目标模块绑定到init_module,使用insmod和modprobe指令可以将本模块加载到驱动模块

module_exit

名称 模块退出出口函数
用例 module_exit(x)
参数 用于卸载模块
简介 本函数将目标模块绑定到cleanup_module代码段,使用rmmod指令卸载相应模块
当驱动模块静态编译到内核以后,本函数就没有效果了,不能卸载随系统启动的模块

第二节 原子和指针操作


atomic_read

名称 读取原子变量
用例 atomic_read(v)
参数 指向atomic_t类型的指针
简介 原子性的读取v的值,注意,本函数的有效应用范围只有24bit

atomic_set

名称 设置原子变量的值
用例 atomic_set(v,i)
参数 v---指向atomic_t类型的指针
i----给定值
简介 原子性的将v的值设置为i,注意,本函数的有效应用范围只有24bit

atomic_add

名称 向一个原子变量增加一个整数值
用例 atomic_add(i, v)
参数 v---指向atomic_t类型的指针
i----给定要增加的整数
简介 原子性的将v的值增加i,注意,本函数的有效应用范围只有24bit

atomic_sub

名称 从一个原子变量减去一个整数值
用例 atomic_sub(i, v)
参数 v---指向atomic_t类型的指针
i----给定要减少的整数
简介 原子性的将v的值减少i,注意,本函数的有效应用范围只有24bit

atomic_sub_and_test

名称 从一个原子变量减去一个整数值并测试结果
用例 atomic_sbu(i, v)
参数 v---指向atomic_t类型的指针
i----给定要减少的整数
简介 原子性的将v的值减少i,同时测试结果,如果为0则返回真,注意,本函数的有效应用范围只有24bit

atomic_inc

名称 设置原子变量自动加 1 
用例 atomic_inc(v)
参数 v---指向atomic_t类型的指针
简介 自动将原子性的v值增加 1,注意,本函数的有效应用范围只有24bit

atomic_dec

名称 设置原子变量自动减 1 
用例 atomic_dec(v)
参数 v---指向atomic_t类型的指针
简介 自动将原子性的v值减少 1,注意,本函数的有效应用范围只有24bit

atomic_dec_and_test

名称 设置原子变量自动减 1并测试结果 
用例 atomic_dec_and_test(v)
参数 v---指向atomic_t类型的指针
简介 自动将原子性的v值减少 1,同时测试结果,如果为0则返回真注意,本函数的有效应用范围只有24bit

atomic_add_negative

名称 设置原子变量自动减 1并测试结果是否为负值 
用例 atomic_add_negative(i, v)
参数 i----给定要增加的整数
v---指向atomic_t类型的指针
简介 自动将原子性的v值增加 1,同时测试结果,如果为负值则返回真,注意,本函数的有效应用范围只有24bit

get_unaligned

名称 获取非对齐位置对象的值 
用例 get_unaligned(ptr)
参数 ptr----指向对象值的指针
简介 本宏可以用于获取非对称性结构中的非对称值,一般是大于1字节的。注意,非对称性数据设计是糟糕的设计方案

put_unaligned

名称 设置非对齐位置对象的值 
用例 set_unaligned(val, ptr)
参数 val----需要设置的值
ptr----指向对象值的指针
简介 本宏可以用于设置非对称性结构中的非对称对象,一般是大于1字节的。注意,非对称性数据设计是糟糕的设计方案

第三节 延迟,调度和定时器函数


schedule_timeout

名称 使调用对象一直睡眠到超时 
用例 schedule_timeout(timeout)
参数 timeout----以jiffies为单位的时间量
简介 睡眠当前任务至超时,除非特意更改任务的状态。具体任务状态为:
TASK_UNINTERRUPTIBLE-----此状态下,只能等待系统超时,此时本函数正常结束,返回 0
TASK_INTERRUPTIBLE-----此状态下,如果任务接到特殊信号,本函数可以被打断,函数返回剩余的时间。
                                   当函数返回后,当前任务状态改为TASK_RUNNING运行态
将timeout的值设置为MAX_SCHEDULE_TIMEOUT时,CPU执行任务不会超时,此时本函数返回值一直是
MAX_SCHEDULE_TIMEOUT。在所有的情况中,timeout的值都不会出现负数。



本更结束,略作总结:
模块和原子操作的函数都很基本,按需使用,但原子操作毕竟有操作限制,所以慎重使用。
明天更数据类型相关的函数







阅读(1902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~