Service de noyau tstart

Objectif

Soumet une demande de temporisateur.

Syntaxe

#include <sys/types.h>
#include <sys/errno.h>
#include <sys/timer.h>
void tstart ( t)
struct trb *t;

Paramètre

Article Descriptif
t Pointe vers une structure de demande de temporisateur.

Descriptif

Le service de noyau Tstart soumet une demande de temporisateur avec le bloc de demande de temporisateur spécifié par le paramètre T comme entrée. L'appelant du service de noyau Tstart doit d'abord appeler le service de noyau Talloc pour allouer Structure de demande de temporisateur. L'appelant doit ensuite initialiser les zones de la structure avant d'appeler le service de noyau Tstart .

Une fois la demande soumise, le noyau appelle let->funcFonction de temporisateur lorsque le temps spécifié par let->timeout.itLa valeur est écoulée. :NONE.t->funcLa fonction de temporisateur est appelée sur un niveau d'interruption. Par conséquent, le code de cette routine doit suivre les conventions pour les gestionnaires d'interruptions.

Le service de noyau Tstart examinet->flagsPour déterminer si la demande de temporisateur soumise représente une demande absolue ou une demande incrémentielle. Une demande absolue est une demande de délai à l'heure représentée dans la structure Valeur_itr . Une demande incrémentielle est une demande de temps de sortie à l'heure actuelle, plus l'heure dans la structure Valeur_itr .

L'appelant doit placer des informations temporelles pour les temporisateurs absolus et incrémentiels dans la sous-structure de valeur itimerstruc_t t.it . L'indicateur de demande absolue T_ABSOLUTE est défini dans le fichier /usr/include/sys/timer.h et doit être associé à la valeurt->flagSi une demande de temporisateur absolue est souhaitée.

Lorsque l'indicateur T_MOVE_OK est défini, le temporisateur associé est déplacé vers un autre processeur lorsque le processeur propriétaire est plié.

Lorsque l'indicateur T_LATE_OK est défini, le temporisateur associé est mis en veille lorsque le processeur propriétaire est mis en mode veille (pliée). Le gestionnaire d'expiration du temporisateur est appelé lorsque le processeur propriétaire est réveillé (déplié) si le délai d'expiration planifié est passé. Le temps passé à dormir est donc compté par rapport au délai d'expiration. Lorsque cette option est définie, il n'y a aucune garantie quant à la date d'expiration du temporisateur.

Remarque: The T_MOVE_OK and T_LATE_OK flags are not required. Elles visent à améliorer l'efficacité du pliage des processeurs en réduisant la charge sur les processeurs pliés.

Les modifications apportées à l'heure système sont ajoutées aux demandes de temporisation incrémentielles, mais pas aux demandes absolues. Considérez l'utilisateur qui a soumis une demande de délai absolue pour midi le 12/25/88. Si un utilisateur privilégié modifie ensuite le temps système en y ajoutant quatre heures, la demande de temporisateur soumise par l'utilisateur se produit toujours à midi le 25/88.

En revanche, supposons qu'il soit actuellement midi et qu'un utilisateur soumette une demande de temporisation incrémentielle pendant 6 heures (à 6 p.m). Si, avant l'expiration du temporisateur, l'utilisateur privilégié modifie l'heure système en y ajoutant quatre heures, la demande de temporisateur de l'utilisateur expirera à 2200 (10 p.m.).

Environnement d'exécution

Le service de noyau Tstart peut être appelé à partir de l'environnement Processus ou Interruption .

Valeurs renvoyées

Le service Tstart n'a pas de valeur de retour.