Книга: Разработка ядра 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
в порядок байтов текущего процессора */
Эти макросы выполняют преобразование одного порядка байтов в другой. В случае когда порядки байтов, между которыми выполняется преобразование, одинаковы (например, если выполняется преобразование в обратный порядку байтов и процессор тоже использует такой же порядок), то эти макросы не делают ничего. В противном случае возвращается преобразованное значение.
- Порядок следования байтов
- Порядок выполнения операций процессором
- 7.3. Порядок заключения, изменения, расторжения договоров
- Магическая программа, или Беспорядок по расписанию
- Класс FileStream и байтовый ввод-вывод в файл
- Порядок создания связей
- 2.6.1. Порядок ведения записей
- Приоритет и порядок выполнения
- 2.3.2. GNU getopt() и порядок опций
- Порядок байтов на компьютере и в сети
- Реализация потоков в ядре Linux
- Глава 9 Средства синхронизации в ядре