Wie du ELF Relocateables relocatest findest du in deinem eigenen Thread:
http://www.lowlevel.brainsware.org/forum/viewtopic.php?t=907Eigentlich ist das ganze kein dynamisches Linken, unter dynamischem Linken versteht man eher das linken von shared objects zu einem Programm und das ist im Vergleich zum relocieren sehr schwierig.
Vor dem Problem wie ich Treiber einbinde stehe ich im Moment auch, eigentlich wollte ich sie als shared objects implementieren, die dann in den Prozess der sie benutzt gemappt werden, das ist aber relativ schwer zu implementieren. (Wenn jemand ein Tutorial oder Beispielcode für das laden von shared objects hat, wäre ich sehr dankbar^^)
Mein Hybrid-Kernel unterstützt es bisher, Treiber als Prozesse zu laden und dann in den Treiber zu springen, indem der Prozess gewechselt wird und die Parameter des Funktionsaufrufes vom einen Addressspace in den anderen gemappt werden. Das ist aber relativ lahm. Ausserdem unterstütze ich noch eine Exokernel ähnliche Treiberart, nähmlich, das der User selbst die Hardware nutzen kann. Das ist aber nur begrenzt möglich, da man nicht kontrollieren kann, was genau der user mit der Hardware macht. Festplatten brauchen z.B. einen eigenen Treiber, damit nicht jeder Benutzer alle Daten verändern kann. LegendOS hat/hatte eine Technik namens migrating threads, die könnte ich mir mal ansehen.^^
Wäre nett, wenn mir jemand erklären könnte, wie migrating threads funktionieren.