linux 内核数学库,linux 内核库函数

类别函数名功能函数形成参数描述

字符串转换simple_strtol把一个字符串转换为一个有符号长整数long simple_strtol (const char * cp, char ** endp, unsigned int base)cp指向字符串的开始,endp为指向要分析的字符串末尾处的位置,base为要用的基数。

simple_strtoll把一个字符串转换为一个有符号长长整数long long simple_strtoll (const char * cp, char ** endp, unsigned int base)cp指向字符串的开始,endp为指向要分析的字符串末尾处的位置,base为要用的基数。

simple_strtoul把一个字符串转换为一个无符号长整数long long simple_strtoul (const char * cp, char ** endp, unsigned int base)cp指向字符串的开始,endp为指向要分析的字符串末尾处的位置,base为要用的基数。

simple_strtoull把一个字符串转换为一个无符号长长整数long long simple_strtoull (const char * cp, char ** endp, unsigned int base)cp指向字符串的开始,endp为指向要分析的字符串末尾处的位置,base为要用的基数。

vsnprintf格式化一个字符串,并把它放在缓存中。int vsnprintf (char * buf, size_t size, const char * fmt, va_list args)buf为存放结果的缓冲区, size为缓冲区的大小,fmt为要使用的格式化字符串,args为格式化字符串的参数。

snprintf格式化一个字符串,并把它放在缓存中。int snprintf (char * buf, size_t size, const char * fmt, ... ...)buf为存放结果的缓冲区, size为缓冲区的大小,fmt为格式化字符串,使用@…来对格式化字符串进行格式化,…为可变参数。

vsprintf格式化一个字符串,并把它放在缓存中。int vsprintf (char * buf, const char * fmt, va_list args)buf为存放结果的缓冲区, size为缓冲区的大小,fmt为要使用的格式化字符串,args为格式化字符串的参数。

sprintf格式化一个字符串,并把它放在缓存中。int sprintf (char * buf, const char * fmt, ... ...)buf为存放结果的缓冲区, size为缓冲区的大小,fmt为格式化字符串,使用@…来对格式化字符串进行格式化,…为可变参数。

字符串操作strcpy拷贝一个以NUL结束的字符串char * strcpy (char * dest, const char * src)dest为目的字符串的位置, src为源字符串的位置。

strncpy拷贝一个定长的、以NUL结束的字符串char * strncpy (char * dest, const char * src, size_t count)dest为目的字符串的位置, src为源字符串的位置,count为要拷贝的最大字节数与用户空间的strncpy不同,这个函数并不用NUL填充缓冲区,如果与源串超过count,则结果以非NUL结束

strcat把一个以NUL结束的字符串添加到另一个串的末尾char * strcat (char * dest, const char * src)dest为要添加的字符串, src为源字符串。

strncat把一个定长的、以NUL结束的字符串添加到另一个串的末尾char * strncat (char * dest, const char * src, size_t count)dest为要添加的字符串, src为源字符串,count为要拷贝的最大字节数注意,与strncpy,形成对照,strncat正常结束。

strchr在一个字符串中查找第一次出现的某个字符char * strchr (const char * s, int c)s为被搜索的字符串,c为待搜索的字符。

strrchr在一个字符串中查找最后一次出现的某个字符char * strrchr (const char * s, int c)s为被搜索的字符串,c为待搜索的字符。

strlen给出一个字符串的长度size_t strlen (const char * s)s为给定的字符串

strnlen给出给定长度字符串的长度size_t strnlen (const char * s, size_t count)s为给定的字符串

strpbrk在一个字符串中查找第一次出现的一组字符char * strpbrk (const char * cs, const char * ct)cs为被搜索的字符串,ct为待搜索的一组字符

strtok把一个字符串分割为子串char * strtok (char * s, const char * ct)s为被搜索的字符串,ct为待搜索的子串注意,一般不提倡用这个函数,而应当用strsep

memset用给定的值填充内存区void * memset (void * s, int c, size_t count)s为指向内存区起始的指针,c为 要填充的内容,count为内存区的大小I/O空间的访问不能使用memset,而应当使用memset_io。

bcopy把内存的一个区域拷贝到另一个区域char * bcopy (const char * src, char * dest, int count)src为源字符串,dest为目的字符串,而count为内存区的大小注意,这个函数的功能与memcpy相同,这是从BSD遗留下来的,对I/O空间的访问应当用memcpy_toio或memcpy_fromio

memcpy把内存的一个区域拷贝到另一个区域void * memcpy (void * dest, const void * src, size_t count)dest为目的字符串,Src为源字符串,而count为内存区的大小对I/O空间的访问应当用memcpy_toio或memcpy_fromio

memmove把内存的一个区域拷贝到另一个区域void * memmove (void * dest, const void * src, size_t count)dest为目的字符串,Src为源字符串,而count为内存区的大小memcpy和memmove处理重叠的区域,而该函数不处理。

memcmp比较内存的两个区域int memcmp (const void * cs, const void * ct, size_t count)cs为一个内存区,ct为另一个内存区,而count为内存区的大小

memscan在一个内存区中查找一个字符void * memscan (void * addr, int c, size_t size)addr为内存区,c为要搜索的字符,而size为内存区的大小返回c第一次出现的地址,如果没有找到c,则向该内存区传递一个字节。

strstr在以NUL结束的串中查找第一个出现的子串char * strstr (const char * s1, const char * s2)s1为被搜索的串,s2为待搜索的串。

memchr在一个内存区中查找一个字符void * memchr (const void * s, int c, size_t n)s为内存区,为待搜索的字符,n为内存的大小返回c第一次出现的位置,如果没有找到c,则返回空。

位操作set_bit在位图中原子地设置某一位void set_bit (int nr, volatile void * addr)nr为要设置的位,addr为位图的起始地址这个函数是原子操作,如果不需要原子操作,则调用__set_bit函数,nr可以任意大,位图的大小不限于一个字。

__set_bit在位图中设置某一位void __set_bit (int nr, volatile void * addr)nr为要设置的位,addr为位图的起始地址

clear_bit在位图中清某一位void clear_bit (int nr, volatile void * addr)nr为要清的位,addr为位图的起始地址该函数是原子操作,但不具有加锁功能,如果要用于加锁目的,应当调用smp_mb__before_clear_bit或smp_mb__after_clear_bit函数,以确保任何改变在其他的处理器上是可见的。

__change_bit在位图中改变某一位void __change_bit (int nr, volatile void * addr)nr为要设置的位,addr为位图的起始地址。与change_bit不同,该函数是非原子操作。

change_bit在位图中改变某一位void change_bit (int nr, volatile void * addr)nr为要设置的位,addr为位图的起始地址。

test_and_set_bit设置某一位并返回该位原来的值int test_and_set_bit (int nr, volatile void * addr)nr为要设置的位,addr为位图的起始地址。该函数是原子操作

__test_and_set_bit设置某一位并返回该位原来的值int __test_and_set_bit (int nr, volatile void * addr)nr为要设置的位,addr为位图的起始地址。该函数是非原子操作,如果这个操作的两个实例发生竞争,则一个成功而另一个失败,因此应当用一个锁来保护对某一位的多个访问。

test_and_clear_bit清某一位,并返回原来的值int test_and_clear_bit (int nr, volatile void * addr);nr为要设置的位,addr为位图的起始地址。该函数是原子操作

__test_and_clear_bit清某一位,并返回原来的值int __test_and_clear_bit (int nr, volatile void * addr);nr为要设置的位,addr为位图的起始地址。该函数为非原子操作

test_and_change_bit改变某一位并返回该位的新值int test_and_change_bit (int nr, volatile void * addr)nr为要设置的位,addr为位图的起始地址。该函数为原子操作

test_bit确定某位是否被设置int test_bit (int nr, const volatile void * addr)nr为要测试的第几位,addr为位图的起始地址。

find_first_zero_bit在内存区中查找第一个值为0的位int find_first_zero_bit (void * addr, unsigned size)addr为内存区的起始地址,size为要查找的最大长度返回第一个位为0的位号

find_next_zero_bit在内存区中查找第一个值为0的位int find_next_zero_bit (void * addr, int size, int offset)addr为内存区的起始地址,size为要查找的最大长度,offset开始搜索的起始位号。

ffz在字中查找第一个0unsigned long ffz (unsigned long word);word为要搜索的字。

ffs查找第一个已设置的位int ffs (int x)x为要搜索的字。这个函数的定义方式与Libc中的一样。

hweight32返回一个N位字的加权平衡值hweight32 ( x)x为要加权的字一个数的加权平衡是这个数所有位的总和。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值