Получить идентификатор часов для заданного процесса и потока
#include <sys/neutrino.h>#include <inttypes.h>extern int ClockId( pid_t pid,int tid );extern int ClockId_r( pid_t pid,int tid );
0
, то clock ID будет получен для вызывающего процесса.0
, то clock ID будет получен для процесса в целом.libc
Системные вызовы ClockId() и ClockId_r() возвращают целое число, которое далее можно передать как параметр clockid_t
функции ClockTime(). У часов могут быть следующие типы:
CLOCK_SOFTTIME
для сна, не "разбудит" процессор, когда приложение должно проснуться. Это позволит процессору перейти в режим энергосбережения. Когда процессор не находится в режиме энергосбережения таймеры типа CLOCK_SOFTTIME
аналогичны типу CLOCK_REALTIME
. Когда clock ID передается в функцию ClockTime(), то она возвращает в параметре old количество наносекунд, в течение которых выполнялся указанный поток указанного процесса.
Функции ClockId() и ClockId_r() идентичны, но по разному указывают на ошибки.
Вместо использования системных вызовов рекомендуется применять функции clock_getcpuclockid() или pthread_getcpuclockid(). |
Эти вызовы являются неблокируемыми.
-1
и установит переменную errno.
Программа определяет загрузку системы:
id = ClockId( 1, 1 );for( ;; ){ClockTime( id, NULL, &start );sleep( 1 );ClockTime( id, NULL, &stop );printf( "load = %f%%\n", (1000000000.0 - (stop - start)) / 10000000.0 );}
ЗОСРВ «Нейтрино»
ClockTime(), clock_getcpuclockid(), pthread_getcpuclockid()
Предыдущий раздел: Описание API системной библиотеки