Linux驱动基础
文章平均质量分 78
皮CaPr
这个作者很懒,什么都没留下…
展开
-
位操作
Linux内核提供了一些对位操作的方法:include/asm-generic/bitops/atomic.hvoid set_bit(int nr, volatile unsigned long *addr)void clear_bit(int nr, volatile unsigned long *addr)void change_bit(int nr, volatile unsi原创 2012-01-31 09:18:21 · 1528 阅读 · 0 评论 -
可变参数函数
C函数库中的printf函数与Linux内核中printk函数都是可变参数的函数,其参数的个数是不确定的。函数参数个数可变的原理:当执行一个函数的时候,会先将函数的参数列表入栈,然后入栈函数的返回地址,接着入栈函数的执行代码。最终在栈中,从栈底到栈顶的顺序,依次是:函数参数列表,函数返回地址,函数执行代码段。而在参数列表中,各个参数的分布情况是倒序的,会先将最后一个参数入栈,接着入栈倒原创 2012-02-01 16:21:56 · 773 阅读 · 0 评论 -
字符串转换
Linux内核中提供的一些字符串转换函数:lib/vsprintf.cunsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)l原创 2012-02-03 08:27:45 · 7142 阅读 · 0 评论 -
字符串操作
Linux内核中关于字符串的相关操作,首先包含头文件:#include 可用函数包括如下:lib/string.cint strnicmp(const char *s1, const char *s2, size_t len)int strcasecmp(const char *s1, const char *s2)int strncasecmp(const char *s1, c原创 2012-01-31 13:36:14 · 1771 阅读 · 0 评论 -
错误返回
使用错误返回等与err相关的定义与操作,需包含头文件:#include 常见的err说明include/asm-generic/errno-base.h#define EPERM 1 /* Operation not permitted */#define ENOENT 2 /* No such file or directory */#define ESRCH 3 /原创 2012-02-07 08:40:49 · 967 阅读 · 0 评论