Quick Reference

The following symbols were introduced in this chapter.

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

These types are guaranteed to be 8-, 16-, 32-, and 64-bit unsigned integer values. The equivalent signed types exist as well. In user space, you can refer to the types as __u8, __u16, and so forth.

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

These symbols define the number of bytes per page for the current architecture and the number of bits in the page offset (12 for 4-KB pages and 13 for 8-KB pages).

#include <asm/byteorder.h> , __LITTLE_ENDIAN , __BIG_ENDIAN

Only one of the two symbols is defined, depending on the architecture.

#include <asm/byteorder.h> , u32 __cpu_to_le32 (u32); , u32 __le32_to_cpu (u32); ,

Functions for converting between known byte orders and that of the processor. There are more than 60 such functions; see the various files in include/linux/byteorder/ for a full list and the ways in which they are defined.

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

Some architectures need to protect unaligned data access using these macros. The macros expand to normal pointer dereferencing for architectures that permit you to access unaligned data.

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

Functions for manipulating circular, doubly linked lists.

Get Linux Device Drivers, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.