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.