• Pause | Prozess bis zum Eintreffen eines Signales suspendieren. |
• Pdomain | Prozess-Umgebung setzen bzw. erfragen. |
• Pexec | Weiteres Programm laden und ausführen. |
• Pfork | Kopie des aktuellen Prozesses erzeugen. |
• Pgetauid | User-ID eines Prozesses zu Beginn ermitteln. |
• Pgetegid | Effektive Gruppen-ID eines Prozesses ermitteln. |
• Pgeteuid | Effektive User-ID eines Prozesses ermitteln. |
• Pgetgid | Gruppen-ID eines Prozesses ermitteln. |
• Pgetgroups | gets the supplementary group ids for the calling process. |
• Pgetpgrp | Aktuelle Prozess-Gruppennummer erfragen. |
• Pgetpid | Aktuelle Prozess-ID erfragen. |
• Pgetppid | Prozess-ID für Vater-Prozess erfragen. |
• Pgetpriority | gets the current priority value for a process. |
• Pgetuid | User-ID eines Prozesses ermitteln. |
• Pkill | Signal zu einem Prozess schicken. |
• Pmsg | Nachrichten senden und empfangen. |
• Pnice | Priorität des aktuellen Prozesses verändern. |
• Prenice | Priorität eines Prozesses verändern. |
• Prusage | Informationen über Resourcenverbrauch ermitteln. |
• Psemaphore | Erzeugen, anwenden, zerstören einer Semaphore. |
• Psetauid | User-ID eines Prozesses zu Beginn setzen. |
• Psetegid | Effektive Gruppen-ID eines Prozesses setzen. |
• Pseteuid | Effektive User-ID eines Prozesses setzen. |
• Psetgid | Gruppen-ID eines Prozesses verändern. |
• Psetgroups | sets the supplementary group ids for the calling process. |
• Psetlimit | Limits der Systemresourcen setzen/erfragen. |
• Psetpgrp | Prozess-Gruppennummer eines Prozesses setzen/erfragen. |
• Psetpriority | sets the current priority value for a process. |
• Psetregid | sets the real and/or effective group id for the calling process. |
• Psetreuid | sets the real and/or effective user id for the calling process. |
• Psetuid | User-ID eines Prozesses verändern. |
• Psigaction | Art der Signalbehandlung verändern. |
• Psigblock | Signalmaske verändern. |
• Psigintr | Assigns a signal to a particular exception vector. |
• Psignal | Art der Signalbehandlung verändern. |
• Psigpause | Signalmaske setzen und Prozess bis zum Eintreffen eines Signals suspendieren. |
• Psigpending | Kontrollieren von abgeschickten Signalen. |
• Psigreturn | Verlassen eines Signal-Handlers. |
• Psigsetmask | Signalmaske ersetzen. |
• Psysctl | Gets or sets system information. |
• Pterm | Programm beenden und Wert an Aufrufer zurückgeben. |
• Pterm0 | Programm beenden und 0 an Aufrufer zurückgeben. |
• Ptermres | Programm beenden, aber im Speicher behalten. |
• Ptrace | Process tracing and debugging. |
• Pumask | Erstellungsmaske für Dateien/Verzeichnisse setzen. |
• Pusrval | Spezifische Informationen eines Prozesses setzen/erfragen. |
• Pvfork | Kopie des aktuellen Prozesses erstellen. |
• Pwait | Auf Childprozess warten, Exitcode ermitteln. |
• Pwait3 | Exitcode eines Childprozess ermitteln. |
• Pwaitpid | Exitcode eines oder mehrerer Childs ermitteln. |
Querverweis: Speicherverwaltung Signale Task-Manager
Name: | »Pause« - Prozess bis zum Eintreffen eines Signals
suspendieren.
|
Gemdosnummer: | 289
|
Deklaration: | void Pause ( void );
|
Beschreibung: | Die Funktion suspendiert den aufrufenden Prozeß, bis ein
Signal für diesen eintrifft. Wenn für dieses Signal ein
Signal-Handler mittels Psignal installiert worden ist, wird der
Handler aufgerufen, bevor die Funktion Pause zurückkehrt.
Die Funktion wird nicht zurückkehren, wenn der Signal-Handler einen nicht lokalen Sprung (per longjump) ausführt, oder das Programm beendet wird. |
Ergebnis: | Die Funktion hat kein direktes Ergebnis.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
MagiC ab Version 4.50.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psigblock Psignal Psigpause Psigsetmask
Signale
|
C: | void Pause ( void );
|
Assembler: |
move.w #289,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pdomain« - Prozessumgebung setzen bzw. erfragen.
| ||||||||||
Gemdosnummer: | 281
| ||||||||||
Deklaration: | int16_t Pdomain ( int16_t dom );
| ||||||||||
Beschreibung: | Die Funktion dient dem Setzen bzw. Abfragen der Umgebung, in
der der Prozeß ausgeführt wird. Diese Umgebung beeinflußt das
Verhalten des Prozesses zum Teil drastisch. Es gilt:
Hinweis: MiNT-kompatible Prozesse sollten auch mit Dateien umgehen können, die nicht der Standard DOS-Konvention (8+3 Zeichen) entsprechen. | ||||||||||
Ergebnis: | Die Funktion liefert die Umgebung des Prozesses zurück, die
beim Funktionsaufruf gültig war.
| ||||||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
MagiC ab Version 4.0 (05.11.1995).
| ||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||
Querverweis: | Binding Dpathconf Dopendir
|
C: | int16_t Pdomain ( int16_t dom );
|
Assembler: |
move.w dom,-(sp) ; Offset 2 move.w #281,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »program execution« - Programm laden und ausführen.
| ||||||||||||||||||||||||||||||||||||||||||||
Gemdosnummer: | 75
| ||||||||||||||||||||||||||||||||||||||||||||
Deklaration: | int32_t Pexec ( uint16_t mode, ... );
| ||||||||||||||||||||||||||||||||||||||||||||
Beschreibung: | Die Funktion lädt und startet ein Programm. Über den
Parameter mode lassen sich verschiedene Varianten auswählen:
Hinweis: Nicht alle Modi sind unter allen Betriebssystemvarianten verfügbar; deshalb sollte der Rückgabewert der Funktion beachtet werden. Unbekannte Modi sorgen für ein Funktionsergebnis von EINVFN. Kommandozeilen werden als String im Pascal-Format übergeben, d.h. im ersten Byte befindet sich die Länge der Zeile (maximal 124 Zeichen). | ||||||||||||||||||||||||||||||||||||||||||||
Ergebnis: | Die Funktion liefert als Ergebnis den Abschlußcode des
Child-Prozesses. Wenn ein Overlay geladen wurde, enthält das Ergebnis
die Basepage des Overlays. Bei einem negativen Resultat ist ein Fehler
aufgetreten.
| ||||||||||||||||||||||||||||||||||||||||||||
Verfügbar: | Alle GEMDOS Versionen.
| ||||||||||||||||||||||||||||||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||||||||||||||||||||||||||||||
Querverweis: | Binding shel_write Programmflags ARGV-Verfahren
|
C: | int32_t Pexec ( uint16_t mode, ... );
|
Assembler: |
pea env ; Offset 12 pea cmdline ; Offset 8 pea name ; Offset 4 move.w mode,-(sp) ; Offset 2 move.w #75,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen lea $10(sp),sp ; Stack korrigieren |
GFA-Basic | Adresse%=Gemdos(&H4B,W:mode%,L:name%,L:cmdline%,L:env)
|
Name: | »Pfork« - Kopie des aktuellen Prozesses erzeugen.
| ||||||
Gemdosnummer: | 283
| ||||||
Deklaration: | int16_t Pfork ( void );
| ||||||
Beschreibung: | Die Funktion erzeugt eine Kopie des aktuellen Prozesses. Der
Child-Prozeß erbt dabei eine Kopie des Adreßraums des
Parent-Prozesses, d.h. Änderungen, die der Child an Variablen macht,
haben keinen Einfluß auf den Parent.
Der neu erzeugte Prozeß beginnt seine Arbeit, wenn die Funktion Pfork zurückkehrt. Wenn der Parent im Supervisor-Modus ist, wenn diese Funktion aufgerufen wird, wird das Child dennoch im User-Modus gestartet. Ein neuer Prozess, der mit dieser Funktion gestartet wird, darf nicht Mshrink aufrufen, muß aber jede GEM Initialisierung wie appl_init und v_openvwk erneut ausführen (wenn er GEM benötigt). Parent und Child müssen beide Pterm oder Pterm0 aufrufen, um sich zu beenden. | ||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
| ||||||
Gruppe: | Prozessfunktionen
| ||||||
Querverweis: | Binding Pexec Pvfork Threads
|
C: | int16_t Pfork ( void );
|
Assembler: |
move.w #283,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgetauid« - User ID eines Prozesses zu Beginn ermitteln.
|
Gemdosnummer: | 325 (0x0145)
|
Deklaration: | int16_t Pgetauid ( void );
|
Beschreibung: | Die Funktion ermittelt die Anfangs-User-ID des aktuellen
Prozesses. Zusammen mit Psetauid kann damit in einer Multiuserumgebung
festgestellt werden, wer der zuerst eingeloggte Benutzer war.
|
Ergebnis: | Der Rückgabewert ist die Anfangs-User-ID des Prozesses.
|
Verfügbar: | ab MiNT 1.11
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psetauid
|
C: | int16_t Pgetauid ( void );
|
Assembler: |
move.w #325,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgetegid« - effektive Gruppen-ID eines Prozesses ermitteln.
|
Gemdosnummer: | 313
|
Deklaration: | int32_t Pgetegid ( void );
|
Beschreibung: | Die Funktion liefert die effektive Gruppen-ID des aktuellen
Prozesses und ähnelt dem Systemaufruf Pgetgid. Der Unterschied
besteht darin, daß hier die effektive Gruppen-ID zurückgegeben wird.
Diese ist normalerweise mit der wirklichen Gruppen-ID identisch; falls aber ein Programm läuft, welches das setgid Bit gesetzt hat, ist seine effektive Gruppen-ID gleich der (wirklichen) ID des Besitzers dieser Programmdatei. Dateizugriff basiert u.a. auf der effektiven Gruppen-ID, so daß der setgid-Mechanismus es Benutzern (vor allem dem Super-User) erlaubt, anderen Usern Zugriff zu erlauben. |
Ergebnis: | Der Rückgabewert ist die effektive Gruppen-ID des Prozesses.
|
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.95 existiert.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetuid Pgetgid Pgeteuid
|
C: | int32_t Pgetegid ( void );
|
Assembler: |
move.w #313,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgeteuid« - effektive User-ID eines Prozesses ermitteln.
|
Gemdosnummer: | 312
|
Deklaration: | int32_t Pgeteuid ( void );
|
Beschreibung: | Die Funktion liefert die effektive User-ID des aktuellen
Prozesses und ähnelt dem Systemaufruf Pgetuid. Der Unterschied
besteht darin, daß hier die effektive User-ID zurückgegeben wird.
Diese ist normalerweise mit der wirklichen User-ID identisch; falls aber ein Programm läuft, welches das setuid Bit gesetzt hat, ist seine effektive User-ID gleich der (wirklichen) ID des Besitzers dieser Programmdatei. Dateizugriff basiert u.a. auf der effektiven User-ID, so daß der setuid-Mechanismus es Benutzern (vor allem dem Super-User) erlaubt, anderen Usern Zugriff zu erlauben. |
Ergebnis: | Der Rückgabewert ist die effektive User-ID des Prozesses.
|
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.95 existiert.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetuid Pgetgid Pgetegid
|
C: | int32_t Pgeteuid ( void );
|
Assembler: |
move.w #312,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgetgid« - Gruppen ID eines Prozesses ermitteln.
|
Gemdosnummer: | 276
|
Deklaration: | int16_t Pgetgid ( void );
|
Beschreibung: | Die Funktion liefert die wirkliche Gruppen-ID des aktuellen
Prozesses zurück. Dies ist eine Zahl zwischen 0 und 255, die die
Rechte der Prozessgruppe festlegt.
|
Ergebnis: | Der Rückgabewert ist die wirkliche Gruppen-ID des Prozesses.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetuid Pgeteuid Pgetegid
|
C: | int16_t Pgetgid ( void );
|
Assembler: |
move.w #276,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgetgroups« - gets the supplementary group ids for the
calling process.
|
Gemdosnummer: | 327 (0x0147)
|
Deklaration: | int32_t Pgetgroups( int16_t len, int16_t *gidset);
|
Beschreibung: | This function gets the supplementary group ids for the calling
process.
len specifies the length (in words) of the array to be filled with the supplementary group ids available. This value must be a positive number not greater than NGROUPS_MAX. If len is a zero, the call will return the number of supplementary group ids currently available for the calling process. gidset is a pointer to a word array to be filled with retrieved ids. The NGROUPS_MAX value is returned by Sysconf(). |
Ergebnis: | Returns a number of supplementary group ids for the process on
success or a negative GEMDOS error code otherwise.
|
Verfügbar: | Sie steht ab MiNT 1.11 zu Verfügung.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psetgroups Sysconf
|
C: | int32_t Pgetgroups( int16_t len, int16_t *gidset);
|
Assembler: |
pea gidset ; Offset 4 move.w len,-(sp) ; Offset 2 move.w #327,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Pgetpgrp« - aktuelle Prozess Gruppennummer erfragen.
|
Gemdosnummer: | 269
|
Deklaration: | int16_t Pgetpgrp ( void );
|
Beschreibung: | Es wird die Gruppen-Nummer des aktuell aktiven Prozesses
zurück geliefert. Prozessgruppen werden gewöhnlich für Job-Control
und andere Zwecke benutzt.
|
Ergebnis: | Prozeß-Gruppen-Nummer des aktiven Prozesses.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Bindings für Pgetpgrp Pkill Pgetpid Psetpgrp
|
C: | int16_t Pgetpgrp ( void );
|
Assembler: |
move.w #269,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgetpid« - aktuelle Prozess ID erfragen.
|
Gemdosnummer: | 267 (0x010b)
|
Deklaration: | int16_t Pgetpid ( void );
|
Beschreibung: | Die Funktion liefert die PID des aktuell aktiven Prozesses,
also desjenigen, der momentan die CPU besitzt; es handelt sich dabei
um den Dateityp, unter dem der aktuelle Prozess im Verzeichnis U:\PROC
geführt wird.
A PID is dynamically assigned to a process when it is created. You should make no assumption on the PID a process may have. For the kernel, the PID is a WORD but when you program in C, you should use the pid_t type, which complies with the POSIX standard. The FreeMiNT kernel's PID is always 0. The PID is useful when it is important to identify a process among others in the system. Knowing the PID of a program, it is possible to do a lot of things: send it a signal with Psignal(), look for its name in /proc by searching with a "*.xxx" mask (xxx is the PID of the program which name we wanna know), etc. |
Ergebnis: | PID des aktiven Prozesses.
|
Verfügbar: | Sie steht in MagiC ab Version 3.0 und unter MiNT zur
Verfügung.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetpgrp Pgetppid
|
C: | int16_t Pgetpid ( void );
|
Assembler: |
move.w #267,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgetppid« - Prozess ID für Vater Prozess erfragen.
|
Gemdosnummer: | 268 (0x010c)
|
Deklaration: | int16_t Pgetppid ( void );
|
Beschreibung: | Die Funktion liefert die PID des Parent-Prozesses, des z.Zt.
aktiven Prozesses.
In the FreeMiNT kernel, processes are represented as a tree. The root of the tree is the kernel itself (PID 0). At boot time, the kernel launches another process (which can be 'init' in case of a Unix-like setup, or an AES, a shell or whatever) specified by the INIT or GEM keyword in the mint.cnf file. This process will launch other processes (daemons, accessories, programs etc) that are its so-called children. Therefore, every process (but the kernel, obviously) is created by its so-called parent. The Pgetppid() (get parent's PID) call allows to determine the PID of the parent of the calling process. To have a good illustration of this, you can use the 'ps' command in your shell. You will see that all accessories's parent is the AES, and that the daemons are started by the 'init' program. |
Ergebnis: | Prozess-ID des Parent (positiv). Wenn der aktuelle Prozess
direkt vom Kernel gestartet wurde, wird 0 zurück geliefert. Ein
Rückgabewert von -1 signalisiert, daß der Prozess keinen Parent
besitzt.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
MagiC ab Version 3.0.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetpgrp Pgetpid
|
C: | int16_t Pgetppid ( void );
|
Assembler: |
move.w #268,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pgetpriority« - gets the current priority value for a
process
|
Gemdosnummer: | 344 (0x0158)
|
Deklaration: | int32_t Pgetpriority ( int16_t which, int16_t who);
|
Beschreibung: | This function gets the priority of the processes specified by
which and who. The interpretation of parameter
who depends on which:
PRIO_PROCESS (0) reads the priority of process with process id who. A who of 0 implies the process id of the calling process. PRIO_PGRP (1) reads the priority of the process group with process group id who. If the priorities of the process differ, the lowest valued priority (i. e. the highest CPU usage priority) is returned. A who of 0 implies the process group id of the calling process. PRIO_USER (2) reads the priority of the process of the user with user id who. For multiple processes the lowest valued priority is returned. A who of 0 implies the user id of the calling process. Library functions should first check for an error condition and then decrement the returned value by 20. This call makes calls Pnice and Prenice obsolete. |
Ergebnis: | Return value is either a negative error number in case of
failure or the requested priority + 20 on success.
|
Verfügbar: | MiNT 1.15.0
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psetpriority
|
C: | int32_t Pgetpriority ( int16_t which, int16_t who);
|
Assembler: |
move.w who,-(sp) ; Offset 4 move.w which,-(sp) ; Offset 2 move.w #344,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Pgetuid« - User ID eines Prozesses ermitteln.
|
Gemdosnummer: | 271
|
Deklaration: | int16_t Pgetuid ( void );
|
Beschreibung: | Die Funktion liefert die wirkliche User-ID des aktuellen
Prozesses zurück. Dies ist eine Zahl zwischen 0 und 255, die die
Zugriffsrechte des Prozesses festlegt und benutzt werden kann, um in
Multi-User-Systemen die einzelnen Benutzer zu unterscheiden.
|
Ergebnis: | Der Rückgabewert ist die tatsächliche User-ID des Prozesses.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetgid Pgeteuid Pgetegid
|
C: | int16_t Pgetuid ( void );
|
Assembler: |
move.w #271,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pkill« - Signal zu einem Prozess schicken.
| ||||||||||
Gemdosnummer: | 273
| ||||||||||
Deklaration: | int32_t Pkill ( int16_t pid, int16_t sig );
| ||||||||||
Beschreibung: | Die Funktion sendet das Signal sig an einen oder
mehrere Prozesse. Für den Parameter pid gilt:
Das Signal SIGNULL wird von Pkill nicht in der gewohnten Weise behandelt. Es kann benutzt werden, um die Existenz eines Prozesses zu testen. Dazu schickt man diesem ein SIGNULL, und kontrolliert, ob Pkill mit dem Wert 0 zurückkehrt. Seit MagiC 6.01 (1998.10.10) werden auch PIDs < 0 unterstützt. | ||||||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
Hinweis: Wenn der aktuelle Prozess das Signal selbst empfängt und terminiert wird, kehrt die Funktion nicht zurück! | ||||||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
MagiC ab Version 4.50.
| ||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||
Querverweis: | Binding Psetpgrp Psignal Signale
|
C: | int32_t Pkill ( int16_t pid, int16_t sig );
|
Assembler: |
move.w sig,-(sp) ; Offset 4 move.w pid,-(sp) ; Offset 2 move.w #273,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Pmsg« - Empfangen und Senden von Nachrichten.
| ||||||||||||
Gemdosnummer: | 293
| ||||||||||||
Deklaration: | int32_t Pmsg ( int16_t mode, int32_t mbox, void *msg );
| ||||||||||||
Beschreibung: | Die Funktion sendet bzw. empfängt eine Nachricht zu bzw. von
einer Mailbox. Die jeweils auszuführende Operation kann über die
Bits des Parameters mode festgelegt werden. Es bedeutet:
Die Nachrichten sind 5 Wörter lang, und zwar zwei Langworte und ein Short (in dieser Reihenfolge). Dabei können die 2 Langwörter vom Prozess mit beliebiger Information gefüllt werden, während im Short die PID des Senders einzutragen ist. Nach dem die Nachricht verschickt worden ist, enthält dieses Short die PID des Prozesses, der die Nachricht gelesen hat. Umgekehrt enthält dieser nach dem Lesen einer Nachricht die PID des Prozesses, der die Nachricht geschrieben hat. Wenn in mode das höchstwertige Bit gesetzt ist, und es keinen Leser bzw. Schreiber für die Mailbox mbox gibt, wird der Wert -1 zurückgeliefert. Anderenfalls wartet eine Leseoperation bis eine Nachricht geschrieben wurde, bzw. eine Schreiboperation bis ein lesender Prozess bereit ist. Im Modus 2 gibt der Schreiber an, daß er auf eine Antwort warten möchte. Die Idee dabei ist, daß dieser Prozess sich schlafen legen kann, und zu einem späteren Zeitpunkt von dem Prozess der die Nachricht erhält, wieder aufgeweckt werden kann. Dabei wird garantiert, daß der Prozess, welcher die Original-Nachricht erhält beim Schreiben der Antwort nicht blockiert wird. | ||||||||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||||||||
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.90 existiert.
| ||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||
Querverweis: | Binding
|
C: | int32_t Pmsg ( int16_t mode, int32_t mbox, void *msg );
|
Assembler: |
pea msg ; Offset 8 move.l mbox,-(sp) ; Offset 4 move.w mode,-(sp) ; Offset 2 move.w #293,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Pnice« - Priorität des aktuellen Prozesses verändern.
|
Gemdosnummer: | 266
|
Deklaration: | int16_t Pnice ( int16_t delta );
|
Beschreibung: | Die Funktion ändert die Priorität des aktuellen Prozesses um
den Wert delta. Eine höhere Priorität bedeutet, daß der
Prozess eine größere Zeitscheibe erhält, also nicht so oft
umgeschaltet wird. Analog bedeutet eine niedrige Priorität, daß die
Zeitscheibe des Prozesses verkleinert wird, und er daher öfter die
CPU abgeben muß.
Für den Parameter delta muß gelten: - 20 <= delta <= 20. Die Funktion Pnice entspricht Prenice (Pgetpid(), delta) und ist zur Abwärtskompatibilität implementiert. |
Ergebnis: | Die Funktion liefert die aktuelle Prozeß Umschalt-Priorität
zurück. Diese ist per Default auf 0 eingestellt. Größere bzw.
kleinere Werte bedeuten, daß der Prozess eine größere bzw. kleinere
Zeitscheibe besitzt.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
MagiC ab Version 6.20 (2000-02-02).
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Prenice
|
C: | int16_t Pnice ( int16_t delta );
|
Assembler: |
move.w delta,-(sp) ; Offset 2 move.w #266,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Prenice« - Priorität eines Prozesses verändern.
| ||||
Gemdosnummer: | 295
| ||||
Deklaration: | int32_t Prenice ( int16_t pid, int16_t delta );
| ||||
Beschreibung: | Die Funktion ändert die Priorität des Prozesses mit der
Kennung pid um den Wert delta. Eine höhere Priorität
bedeutet, daß der Prozess eine größere Zeitscheibe erhält, also
nicht so oft umgeschaltet wird. Analog bedeutet eine niedrige
Priorität, daß die Zeitscheibe des Prozesses verkleinert wird, und
er daher öfter die CPU abgeben muß.
Für den Parameter delta muß gelten: - 20 <= delta <= 20. | ||||
Ergebnis: | Die Funktion liefert die aktuelle Prozeß Umschalt-Priorität
zurück. Diese ist per Default auf 0 eingestellt. Größere bzw.
kleinere Werte bedeuten, daß der Prozess eine größere bzw. kleinere
Zeitscheibe besitzt.
Im Fehlerfall liefert die Funktion:
| ||||
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.90 existiert und MagiC ab Version 6.20 (2000-01-02).
| ||||
Gruppe: | Prozessfunktionen
| ||||
Querverweis: | Bindings für Prenice Pnice
|
C: | int32_t Prenice ( int16_t pid, int16_t delta );
|
Assembler: |
move.w delta,-(sp) ; Offset 4 move.w pid,-(sp) ; Offset 2 move.w #295,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Prusage« - Informationen über Resourcenverbrauch ermitteln.
| ||||||||||||||||
Gemdosnummer: | 286
| ||||||||||||||||
Deklaration: | int32_t Prusage ( int32_t *r );
| ||||||||||||||||
Beschreibung: | Die Funktion liefert Informationen über den Bedarf an
Systemresourcen des aktuellen Prozesses.
Die Informationen werden im Array r nach außen gereicht; es gilt folgende Belegung:
Alle Zeiten sind in Milli-Sekunden angegeben. | ||||||||||||||||
Ergebnis: | Die Funktion hat kein direktes Ergebnis.
| ||||||||||||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
| ||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||
Querverweis: | Binding Psetlimit
|
C: | int32_t Prusage ( int32_t *r );
|
Assembler: |
pea r ; Offset 2 move.w #286,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Psemaphore« - erzeugen, anwenden, zerstören einer
Semaphore.
| ||||||||||||||||
Gemdosnummer: | 308
| ||||||||||||||||
Deklaration: | int32_t Psemaphore ( int16_t mode, int32_t id, int32_t timeout
);
| ||||||||||||||||
Beschreibung: | Die Funktion implementiert nicht-zählende Semaphore. Nur ein
Prozess kann einen Semaphor zur gleichen Zeit besitzen.
Semaphoren können z.B. benutzt werden, um den Zugriff auf Datenstrukturen im Shared Memory von unterschiedlichen Teilprozessen zu synchronisieren: So muß ein Teilprozess, bevor er auf den Speicher zugreift, versuchen, in den Besitzt des Semaphors zu kommen. Dieser kann z.B. bei der Initialisierung erzeugt, und bei Programmende wieder entfernt werden. Semaphore werden durch einen Namen identifiziert. Dieser Name ist ein Langwort, das auch vier ASCII-Zeichen enthalten kann. Semaphore, deren Namen mit dem Unterstrich '_' beginnen sind dabei für das Betriebssystem reserviert. Der Parameter timeout wird nur im Modus 2 benutzt. Es gilt dabei die folgende Belegung:
Andere Werte für timeout geben die Wartezeit in Millisekunden an, bevor ein Timeout eintritt. Für den Parameter mode sind folgende Werte möglich:
Hinweis: Wenn ein Prozess eine Semaphore erzeugt, besitzt er sie auch sofort. Damit andere Prozesse diese nutzen können, muß sie zunächst freigegeben werden. Da für das Erzeugen einer Semphore interner Speicher angefordert werden muss, sollte die Funktion sparsam verwendet werden. Wenn ein blockierter Prozess auf eine Semaphore wartet (bevor der Timeout eintritt), und ein anderer Prozess entfernt die Semaphore, dann kehrt die Funktion Psemaphore mit der Meldung ERANGE zurück, da die angeforderte Semaphore nicht länger existiert. Wenn ein Prozess terminiert, werden alle Semaphore die er besitzt, automatisch freigegeben (aber nicht zerstört). Der Besitz einer Semaphore kann nicht vererbt werden (etwa mit Pfork). Wenn ein Prozess eine Semaphore erzeugt und dann abstürzt, bleibt die Semaphore erhalten, und kann nicht mehr entfernt werden. In MagiC sorgen Plausibilitätsüberprüfungen dafür, daß keine System-Semaphoren freigegeben werden können; außerdem werden z.Zt. nur die Modi 2 und 3 unterstützt. | ||||||||||||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||||||||||||
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.92 existiert und in MagiC ab Version 3.0.
| ||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||
Querverweis: | Binding Semaphoren in MagiC
|
C: | int32_t Psemaphore ( int16_t mode, int32_t id, int32_t timeout
);
|
Assembler: |
move.l timeout,-(sp) ; Offset 8 move.l id,-(sp) ; Offset 4 move.w mode,-(sp) ; Offset 2 move.w #308,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Psetauid« - User ID eines Prozesses zu Beginn setzen.
|
Gemdosnummer: | 326 (0x0146)
|
Deklaration: | int16_t Psetauid ( int16_t id );
|
Beschreibung: | Die Funktion setzt die Anfangs-User-ID des aktuellen Prozesses.
Dies kann nur einmal geschehen. Zusammen mit Pgetauid kann damit in
einer Multiuser-Umgebung festgestellt werden, wer der zuerst
eingeloggte Benutzer war. Der Parameter id ist die gewünschte
Anfangs-ID.
Achtung: Diese Funktion ist optional, daher darf ein Aufruf mit EINVFN beantwortet werden. |
Ergebnis: | z.Zt. unbekannt
|
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.92 existiert.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetauid
|
C: | int16_t Psetauid ( int16_t id );
|
Assembler: |
move.w id,-(sp) ; Offset 2 move.w #326,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Psetegid« - sets the effective group id for the calling
process.
|
Gemdosnummer: | 324 (0x0144)
|
Deklaration: | int32_t Psetegid ( int16_t egid );
|
Beschreibung: | egid specifies the new effective group id for the
calling process.
Prior to MiNT version 1.12 this call contained a bug affecting its functionality. Setting effective group id needs root privileges. This call is often used by daemon processes to downgrade their privileges to user level. |
Ergebnis: | Returns new egid on success or a negative GEMDOS error code
otherwise.
|
Verfügbar: | MiNT 1.11
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pseteuid Psetgid Psetregid
|
C: | int32_t Psetegid ( int16_t egid );
|
Assembler: |
move.w egid,-(sp) ; Offset 2 move.w #324,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Pseteuid« - sets the effective user id for the calling
process.
|
Gemdosnummer: | 323 (0x0143)
|
Deklaration: | int32_t Pseteuid ( int16_t euid );
|
Beschreibung: | euid specifies the new effective user id for the
calling process.
Prior to MiNT version 1.12 this call contained a bug affecting its functionality. Setting effective user id needs root privileges. This call is often used by daemon processes to downgrade their privileges to user level. |
Ergebnis: | Returns new euid on success or a negative GEMDOS error code
otherwise.
|
Verfügbar: | ab MiNT 1.11
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psetegid Psetuid Psetreuid
|
C: | int32_t Pseteuid ( int16_t euid );
|
Assembler: |
move.w euid,-(sp) ; Offset 2 move.w #323,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Psetgid« - Gruppen ID eines Prozesses verändern.
| ||||
Gemdosnummer: | 277
| ||||
Deklaration: | int16_t Psetgid ( int16_t id );
| ||||
Beschreibung: | Die Funktion setzt die Gruppen-ID des aktuellen Prozesses auf
id. Dies muß eine Zahl von 0 bis 255 sein.
| ||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
| ||||
Gruppe: | Prozessfunktionen
| ||||
Querverweis: | Binding Psetuid
|
C: | int16_t Psetgid ( int16_t id );
|
Assembler: |
move.w id,-(sp) ; Offset 2 move.w #277,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Psetgroups« - sets the supplementary group ids for the
calling process.
|
Gemdosnummer: | 328 (0x0148)
|
Deklaration: | int32_t Psetgroups( int16_t len, int16_t *gidset);
|
Beschreibung: | This function sets the supplementary group ids for the calling
process.
len specifies the length (in words) of the array containing the supplementary group ids to be set. This value must be a positive number not greater than NGROUPS_MAX. If len is a zero, the call will return the number of supplementary group ids those have been set. gidset is a pointer to a word array containing the new supplementary group ids for the process. Setting new supplementary group ids needs root privileges. The NGROUPS_MAX value is returned by Sysconf(). |
Ergebnis: | Returns a number of new supplementary group ids for the process
on success or a negative GEMDOS error code otherwise.
|
Verfügbar: | Sie steht ab MiNT 1.11 zu Verfügung.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetgroups Sysconf
|
C: | int32_t Psetgroups( int16_t len, int16_t *gidset);
|
Assembler: |
peam gidset ; Offset 4 move.w len,-(sp) ; Offset 2 move.w #328,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Psetlimit« - Limits der Systemresourcen setzen/erfragen.
| ||||||||||
Gemdosnummer: | 287
| ||||||||||
Deklaration: | int32_t Psetlimit ( int16_t lim, int32_t value );
| ||||||||||
Beschreibung: | Die Funktion dient dem Setzen/Abfragen einer
Resourcenbegrenzung für den aktuellen Prozess. Der Parameter
lim bestimmt die gewünschte Resource-Art:
Der Unterschied zwischen 2 und 3 besteht darin, daß der Gesamtspeicher auch die TEXT-, DATA- und BSS-Segmente des Prozesses umfaßt. Mit Hilfe dieser Funktion werden die Resource-Begrenzungen sowohl für den aktuellen Prozess, als auch für alle später erzeugten Childs einzeln eingestellt. Wenn ein Prozess also ein CPU-Limit einstellt, und danach mehrere Child-Prozesse erzeugt, dann gilt dieses CPU-Limit auch für jeden einzelnen Child, und nicht etwa für alle Childs zusammen. Der Parameter value bestimmt den Wert, den eine Resource annehmen soll. Ein Wert von 0 bedeutet in diesem Zusammenhang, daß die Resource unbegrenzt ist. Ein negativer Wert läßt die Resource unverändert. Hinweis: Es gibt keine Restriktionen beim Vergrößern der Begrenzungen. Jeder Prozess kann jede seiner Begrenzungen beliebig verändern oder sogar auf unbegrenzt setzen. Speicherbegrenzungen kommen bei Pexec nicht zur Anwendung. Ist z.B. ein Prozess auf 256Kbyte begrenzt, kann er dennoch mit Pexec einen Tochterprozess starten, der mehr Speicher verbraucht. Achtung: Dies gilt nicht in MagiC; hier werden Speicherbegrenzungen bei Pexec vererbt! Speicherbegrenzungen sind nicht rückwirkend gültig. Besitzt ein Prozess z.B. 256Kbyte und ruft dann Psetlimit auf, um seinen Bedarf auf 128Kbyte zu reduzieren, dann wird er zwar nicht beendet, aber er kann keinen Speicher mehr allozieren, bis seine Größe unter die angegebenen 128Kbyte fällt. Begrenzungen der CPU-Zeit wirken hingegen rückwirkend. Verkürzt ein Prozess seine CPU-Zeit unter den bisher gültigen Wert, dann empfängt er sofort ein SIGXCPU-Signal. Achtung: Ungültige Funktionsnummern und solche, die von MagiC nicht unterstützt werden, liefern EINVFN. Hinweis zu MagiC: Ist ein Programm mit dem Dienstprogramm LIMITMEM modifiziert worden, hat diese Einstellung Vorrang vor dem Speicherlimit des aufrufenden Prozesses. Psetlimit wird vom erweiterten shel_write()-Modus unterstützt; damit können speicherbeschränkte Applikationen auch parallel gestartet werden. | ||||||||||
Ergebnis: | Die Funktion liefert den alten Begrenzungswert zurück.
| ||||||||||
Verfügbar: | MagiC ab Version 4.0 (17.09.1996) und ab der ersten in MultiTOS
integrierten MiNT Version 1.04.
| ||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||
Querverweis: | Binding Prusage Signale
|
C: | int32_t Psetlimit ( int16_t lim, int32_t value );
|
Assembler: |
move.l value,-(sp) ; Offset 4 move.w lim,-(sp) ; Offset 2 move.w #287,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Psetpgrp« - Prozess Gruppennummer eines Prozesses
setzen/ermitteln.
| ||||||
Gemdosnummer: | 270
| ||||||
Deklaration: | int16_t Psetpgrp ( int16_t pid, int16_t newgrp );
| ||||||
Beschreibung: | Die Funktion verändert die Gruppennummer des Prozesses mit der
Kennung pid auf den Wert newgrp, oder gibt den
Gruppennummer zurück, wenn newgrp negativ ist. Der Prozess
muß die gleiche UID wie der aktuelle Prozess besitzen, oder dessen
Parent sein.
Falls pid = 0 ist, wird die Prozessgruppe des aktuellen Prozesses gesetzt. Falls newgrp = 0 ist, wird die Prozessgruppe auf den Wert der PID des aktuellen Prozesses gesetzt. | ||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
| ||||||
Gruppe: | Prozessfunktionen
| ||||||
Querverweis: | Binding Pkill Pgetpgrp Pgetpid
|
C: | int16_t Psetpgrp ( int16_t pid, int16_t newgrp );
|
Assembler: |
move.w newgrp,-(sp) ; Offset 4 move.w pid,-(sp) ; Offset 2 move.w #270,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Psetpriority« - sets the current priority value for a
process.
|
Gemdosnummer: | 345 (0x0159)
|
Deklaration: | int32_t Psetpriority ( int16_t which, int16_t who, int16_t pri
);
|
Beschreibung: | This function sets the priority pri (not an increment
but an absolute value) for the processes specified by which
and who. The interpretation of parameter who depends
on which:
PRIO_PROCESS (0) sets the priority of process with process id who. A who of 0 implies the process id of the calling process. PRIO_PGRP (1) sets the priority of the process group with process group id who. A who of 0 implies the process group id of the calling process. PRIO_USER (2) sets the priority of the process of the user with user id who. A who of 0 implies the user id of the calling process. The pri argument is silently changed to the maximum (resp. minimum) possible value if it is not in the range between PRIO_MIN (-20) and PRIO_MAX (+20). This call makes calls Pnice and Prenice obsolete. |
Ergebnis: | The function returns E_OK on success or a negative error code
otherwise. The following error conditions are defined:
EINVAL, invalid argument for who, which or pri. EACCES, the calling process is not an owner of one or more of the selected processes. The other selected processes are still affected. EPERM, the calling process does not have privileges to change the priority of one or more of the selected processes. This can only happen if an attempt was made to change the priority of a process to a positive value. ESRCH, the combination of which and who does not match any existing process. The error condition reported is the last error condition encountered (in other words if both EACCES and EPERM occur the return value is arbitrary). |
Verfügbar: | ab MiNT 1.15.0
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pgetpriority
|
C: | int32_t Psetpriority ( int16_t which, int16_t who, int16_t pri
);
|
Assembler: |
move.w pri,-(sp) ; Offset 6 move.w who,-(sp) ; Offset 4 move.w which,-(sp) ; Offset 2 move.w #345,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Psetregid« - sets the real and/or effective group id for the
calling process.
|
Gemdosnummer: | 335 (0x014f)
|
Deklaration: | int32_t Psetregid ( int16_t rgid, int16_t egid);
|
Beschreibung: | This function sets the real and/or effective group id for the
calling process.
rgid specifies the new real group id and egid specifies the new effective group id for the calling process. If either argument is -1, only the other gets changed Setting group ids needs root privileges. This call is often used by daemon processes to downgrade their privileges to user level. |
Ergebnis: | Returns E_OK on success or a negative error code otherwise.
|
Verfügbar: | since MiNT 1.12
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psetreuid Psetegid
|
C: | int32_t Psetregid ( int16_t rgid, int16_t egid);
|
Assembler: |
move.w egid,-(sp) ; Offset 4 move.w rgid,-(sp) ; Offset 2 move.w #335,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Psetreuid« - sets the real and/or effective user id for the
calling process.
|
Gemdosnummer: | 334 (0x014e)
|
Deklaration: | int32_t Psetreuid ( int16_t ruid, int16_t euid);
|
Beschreibung: | This function sets the real and/or effective user id for the
calling process.
ruid specifies the new real user id and euid specifies the new effective user id for the calling process. If either argument is -1, only the other gets changed. Setting user ids needs root privileges. This call is often used by daemon processes to downgrade their privileges to user level. |
Ergebnis: | Returns E_OK on success or a negative GEMDOS error code
otherwise.
|
Verfügbar: | since MiNT 1.12
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psetregid Pseteuid
|
C: | int32_t Psetreuid ( int16_t ruid, int16_t euid);
|
Assembler: |
move.w euid,-(sp) ; Offset 4 move.w ruid,-(sp) ; Offset 2 move.w #334,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Psetuid« - User ID eines Prozesses verändern.
| ||||
Gemdosnummer: | 272
| ||||
Deklaration: | int16_t Psetuid ( int16_t id );
| ||||
Beschreibung: | Die Funktion setzt die User ID des aktuellen Prozesses auf
id. Dies muß eine Zahl von 0 bis 255 sein. Die Funktion
schlägt fehl, wenn die User-ID des Prozesses nicht den Wert 0
besitzt, d.h. einmal gesetzt, kann die User-ID nicht mehr verändert
werden.
| ||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
| ||||
Gruppe: | Prozessfunktionen
| ||||
Querverweis: | Binding Psetgid
|
C: | int16_t Psetuid ( int16_t id );
|
Assembler: |
move.w id,-(sp) ; Offset 2 move.w #272,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Psigaction« - Art der Signalbehandlung verändern.
| ||||||||
Gemdosnummer: | 311
| ||||||||
Deklaration: | int32_t Psigaction ( int16_t sig, struct sigaction *act, struct
sigaction *oact );
| ||||||||
Beschreibung: | Die Funktion ändert die Art und Weise, wie auf das Signal
sig reagiert werden soll. Der Parameter act ist dabei
entweder NULL, oder zeigt auf eine sigaction-Struktur, die das
Verhalten des Signal-Handlings beschreibt. Für die Komponente
sa_handler gilt dabei:
Jeder andere Wert von sa_handler wird als die Adresse einer Funktion interpretiert, die beim Auftreten des Signals aufgerufen wird. Über den Stack wird dieser Funktion ein Long-Wert übergeben, der der jeweiligen Signalnummer entspricht. Auf diese Art und Weise ist es möglich, den Signal-Handler für mehrere Signale zu benutzen. Solange ein Signal bearbeitet wird, kann es nicht erneut gesendet werden. Zu beachten ist ferner, daß (im Gegensatz zu einigen Unix-Versionen) das Signal-Handling vor der Ausführung des Handlers nicht auf den Default-Handler zurückgesetzt wird. Der Signalhandler muß entweder mit RTS (Return to Sender) beendet werden, oder Psigreturn aufrufen, um anzuzeigen, daß die Signalbehandlung abgeschlossen ist. Anschließend wird die Blockierung des Signals aufgehoben. Psigreturn führt zusätzlich einige interne Säuberungen des Kernels durch, die notwendig sind, falls der Signal-Handler nicht beendet wird (longjump). Signalhandler können beliebige BIOS, XBIOS und GEMDOS Aufrufe machen. AES- oder VDI-Aufrufe sind hingegen nicht gestattet. Dies gilt jedoch nicht in MagiC; hier gibt es einige Unterschiede zu beachten. Ein Aufruf von Psigaction hat den Nebeneffekt, daß das Signal demaskiert (d.h. freigegeben) wird. So kann ein Prozess beim Abarbeiten eines Signals dieses zurücksetzen und es sich erneut zusenden, um sich beispielsweise selbst zu suspendieren, während ein Signal für Job-Control bearbeitet wird. Die Signalbearbeitung ist gegenüber Pfork/Pvfork abgesichert. Signale, die von einem Prozess ignoriert werden, werden auch vom Child nach einem Pexec-Aufruf ignoriert. Außerdem werden Signale, die von einem Signal-Handler abgefangen werden, im Child-Prozess auf den Defaultwert zurückgesetzt. Die Komponente sa_flags der sigaction-Struktur definiert ein zusätzliches, Signal-spezifisches Verhalten. Wenn sig das Signal SIGCHLD ist, und in sa_flags das SA_NOCLDSTOP Bit gesetzt ist, wird SIGCHLD dem Prozess nur dann gesendet, wenn einer seiner Childs terminiert (und eben nicht dann, wenn ein Child durch ein Job-Control-Signal suspendiert wird). | ||||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||||
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.95 existiert und in MagiC ab Version 4.50.
| ||||||||
Gruppe: | Prozessfunktionen
| ||||||||
Querverweis: | Binding Pkill Psigblock Psignal Psigreturn Signale
|
C: | int32_t Psigaction ( int16_t sig, struct sigaction *act, struct
sigaction *oact );
|
Assembler: |
pea oact ; Offset 8 pea act ; Offset 4 move.w sig,-(sp) ; Offset 2 move.w #311,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Psigblock« - Signalmaske verändern.
|
Gemdosnummer: | 278
|
Deklaration: | int32_t Psigblock ( int32_t mask );
|
Beschreibung: | Die Funktion Psigblock blockiert den Empfang ausgewählter
Signale. Sie fügt die in mask angegebenen Signale der Menge
der aktuell blockierenden Signale hinzu. Dabei repräsentiert jedes Bit
des Parameters mask ein Signal. Wenn Bit n in mask
gesetzt ist, bedeutet dies, daß das Signal mit der Nummer n blockiert
wird.
Zu beachten ist, daß manche Signale (z.B. SIGKILL) nicht blockiert werden können. Der Kernel wird diese Signale aus mask löschen, bevor die jeweilige Änderung der Signalmengen vorgenommen wird. Ferner sei darauf hingewiesen, daß blockierte Signale auch über Pfork/Pvfork Aufrufe hinweg blockiert bleiben. Nach einem Pexec-Aufruf startet der Child stets mit einer leeren Menge zu blockierender Signale, unabhängig davon, welche Signale vom Parent blockiert wurden. Achtung: Diese Funktion ist optional, daher darf ein Aufruf mit EINVFN beantwortet werden. |
Ergebnis: | Die Funktion liefert die Menge der blockierten Signale zurück,
die vor dem Aufruf gültig waren. Über einen Aufruf von Psigsetmask kann
so die alte Menge wieder hergestellt werden.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
sie steht in MagiC ab Version 4.50 zur Verfügung.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psigsetmask Signale
|
C: | int32_t Psigblock ( int32_t mask );
|
Assembler: |
move.l mask,-(sp) ; Offset 2 move.w #278,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Psigintr« - assigns a signal to a particular exception
vector.
| ||||||||
Gemdosnummer: | 318 (0x013e)
| ||||||||
Deklaration: | int32_t Psigintr ( int16_t vec, int16_t sig );
| ||||||||
Beschreibung: | This function assigns a signal to a particular exception
vector. When the exception occurs, the kernel will send the signal to
the process.
vec specifies the exception vector. This is the same value as specified for Setexc() call. sig specifies the signal number that is supposed to be delivered when an exception assigned to the vector vec occurs. When both sig and vec are zero, all handlers installed by your program are removed. You should install a signal handler prior to making this call, otherwise your process will most probably get killed by the first occurrence of the interrupt assigned to vec vector. Also notice that the function is not available on machines equipped with 68000 and 68010 processors. This function has been totally rewritten as of MiNT version 1.15.1. However, the only change visible to programs is that the old value of vec is no longer returned (it had little use anyway). Also, since long stack frames are needed, a 68020 or newer processor is required. The handler set up by Psigintr gets removed when your process terminates. | ||||||||
Ergebnis: | Returns E_OK on success, or a negative GEMDOS error code
otherwise:
| ||||||||
Verfügbar: | When a 'MiNT' cookie with a version of at least 1.11 exists. As
of MiNT version 1.15.1 this call is available only on machines
equipped with 68020 processor or newer.
This function has been disabled as of FreeMiNT 1.16. | ||||||||
Gruppe: | Prozessfunktionen
| ||||||||
Querverweis: | Binding Pause Pkill Psigsetmask Psignal Signale
|
C: | int32_t Psigintr ( int16_t vec, int16_t sig );
|
Assembler: |
move.w sig,-(sp) ; Offset 4 move.w vec,-(sp) ; Offset 2 move.w #318,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Psignal« - Art der Signalbehandlung verändern.
| ||||||||
Gemdosnummer: | 274
| ||||||||
Deklaration: | int32_t Psignal ( int16_t sig, int32_t handler );
| ||||||||
Beschreibung: | Die Funktion ändert die Art und Weise, wie auf das Signal
sig reagiert werden soll. Der Parameter handler kann 3
verschiedene Werte annehmen:
Jeder andere Wert wird als die Adresse einer Benutzerfunktion interpretiert, die beim Auftreten des Signals sig aufgerufen wird. Dieser Funktion wird (über den Stack) ein Long-Wert übergeben, welcher der Signalnummer entspricht. Auf diese Art ist es möglich, den Signal-Handler für mehrere Signale zu benutzen. Solange ein Signal bearbeitet wird, kann es nicht erneut gesendet werden. Zu beachten ist ferner, daß (im Gegensatz zu einigen Unix-Versionen) das Signal-Handling vor der Ausführung des Handlers nicht auf den Default-Handler zurückgesetzt wird. Der Signalhandler muß entweder mit RTS (Return to Sender) beendet werden, oder Psigreturn aufrufen, um anzuzeigen, daß die Signalbehandlung abgeschlossen ist. Anschließend wird die Blockierung des Signals aufgehoben. Psigreturn führt zusätzlich einige interne Säuberungen des Kernels durch, die notwendig sind, falls der Signal-Handler nicht beendet wird (longjump). Signalhandler können beliebige BIOS, XBIOS und GEMDOS Aufrufe machen. AES- oder VDI-Aufrufe sind hingegen nicht gestattet. Dies gilt jedoch nicht in MagiC; hier gibt es einige Unterschiede zu beachten. Ein Aufruf von Psignal hat den Nebeneffekt, daß das Signal demaskiert (d.h. freigegeben) wird. So kann ein Prozess beim Abarbeiten eines Signals dieses zurücksetzen und es sich erneut zusenden, um sich beispielsweise selbst zu suspendieren, während ein Signal für Job-Control bearbeitet wird. Die Signalbearbeitung ist gegenüber Pfork/Pvfork abgesichert. Signale, die von einem Prozess ignoriert werden, werden auch vom Child nach einem Pexec-Aufruf ignoriert. Außerdem werden Signale, die von einem Signal-Handler abgefangen werden, im Child-Prozess auf den Defaultwert zurückgesetzt. | ||||||||
Ergebnis: | Die Funktion liefert den alten Wert des Signal-Handlers
zurück. Dies ist entweder 0, 1 oder die Adresse des Handlers.
Im Fehlerfall werden folgende Werte zurückgeliefert:
| ||||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
in MagiC ab der Version 4.50.
| ||||||||
Gruppe: | Prozessfunktionen
| ||||||||
Querverweis: | Binding Pkill Psigaction Psigblock Psigreturn Signale
|
C: | int32_t Psignal ( int16_t sig, int32_t handler );
|
Assembler: |
move.l handler,-(sp) ; Offset 4 move.w sig,-(sp) ; Offset 2 move.w #274,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Psigpause« - Prozess bis zum Eintreffen eines Signals
suspendieren.
|
Gemdosnummer: | 310
|
Deklaration: | void Psigpause ( int32_t mask );
|
Beschreibung: | Die Funktion setzt die neue Signalmaske mask, und
suspendiert den aufrufenden Prozess, bis ein Signal eintrifft, welches
nicht maskiert ist oder ignoriert wird.
Falls per Psignal für dieses Signal ein Handler installiert wurde, wird dieser aufgerufen, bevor die Funktion zurückkehrt. Falls der Handler einen longjump in einen anderen Programmteil ausführt oder der Prozess terminiert, wird die Funktion niemals zurückkehren. Hinweis: Wenn die Funktion zurückkehrt, wird die Signalmaske auf den Wert zurückgesetzt, der vor dem Aufruf von Psigpause gültig war. Die von der Funktion gesetzte Signalmaske ist also nur temporär gültig. In MagiC kann es Probleme geben wenn mehrere Threads gleichzeitig diese Funktion aufrufen, da die Signalmaske hier prozessglobal ist. |
Ergebnis: | Die Funktion liefert immer 0 zurück.
|
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.95 existiert und in MagiC ab Version 4.50.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pause Psigblock Psignal Psigsetmask Signale
|
C: | void Psigpause ( int32_t mask );
|
Assembler: |
move.w mask,-(sp) ; Offset 2 move.w #310,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Psigpending« - feststellen welche Signale abgeschickt, aber
nicht bearbeitet wurden.
|
Gemdosnummer: | 291
|
Deklaration: | int32_t Psigpending ( void );
|
Beschreibung: | Die Funktion liefert die Signale, die dem aufrufenden Prozess
zwar gesendet, aber nicht bearbeitet wurden. (z.B. weil sie per
Psigblock blockiert sind oder weil sie gerade in Bearbeitung sind).
|
Ergebnis: | Die Funktion liefert die gewünschten Signale als Bitmaske in
einem LONG zurück, für jedes gesetzte Bit n steht das Signal
n zum Bearbeiten an.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
in MagiC ab der Version 4.50.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psigblock Psignal Psigsetmask Signale
|
C: | int32_t Psigpending ( void );
|
Assembler: |
move.w #291,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Psigreturn« - Verlassen eines Signal Handlers.
|
Gemdosnummer: | 282
|
Deklaration: | void Psigreturn ( void );
|
Beschreibung: | Die Funktion bereitet das Verlassen eines Signal-Handlers vor.
Da dies automatisch geschieht wenn der Handler zurückkehrt, ist ein
Aufruf von Psigreturn nur notwendig, falls der Handler einen
nicht-lokalen Sprung durchführt (etwa per longjump).
Der Aufruf hat keine Wirkung, wenn z.Zt. kein Signal bearbeitet wird. In MagiC wird der Thread der aktiven Signalbehandlung zum Haupt-Thread des Prozesses und anschließend entfernt. Alle anderen Signalbehandlungen werden ebenfalls entfernt (Verschachtelung). Die gesperrten Semaphoren des Haupt-Thread werden freigegeben, der Supervisor-Stack wird auf den Wert bei Prozeßstart zurückgesetzt. |
Ergebnis: | Die Funktion besitzt unter MiNT/MultiTOS kein direktes
Ergebnis; in MagiC wird der Wert EACCDN zurückgeliefert falls der
Aufrufer keine Signalbehandlungsroutine ist, und anderenfalls
der Wert E_OK.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
MagiC ab der Version 4.50.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psignal Signale Signalhandler in MagiC
|
C: | void Psigreturn ( void );
int32_t Psigreturn ( void ); |
Assembler: |
move.w #282,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Psigsetmask« - Signalmaske ersetzen.
|
Gemdosnummer: | 279
|
Deklaration: | int32_t Psigsetmask ( int32_t mask );
|
Beschreibung: | Die Funktion ersetzt die Menge der aktuell zu blockierenden
Signale vollständig durch die im Parameter mask
spezifizierten Signale.
Zu beachten ist, daß manche Signale (z.B. SIGKILL) nicht blockiert werden können. Der Kernel wird diese Signale aus mask löschen, bevor die jeweilige Änderung der Signalmengen vorgenommen wird. Ferner sei darauf hingewiesen, daß blockierte Signale auch über Pfork/Pvfork Aufrufe hinweg blockiert bleiben. Nach einem Pexec-Aufruf startet der Child stets mit einer leeren Menge zu blockierender Signale, unabhängig davon, welche Signale vom Parent blockiert wurden. |
Ergebnis: | Die Funktion liefert die Menge der blockierten Signale zurück,
die vor dem Aufruf gültig waren.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
in MagiC ab der Version 4.50.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Psigblock Signale Signalhandler in MagiC
|
C: | int32_t Psigsetmask ( int32_t mask );
|
Assembler: |
move.l mask,-(sp) ; Offset 2 move.w #279,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Psysctl« - Get or set system information.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gemdosnummer: | 350 (0x015e)
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Deklaration: | int32_t Psysctl ( int32_t *name, uint32_t namelen, void *old,
uint32_t *oldlenp, void *new, uint32_t newlen );
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beschreibung: | The function Psysctl retrieves system information and allows
processes with appropriate privileges to set system information. The
system information may be an integer, a string or a structure.
name and namelen specify the system information to retrieve. name is an array of longwords which defines a path to the actual value. The first longword holds the top level name, the second longword is the second level name... namelen is the size of this array. The information is copied into the buffer specified by old and oldlenp. Before the call, oldlenp points to a long specifiying the size of the buffer. After the call, this long word is set to the amount of copied data. If both old and oldlenp are set to NULL, the old value is not returned. If only old is set to NULL, oldlenp will be set to the amount of available data. To set a new value, new is set to a pointer to a buffer of lenght newlen. Otherwise, new should be set to NULL and newlen set to 0. The top level names are defined with the following CTL_ prefix. CTL_KERN (1): Kernel
CTL_HW (2): Generic CPU/IO
CTL_MACHDEP (3): Machine dependent (not yet implemented) CTL_DEBUG (4): Debugging parameters (not yet implemented) CTL_PROC (5): Per-proc attributes The second level name specifies the process ID (PROC_CURPROC or any PID), the third level name specifies the system information (PROC_PID_DEBUG).
CTL_KBD (6): Keyboard configuration
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Verfügbar: | Siesteht ab FreeMiNT 1.15.12 zur Verfügung.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Querverweis: | Binding Sysconf
|
C: | int32_t Psysctl ( int32_t *name, uint32_t namelen, void *old,
uint32_ *oldlenp, void *new, uint32_t newlen );
|
Assembler: |
move.l newlen,-(sp) ; Offset 22 pea new,-(sp) ; Offset 18 pea oldlenp,-(sp) ; Offset 14 pea old,-(sp) ; Offset 10 move.l namelen,-(sp) ; Offset 6 pea name,-(sp) ; Offset 2 move.w #350,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen lea $1A(sp),sp ; Stack korrigieren |
Name: | »process termination« - beendet ein TOS-Programm.
| ||||||||||||||||
Gemdosnummer: | 76
| ||||||||||||||||
Deklaration: | void Pterm ( uint16_t retcode );
| ||||||||||||||||
Beschreibung: | Die GEMDOS-Routine Pterm beendet den laufenden Prozess, und
entfernt diesen aus dem Speicher. Es gilt:
Hinweis zu MagiC: Bevor irgendwelche Maßnahmen ergriffen werden, wird über Setexc der Vektor etv_term ermittelt und über diesen gesprungen. Anschließend wird der Prozeß ordentlich abgeräumt (einschließlich VDI-Workstations, Informierung aller XFSs über xfs_pterm, schließen aller geöffneten Dateien und aktuellen Pfade und Löschen der Prozeßdatei im Verzeichnis U:\PROC). | ||||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis.
| ||||||||||||||||
Verfügbar: | Alle GEMDOS Versionen.
| ||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||
Querverweis: | Binding Pexec Pterm0 Ptermres XFS-Konzept in MagiC
|
C: | void Pterm ( uint16_t retcode );
|
Assembler: |
move.w retcode,-(sp) ; Offset 2 move.w #76,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »process termination« - beendet ein TOS-Programm.
|
Gemdosnummer: | 0
|
Deklaration: | void Pterm0 ( void );
|
Beschreibung: | Die GEMDOS-Routine Pterm0 beendet ein TOS-Programm und kehrt
nicht wieder zurück. Die Routine liefert den Return-Code 0 zurück.
Hinweis: In MagiC wird diese Funktion direkt als Pterm(0) ausgeführt. |
Ergebnis: | Die Funktion liefert kein Ergebnis.
|
Verfügbar: | Alle GEMDOS Versionen.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Pexec Pterm Ptermres
|
C: | void Pterm0 ( void );
|
Assembler: |
move.w #0,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »terminate and stay resident« - Programm beenden, aber im
Speicher behalten.
| ||||||||||||||||||
Gemdosnummer: | 49
| ||||||||||||||||||
Deklaration: | void Ptermres ( int32_t keepcnt, int16_t retcode );
| ||||||||||||||||||
Beschreibung: | Die GEMDOS-Routine Ptermres beendet ein Programm, ein Teil der
TPA des Programms verbleibt jedoch intakt und der verbliebene Speicher
wird aus Speicherverwaltung des GEMDOS entfernt. Es gilt:
Hinweis: Im Netzwerk werden alle Lockings des Prozesses aufgehoben. | ||||||||||||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis.
| ||||||||||||||||||
Verfügbar: | Alle GEMDOS Versionen.
| ||||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||||
Querverweis: | Binding Pexec Pterm Pterm0
|
C: | void Ptermres ( int32_t keepcnt, int16_t retcode );
|
Assembler: |
move.w retcode,-(sp) ; Offset 6 move.l keepcnt,-(sp) ; Offset 2 move.w #49,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Ptrace« - process tracing and debugging
| ||||||||||||||||||||||||
Gemdosnummer: | 320
| ||||||||||||||||||||||||
Deklaration: | int16_t Ptrace(int16_t request, int16_t pid, void * addr,
int32_t data)
| ||||||||||||||||||||||||
Beschreibung: | Ptrace provides tracing and debugging facilities. It allows one
process (the tracing process) to control another (the traced process).
Most of the time, the traced process runs normally, but when it
receives a signal (see sigaction(2)), it stops. The tracing process is
expected to notice this via wait(2) or the delivery of a SIGCHLD
signal, examine the state of the stopped process, and cause it to
terminate or continue as appropriate. Ptrace is the mechanism by which
all this happens.
The request argument specifies what operation is being performed; the meaning of the rest of the arguments depends on the operation, but except for one special case noted below, all ptrace calls are made by the tracing process, and the pid argument specifies the process ID of the traced process. request can be:
Additionally, machine-specific requests can exist. On the SPARC, these are:
| ||||||||||||||||||||||||
Ergebnis: | Some requests can cause ptrace to return -1 as a non-error
value; to disambiguate, errno can be set to 0 before the call and
checked afterwards. The possible errors are:
| ||||||||||||||||||||||||
Verfügbar: | This function is available since FreeMiNT 1.15.11.
| ||||||||||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||||||||||
Querverweis: | Binding
|
C: | int16_t Ptrace(int16_t request, int16_t pid, void *addr,
int32_t data);
|
Assembler: |
move.l data,-(sp) ; Offset 10 pea addr ; Offset 6 move.w pid,-(sp) ; Offset 4 move.w request,-(sp) ; Offset 2 move.w #320,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen lea 14(sp),sp ; Stack korrigieren |
Name: | »Pumask« - Datei und Verzeichnis Erstellungsmaske setzen.
|
Gemdosnummer: | 307
|
Deklaration: | int16_t Pumask ( int16_t mode );
|
Beschreibung: | Die Funktion ändert die Datei-/Verzeichnis Erstellungsmaske
des aktuellen Prozesses auf mode, welches eine WORD Bitmaske
mit den durch Fchmod definierten Zugriffsrechten ist. Der neue Wert
der Maske wird an Child-Prozesse vererbt.
Wenn eine neue Datei (per Fcreate) oder ein neues Verzeichnis (per Dcreate) erzeugt wird, werden die Zugriffsrechte normalerweise so gesetzt, daß ein voller Zugriff erlaubt ist. (Ausnahme: neue Dateien sind normalerweise nicht ausführbar). Mit Hilfe von Pumask kann festgelegt werden, welche Zugriffsrechte bei der Erzeugung einer Datei nicht (!) erlaubt sein sollen. Explizite Fchmod-Aufrufe werden von Pumask nicht beeinflußt. Achtung: In MagiC wird die Maske allerdings von keinem der internen XFS von MagiC ausgewertet und hat ihren Sinn ausschließlich bei UNIX-ähnlichen Dateisystemen. |
Ergebnis: | Die Funktion liefert den Wert der alten Erstellungsmaske.
|
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.92 existiert und in MagiC ab Version 5.04.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding Dcreate Fchmod Fcreate
|
C: | int16_t Pumask ( int16_t mode );
|
Assembler: |
move.w mode,-(sp) ; Offset 2 move.w #307,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Pusrval« - spezifische Informationen eines Prozesses setzen
bzw. abfragen.
|
Gemdosnummer: | 280
|
Deklaration: | int32_t Pusrval ( int32_t val );
|
Beschreibung: | Die Funktion erlaubt das Setzen bzw. Abfragen von
Prozessspezifischen Informationen. Diese werden in einem Langwort
gespeichert, und an alle Child-Prozesse weitervererbt.
Die Bedeutung des Wertes kann vom aufrufenden Programm frei bestimmt werden. |
Ergebnis: | Die Funktion liefert den alten Wert zurück.
|
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
in MagiC ab der Version 5.04.
|
Gruppe: | Prozessfunktionen
|
Querverweis: | Binding
|
C: | int32_t Pusrval ( int32_t val );
|
Assembler: |
move.l val,-(sp) ; Offset 2 move.w #280,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #6,sp ; Stack korrigieren |
Name: | »Pvfork« - Kopie des aktuellen Prozesses erstellen.
| ||||||
Gemdosnummer: | 275
| ||||||
Deklaration: | int16_t Pvfork ( void );
| ||||||
Beschreibung: | Die Funktion erzeugt eine Kopie des aktuellen Prozesses.
Parent- und Childprozess teilen sich denselben Adressraum, d.h. jede
Änderung, die der Child an Variablen vornimmt, betreffen auch den
Parent. Der neue Prozess beginnt seine Arbeit, wenn die Funktion
Pvfork zurückkehrt.
Auch wenn der Parent diese Funktion aus dem Supervisormode aufruft, läuft das Child im Usermode. Da sich beide Prozesse den gleichen Adressraum (und Stack) teilen, gäbe es Probleme, wenn beide zur gleichen Zeit laufen würden. Deshalb wird der Parent angehalten, bis der Child-Prozess entweder beendet wird oder sich mittels Pexec (Modus 200) selbst mit einem neuen Prozess in einem neuen Adressraum überschreibt. | ||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04.
| ||||||
Gruppe: | Prozessfunktionen
| ||||||
Querverweis: | Binding Pexec Pfork Threads
|
C: | int16_t Pvfork ( void );
|
Assembler: |
move.w #275,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pwait« - auf Childprozess warten, Exitcode ermitteln.
| ||||||
Gemdosnummer: | 265
| ||||||
Deklaration: | int32_t Pwait ( void );
| ||||||
Beschreibung: | Diese Funktion ist äquivalent zu Pwait3 (2, NULL) und wird aus
Gründen der Abwärtskompatibilität angeboten.
Laut POSIX sollte die Bibliotheksfunktion 'wait' als Pwaitpid (-1, 0, NULL) implementiert werden. Daher sollte Pwait für eine POSIX-kompatible Bibliothek nicht benutzt werden. Achtung: In MagiC ist die Funktion als Pwaitpid (-1, 2, NULL) implementiert. | ||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
in MagiC ab Version 5.04.
| ||||||
Gruppe: | Prozessfunktionen
| ||||||
Querverweis: | Binding Pwait3 Pwaitpid
|
C: | int32_t Pwait ( void );
|
Assembler: |
move.w #265,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Pwait3« - auf Childprozess warten, Exitcode ermitteln.
| ||||||||
Gemdosnummer: | 284
| ||||||||
Deklaration: | int32_t Pwait3 ( int16_t flag, int32_t *rusage );
| ||||||||
Beschreibung: | Diese Funktion ist äquivalent zu einem Aufruf von Pwaitpid
(-1, flag, rusage) und ermittelt damit den Exit-Status sowie die
CPU-Auslastung eines terminierten oder beendeten Child-Prozesses.
flag ist eine Bitmaske, die das Verhalten des Funktionsaufrufs wie folgt festlegt:
rusage zeigt auf ein Feld mit zwei LONGS, die mit Informationen über den Verbrauch von Resourcen des beendeten oder gestoppten Prozesses gefüllt werden. Der erste LONG enthält die Anzahl Millisekunden, die vom Child verbraucht wurden. Der zweite LONG enthält die Anzahl Millisekunden, die der Prozess im Kernelspace verbracht hat. Wird diese Information nicht gewünscht, kann rusage auf NULL gesetzt werden. | ||||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||||
Verfügbar: | Seit der ersten in MultiTOS integrierten MiNT Version 1.04 und
in MagiC ab Version 5.04.
| ||||||||
Gruppe: | Prozessfunktionen
| ||||||||
Querverweis: | Binding Pwait Pwaitpid
|
C: | int32_t Pwait3 ( int16_t flag, int32_t *rusage );
|
Assembler: |
pea rusage ; Offset 4 move.w flag,-(sp) ; Offset 2 move.w #284,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen addq.l #8,sp ; Stack korrigieren |
Name: | »Pwaitpid« - auf Childprozess warten, Exitcode ermitteln.
| ||||||||||||||||||||||||
Gemdosnummer: | 314
| ||||||||||||||||||||||||
Deklaration: | int32_t Pwaitpid ( int16_t pid, int16_t flag, int32_t *rusage
);
| ||||||||||||||||||||||||
Beschreibung: | Die Funktion versucht den Exit-Code von Childprozessen, die
gestoppt oder beendet worden sind, zu ermitteln. Falls Bit-1 des
Parameters flag gesetzt ist, werden z.Zt. gestoppte,
anderenfalls gerade beendete bzw. durch Tracing gestoppte
Childprozesse gemeldet.
Ein gestoppter Prozess wird i.d.R. einmal gemeldet (sofern er nicht neu gestartet, und wieder gestoppt wurde). Ebenso wird ein beendetet Prozess nur einmal gemeldet. Wenn Childs vorhanden sind, die weder gestoppt oder beendet sind (oder auf ein solches Ereignis warten), wird das weitere Verhalten der Funktion durch Bit-0 des Parameters flag gesteuert. Dabei gilt:
Über den Parameter pid können die Childs genauer spezifiziert werden. Es gilt:
Über den Parameter rusage werden Informationen über den Verbrauch an CPU-Zeit des Childs abgelegt:
Falls ein Child gefunden wurde, wird dessen PID in den oberen 16-Bit und sein Exit-Status in den unteren 16-Bit des Rückgabewertes abgelegt. Wenn der Prozess durch das Signal mit der Nummer n gestoppt oder beendet wurde, ist sein Exit-Status 256*n+x mit:
Achtung: In MagiC werden angehaltene Child-Prozesse noch nicht erkannt, sondern nur beendete Childs. Darüber hinaus werden im Parameter rusage z.Zt. immer nur Null-Werte zurückgegeben. Auch Prozeßgruppen werden z.Zt. noch nicht richtig unterstützt, da die Funktion Psetpgrp() noch fehlt. | ||||||||||||||||||||||||
Ergebnis: | Die Funktion kann folgende Rückgabewerte liefern:
| ||||||||||||||||||||||||
Verfügbar: | Verfügbar, wenn ein 'MiNT' Cookie mit einer Versionsnummer von
mindestens 0.96 existiert und in MagiC ab Version 5.04.
| ||||||||||||||||||||||||
Gruppe: | Prozessfunktionen
| ||||||||||||||||||||||||
Querverweis: | Binding Pwait Pwait3
|
C: | int32_t Pwaitpid ( int16_t pid, int16_t flag, int32_t *rusage
);
|
Assembler: |
pea rusage ; Offset 6 move.w flag,-(sp) ; Offset 4 move.w pid,-(sp) ; Offset 2 move.w #314,-(sp) ; Offset 0 trap #1 ; GEMDOS aufrufen lea $A(sp),sp ; Stack korrigieren |