Forum: PC-Programmierung Linux Driver hw_random


von olpo (Gast)


Lesenswert?

Hallo,

ich möchte gerne meinen eigenen hw_random Treiber für Linux schreiben.

https://github.com/torvalds/linux/blob/master/drivers/char/hw_random

Am liebsten hätte ich das in einem separaten Projekt und nicht im Linux 
Kernel eingefügt.
Hier bin ich mir allerdings unsicher, ob das überhaupt möglich oder 
empfehlenswert ist.

Kurz, ich habe Probleme, die Makefile 100% zu verstehen.
1
obj-$(CONFIG_HW_RANDOM) += rng-core.o
2
rng-core-y := core.o
3
obj-$(CONFIG_HW_RANDOM_TIMERIOMEM) += timeriomem-rng.o
4
obj-$(CONFIG_HW_RANDOM_INTEL) += intel-rng.o


Alle Random-Module brauchen wohl rng-core.o, das als obere Schicht 
fungiert.
Bsp intel-rng:
1
err = hwrng_register(&intel_rng);

Nur wie ist das, sind das zwei verschiedene Module (rng-core & 
intel-rng) die erst im Kernel verlinkt werden? Oder wird intel-rng mit 
rng-core zu einem Linux Module verschmolzen?

Könnte ich intel-rng in ein separates Projekt auslagern und dort 
kompilieren?
Etwa so:
1
obj-m += intel-rng.o
2
3
all:
4
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
5
clean:
6
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

Wird das dann noch sauber mit rng-core gelinkt?

von Michael B. (mb_)


Lesenswert?

olpo schrieb:
> Nur wie ist das, sind das zwei verschiedene Module (rng-core &
> intel-rng) die erst im Kernel verlinkt werden?

Ja. Symbole, die mit EXPORT_SYMBOL(_GPL) exportiert sind, wie auch 
hwrng_(un)register, werden zur Ladezeit verlinkt.

> Könnte ich intel-rng in ein separates Projekt auslagern und dort
> kompilieren?

Ja.
Aber warum willst du das tun? Du solltest dein Modul für deinen RNG 
(welcher ist es überhaupt) in den Upstream-Kernel integrieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.