1f08c3bdfSopenharmony_ci<assertions> 2f08c3bdfSopenharmony_ci <assertion id="1" tag="pt:CS" files=""> 3f08c3bdfSopenharmony_ci The clock time can be set to 0, a large number, Y2K critical dates, 4f08c3bdfSopenharmony_ci and times around daylight savings. 5f08c3bdfSopenharmony_ci </assertion> 6f08c3bdfSopenharmony_ci <assertion id="2" tag="pt:CS" files=""> 7f08c3bdfSopenharmony_ci clock_gettime() with CLOCK_REALTIME is monotonically increasing in both 8f08c3bdfSopenharmony_ci seconds and nanoseconds. 9f08c3bdfSopenharmony_ci </assertion> 10f08c3bdfSopenharmony_ci <assertion id="3" tag="pt:CS" files=""> 11f08c3bdfSopenharmony_ci Clock time for clocks: 12f08c3bdfSopenharmony_ci CLOCK_REALTIME 13f08c3bdfSopenharmony_ci CLOCK_MONOTONIC 14f08c3bdfSopenharmony_ci is equivalent to some known good clock over time, even if the time 15f08c3bdfSopenharmony_ci is reset. 16f08c3bdfSopenharmony_ci </assertion> 17f08c3bdfSopenharmony_ci <assertion id="4" tag="pt:CS" files=""> 18f08c3bdfSopenharmony_ci Having a call to clock_settime() interrupted with a signal does not 19f08c3bdfSopenharmony_ci affect the setting of the clock. 20f08c3bdfSopenharmony_ci </assertion> 21f08c3bdfSopenharmony_ci <assertion id="5" tag="pt:CS" files=""> 22f08c3bdfSopenharmony_ci Killing a process setting the clock does not affect the clock time in 23f08c3bdfSopenharmony_ci an unpredictable fashion. 24f08c3bdfSopenharmony_ci </assertion> 25f08c3bdfSopenharmony_ci <assertion id="6" tag="pt:CS" files=""> 26f08c3bdfSopenharmony_ci If clocktime is set as a timer expires, the time is still set correctly. 27f08c3bdfSopenharmony_ci </assertion> 28f08c3bdfSopenharmony_ci <assertion id="7" tag="pt:CS" files="clocks/twopsetclock.c"> 29f08c3bdfSopenharmony_ci Two processes can attempt to set the clock at (nearly) the same time and 30f08c3bdfSopenharmony_ci both sets will succeed, with the later one taking effect. 31f08c3bdfSopenharmony_ci </assertion> 32f08c3bdfSopenharmony_ci <assertion id="8" tag="pt:TMR" files=""> 33f08c3bdfSopenharmony_ci The a timer can be set to expire at 0, a large number, Y2K critical dates, 34f08c3bdfSopenharmony_ci and times around daylight savings with no unpredictable results. 35f08c3bdfSopenharmony_ci </assertion> 36f08c3bdfSopenharmony_ci <assertion id="9" tag="pt:TMR" files=""> 37f08c3bdfSopenharmony_ci Timers (relative and absolute) expire at the POSIX-defined times when the 38f08c3bdfSopenharmony_ci clock changes. 39f08c3bdfSopenharmony_ci </assertion> 40f08c3bdfSopenharmony_ci <assertion id="10" tag="pt:TMR" files=""> 41f08c3bdfSopenharmony_ci Multiple relative timers set up in a particular order (possibly with a small 42f08c3bdfSopenharmony_ci delay between each) expire in the order set up. [Not required by POSIX, 43f08c3bdfSopenharmony_ci though, so this should not fail if it does not work.] 44f08c3bdfSopenharmony_ci </assertion> 45f08c3bdfSopenharmony_ci <assertion id="11" tag="pt:TMR" files=""> 46f08c3bdfSopenharmony_ci All possible events can be sent on timer expirations. 47f08c3bdfSopenharmony_ci </assertion> 48f08c3bdfSopenharmony_ci <assertion id="12" tag="pt:TMR" files="timers/twoevtimers.c"> 49f08c3bdfSopenharmony_ci Two timers in one process can expire at the same time, but with 50f08c3bdfSopenharmony_ci different events. 51f08c3bdfSopenharmony_ci </assertion> 52f08c3bdfSopenharmony_ci <assertion id="13" tag="pt:TMR" files="timers/twoptimers.c"> 53f08c3bdfSopenharmony_ci Timers in two different processes which are set to expire at the same time 54f08c3bdfSopenharmony_ci are able to expire at the same time. 55f08c3bdfSopenharmony_ci </assertion> 56f08c3bdfSopenharmony_ci <assertion id="14" tag="pt:TMR" files=""> 57f08c3bdfSopenharmony_ci A repeating timer set to expire at time X and a non-repeating set to 58f08c3bdfSopenharmony_ci expire at 2X will both expire at the same time at 2X. 59f08c3bdfSopenharmony_ci </assertion> 60f08c3bdfSopenharmony_ci <assertion id="15" tag="pt:TMR" files=""> 61f08c3bdfSopenharmony_ci A repeating timer will expire at the correct time for at least ten 62f08c3bdfSopenharmony_ci expirations. 63f08c3bdfSopenharmony_ci </assertion> 64f08c3bdfSopenharmony_ci <assertion id="16" tag="pt:TMR" files=""> 65f08c3bdfSopenharmony_ci For multiple repeating timers with different intervals blocked, the 66f08c3bdfSopenharmony_ci overrun count for each is correct. 67f08c3bdfSopenharmony_ci </assertion> 68f08c3bdfSopenharmony_ci <assertion id="17" tag="pt:TMR" files=""> 69f08c3bdfSopenharmony_ci Overrun count and timer_gettime() return correct values when 70f08c3bdfSopenharmony_ci SIGEV_NONE is used in ev.sigev_notify. 71f08c3bdfSopenharmony_ci </assertion> 72f08c3bdfSopenharmony_ci <assertion id="18" tag="pt:TMR" files=""> 73f08c3bdfSopenharmony_ci Calling timer_getoverrun() as an overrun is happening returns the 74f08c3bdfSopenharmony_ci correct value. 75f08c3bdfSopenharmony_ci </assertion> 76f08c3bdfSopenharmony_ci <assertion id="19" tag="pt:TMR" files=""> 77f08c3bdfSopenharmony_ci A process can sleep until 0, a large number, Y2K critical dates, 78f08c3bdfSopenharmony_ci and times around daylight savings with no unpredictable results. 79f08c3bdfSopenharmony_ci </assertion> 80f08c3bdfSopenharmony_ci <assertion id="20" tag="pt:TMR" files=""> 81f08c3bdfSopenharmony_ci Sleeps (relative and absolute) expire at the POSIX-defined times when the 82f08c3bdfSopenharmony_ci clock changes. 83f08c3bdfSopenharmony_ci </assertion> 84f08c3bdfSopenharmony_ci <assertion id="21" tag="pt:TMR" files=""> 85f08c3bdfSopenharmony_ci Sleeps in two different processes which are set to end at the same time 86f08c3bdfSopenharmony_ci are able to end at the same time. 87f08c3bdfSopenharmony_ci </assertion> 88f08c3bdfSopenharmony_ci</assertions> 89