Мне нужно создать драйвер устройства, который возвращает случайное число от 1 до 50, и я не совсем понимаю, как работает буфер для моего драйвера устройства и как заставить его вести себя как /dev/random.
.
Я сделал тестовую программу, чтобы увидеть, как работает / dev / random:
int test_read = open("/dev/random", O_RDONLY);
int get_random_num(void) {
unsigned int random_num;
read(test_read, &random_num, sizeof(random_num));
return (random_num % 50) + 1;
}
и затем это функция чтения моего драйвера устройства (сжатая версия):
my_random_read(struct file* file, char* buf,
size_t count, loff_t* ppos)
{
unsigned int random_num;
get_random_bytes(&random_num, 1);
int my_num = 1 + (random_num % 50)
int* my_num_pointer = &my_num;
copy_to_user(buf, my_num_pointer, count);
}
когда я запускаю свой тестер в QEMU, я получаю -1074311964: /
как мне сделать так, чтобы все, что мне нужно было сделать, это заменить / dev / random на / dev / my_random ??
вот как я читаю из / dev / my_random:
read(test_read, &random_number, sizeof(random_number), 0);