Header Dateien



  • Hallo an alle,

    meine Frage ist, wie man sich unter Linux eine Header-Datei anschauen kann eventuell konjugieren kann?

    Zum Beispiel, ich möchte mir die Header-Datei <linux/sched.h> anschauen, damit ich die Priorität von einem Prozess ändern kann.

    Mag sein, dass es dafür einen Befehl gibt. Aber mir ist wichtig, dass ich dies unter der Datei ändern kann.

    Vielen Dank im voraus

    Viele Grüße



  • Könntest Du die Frage bitte neu formulieren? Ich habe keine Ahnung, was Du meinst.

    Du müchtest eine Header-Datei konjugieren? Bist Du Dir sicher, dass Du nichts anderes meinst?



  • Hallo,

    Ja klar, mache ich, sogar wäre besser, wenn ich den Satz komplett von dem Buch abschreibe, damit es einfacher zu verstehen ist.

    Im Buch steht wie folgt:

    Im Linux-Kernel ist der PCB durch die Taskstruktur struct task_struct repräsentiert (siehe Header-Datei <linux/sched.h>). So stellt beispielsweise das Feld pid die Prozessidentifikation dar, in der Unterstruktur thread wird der Maschinenzustand abgelegt und das Feld rt_priority enthält die Prozesspriorität.

    Mein Wunsch ist, die Datei ersmal zu finden und reinschauen.

    Ich lerne gerade den Linux-Kernel aus diesem Buch und denke, dass man nicht so richtig verstehen könnte, wenn man alles nicht in die Tat umsetzt.

    Das kennt jeder oder? 😋

    Vielen Dank

    Azad



  • Hallo,

    also als erstes holst du dir am besten den kompletten Quelltextbaum von Linux von
    http://kernel.org/

    Dabei solltest du natürlich die Version nehmen, die du auch gerade betreibst.
    (uname -a)
    Du willst das komplette Archiv (ca. 30-50MB), nicht nur einen Patch von einer Version zur nächsten!

    Das Archiv entpackst du dann und dann hast du die kompletten Quellen.
    Wenn du in dein Heimverzeichnis entpackst, dann könnte die Datei die du suchst z.B. in

    /home/Azad/linux-versionsnummer/include/linux/sched.h

    zu finden sein.

    PS: Bevor du an die Kernelprogrammierung gehst, willst du vielleicht
    http://www.kroah.com/lkn/
    gelesen haben.



  • Hallo,

    ich danke für die ausführliche Antwort.

    Ausserdem wollte ich fragen, was die Ausgabe sein kann.

    2.6.24-19-generic

    unter www.kernel.org finde ich diese Version von meinem Kernel nicht.

    Danke nochmal

    Viele Grüße

    Azad



  • Normalerweise läuft es so, dass Distributoren die Kernelsourcen nehmen, konfigurieren und dann kompiliert ausliefern. Die Distribution soll natürlich auf möglichst vielen Machinen laufen, deshalb wurde möglichst viel mitkompiliert. Daher kommt das "generic".

    Wenn man den Kernel für sich selbst baut, dann macht man das natürlich nicht so allgemein sondern eher für seine Maschine angepasst.

    Wenn die Distribution erst einmal ausgeliefert ist, dann muss natürlich eine gewisse Kompatibilität gewahrt werden, deshalb bleibt man solange wie möglich bei einer Kernelversion. Im Hintergrund arbeitet das Kernelteam von kernel.org aber stetig weiter. Manchmal finden sie dabei sicherheitsrelevante Bugs, die so wichtig sind, dass die Distributoren die Bugpatches selbst einpflegen.

    So kommt es dann zu der Situation, dass 2.6.24-19 den Kernel mit der Version 2.6.24 meint, der schon 19 mal gepatcht wurde von den Distributoren. Die Unterschiede zum 2.6.24 Kernel "von der Stange" sind aber meistens minimal.

    Du kannst aber natürlich auch bei deinem Distributor schauen, wo er die Sourcen von "seinem" Kernel feilhält.

    Eine andere Variante ist natürlich, sich das neueste Linux von kernel.org zu holen und selbst zu kompilieren. So hat man dann wirklich 100% Übereinstimmung.
    Aber wie gesagt, die Unterschieden nehmen sich meist nicht so viel.



  • Einfach die Linux Header installieren, wenn sie noch nicht installiert sind.

    Unter Debian/Ubuntu wäre das einfach sudo apt-get install linux-headers-2.6.24-19

    (im Zweifelsfall mit apt-cache search linux-headers suchen).

    Und dann liegen die einfach in /usr/include/linux/ .



  • Wisst ihr, wie Schudeling im Kernel funktioniert und wie man die Prozesse durch dieses Verfahren verwalten kann?

    Danke



  • dein ansatz scheint falsch zu sein. warum die header datei, so wie sich mir das darstellt kannst du damit sowieso nichts anfangen.
    suche nach linux + scheduler
    es gibt infos im net wie man den scheduler steuern kann. war so ein artikel nicht mal auf pro-linux?



  • Schau dir lieber mal man: setpriority an.



  • auch immer ganz nützlich zum code gucken ist die linux code reference:
    http://lxr.linux.no/


Anmelden zum Antworten