Ich muss einen Gerätetreiber, der eine zufällige Zahl zwischen 1 - 50 zurückgibt und bin verwirrt darüber, wie der Puffer für meinen Gerätetreiber funktioniert, und wie man vorgeht damit es sich wie/dev/random verhält.machen meine eigenen/dev/random, Puffer funktioniert nicht, c
ich machte ein Testprogramm zu sehen, wie/dev/random Werke:
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;
}
und dann ist die Lesefunktion meines Gerätetreiber (concised Version):
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);
}
, wenn ich meine laufen Tester auf QEMU ich bekomme -1074311964:/
wie kann ich es so machen, dass alles, was ich tun müsste, ist/dev/random mit/dev/my_random ??
dies ist, wie ich von/dev/my_random gerade lese:
read(test_read, &random_number, sizeof(random_number), 0);
Ich verstehe die Frage nicht. Sie haben ein Code-Snippet gepostet, dann fragen Sie, wie man '/ dev/random' emuliert, aber Ihr Fragetitel impliziert, dass ein Fehler vorliegt. –
@OliCharlesworth nachdem ich meinen Gerätetreiber kompiliert und geladen habe (woher kommt das Code-Snippet), lese ich aus/dev/my_random und was zurückgegeben wird ist -1074311964. – Tim