Autor Thema: Code-Dispatcher  (Gelesen 5374 mal)

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« am: 31. January 2013, 15:52 »
Hi zusammen,

ich versuche gerade die Module meines Kernels so umzubauen, dass sie abhängig von der Architektur optimalen Code ausführen.
z.B. Es soll eine generische memset funktion geben und dann noch eine optimierte, damit die Hardware optimal ausgenutzt wird.
Das wollte ich so machen, dass mein Module-Loader die Funktionen entsprechend wählt, bzw. dass das Modul anhand der Architektur sagt, welche Funktionen genutzt werden sollen.

Habt ihr Ideen, wie man das am Effektivsten umsetzen kann?

Grüße,
rizor
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 31. January 2013, 16:15 »
Ich hab das noch nicht gemacht, aber du könntest dir mal das ifunc-Attribut anschauen. Da definierst du eine Dispatcher-Funktion, die einen Zeiger die gewünschte Routine zurückgibt. Die Dokumentation sagt, dass die Funktionsauswahl zur Ladezeit geschieht (ich schätze dann wird die Funktion einmal aufgerufen). Vermutlich funktioniert das nicht einfach so mit dem ELF-Loader von GRUB/etc., aber wenn du deinen eigenen Loader hast, kannst du das sicherlich selbst aufrufen. Dieser Blog-Post behauptet allerdings auch, dass die Funktion anderes verwendet werden muss und dass die Auswahl beim ersten Aufruf geschieht.
Dieser Text wird unter jedem Beitrag angezeigt.

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 31. January 2013, 17:54 »
Danke für die Links.
Sowas habe ich gesucht.
Macht es mir zumindest mal einfacher.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

 

Einloggen