blob: cc379ae11be071ddb474ba27ff8719922ad6bc9d [file] [log] [blame]
<assertions>
<assertion id="1" tag="ref:XSH6:6594:6595">
clock_settime() sets the clock clock_id to the value specified
by tp.
</assertion>
<assertion id="2" tag="ref:XSH6:6595:6596">
clock_settime() truncates time values that are between resolution multiples
to the smaller resolution multiple
</assertion>
<assertion id="3" tag="ref:XSH6:6597:6603">
clock_settime() supports CLOCK_REALTIME
</assertion>
<assertion id="4" tag="ref:XSH6:6604:6609">
If clock_settime() changes the time for CLOCK_REALTIME, then any absolute
timers will use the new time for expiration. If at this point, the timer
should have expired in the past, it will expire immediately (no error).
</assertion>
<assertion id="5" tag="ref:XSH6:6610:6614">
clock_settime() does not affect _relative_ timers (either timers or
nanosleep() calls). These expire when the relative time interval elapses,
regardless of what the clock says.
</assertion>
<assertion id="6" tag="ref:XSH6:6615:6621 pt:MON">
clock_settime() cannot set the monotonic clock CLOCK_MONOTONIC and will
fail if invoked with clock_id CLOCK_MONOTONIC
</assertion>
<assertion id="7" tag="ref:XSH6:6624:6628 pt:CS">
If clock_settime() changes the time for CLOCK_REALTIME, then any threads
blocked on clock_nanosleep() for the CLOCK_REALTIME clock
will use the new time for expiration. If at this point, the timer
should have expired in the past, it will expire immediately (no error).
</assertion>
<assertion id="8" tag="ref:XSH6:6629:6631 pt:CS">
clock_settime() does not affect clock_nanosleep() _relative_ timers.
These expire when the relative time interval elapses,
regardless of what the clock says.
</assertion>
<assertion id="9" tag="ref:XSH6:6633:6639 pt:CPT">
If _POSIX_CPUTIME is defined, clock_settime() supports clock_ids obtained
via clock_getcpuclockid(). The value set is the amount of execution
time of the process associated with the clock.
</assertion>
<assertion id="10" tag="ref:XSH6:6635:6639 pt:CPT">
If _POSIX_CPUTIME is defined, clock_settime() supports clock_id
CLOCK_PROCESS_CPUTIME_ID (= the CPU clock of the calling process).
The value set is the amount of execution time of the calling process.
</assertion>
<assertion id="11" tag="ref:XSH6:6639:6641 pt:CPT">
If clock_settime() is used to change the value of a CPU-time clock,
sporadic server scheduling policy is unaffected.
</assertion>
<assertion id="12" tag="ref:XSH6:6642:6648 pt:TCT">
If _POSIX_THREAD_CPUTIME is defined, clock_settime() supports clock_ids
obtained via pthread_getcpuclockid(). The value set is the amount of
execution time of the thread associated with the clock.
</assertion>
<assertion id="13" tag="ref:XSH6:6644:6648 pt:TCT">
If _POSIX_THREAD_CPUTIME is defined, clock_settime() supports clock_id
CLOCK_THREAD_CPUTIME_ID (= the CPU clock of the calling thread).
The value set is the amount of execution time of the calling thread.
</assertion>
<assertion id="14" tag="ref:XSH6:6648:6650 pt:TCT">
If clock_settime() is used to change the value of a CPU-time clock,
sporadic server scheduling policy is unaffected.
</assertion>
<assertion id="15" tag="ref:XSH6:6652:6652">
clock_settime() returns 0 on success
</assertion>
<assertion id="16" tag="ref:XSH6:6652:6653">
clock_settime() returns -1 on failure
</assertion>
<assertion id="17" tag="ref:XSH6:6656:6656">
clock_settime() sets errno=EINVAL if clock_id does not specify a known
clock
</assertion>
<assertion id="18" tag="ref:XSH6:6658:6658">
clock_settime() sets errno=EINVAL if tp is outside the valid range for
clock_id
</assertion>
<assertion id="19" tag="ref:XSH6:6659:6660">
clock_settime() sets errno=EINVAL if tp has a nsec value below 0 or
above (or equal to) 1000 million
</assertion>
<assertion id="20" tag="ref:XSH6:6661:6661 pt:MON">
clock_settime() sets errno=EINVAL if clock_id is CLOCK_MONOTONIC
</assertion>
<assertion id="21" tag="ref:XSH6:6663:6664">
clock_settime() sets errno=EPERM if the calling process does not have
privileges to set clockid (MAY, not SHOULD).
</assertion>
</assertions>