Книга: Разработка ядра Linux

Порядок байтов в ядре

Порядок байтов в ядре

Для каждой аппаратной платформы, которая поддерживается ядром Linux, в файле <asm/byteorder.h> определена одна из двух констант __BIG_ENDIAN или __LITTLE_ENDIAN, в соответствии с используемым порядком байтов.

В этот заголовочный файл также включаются макросы из каталога include/linux/byteorder/, которые помогают конвертировать один порядок байтов в другой. Ниже показаны наиболее часто используемые макросы.

u32 __cpu_to_be32(u32); /* преобразовать порядок байтов текущего
                           процессора в порядок big-endian */
u32 __cpu_to_le32(u32); /* преобразовать порядок байтов текущего
                           процессора в порядок little-endian */
u32 __be32_to_cpu(u32); /* преобразовать порядок байтов big-endian в
                           порядок байтов текущего процессора */
u32 __lе32_to_cpu(u32); /* преобразовать порядок байтов little-endian
                           в порядок байтов текущего процессора */

Эти макросы выполняют преобразование одного порядка байтов в другой. В случае когда порядки байтов, между которыми выполняется преобразование, одинаковы (например, если выполняется преобразование в обратный порядку байтов и процессор тоже использует такой же порядок), то эти макросы не делают ничего. В противном случае возвращается преобразованное значение.

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


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