PCB

Post Reply
Message
Author
gast1
Posts: 2
Joined: 10. Mar 2006 15:45

PCB

#1 Post 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

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

Re: PCB

#2 Post 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

gast1
Posts: 2
Joined: 10. Mar 2006 15:45

#3 Post 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.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#4 Post 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

Marco Gerber

task_struct

#5 Post 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

Post Reply