NOMBRE¶
sched_setaffinity, sched_getaffinity - establece y obtiene la máscara de
afinidad de CPU de un proceso
SINOPSIS¶
#include <sched.h>
int sched_setaffinity(pid_t pid, unsigned int
len, unsigned long * mask);
int sched_getaffinity(pid_t pid, unsigned int
len, unsigned long * mask);
DESCRIPCIÓN¶
sched_setaffinity establece la máscara de afinidad de CPU del
proceso identificado por
pid. Si
pid es cero, se asume el
proceso en curso.
La máscara de afinidad está representada por la máscara de
bits almacenada en
mask. El bit menos significativo corresponde al
número del primer procesador lógico en el sistema, mientras que
el bit más significativo corresponde al número del último
procesador lógico en el sistema. Un bit a 1 se corresponde con una CPU
legítimamente planificable mientras que un bit a 0 se corresponde con
una CPU que no es legítimamente planificable. En otras palabras, un
proceso está ligado y sólo se ejecutará en aquellos
procesadores cuyo bit esté activo. Normalmente todos los bits de la
máscara están activos.
El argumento
len representa la longitud de los datos a los que apunta
mask. Normalmente este valor es el tamaño de una palabra en el
sistema. Por razones de compatibilidad con futuras versiones del núcleo
de Linux, puesto que este tamaño puede cambiar, la máscara de
bits proporcionada debe ser al menos tan grande como la máscara de
afinidad almacenada en el núcleo.
La función
sched_getaffinity escribe en el puntero proporcionado
en
mask, cuyo tamaño es
len, la máscara de
afinidad del proceso
pid. Si
pid es cero, se devuelve la
máscara del proceso en curso.
VALOR DEVUELTO¶
En caso de éxito,,
sched_setaffinity y
sched_getaffinity
devuelven 0. En caso de error, se devuelve -1, y se modifica
errno con
el valor apropiado.
ERRORES¶
- EFAULT
- La dirección de memoria proporcionada no es válida.
- ESRCH
- No se puede encontrar un proceso con identificador pid.
- EPERM
- El proceso invocador no tiene los privilegios apropiados. El proceso que
llama a sched_setaffinity necesita que el identificador de usuario
efectivo sea igual al identificador de usuario real o efectivo del proceso
identificado por pid, o poseer la capacidad
CAP_SYS_NICE.
- EINVAL
- La máscara de afinidad mask no contiene procesadores que
estén físicamente en el sistema o la longitud len es
más pequeña que el tamaño de la máscara de
afinidad usada por el núcleo.