Краткая справка
В этой главе были представлены следующие символы:
В этой главе были представлены следующие символы:
#include
typedef u8;
typedef u16;
typedef u32;
typedef u64;
Тип гарантированно являющиеся 8-ми, 16-ми, 32-х и 64-х разрядными беззнаковыми целыми величинами. Также существуют эквивалентные знаковые типы. В пользовательском пространстве вы можете ссылаться на эти типы как __u8, __u16 и так далее.
#include
PAGE_SIZE
PAGE_SHIFT
Символы, которые определяют количество байт на страницу для существующей архитектуры и число битов на смещение страницы (12 для 4 Кб страниц и 13 для 8 Kб страниц).
#include
__LITTLE_ENDIAN
__BIG_ENDIAN
В зависимости от архитектуры определяется только один из этих двух символов.
#include
u32 __cpu_to_le32 (u32);
u32 __le32_to_cpu (u32);
Функции, которые выполняют преобразование между известными порядками байтов и таковыми в процессоре. Есть более чем 60 таких функций; для полного списка и способов, которыми они определены, смотрите разные файлы в include/linux/byteorder/.
#include
get_unaligned(ptr);
put_unaligned(val, ptr);
Некоторым архитектурам необходимо с использованием этих макросов защитить доступ к невыровненным данным. Макросы преобразуются в обычное разыменование указателя для архитектур, которые позволяют вам получить доступ к невыровненным данным.
#include
void *ERR_PTR(long error);
long PTR_ERR(const void *ptr);
long IS_ERR(const void *ptr);
Функции позволяют функциям, которые возвращают значение указателя, возвращать коды ошибок.
#include
list_add(struct list_head *new, struct list_head *head);
list_add_tail(struct list_head *new, struct list_head *head);
list_del(struct list_head *entry);
list_del_init(struct list_head *entry);
list_empty(struct list_head *head);
list_entry(entry, type, member);
list_move(struct list_head *entry, struct list_head *head);
list_move_tail(struct list_head *entry, struct list_head *head);
list_splice(struct list_head *list, struct list_head *head);
Функции, которые манипулируют круговыми, двойными связными списками.
list_for_each(struct list_head *cursor, struct list_head *list)
list_for_each_prev(struct list_head *cursor, struct list_head *list)
list_for_each_safe(struct list_head *cursor, struct list_head *next, struct list_head *list)
list_for_each_entry(type *cursor, struct list_head *list, member)
list_for_each_entry_safe(type *cursor, type *next struct list_head *list, member)
Удобные макросы для перебора связных списков.
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.