PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Infos zu Kernelprogrammierung 2.6 gesucht



7.e.Q
05-10-2005, 10:35
Hallo mal wieder,

ich suche Informationen zur Entwicklung von Modulen für den Standard 2.6er Linux Kernel. Ich habe schon ein sehr interessantes Buch "Linux-Treiber entwickeln" von J. Quade und E.M. Kunst, welches auch schon vieles abdeckt, aber mir fehlen noch so ein paar Details. Beispiel:

wenn ein Programm den System-Call select() aufruft, was dann genau passiert. Was genau poll_wait() tut, was der aufrufende Prozess tut, was der Kernel tut etc. Vielleicht kann ja auch jemand schonmal speziell diese Frage beantworten. Ich hab das bisher so verstanden, daß der Prozess, der select() aufruft, vom abgefragten Treiber in der Funktion dev_poll() durch poll_wait() schlafen gelegt wird. Ich versteh das so, daß alle User Prozesse, die durch poll_wait() schlafen gelegt wurden, blockieren, bis der Treiber sie mit wake_up_interruptible() wieder aufweckt. Oder wie? Was ist der Unterschied zwischen poll_wait() und wait_event_interruptible()?

Viele Fragen, die vielleicht schon irgendwo mal beantwortet wurden. Für Hilfe wäre ich sehr dankbar!

Gruß,
Hendrik

Pingu
05-10-2005, 11:29
Hi,

ich kann Dir Deine Frage lieder nicht im Detail beantworten.

Aber das Linux-Magazin hat seit letztem Jahr ein interessante Artikel-Serie zum Thema Kernel-Programmierung. Da ich z. Zt. nicht allzuviel mit Programmierung unter Linux zu tun habe, habe ich es bisher nicht gelesen bzw. nur ab und zu.

Falls Du das Linux-Magazin nicht hast, da kommt demnächst eine DVD mit allen Artikeln von anno-da-zu-mal heraus. Ich glaube wegen dem 10-jährigem Jubiläum.

Pingu

7.e.Q
05-10-2005, 23:24
Gut zu wissen. Ich werde es mir mal ansehen. Sage dir meinen Dank!

`kk
06-10-2005, 11:44
Naja, die Autoren sind die selben, die auch das Buch geschrieben haben.
Vielleicht steht ja mehr im Linux-Magazin als im Buch.. wer weiß. ;)

7.e.Q
07-10-2005, 08:25
Das Buch ist schon echt genial. Es fehlen allerdings ein zwei drei Zusammenhänge, die ich gerne erklärt bekommen hätte. Aber eventuell werden diese ja in dem Magazin erklärt. Abwarten...

quinte17
07-10-2005, 15:32
hier noch ein buchtipp, finde des nicht schlecht

http://www.amazon.de/exec/obidos/ASIN/3827322049/302-7449124-3602447

RapidMax
07-10-2005, 17:51
Ich möchte jetzt nicht elitär herüberkommen. Für soche Details hast du immernoch den Quelltext.

Noch ein paar Hilfestellungen. Ein grep in linux/Documentation/ lieferte folgenden Ausschnitt aus linux/Documentation/kernel-docs.txt:


* Title: "The Devil's in the Details"
Author: Georg v. Zezschwitz and Alessandro Rubini.
URL: http://www2.linuxjournal.com/lj-issues/issue25/1221.html
Keywords: read(), write(), select(), ioctl(), blocking/non
blocking mode, interrupt handler.
Description: Linux Journal Kernel Korner article. Here is it's
abstract: "This article, the third of four on writing character
device drivers, introduces concepts of reading, writing, and using
ioctl-calls".

Und das ist nur der erste Eintrag.
Gruss, Andy

iluminat23
07-10-2005, 22:31
ich bin mal auf das gestossen: Linux-Treiber entwickeln (http://ezs.kr.hsnr.de/TreiberBuch/html/).
hatte bisher keine zeit es mir näher anzuschen.

mfg philipp

7.e.Q
10-10-2005, 05:41
@iluminati: japp, das ist genau das, was wir bereits in gebundener Form hier vorliegen haben. :) Aber danke trotzdem.

@RapidMax: stimmt auch, in den Code könnte ich auch mal reinlinsen. Aber wonach hast du denn genau ge-grept, in deinem Beispiel?

@quinte: danke für den Tipp. Ich werd's mal bei meinem Cheffe beantragen. :)

nobody0
24-10-2005, 01:56
Zur Treiber-Programmierung:

http://ezs.kr.hsnr.de/index.php?id=35

7.e.Q
24-10-2005, 06:23
@nobody: ich schieb's mal auf die Uhrzeit... aber schau dir mal "illuminat23"'s Beitrag an! :rolleyes:

nobody0
24-10-2005, 08:42
Bei meinem Link steht noch etwas mehr; beispielsweise ein Link zum Sourcecode.

7.e.Q
31-10-2005, 08:04
Sourcecode verleitet mich immer dazu, zuviel copy & paste zu verwenden, was dramatisch den Lernfaktor minimiert... Aber danke trotzdem! :)