1.对双向链表的具体操作如下:
list_add ———向链表添加一个条目
list_add_tail ———添加一个条目到链表尾部
__list_del_entry ———从链表中删除相应的条目
list_replace———用新条目替换旧条目
list_del_init———从链表中删除条目后重新初始化
list_move———从一个链表中删除并加入为另一个链表的头部
list_move_tail———从一个列表中删除并加入为另一个链表的尾部
list_is_last———测试是否为链表的最后一个条目
list_empty———测试链表是否为空
list_empty_careful———测试链表是否为空并没有被修改
list_rotate_left———向左转动链表
list_is_singular———测试链表是否只有一个条目
list_cut_position———将链表一分为二
list_splice———将两个链表进行合并
list_splice_tail———将两个链表进行合并为一个链表
list_splice_init———将两个链表进行合并为一个链表并初始化为空表
list_splice_tail_init———将两个链表进行合并为一个链表(从尾部合并)并初始化为空表
list_entry———获取条目的结构,实现对container_of 的封装
list_first_entry———获取链表的第一个元素
list_first_entry_or_null———获取链表的第一个元素
list_for_each———遍历链表
list_for_each_prev———反向遍历链表
list_for_each_safe———遍历链表并删除链表中相应的条目
list_for_each_prev_safe———反向遍历链表并删除链表中相应的条目
list_for_each_entry———遍历指定类型的链表
list_for_each_entry_reverse———反向遍历指定类型的链表
list_prepare_entry———准备一个用于list_for_each_entry_continue 的条目
list_for_each_entry_continue———从指定点开始继续遍历指定类型的链表
list_for_each_entry_continue_reverse———从指定点开始反向遍历链表
list_for_each_entry_from———从当前点遍历指定类型的链表
list_for_each_entry_safe———反向遍历指定类型的链表并删除链表中相应的条目
list_for_each_entry_safe_continue———继续遍历链表并删除链表中相应的条目
list_for_each_entry_safe_from———从当前点遍历链表并删除链表中相应的条目
list_for_each_entry_safe_reverse———反向遍历链表并删除链表中相应的条目
list_safe_reset_next———获得下一个指定类型的条目
hlist_for_each_entry———遍历指定类型的单指针表头链表
hlist_for_each_entry_continue———从当前点继续遍历单指针表头链表
hlist_for_each_entry_from———从当前点继续遍历单指针表头链表
hlist_for_each_entry_safe———遍历指定类型的单指针表头链表并删除链表中相应的条目
2.字符串相关
内核中经常会有字符串转换的需要, 其接口如下:
simple_strtoull———变换一个字符串为无符号的long long 型
simple_strtoul———变换一个字符串为无符号的long 型
simple_strtol———变换一个字符串为有符号的long 型
simple_strtoll———变换一个字符串为有符号的long long 型
vsnprintf———格式化一个字符串并放入缓冲区
vscnprintf———格式化一个字符串并放入缓冲区
snprintf———格式化一个字符串并放入缓冲区
scnprintf———格式化一个字符串并放入缓冲区
vsprintf———格式化一个字符串并放入缓冲区
sprintf———格式化一个字符串并放入缓冲区
vbin_printf———解析格式化字符串并将二进制值放入缓冲区
bstr_printf———对二进制参数进行格式化字符串操作并放入缓冲区
bprintf———解析格式化字符串并将二进制值放入缓冲区
vsscanf———从格式化字符串中分离出的参数列表
sscanf———从格式化字符串中分离出的参数列表
kstrtol———变换一个字符串为long 型
kstrtoul———变换一个字符串为无符号的long 型
kstrtoull———变换一个字符串为无符号的long long 型
kstrtoll———变换一个字符串为long long 型
kstrtouint———变换一个字符串为无符号的int 型
kstrtoint———变换一个字符串为int 型
示例:
char buf[]="115200";
unsigned int rate;
kstrtouint(buf,0,&rate);
//buf:输入字符串,0:自动识别,也可以是10(10进制)或16(16进制),rate:存放转换后的整形值.
//当没有错误时返回值是0;
3.另外字符串本身的操作接口如下:
strnicmp———长度有限的字符串比较,这里不分大小写
strcpy———复制一个以NULL 结尾的字符串
strncpy———复制一个以NULL 结尾的有限长度字符串
strlcpy———复制一个以NULL 结尾的有限长度字符串到缓冲区中
strcat———在字符串后附加以NULL 结尾的字符串
strncat———在字符串后附加以NULL 结尾的一定长度的字符串
strlcat———在字符串后附加以NULL 结尾的一定长度的字符串
strcmp———比较两个字符串
strncmp———比较两个限定长度的字符串
strchr———在字符串中查找第一个出现指定字符的位置
strrchr———在字符串中查找最后出现指定字符的位置
strnchr———在字符串中查找出现指定字符串的位置
skip_spaces———从字符串中移除前置空格
strim———从字符串中移除前置及后置的空格
strlen———获得字符串的长度
strnlen———获得一个有限长度字符串的长度
strspn———计算一个仅包含可接受字母集合的字符串的长度
strcspn———计算一个不包含指定字母集合的字符串的长度
strpbrk———找到字符集合在字符串第一次出现的位置
strsep———分割字符串
sysfs_streq———字符串比较,用于sysfs
strtobool———用户输入转换成布尔值
memset———内存填充
memcpy———内存复制
memmove———内存复制
memcmp———内存比较
memscan———在内存中找指定的字符
strstr———在一个以NULL 结尾的字符串中找到第一个子串
strnstr———在一个限定长度字符串中找到第一个子串
memchr———找到内存中的字符
memchr_inv———找到内存中的不匹配字符