Tag: linux kernel

Что такое синтаксис инициализации структуры тегов?

struct file_operations scull_fops = { .owner = THIS_MODULE, .llseek = scull_llseek, .read = scull_read, .write = scull_write, .ioctl = scull_ioctl, .open = scull_open, .release = scull_release, }; Это объявление использует стандартный синтаксис инициализации структуры с тегами. Может кто-то уточнить?

Печать данных TCP-пакета

В TCP Communication, когда пакет передается из уровня ethernet в сеть (IP), я хочу распечатать данные, присутствующие в этом пакете? Я работаю над linux. Я получил некоторую информацию о том, что это можно сделать с помощью кода ядра Linux, то есть в linux NAT Firewall. Но где я получу исходный код ядра? Где эти кодировки […]

Каковы последствия макросов linux __user?

Я надеялся, что кто-то сможет объяснить нюансы макроса __user, используемого в источнике ядра linux. Прежде всего, макрос: # define __user __attribute__((noderef, address_space(1))) Теперь, после некоторого поиска в Google, я прочитал, что этот макрос позволяет назначить указатель как принадлежащий к адресному пространству пользователя и что он не должен быть разыменован. Возможно, мне не хватает некоторых очевидных […]

Почему код ядра / stream, выполняемый в контексте прерывания, не может спать?

Я читаю следующую статью Роберта Лав http://www.linuxjournal.com/article/6916 что говорит «… Давайте обсудим тот факт, что рабочие очереди выполняются в контексте процесса. Это контрастирует с другими механизмами нижней половины, которые все работают в контексте прерывания. Кодирование в контексте прерывания не может спать или блокироваться, поскольку прерывание контекст не имеет процесса резервного копирования, с которым нужно перепланировать. […]

Ядро Linux

Я использую kernel ​​Linux 3.0.35 на Freescale i.MX6 (ARM Cortex-A9). После запуска ядра OOPS я попытался понять инициализацию стека исключений. Вот что я раскрыл до сих пор. В cpu_init () в arch / arm / kernel / setup.c я вижу инициализацию стека исключений: struct stack { u32 irq[3]; u32 abt[3]; u32 und[3]; } ____cacheline_aligned; static […]

Файловый ввод-вывод в модуле ядра Linux

Я пишу модуль ядра Linux, который должен открывать и читать файлы. Каков наилучший способ добиться этого?

Изображение vs zImage vs uImage

В чем разница между ними? Я знаю, что u-boot нуждается в ядре в формате uImage. В системе я использую первую загрузку с загрузчика этапа 1, а затем она вызывает u-boot. Я хочу отказаться от u-boot и напрямую загрузиться с загрузчика Stage 1. Какой тип образа ядра я должен использовать?

Обоснование макроса container_of в linux / list.h

При реализации списков ядра linux в /include/linux/list.h , что является основанием для первой строки (вставленной ниже) container_of macro? const typeof( ((type *)0)->member ) *__mptr = (ptr); В моем примере кода я удалил эту строку и изменил определение на #define container_of(ptr, type, member) ({ \ (type *)( (char *)ptr – offsetof(type,member) );}) и мой код по-прежнему […]

Что такое инструкции IN & OUT для x86?

Я включил их в инструкции IN & OUT при чтении книги «Understanding Linux Kernel». Я искал справочное руководство. 5.1.9 Инструкции ввода-вывода Эти инструкции перемещают данные между портами ввода-вывода процессора и регистром или памятью. IN Read from a port OUT Write to a port INS/INSB Input string from port/Input byte string from port INS/INSW Input string […]

функция cat вызывает read () бесконечное время

Я работаю над простым драйвером символов. Я реализовал функции чтения и записи в модуле, проблема в том, что когда я пытаюсь прочитать файл устройства, используя cat /dev/devicefile он переходит в бесконечный цикл, т. cat /dev/devicefile и те же данные. Может ли кто-нибудь предложить мне какое-либо решение этой проблемы? Ниже приведен код драйвера. #include #include #include […]

Давайте будем гением компьютера.