системные вызовы на эмуляторе goldfish, работающем с самокомпилированным ядром - PullRequest
0 голосов
/ 10 мая 2018

Я написал драйвер для встраиваемого ядра Linux goldfish 3.4. Теперь я хочу проверить мой системный вызов ioctl из драйвера устройства, который я написал в директории \dev. Во многих онлайн-уроках все предлагают написать простую пользовательскую программу c для тестирования. Тем не менее, я понятия не имею, как это сделать во встроенной среде, такой как золотая рыбка. Это эмулятор для телефона Android.

static int goldfish_accel_ioctl(struct file* fp, unsigned int cmd, unsigned long arg){ switch(cmd){ case TEST: printk(KERN_ALERT"Hello world ioctl!"); } } Я зарегистрировал специальный файл в каталоге dev\ с именем accelrometer

Надеюсь, мое описание имеет смысл.

1 Ответ

0 голосов
/ 15 мая 2018

Я наконец нашел решение и поделился им здесь на тот случай, если у кого-то возникнет та же проблема, что и у меня.

Очевидно, ядро ​​Linux, которое я запускаю (по крайней мере, эмулятор золотой рыбки с оболочкой adb), имеет встроеннуюioctl command.

Использование:

ioctl \dev yourDevice cmd

Отмеченный cmd - это целое число, которое вы извлекаете из _IO(MAGIC_NUMBER, n) внутри вашего драйвера.Вы можете использовать параметры модуля, чтобы получить их в пользовательском пространстве, если вы не можете написать библиотеку пользовательского пространства для тестирования вашего ioctl.

...