PCB

Antworten
Nachricht
Autor
gast1
Beiträge: 2
Registriert: 10. Mär 2006 15:45

PCB

#1 Beitrag von gast1 » 10. Mär 2006 15:52

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

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

Re: PCB

#2 Beitrag von Janka » 10. Mär 2006 19:39

gast1 hat geschrieben: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

gast1
Beiträge: 2
Registriert: 10. Mär 2006 15:45

#3 Beitrag von gast1 » 13. Mär 2006 13:33

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.

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 13. Mär 2006 17:41

gast1 hat geschrieben: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

Marco Gerber

task_struct

#5 Beitrag von Marco Gerber » 14. Mär 2006 20:36

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: Alles auswählen

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: Alles auswählen

/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

Antworten