Структуры в пространстве ядра Linux? - PullRequest
0 голосов
/ 19 октября 2018

Мой вопрос касается использования и поведения структур в Linux Kernel Space.Я пишу драйвер устройства char:

struct LEDs{

    int red_l;
};

ssize_t gmem_driver_write(struct file *file, const char *buf,
       size_t count, loff_t *ppos)
{

    struct LEDs myled;
    printk("Red is: %d \n", myled.red_l);       
    return 0;
}

static long my_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
{

    struct LEDs myled = {};
    myled.red_l = 1;
    return 0;
}

Если я сначала вызываю my_ioctl, а затем пишу из пространства пользователя, я ожидаю, что red_l будет иметь значение 1 в светодиодах структуры, а затем я ожидаю, что он будет печататься внутри записифункция.Но он печатает мусорное значение.

Мой вопрос: так как эта логика работает в пространстве пользователя, есть ли здесь что-то другое?Что можно сделать, чтобы заставить его работать в Linux Kernel Space?

1 Ответ

0 голосов
/ 20 октября 2018

Эта логика работает в пространстве пользователя так же, как и в пространстве ядра;то есть, это не работает вообще ни в одном.Объявление двух переменных с одинаковым именем в разных функциях не делает их одной и той же переменной.

...