Книга: Разработка ядра 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;

Оглавление книги


Генерация: 0.494. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз