Warning: main(/www/www/htdocs/style/globals.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/c/clockperiod.html on line 1
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/globals.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/c/clockperiod.html on line 1
Warning: main(/www/www/htdocs/style/header.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/c/clockperiod.html on line 8
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/header.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/c/clockperiod.html on line 8
Get or set a clock period
#include <sys/neutrino.h>
int ClockPeriod( clockid_t id,
const struct _clockperiod * new,
struct _clockperiod * old,
int reserved );
int ClockPeriod_r( clockid_t id,
const struct _clockperiod * new,
struct _clockperiod * old,
int reserved );
- id
- The clock ID of the clock.
This must be CLOCK_REALTIME, which is the ID of the clock
that maintains the system time.
- new
- NULL, or a pointer to a _clockperiod
structure that contains the period to set the clock to.
This structure contains at least the following members:
- unsigned long nsec — the period of
the clock, in nanoseconds.
- long fract — reserved for future
fractional nanoseconds.
Set this member to zero.
- old
- NULL, or a pointer to a _clockperiod
structure where the function can store the current period (before being
changed by a non-NULL new).
- reserved
- Set this argument to 0.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
You can use the ClockPeriod() and ClockPeriod_r()
kernel calls to get or set the clock period of the clock.
|
If you want to get the clock period, consider calling
clock_getres()
instead of using these kernel calls directly. |
These functions are identical
except in the way they indicate errors.
See the Returns section for details.
|
- You need to have superuser privileges to set the clock period.
- If you're using adaptive partitioning, and
you change the tick size of the system at runtime, do so before defining
the adaptive partitioning scheduler's window size.
That's because Neutrino converts the window size from milliseconds to
clock ticks for internal use.
For more information, see the Adaptive Partitioning
User's Guide.
|
All the timer_*() calls operate with an accuracy no better than the clock period.
Every moment within the Neutrino microkernel is referred to as a tick.
A tick's initial length is determined by the clock rate of your processor:
CPU clock speed:
|
Default value:
|
≥ 40MHz
|
1 millisecond
|
< 40MHz
|
10 milliseconds |
Since a very small tick size imposes an interrupt load on the system,
and can consume all available processor cycles,
the kernel call limits how small a period can be specified.
The lowest clock period that can currently be set on any machine is 10 microseconds.
If an attempt is made to set a value that the kernel believes to be unsafe,
the call fails with an EINVAL.
The timeslice rate (for “round-robin” and “other” scheduling policies) is
always four times the clock period (this isn't changeable).
These calls don't block.
The only difference between these functions is the way they indicate errors:
- ClockPeriod()
- If an error occurs, this function returns -1 is and sets
errno.
Any other value returned indicates success.
- ClockPeriod_r()
- EOK is returned on success.
This function does NOT set errno.
If an error occurs, the function can return any value in the Errors
section.
- EFAULT
- A fault occurred when the kernel tried to access the buffers provided.
- EINVAL
- Invalid clock ID.
A period was set which wasn't in a range considered safe.
- EPERM
- The process tried to change the period of the clock without having superuser capabilities.
QNX Neutrino
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
clock_getres(),
ClockAdjust()
Clocks, Timers, and Getting a Kick Every So Often
chapter of Getting Started with QNX Neutrino
Warning: main(/www/www/htdocs/style/footer.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/c/clockperiod.html on line 288
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/footer.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/c/clockperiod.html on line 288