tstart Kernel Service
Finalidad
Envía una solicitud de temporizador.
Sintaxis
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/timer.h> struct trb *t;
Parámetro
| Elemento | Descripción |
|---|---|
| T | Apunta a una estructura de solicitud de temporizador. |
Descripción
El servicio de kernel de tstart envía una solicitud de temporizador con el bloque de solicitud de temporizador especificado por el parámetro t como entrada. El llamante del servicio de kernel de tstart debe llamar primero al servicio de kernel de talloc para asignar el estructura de la solicitud. A continuación, el llamante debe inicializar los campos de la estructura antes de llamar al servicio de kernel de tstart .
Una vez que se ha enviado la solicitud, el kernel llama alt->funcfunción de temporizador cuando la cantidad de tiempo especificada port->timeout.itel valor ha transcurrido. Los 2t->funcLa función de temporizador se llama a un nivel de interrupción. Por lo tanto, el código de esta rutina debe seguir los convenios para los manejadores de interrupciones.
El servicio de kernel de tstart examina elt->flagspara determinar si la solicitud de temporizador que se envía representa una solicitud absoluta o una incremental. Una solicitud absoluta es una solicitud de un tiempo de espera en el momento representado en la estructura it_value . Una solicitud incremental es una solicitud de un tiempo de espera en el momento representado por ahora, más el tiempo en la estructura it_value .
El llamante debe colocar información de hora para los temporizadores absolutos e incrementales en la subestructura de valor itimerstruc_t t.it . El distintivo de solicitud absoluta T_ABSOLUTE se define en el archivo /usr/include/sys/timer.h y debe ser ORed en elt->flagsi se desea una solicitud de temporizador absoluta.
Cuando se establece el distintivo T_MOVE_OK , el temporizador asociado se mueve a otro procesador cuando se dobla el procesador propietario.
Cuando se establece el distintivo T_LATE_OK , el temporizador asociado se pone a dormir cuando el procesador propietario se coloca en modalidad de suspensión (plegada). El manejador de caducidad del temporizador se llama cuando el procesador propietario se despierta (se desdobla) si el tiempo de caducidad planificado ha pasado. Por lo tanto, el tiempo de dormir se cuenta con respecto a la hora de caducidad. Cuando se establece este distintivo, no hay ninguna garantía de cuándo el temporizador puede caducar.
Las modificaciones de la hora del sistema se añaden a las solicitudes de temporizador incrementales, pero no a las absolutas. Considere el usuario que ha enviado una solicitud de temporizador absoluto para el mediodía de 12/25/88. Si un usuario privilegiado modifica la hora del sistema añadiendo cuatro horas a la misma, la solicitud de temporizador enviada por el usuario todavía se produce al mediodía de 12/25/88.
Por el contrario, supongamos que es actualmente a las 12 del mediodía y que un usuario envía una solicitud de temporizador incremental durante 6 horas a partir de ahora (para que se produzca a las 6 p.m.). Si, antes de que caduque el temporizador, el usuario privilegiado modifica la hora del sistema añadiéndole cuatro horas, la solicitud de temporizador del usuario caducará a las 2200 (10 p.m.).
Entorno de ejecución
El servicio de kernel de tstart se puede llamar desde el entorno proceso o interrupción .
Valores de retorno
El servicio tstart no tiene valores de retorno.