Книга: Разработка ядра Linux
Типы с явным указанием размера
Типы с явным указанием размера
Часто при программировании необходимы типы данных заданного размера. Обычно это необходимо для удовлетворения некоторых внешних требований, связанных с аппаратным обеспечением, сетью или бинарной совместимостью. Например, звуковой адаптер может иметь 32-разрядный регистр, пакет сетевого протокола — 16-разрядное поле данных, а исполняемый файл — 8 битовый идентификатор cookie. В этих случаях тип, который представляет данные, должен иметь точно заданный размер.
В ядре типы данных явно заданного размера определены в файле <asm/types.h>
, который включается из файла <linux/types.h>
. В табл. 19.2 приведен полный список таких типов данных.
Таблица 19.2. Типы данных явно заданного размера
Тип | Описание |
---|---|
s8 |
байт со знаком |
u8 |
байт без знака |
s16 |
16-разрядное целое число со знаком |
u16 |
16-разрядное целое число без знака |
s32 |
32-разрядное целое число со знаком |
u32 |
32-разрядное целое число без знака |
s64 |
64-разрядное целое число со знаком |
u64 |
64-разрядное целое число без знака |
Варианты со знаком используются редко.
Эти типы данных, с явно заданным размером, просто определены с помощью оператора typedef
через стандартные типы данных языка С. Для 64-разрядной машины они могут быть определены следующим образом.
typedef signed char s8;
typedef unsigned char u8;
typedef signed short s16;
typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
typedef signed long s64;
typedef unsigned long u64;
Для 32-разрядной машины их можно определить, как показано ниже.
typedef signed char s8;
typedef unsigned char u8;
typedef signed short s16;
typedef unsigned short u16;
typedef signed int s32;
typedef unsigned int u32;
typedef signed long long s64;
typedef unsigned long long u64;
- Типы данных для работы с датой и временем
- Большие целые типы
- Типы страниц и их использование
- Уменьшение размера, занимаемого индексами
- 1.2.3. Константы, переменные и типы
- 4. Лекция: Типы данных
- 9.1. Классы и прототипы
- 4. Кортежи. Типы кортежей
- 5. Отношения. Типы отношений
- 1. Базовые типы данных
- 1. Различные типы и кратности связей
- 1.7 Иерархия драйверов систем хранения и типы драйверов