get the current time from a clock
#include <time.h>
int qnx_getclock( pid_t proc_pid,
clockid_t clock_id,
struct timespec *tp )
The qnx_getclock() function gets the current time of the clock of type clock_id into the buffer pointed to by tp from the node identified by proc_pid. If proc_pid is zero, the current node is used.
To get the time on another node, proc_pid should be passed as a virtual circuit to the process manager on that node. For example,
/* Attach a vc to the process manager on node 4 */ proc_pid = qnx_vc_attach( 4, PROC_PID, 0, 0 );
The only supported clock type is CLOCK_REALTIME.
The tp parameter points to a timespec structure containing:
time_t tv_sec; time_t tv_nsec;
The tv_sec member contains the number of seconds since 1970. The tv_nsec member contains the number of nanoseconds in the current second. This value increases by some multiple of nanoseconds, based upon the system timer's period.
/*
* This program synchronizes the system clock of the
* node it's running on with the system clock of the
* node address provided as the first argument.
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/vc.h>
#include <sys/kernel.h>
void main( int argc, char **argv )
{
nid_t node;
pid_t procpid;
struct timespec gtime;
node = strtol( argv[1], NULL, 0 );
if( ( procpid = qnx_vc_attach( node, PROC_PID, 0,
_VC_AT_SHARE ) ) == -1 ) {
perror( "qnx_vc_attach" );
exit( EXIT_FAILURE );
}
if( qnx_getclock( procpid, CLOCK_REALTIME, >ime )
== -1 ) {
perror( "qnx_getclock" );
exit( EXIT_FAILURE );
}
if( qnx_setclock( PROC_PID, CLOCK_REALTIME, >ime )
== -1 ) {
perror( "qnx_setclock" );
exit( EXIT_FAILURE );
}
qnx_vc_detach( procpid );
exit( 0 );
}
QNX
| Safety: | |
|---|---|
| Interrupt handler | No |
| Signal handler | Yes, but modifies errno |
| Thread | Yes |
clock_gettime(), clock_setres(), clock_settime(), errno, qnx_vc_attach()