Page 1 of 1

PCB

Posted: 10. Mar 2006 15:52
by gast1
hi

ich versuch ein programm in c zu schreiben, der die einträge vom PCB direct liset und ein paare informationene über laufende prozesse auflisten muss.
ich habe alle notwendige bibliotheke geladen(shed.h..........etc). aber trozdem bekomme ich die meldung das der programm kein verrweis auf die PCB hat.

kann mir jemand bitte tip geben.

dabke

Re: PCB

Posted: 10. Mar 2006 19:39
by Janka
gast1 wrote:ich versuch ein programm in c zu schreiben, der die einträge vom PCB direct liset und ein paare informationene über laufende prozesse auflisten muss.
ich habe alle notwendige bibliotheke geladen(shed.h..........etc). aber trozdem bekomme ich die meldung das der programm kein verrweis auf die PCB hat.

kann mir jemand bitte tip geben.
Schwierig. Zumal du nicht erklärst, was für dich ein PCB ist (Printed ciruit board? Polychlorbiphenyl? ...?)

Außerdem ist "sched.h" keine Blibothek sondern eine Headerdatei. Die entsprechenden Dinge sind in der Glibc vorhanden, die der C-Compiler üblicherweise ohne weiteres Zutun einbindet.

Schreib bitte verständlicher, was du machen willst (Ach ja, reaktiviere doch mal dein Großschreibtaste).

Außerdem solltest du Fehlermeldungen immer gleich mit posten, das erspart DIESE NACHFRAGE. :roll:

Janka

Posted: 13. Mar 2006 13:33
by gast1
hi,
mit PCB mein ich Prozess controlleblock. diese list befindet sich immer im haupt speicher .ich weiss nicht wie bekomme ich ihre adresse und wie kann ich aus mein programm drauf zugreifen.

Posted: 13. Mar 2006 17:41
by Janka
gast1 wrote:hi,
mit PCB mein ich Prozess controlleblock. diese list befindet sich immer im haupt speicher .ich weiss nicht wie bekomme ich ihre adresse und wie kann ich aus mein programm drauf zugreifen.
Hm, normalerweise pfuscht ein Userspace-Prozess nicht daran rum. Ich weiß nicht mal, ob das über einen entsprechenden sysctl()-Aufruf in Linux überhaupt noch geht. Auf jeden Fall höchst unportabel.

Selbst ps, das ja das Basiswerkzeug für sowas ist, nutzt seit geraumer Zeit das Verzeichnis /proc. Da kriegst du alle Infos als Dateien.

Was willst du konkret tun? Was soll das werden?

Janka

task_struct

Posted: 14. Mar 2006 20:36
by Marco Gerber
tach

Was du meinst ist die task_struct. Es handelt sich dabei um eine Struktur, welche den kompletten Zustand der Prozesse als verkettete Liste, mit fuer jeden Prozess einen Eintrag der struct verwendet.

Du findest sie in:

Code: Select all

include/sched.h
Wenn du vom Userspace darauf zugreifen willst, musst du eine Schnittstelle in den Kernel Space (Ring 0) schreiben. Dazu kannst du ein Modul schreiben, welches das /proc Dateisystem verwendet, und die gewuenschten Daten per Uebergabekommando in eine Datei schreibt, und anschliessendem lesen.
Ein Beispiel wie man das Procdateisystem verwendet findest du unter:

Code: Select all

/usr/src/linux/Documentation/DocBook/procfs_example.c
Oder du schreibst dir einen eigenen sysctl, was aber aufwaendiger wird, aber den Vorteil hat, dass du ihn mittels ioctl als Schnittstelle vom Userspace auslesen / beschreiben (Vorsicht!) kannst.

Viel Spass...

greetz by
Marco Gerber