Datei erstellen

Hi,
Wenn man eine Datei erstellt, wo wird es im Kernel behandeln? Anders gesagt wo kann ich im Kernel die Routine finden die dafür veranwortlich ist wenn man eine Datei erstellt?
Danke.

Hallo nguemmegne,

Wenn man eine Datei erstellt, wo wird es im Kernel behandeln?

Ich befürchte, Du stellst dir das alles zu einfach vor. Selbst wenn ich es könnte und würde dir Funktionen im Kernel zeigen, hilft es dir tatsächlich weiter? Erstens passiert zuviel bei der Erstellung einer Datei, ein neuer Inode wird erzeugt, im passenden Verzeichnis ein Verweis auf ihn angelegt, ein Filedeskriptor erzeugt usw. (wobei diese Beschreibung garantiert nur angenähert und sicher nicht fehlerfrei ist).
Zweitens hängt es noch davon ab, welche Architektur wir benutzen und in welchem Filesystem die Datei erstellt werden soll, und drittens verlierst Du den Überblick, wenn Du dich an einzelne „Kernel-Routinen“ klammerst.
Lerne, wie der Kernel im großen und ganzen funktioniert, was passiert, wenn z.B. eine neue Datei erstellt wird usw. Wenn Du das verstanden hast und eventuell auch begleitend, kannst Du dir einzelne Routinen raussuchen und den Quellcode studieren um ein tieferes Verständnis dafür zu bekommen, aber nicht umgekehrt.
Ich mag mich irren, aber sich nur die Routinen anzusehen ist meiner Meinung nach kein Weg, um über den Kernel was zu lernen.
Besorge dir eines oder ein paar dieser Bücher

Bovet, Daniel P.; Cesati, Marco: Understanding the Linux kernel. Beijing [u.a.]: O’Reilly 2006, ISBN 0-596-00565-2 Buch anschauen

Kroah-Hartman, Greg: Linux kernel in a nutshell. Beijing [u.a.]: O’Reilly 2006, ISBN 0-596-10079-5 Buch anschauen

Love, Robert: Linux kernel development. Indianapolis, Ind.: Novell 2007, ISBN 0-672-32720-1 Buch anschauen (davon ist eine 3. Aufl. angekündigt, aber wohl noch nicht erschienen)

Mauerer, Wolfgang: Professional Linux kernel architecture. Indianapolis, Ind.: Wiley 2008, ISBN 0-470-34343-5 Buch anschauen

Bis Du die Bücher besorgt hast, kannst Du auch diese Artikelserie studieren:
http://www.linux-magazin.de/Heft-Abo/Ausgaben/2003/0…
(das sind mindestens zehn Teile)

oder
http://www.win.tue.nl/~aeb/linux/lk/lk.html
http://manugarg.googlepages.com/systemcallinlinux2_6…

Wenn Du das einigermassen verstanden hast, fällt es dir auch viel leichter dich in den Sourcen zurechtzufinden, die Du z.B. von hier bekommen kannst
ftp://ftp.kernel.org/pub/linux/
die aber sowieso bei allen Distris mit dabei sind.
Und das hier
http://lxr.linux.no/
ist dann eigentlich nur noch ein Hilfsmittel, das Du dir mit z.B. grep auch selbst basteln kannst.
Ganz konnte ich mich dann doch nicht bremsen, deshalb ein kleiner Tipp: Such mal in den Quellen nach einer Datei fs.h
Aber wie ich schon sagte, ohne Überblick und allgemeines Hintergrundwissen wirst Du mit solchen Quelltexten nicht glücklich. Das alles gilt auch für deine andere Frage nach dem Terminal-Driver im Kernel, der sicher so als „der Terminal-Treiber“ nicht existiert, sondern bestenfalls im Plural für die verschiedenen Arten von Terminals (Textterminal, Graphikterminal…). Auch hier sage ich, lies z.B. dieses Text-Terminal-Howto
http://tldp.org/HOWTO/Text-Terminal-HOWTO.html
wahrscheinlich kannst Du dann deine Fragen auch präziser stellen oder hast vielleicht gar keine mehr :wink:

Viele Grüße
Marvin

Danke Marvin,

Ich weiß daß den Kernel millionen von Routinen besitzt. Ich weiß auch wenn man eine Datei erstellt was alles passiert von Superblock bis Datenblöcke. Ich habe auch mal paare sachen darüber gelesen und ich bin auf die Struktur termios gestoßen. Dort kann man unsere Terminal beliebige einstellen.
Meine Frage ist: gehört die Struktur Termios zum Kernel?
Danke.

Hallo nguemmegne,

Ich
weiß auch wenn man eine Datei erstellt was alles passiert von
Superblock bis Datenblöcke.

Um so besser, wenn Du das alles weisst.

ich bin auf die Struktur termios gestoßen.
Dort kann man unsere Terminal beliebige einstellen.
Meine Frage ist: gehört die Struktur Termios zum Kernel?

Das hatten wir doch schon mal
/t/headerdatei-termio-h/5119063/3
Weil dort ein Link nicht (mehr?) funktioniert, gibt es noch einen als Zugabe:
http://www.easysw.com/~mike/serial/serial.html
Ich hoffe, es hilft dir diesmal weiter. Wenn nicht, ist es einfacher, wenn Du in etwa schreibst, was Du schon dafür programmiert hast und was genau noch nicht funktioniert.

Viele Grüße
Marvin