Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

makecontext, swapcontext - Benutzerkontext einrichten

&pagelevel(4)&pagelevel

Definition

#include <ucontext.h>

void makecontext (ucontext_t *ucp, (void *func) (), int argc,...);
int swapcontext (ucontext_t *oucp, const ucontext_t *ucp);

Beschreibung

Diese Funktionen dienen der Implementierung eines Kontextwechsels zwischen mehreren Kontrollflüssen innerhalb eines Benutzerprozesses.

makecontext() verändert den durch ucp angegebenen Kontext, der über getcontext() initialisiert wurde. Wird dieser Kontext mit swapcontext() oder setcontext() aktiviert (siehe getcontext()), wird die Programmausführung mit dem Aufruf der Funktion func fortgesetzt. Die Argumente, die auf argc folgen, werden an makecontext() übergeben. Der ganzzahlige Wert von argc muss der Anzahl der Argumente entsprechen, die auf argc folgt. Ansonsten ist das Verhalten undefiniert.

Bevor makecontext() aufgerufen wird, sollte dem zu modifizierenden Kontext ein Stack zugewiesen werden. Das Strukturelement uc_link legt den Kontext fest, der aktiviert wird, wenn der durch makecontext() modifizierte Kontext zurückkehrt.

swapcontext() sichert den aktuellen Kontext in der Kontextstruktur, auf die oucp zeigt, und setzt den Kontext auf die Kontextstruktur, auf die ucp zeigt.

Returnwert

0

nach erfolgreicher Ausführung von swapcontext().

 

-1

bei Fehler. errno wird gesetzt, um die Art des Fehlers anzuzeigen

Fehler

Diese Funktionen schlagen fehl, wenn gilt:


ENOMEM

ucp hat nicht mehr genügend Platz im Stack, um die Operation durchzuführen.

Siehe auch

exit(), getcontext(), sigaction(), sigprocmask(), ucontext.h.