Schnellreferenz

In diesem Kapitel wurden die folgenden Symbole eingeführt:

#include <linux/types.h>, typedef u8;, typedef u16;, typedef u32;, typedef u64;

Diese Typen sind vorzeichenlose Integer-Werte mit einer garantierten Größe von 8, 16, 32 und 64 Bit. Es gibt auch die zugehörigen vorzeichenbehafteten Typen. Im User-Space können Sie auf diese Typen als __u8, __u16 usw. zugreifen.

#include <asm/page.h>, PAGE_SIZE, PAGE_SHIFT

Diese Symbole definieren die Anzahl der Bytes pro Seite in der jeweiligen Architektur und die Anzahl der Bits im Seiten-Offset (12 bei 4 KByte-Seiten und 13 bei 8 KByte-Seiten).

#include <asm/byteorder.h>, _ _LITTLE_ENDIAN, _ _BIG_ENDIAN

Nur eines dieser beiden Symbole ist — je nach Architektur — definiert.

#include <asm/byteorder.h>, u32 _ _cpu_to_le32 (u32);, u32 _ _le32_to_cpu (u32);,

Funktionen zum Konvertieren zwischen bekannten Byte-Reihenfolgen und der Byte-Reihenfolge des Prozessors. Es gibt mehr als sechzig solcher Funktionen; die diversen Dateien in include/linux/byteorder/ enthalten die vollständige Liste und die Definitionen dieser Funktionen.

#include <asm/unaligned.h>, get_unaligned(ptr);, put_unaligned(val, ptr);

Manche Architekturen benötigen diese Makros, um auf nicht-ausgerichtete Daten zuzugreifen. Diese Makros werden auf Architekturen, die Zugriff auf nicht-ausgerichtete Daten erlauben, zur einfachen Dereferenzierung von Zeigern expandiert.

#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_empty(struct list_head *head);, list_entry(entry, type, member);, list_splice(struct list_head *list, struct list_head *head);

Funktionen zum Manipulieren zirkulärer, doppelt verketteter Listen.