Sous-routine thread_cputime
Objectif
Extrait l'utilisation de l'unité centrale pour une unité d'exécution spécifiée
Bibliothèque
Bibliothèque C standard (libc.a)
Syntaxe
#include <sys/thread.h>
int thread_cputime (tid, ctime)
tid_t tid;
thread_cputime_t * ctime ;
typedef struct {
uint64_t utime; /* User time in nanosenconds */
uint64_t stime; /* System time in nanoseconds */
} thread_cputime_t;Descriptif
La sous-routine Tarau_tarau_tarau_exécution permet à une unité d'exécution d'interroger l'utilisation de l'unité centrale de l'unité d'exécution spécifiée (D) dans le même processus ou dans un autre processus. Si la valeur -1 est transmise dans le champ du paramètre tid, l'utilisation de l'unité centrale du thread appelant est récupérée.
L'utilisation de l'unité centrale n'est pas identique à la durée de vie totale de l'unité d'exécution en temps réel, mais correspond à la quantité réelle de temps UC consommée par l'unité d'exécution depuis sa création. L'utilisation de l'unité centrale extraite par cette sous-routine contient le temps UC consommé par l'unité d'exécution demandée D dans l'espace utilisateur (Utime) et l'espace système (Stime).
L'unité d'exécution à interroger est identifiée à l'aide de l'ID d'unité d'exécution du noyau qui a une portée globale. Il peut être obtenu par l'application à l'aide de l'appel système Thread_self . Seul le mode d'unité d'exécution 1: 1 est pris en charge. Le résultat pour le mode d'unité d'exécution M: N n'est pas défini.
L'utilisation de l'unité centrale d'une unité d'exécution qui n'est pas l'unité d'exécution appelante est en cours à la dernière envoi de l'unité d'exécution. Cette valeur sera désactivée par une petite quantité si l'unité d'exécution cible est en cours d'exécution.
Paramètres
| Article | Descriptif |
|---|---|
| ID d'unité d'exécution | Identificateur de l'unité d'exécution pour laquelle l'utilisation de l'unité centrale doit être extraite. La valeur -1 entraîne la récupération de l'utilisation de l'unité centrale du thread appelant. |
| Heure d'heure | Utilisation de l'UC renvoyée à l'appelant. L'utilisation de l'unité centrale est renvoyée en termes de nanosecondes de temps système et utilisateur. |
Valeurs renvoyées
- 0
- Thread_cputime a abouti
- -1
- Thread_cputime n'a pas abouti. La variable globale errno est définie pour indiquer l'erreur.
Codes d'erreur
La sous-routine Tarau_tarau_tarau_exécution échoue si une ou plusieurs des informations suivantes sont vraies:
| Article | Descriptif |
|---|---|
| ESRCH | L'unité d'exécution cible est introuvable. |
| EINVAL | Un ou plusieurs des arguments avaient une valeur non valide. |
| EDÉFAUT | Echec d'une opération de copie vers Heure d'heure . |
Exemple
#include <stdio.h>
#include <sys/thread.h>
cputime.c:
int main( int argc, char *argv[])
{
thread_cputime_t ut;
tid_t tid;
tid = atoi(argv[1]);
printf("tid = %d\n",tid);
if (thread_cputime(tid, &ut) == -1)
{
perror("Error from thread_cputime");
exit(0);
}
else
{
printf("U: %ld nsecs\n", ut.utime);
printf("S: %ld nsecs\n", ut.stime);
}
}
Output:
# tcpdump -i en0 > /dev/null &
# echo "th * | grep tcpdump" | kdb | grep tcpdump
(0)> th * | grep tcpdump
pvthread+00A700 167 tcpdump SLEEP 0A7011 044 0 0 nethsque+000290
# echo "ibase=16;obase=A;0A7011" | bc
684049
# ./cputime 684049
tid = 684049
U: 31954040 nsecs
S: 31833069 nsecs