Краткая справка |
Предыдущая Содержание Следующая |
В этой главе были представлены следующие символы:
#include <linux/types.h> typedef u8; typedef u16; typedef u32; typedef u64; Тип гарантированно являющиеся 8-ми, 16-ми, 32-х и 64-х разрядными беззнаковыми целыми величинами. Также существуют эквивалентные знаковые типы. В пользовательском пространстве вы можете ссылаться на эти типы как __u8, __u16 и так далее.
#include <asm/page.h> PAGE_SIZE PAGE_SHIFT Символы, которые определяют количество байт на страницу для существующей архитектуры и число битов на смещение страницы (12 для 4 Кб страниц и 13 для 8 Kб страниц).
#include <asm/byteorder.h> __LITTLE_ENDIAN __BIG_ENDIAN В зависимости от архитектуры определяется только один из этих двух символов.
#include <asm/byteorder.h> u32 __cpu_to_le32 (u32); u32 __le32_to_cpu (u32); Функции, которые выполняют преобразование между известными порядками байтов и таковыми в процессоре. Есть более чем 60 таких функций; для полного списка и способов, которыми они определены, смотрите разные файлы в include/linux/byteorder/.
#include <asm/unaligned.h> get_unaligned(ptr); put_unaligned(val, ptr); Некоторым архитектурам необходимо с использованием этих макросов защитить доступ к невыровненным данным. Макросы преобразуются в обычное разыменование указателя для архитектур, которые позволяют вам получить доступ к невыровненным данным.
#include <linux/err.h> void *ERR_PTR(long error); long PTR_ERR(const void *ptr); long IS_ERR(const void *ptr); Функции позволяют функциям, которые возвращают значение указателя, возвращать коды ошибок.
#include <linux/list.h> 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) Удобные макросы для перебора связных списков. |
Предыдущая Содержание Следующая |