Краткая справка

Предыдущая  Содержание  Следующая V*D*V

В этой главе были представлены следующие символы:

 

#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)

Удобные макросы для перебора связных списков.

Предыдущая  Содержание  Следующая