proc_mobility_base_set Subroutine

Zweck

Setzt oder löscht Attribute, die von AIX® Live Update verwendet werden, um anzuzeigen, dass der aktuelle Prozess einbasefür den DB-IASP wird ausgeführt.

Bibliothek

Standard-C-Bibliothek (libc.a)

Syntax

#include <sys/mobility.h>

int  proc_mobility_base_set (pid , flag),
pid_t pid;
int flag
;

Beschreibung

Die Subroutine proc_mobility_base_set kann verwendet werden, um den aufrufenden Prozess alsbaseProzess für eine Live-Update -Operation.

Basisprozesse sind Prozesse, die während einer Liveaktualisierung nicht gespeichert und migriert werden. Die Basisprozesse verbleiben auf der ursprünglichen logischen Partition (LPAR) und werden nicht auf die Ersatz-LPAR migriert.

Nur ein Prozess, der einchildderinitProzess kann als registriert werdenbasefür den DB-IASP wird ausgeführt. Andernfalls FehlercodeEINVALwird zurückgegeben.

Die Subroutine proc_mobility_base_set kann verwendet werden, um einebaseProzess nur während eines Live Kernel Update (LKU) in Bearbeitung. Wenn keine LKU in Bearbeitung ist, FehlercodeEAGAINwird zurückgegeben

Parameter

Element Beschreibung
pid Prozess-ID, auf die reagiert werden soll. Der Wert 0 gibt den aktuellen Prozess an. Wenn ein Wert ungleich null angegeben wird, muss er mit der PID des aufrufenden Prozesses übereinstimmen.
flag Das Flag MOBILITY_BASE_PROCESS legt das Basisattribut fest. Der Wert 0 wird verwendet, um die Festlegung des Basisattributs aufzuheben.

Rückgabewerte

Element Beschreibung
0 Erfolg
1 Fehler

Fehlercodes

Fehlercode Beschreibung
ENOSYS Kein Mobilitätssystem vorhanden.
ESRCH Ein solcher Prozeß ist nicht vorhanden.
EINVAL Eingabeargumente sind ungültig.
EAGAIN Keine LKU, in Bearbeitung

Beispiel

Das folgende Beispiel zeigt die Verwendung der Subroutine proc_mobility_base_set :
#include <stdio.h>
#include <sys/mobility.h>
int main(int argc, char *argv[])
{
	int rc = 0;
	pid_t pid = getpid();

	/* Mark this process as a base process */
	rc = proc_mobility_base_set(0, MOBILITY_BASE_PROCESS);

	if (rc) {
		printf(“proc_mobility_base_set failed, errno %d\n”, errno);
		exit(-1);
	}

	printf(“Process %d is now marked as a base process.\n”, pid);

}