kra_thread_create Kernel Service
Finalidad
Crea una nueva hebra de kernel en el proceso de llamada y adjunta la nueva hebra de kernel a un conjunto de recursos.
Sintaxis
#include <sys/rset.h>
tid_t kra_thread_create (rstype, rsid, flags)
rstype_t rstype;
rsid_t rsid;
unsigned int flags;
Descripción
El servicio de kernel de kra_thread_create crea una nueva hebra de sólo kernel en el proceso de kernel que llama y adjunta la nueva hebra de kernel a un conjunto de recursos tal como se especifica en los parámetros rstype y rsid . Después de crear la hebra de kernel, se devuelve el ID de la nueva hebra de kernel. El ID devuelto de la nueva hebra de kernel es exclusivo en todo el sistema.
El servicio de kernel de kra_thread_create se puede utilizar de forma similar al servicio de kernel de thread_create para crear una nueva hebra de kernel en el proceso de llamada.
La nueva hebra de kernel no se inicia inmediatamente después de que se cree y el estado de la nueva hebra de kernel se establece en TSIDL. La nueva hebra de kernel se inicia después de una llamada al servicio de kernel de kthread_start . Si el nuevo proceso de hebra de kernel sale antes de que se inicie la nueva hebra de kernel, los recursos de la nueva hebra de kernel se liberan inmediatamente. La máscara de señal de la nueva hebra de kernel se hereda de la hebra de llamada y se borra el conjunto de señales pendientes de la hebra de kernel. Si la nueva hebra del kernel está en el estado TSIDL , todas las señales que se envían a la nueva hebra de kernel se marcan como Pendiente.
- El conjunto de recursos debe contener procesadores que están disponibles en el sistema.
- El proceso de llamada debe tener la autorización root o tener la capacidad CAP_NUMA_ATTACH .
- El proceso de llamada debe tener la autorización root o tener el mismo ID de usuario efectivo que el del proceso de destino.
- La hebra de llamada no debe tener enlaces de procesador bindprocessor con un procesador.
- El conjunto de recursos debe estar contenido en el conjunto de recursos de partición del proceso de llamada.
Parámetros
| Elemento | Descripción |
|---|---|
| RSTYPE | Especifica el tipo de conjunto de recursos al que se adjuntará la nueva hebra de kernel del proceso de llamada. Los valores válidos son:
|
| rsid | Especifica el conjunto de recursos que está asociado al parámetro rstype . Los valores válidos son:
|
| distintivos | (Reservado) Reservado para uso futuro. Puede especificar el valor como 0. |
Valores de retorno
Tras la finalización satisfactoria, el servicio de kernel de kra_thread_create devuelve un valor de cero (0). Si no es satisfactorio, el servicio de kernel kra_thread_create devuelve uno de los siguientes errores:
| Elemento | Descripción |
|---|---|
| EINVAL | Indica una de las condiciones siguientes:
|
| ENDEV | El conjunto de recursos especificado no contiene un procesador que esté disponible en el sistema. |
| EFAULT | Dirección no válida. |
| EPERM | Indica una de las condiciones siguientes:
|
| ENOMEM | La memoria disponible no es suficiente para crear la hebra del kernel. |
| FEAGA | El número total de hebras de kernel que se ejecutan en todo el sistema o el número máximo de hebras de kernel por proceso se superarían. |
| ENOTSUP | El servicio de kernel de kra_thread_create se llama directamente desde una extensión de kernel. |