Запись байтов в int в режиме ядра с использованием copy_from_user - PullRequest
0 голосов
/ 07 декабря 2018

Добрый день, у меня сегодня проблема, когда я создаю драйвер устройства, где я могу получить его, чтобы он прекрасно читал функцию dice_read, но когда я пытаюсь использовать dice_write, кажется, что это не таквообще ничего.Я даже добавил printk's, чтобы попытаться устранить неполадки, и кажется, что он все равно туда не попадет.не совсем уверен, почему.Я просто пытаюсь использовать строку "echo -ne \ x8 \ x4> / dev / dice", и она должна взять байт с "4" и поместить его в int.Я добавил свой dice_write ниже.Спасибо!(сторон является глобальной переменной)

static ssize_t dice_write(struct file * file, const char * buf,
                      size_t count, loff_t *ppos)
{
    char *data = kmalloc(sizeof(buf), GFP_KERNEL);

    copy_from_user(data, &buf, count);

    int i = sizeof(data);
    sides = 0;
    char digit = data[i - 1];
    if(digit >= '0' && digit <= '9'){
        sides = digit - '0';
    }

    kfree(data);

    return count;
}
...