![]() |
![]() |
![]() |
![]() |
Get the CPU-time clock ID for a given process and thread
#include <sys/neutrino.h> #include <inttypes.h> int ClockId( pid_t pid, int tid ); int ClockId_r( pid_t pid, int tid );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The ClockId() and ClockId_r() kernel calls retrieve an integer CPU-time clock ID that you can pass as a clockid_t to ClockTime(). When you pass this clock ID to ClockTime(), that function returns (in the location pointed to by old) the number of nanoseconds that the specified thread of the specified process has executed.
The ClockId() and ClockId_r() functions are identical except in the way they indicate errors. See the Returns section for details.
![]() |
Instead of using these kernel calls directly, consider calling clock_getcpuclockid() or pthread_getcpuclockid(). |
If the tid is zero, ClockTime() gives you the number of nanoseconds that the process as a whole has executed. On an SMP box, this number may exceed the realtime number of nanoseconds that have elapsed because multiple threads in the process can run on several CPUs at the same time.
This call doesn't block.
Here's how you can determine how busy a system is:
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); }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
ClockTime(), clock_getcpuclockid(), pthread_getcpuclockid()
Clocks, Timers, and Getting a Kick Every So Often chapter of Getting Started with QNX Neutrino
![]() |
![]() |
![]() |
![]() |