Linux kernel API
773 个 Linux 内核 API
Data Types
Doubly Linked Lists
void list_add(struct list_head * new, struct list_head * head)
void list_add_tail(struct list_head * new, struct list_head * head)
void __list_del_entry(struct list_head * entry)
void list_replace(struct list_head * old, struct list_head * new)
void list_del_init(struct list_head * entry)
void list_move(struct list_head * list, struct list_head * head)
void list_move_tail(struct list_head * list, struct list_head * head)
int list_is_last(const struct list_head * list, const struct list_head * head)
int list_empty(const struct list_head * head)
int list_empty_careful(const struct list_head * head)
void list_rotate_left(struct list_head * head)
int list_is_singular(const struct list_head * head)
void list_cut_position(struct list_head * list, struct list_head * head, struct list_head * entry)
void list_splice(const struct list_head * list, struct list_head * head)
void list_splice_tail(struct list_head * list, struct list_head * head)
void list_splice_init(struct list_head * list, struct list_head * head)
void list_splice_tail_init(struct list_head * list, struct list_head * head)
list_entry(ptr, type, member)
list_first_entry(ptr, type, member)
list_last_entry(ptr, type, member)
list_first_entry_or_null(ptr, type, member)
list_next_entry(pos, member)
list_prev_entry(pos, member)
list_for_each(pos, head)
list_for_each_prev(pos, head)
list_for_each_safe(pos, n, head)
list_for_each_prev_safe(pos, n, head)
list_for_each_entry(pos, head, member)
list_for_each_entry_reverse(pos, head, member)
list_prepare_entry(pos, head, member)
list_for_each_entry_continue(pos, head, member)
list_for_each_entry_continue_reverse(pos, head, member)
list_for_each_entry_from(pos, head, member)
list_for_each_entry_safe(pos, n, head, member)
list_for_each_entry_safe_continue(pos, n, head, member)
list_for_each_entry_safe_from(pos, n, head, member)
list_for_each_entry_safe_reverse(pos, n, head, member)
list_safe_reset_next(pos, n, member)
hlist_for_each_entry(pos, head, member)
hlist_for_each_entry_continue(pos, member)
hlist_for_each_entry_from(pos, member)
hlist_for_each_entry_safe(pos, n, head, member)
Basic C Library Functions
String Conversions
unsigned long long simple_strtoull(const char * cp, char ** endp, unsigned int base)
unsigned long simple_strtoul(const char * cp, char ** endp, unsigned int base)
long simple_strtol(const char * cp, char ** endp, unsigned int base)
long long simple_strtoll(const char * cp, char ** endp, unsigned int base)
int vsnprintf(char * buf, size_t size, const char * fmt, va_list args)
int vscnprintf(char * buf, size_t size, const char * fmt, va_list args)
int snprintf(char * buf, size_t size, const char * fmt, …)
int scnprintf(char * buf, size_t size, const char * fmt, …)
int vsprintf(char * buf, const char * fmt, va_list args)
int sprintf(char * buf, const char * fmt, …)
int vbin_printf(u32 * bin_buf, size_t size, const char * fmt, va_list args)
int bstr_printf(char * buf, size_t size, const char * fmt, const u32 * bin_buf)
int bprintf(u32 * bin_buf, size_t size, const char * fmt, …)
int vsscanf(const char * buf, const char * fmt, va_list args)
int sscanf(const char * buf, const char * fmt, …)
int kstrtol(const char * s, unsigned int base, long * res)
int kstrtoul(const char * s, unsigned int base, unsigned long * res)
int kstrtoull(const char * s, unsigned int base, unsigned long long * res)
int kstrtoll(const char * s, unsigned int base, long long * res)
int kstrtouint(const char * s, unsigned int base, unsigned int * res)
int kstrtoint(const char * s, unsigned int base, int * res)
int kstrtobool(const char * s, bool * res)
String Manipulation
int strncasecmp(const char * s1, const char * s2, size_t len)
char * strcpy(char * dest, const char * src)
char * strncpy(char * dest, const char * src, size_t count)
size_t strlcpy(char * dest, const char * src, size_t size)
ssize_t strscpy(char * dest, const char * src, size_t count)
char * strcat(char * dest, const char * src)
char * strncat(char * dest, const char * src, size_t count)
size_t strlcat(char * dest, const char * src, size_t count)
int strcmp(const char * cs, const char * ct)
int strncmp(const char * cs, const char * ct, size_t count)
char * strchr(const char * s, int c)
char * strchrnul(const char * s, int c)
char * strrchr(const char * s, int c)
char * strnchr(const char * s, size_t count, int c)
char * skip_spaces(const char * str)
char * strim(char * s)
size_t strlen(const char * s)
size_t strnlen(const char * s, size_t count)
size_t strspn(const char * s, const char * accept)
size_t strcspn(const char * s, const char * reject)
char * strpbrk(const char * cs, const char * ct)
char * strsep(char * s, const char ct)
bool sysfs_streq(const char * s1, const char * s2)
int match_string(const char const array, size_t n, const char * string)
void * memset(void * s, int c, size_t count)
void memzero_explicit(void * s, size_t count)
void * memcpy(void * dest, const void * src, size_t count)
void * memmove(void * dest, const void * src, size_t count)
__visible int memcmp(const void * cs, const void * ct, size_t count)
void * memscan(void * addr, int c, size_t size)
char * strstr(const char * s1, const char * s2)
char * strnstr(const char * s1, const char * s2, size_t len)
void * memchr(const void * s, int c, size_t n)
void * memchr_inv(const void * start, int c, size_t bytes)
char * strreplace(char * s, char old, char new)
Bit Operations
void set_bit(long nr, volatile unsigned long * addr)
void __set_bit(long nr, volatile unsigned long * addr)
void clear_bit(long nr, volatile unsigned long * addr)
void __change_bit(long nr, volatile unsigned long * addr)
void change_bit(long nr, volatile unsigned long * addr)
int test_and_set_bit(long nr, volatile unsigned long * addr)
int test_and_set_bit_lock(long nr, volatile unsigned long * addr)
int __test_and_set_bit(long nr, volatile unsigned long * addr)
int test_and_clear_bit(long nr, volatile unsigned long * addr)
int __test_and_clear_bit(long nr, volatile unsigned long * addr)
int test_and_change_bit(long nr, volatile unsigned long * addr)
int test_bit(int nr, const volatile unsigned long * addr)
unsigned long __ffs(unsigned long word)
unsigned long ffz(unsigned long word)
int ffs(int x)
int fls(int x)
int fls64(__u64 x)
Basic Kernel Library Functions
Bitmap Operations
void __bitmap_shift_right(unsigned long * dst, const unsigned long * src, unsigned shift, unsigned nbits)
void __bitmap_shift_left(unsigned long * dst, const unsigned long * src, unsigned int shift, unsigned int nbits)
unsigned long bitmap_find_next_zero_area_off(unsigned long * map, unsigned long size, unsigned long start, unsigned int nr, unsigned long align_mask, unsigned long align_offset)
int __bitmap_parse(const char * buf, unsigned int buflen, int is_user, unsigned long * maskp, int nmaskbits)
int bitmap_parse_user(const char __user * ubuf, unsigned int ulen, unsigned long * maskp, int nmaskbits)
int bitmap_print_to_pagebuf(bool list, char * buf, const unsigned long * maskp, int nmaskbits)
int bitmap_parselist_user(const char __user * ubuf, unsigned int ulen, unsigned long * maskp, int nmaskbits)
void bitmap_remap(unsigned long * dst, const unsigned long * src, const unsigned long * old, const unsigned long * new, unsigned int nbits)
int bitmap_bitremap(int oldbit, const unsigned long * old, const unsigned long * new, int bits)
void bitmap_onto(unsigned long * dst, const unsigned long * orig, const unsigned long * relmap, unsigned int bits)
(*) For these marked lines, if we hadn’t first done bitmap_fold()
into tmp, then the result would have been empty.
void bitmap_fold(unsigned long * dst, const unsigned long * orig, unsigned int sz, unsigned int nbits)
int bitmap_find_free_region(unsigned long * bitmap, unsigned int bits, int order)
void bitmap_release_region(unsigned long * bitmap, unsigned int pos, int order)
int bitmap_allocate_region(unsigned long * bitmap, unsigned int pos, int order)
unsigned int bitmap_from_u32array(unsigned long * bitmap, unsigned int nbits, const u32 * buf, unsigned int nwords)
unsigned int bitmap_to_u32array(u32 * buf, unsigned int nwords, const unsigned long * bitmap, unsigned int nbits)
void bitmap_copy_le(unsigned long * dst, const unsigned long * src, unsigned int nbits)
int __bitmap_parselist(const char * buf, unsigned int buflen, int is_user, unsigned long * maskp, int nmaskbits)
int bitmap_pos_to_ord(const unsigned long * buf, unsigned int pos, unsigned int nbits)
unsigned int bitmap_ord_to_pos(const unsigned long * buf, unsigned int ord, unsigned int nbits)
Command-line Parsing
int get_option(char * str, int pint)
char * get_options(const char * str, int nints, int * ints)
unsigned long long memparse(const char * ptr, char ** retptr)
CRC Functions
u8 crc7_be(u8 crc, const u8 * buffer, size_t len)
u16 crc16(u16 crc, u8 const * buffer, size_t len)
u16 crc_itu_t(u16 crc, const u8 * buffer, size_t len)
u16 crc_ccitt(u16 crc, u8 const * buffer, size_t len)
idr/ida Functions
void idr_preload(gfp_t gfp_mask)
int idr_alloc(struct idr * idr, void * ptr, int start, int end, gfp_t gfp_mask)
int idr_alloc_cyclic(struct idr * idr, void * ptr, int start, int end, gfp_t gfp_mask)
void idr_remove(struct idr * idp, int id)
void idr_destroy(struct idr * idp)
int idr_for_each(struct idr * idp, int (fn) (int id, void *p, void *data, void data)
void * idr_get_next(struct idr * idp, int * nextidp)
void * idr_replace(struct idr * idp, void * ptr, int id)
void idr_init(struct idr * idp)
int ida_pre_get(struct ida * ida, gfp_t gfp_mask)
int ida_get_new_above(struct ida * ida, int starting_id, int * p_id)
void ida_remove(struct ida * ida, int id)
void ida_destroy(struct ida * ida)
int ida_simple_get(struct ida * ida, unsigned int start, unsigned int end, gfp_t gfp_mask)
void ida_simple_remove(struct ida * ida, unsigned int id)
void ida_init(struct ida * ida)
Memory Management in Linux
The Slab Cache
void * kmalloc(size_t size, gfp_t flags)
void * kmalloc_array(size_t n, size_t size, gfp_t flags)
void * kcalloc(size_t n, size_t size, gfp_t flags)
void * kzalloc(size_t size, gfp_t flags)
void * kzalloc_node(size_t size, gfp_t flags,