I wrote a test for the psxtimer using timer_monotonic. The timer create 
function worked and all of the get and set time functions work. Cristian told 
me to verify that the monotonic timer is unaffected by the wall clock. I found 
some code that I'm just using to test it. I'm using that excerpt from that man 
page to check if everything is working including timer overrun. Then will run 
that program with hardcoded values as a control and then change the date on the 
next running of the program ( which should not affect the delay or the time 
overrun ).
I don't know if there needs to be any change with timeroverrun or timersettime 
( I don't think so because it does not deal with getting the time)

Thanks
Zack


ent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Wednesday, June 23rd, 2021 at 8:44 PM, Gedare Bloom <ged...@rtems.org> wrote:

> On Wed, Jun 23, 2021 at 12:16 PM zack_on_the_speed_chanel
>
> zack_on_the_speed_cha...@protonmail.ch wrote:
>
> > I tried to do some testing with the code I write. I tired to test it by 
> > making a rtems app. I modified the code from the ubuntu manpage ( here 
> > https://manpages.ubuntu.com/manpages/bionic/man2/timer_create.2.html)so it 
> > does not need command line arguments and my code was able to compile. When 
> > I run the program it does not print anything. I double-checked the POSIX 
> > calls and all were compatible with rtems.
>
> The easiest thing to do is to modify an existing test to add new test
>
> cases, or else copy a test that is similar to what you need to do.
>
> > Sent with ProtonMail Secure Email.
> >
> > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> >
> > On Saturday, June 19th, 2021 at 6:49 PM, zack_on_the_speed_chanel 
> > zack_on_the_speed_cha...@protonmail.ch wrote:
> >
> > > I have added the tests and added the ones that create the timer. My idea 
> > > for testing is that if I change the wall clock and I'll check the 
> > > monotonic clock's time. But I think I have to make a signal and arm the 
> > > timer.
> > >
> > > Thanks
> > >
> > > Zack
> > >
> > > Sent with ProtonMail Secure Email.
> > >
> > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > >
> > > On Friday, June 18th, 2021 at 8:01 AM, Christian Mauderer 
> > > o...@c-mauderer.de wrote:
> > >
> > > > Hello Zack,
> > > >
> > > > On 18/06/2021 04:34, zack_on_the_speed_chanel wrote:
> > > >
> > > > > so I tested it with the but I have not made a new test file I'll do 
> > > > > that soon. How do I add a new test? All the tests that test the timer 
> > > > > functionality do work. I"m confident that all the changes I had to 
> > > > > made to implement a monotonic clock should be there.
> > > >
> > > > Regarding a new test: Just grep for example for psxtimer01 in the
> > > >
> > > > sources and add the new test simmilar to the existing one.
> > > >
> > > > The most relevant files are spec/build/testsuites/psxtests/*.yml for the
> > > >
> > > > waf based build system and testsuites/psxtests/Makefile.am and
> > > >
> > > > .../configure.ac for the old build system.
> > > >
> > > > But please check whether you need a new test program. If you basically
> > > >
> > > > only copy the test routine of psxtimer01 or psxtimer02 and replace all
> > > >
> > > > CLOCK_REALTIME by CLOCK_MONOTONIC then you shouldn't add a new test.
> > > >
> > > > Instead create a function in the test that is called once with
> > > >
> > > > CLOCK_REALTIME and once with CLOCK_MONOTONIC.
> > > >
> > > > Please make sure that the test not only tests the API but also whether
> > > >
> > > > the timer work as expected. A timer with CLOCK_REALTIME can be affected
> > > >
> > > > by changes in the wall clock. CLOCK_MONOTONIC should not be affected. So
> > > >
> > > > please make sure that your test checks whether that is really the case.
> > > >
> > > > Best regards
> > > >
> > > > Christian
> > > >
> > > > > Thanks
> > > > >
> > > > > Zack
> > > > >
> > > > > Sent with ProtonMail Secure Email.
> > > > >
> > > > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > > > >
> > > > > On Tuesday, June 15th, 2021 at 7:29 AM, Christian Mauderer 
> > > > > o...@c-mauderer.de wrote:
> > > > >
> > > > > > If you add a new functionallity you should add a test that tests the
> > > > > >
> > > > > > expected behaviour. You just shouldn't replace one but add a new 
> > > > > > test or
> > > > > >
> > > > > > a new test case to an existing test.
> > > > > >
> > > > > > Best regards
> > > > > >
> > > > > > Christian
> > > > > >
> > > > > > On 14/06/2021 22:18, zack_on_the_speed_chanel wrote:
> > > > > >
> > > > > > > also i'll revert the posix test that I changed back to normal 
> > > > > > > because it was only for testing.
> > > > > > >
> > > > > > > Sent with ProtonMail Secure Email.
> > > > > > >
> > > > > > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > > > > > >
> > > > > > > On Monday, June 14th, 2021 at 8:14 PM, zack_on_the_speed_chanel 
> > > > > > > zack_on_the_speed_cha...@protonmail.ch wrote:
> > > > > > >
> > > > > > > > I've made most of the corrections to the code. I fixed up the 
> > > > > > > > formatting but I still don't know if I have to add anything for 
> > > > > > > > the settime and delete_timer(). i assume as the monotonic clock 
> > > > > > > > only affects the value I think it's all I have to do. I also 
> > > > > > > > can try to modify a posix test to check my theory.
> > > > > > > >
> > > > > > > > Thanks
> > > > > > > >
> > > > > > > > Zack
> > > > > > > >
> > > > > > > > Sent with ProtonMail Secure Email.
> > > > > > > >
> > > > > > > > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > > > > > > >
> > > > > > > > On Saturday, June 12th, 2021 at 9:31 AM, Christian Mauderer 
> > > > > > > > o...@c-mauderer.de wrote:
> > > > > > > >
> > > > > > > > > Hello Zack,
> > > > > > > > >
> > > > > > > > > I don't really know a lot about the timer toppic. So this is 
> > > > > > > > > more of a
> > > > > > > > >
> > > > > > > > > style and general suggestion review.
> > > > > > > > >
> > > > > > > > > On 09/06/2021 20:27, zack wrote:
> > > > > > > > >
> > > > > > > > > > From: zack zack_on_the_speed_cha...@protonmail.ch
> > > > > > > > > >
> > > > > > > > > > cpukit/include/rtems/posix/timer.h | 6 ++-
> > > > > > > > > >
> > > > > > > > > > cpukit/posix/src/psxtimercreate.c | 5 +-
> > > > > > > > > >
> > > > > > > > > > cpukit/posix/src/timergettime.c | 61 ++++++++++++++++++++---
> > > > > > > > > >
> > > > > > > > > > testsuites/psxtests/psxtimer02/psxtimer.c | 26 +++++++---
> > > > > > > > > >
> > > > > > > > > > 4 files changed, 81 insertions(+), 17 deletions(-)
> > > > > > > > > >
> > > > > > > > > > diff --git a/cpukit/include/rtems/posix/timer.h 
> > > > > > > > > > b/cpukit/include/rtems/posix/timer.h
> > > > > > > > > >
> > > > > > > > > > index bcbf07a65a..f8cf6115b2 100644
> > > > > > > > > >
> > > > > > > > > > --- a/cpukit/include/rtems/posix/timer.h
> > > > > > > > > >
> > > > > > > > > > +++ b/cpukit/include/rtems/posix/timer.h
> > > > > > > > > >
> > > > > > > > > > @@ -21,7 +21,7 @@
> > > > > > > > > >
> > > > > > > > > > #include <rtems/score/objectdata.h>
> > > > > > > > > >
> > > > > > > > > > #include <rtems/score/watchdog.h>
> > > > > > > > > > ---------------------------------
> > > > > > > > >
> > > > > > > > > I think the blank line separated rtems includes from others. 
> > > > > > > > > So please
> > > > > > > > >
> > > > > > > > > don't remove it.
> > > > > > > > >
> > > > > > > > > > +#include <time.h>
> > > > > > > > > >
> > > > > > > > > > #include <pthread.h>
> > > > > > > > > >
> > > > > > > > > > #ifdef __cplusplus
> > > > > > > > > >
> > > > > > > > > > @@ -47,7 +47,9 @@ typedef struct {
> > > > > > > > > >
> > > > > > > > > > struct itimerspec timer_data; /* Timing data of the timer /
> > > > > > > > > >
> > > > > > > > > > uint32_t ticks; / Number of ticks of the initialization /
> > > > > > > > > >
> > > > > > > > > > uint32_t overrun; / Number of expirations of the timer */
> > > > > > > > > >
> > > > > > > > > > -   struct timespec time; /* Time at which the timer was 
> > > > > > > > > > started */
> > > > > > > > > >
> > > > > > > > > > -   struct timespec time; /* Time at which the timer was 
> > > > > > > > > > started */
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > Not sure what changed in that line. Looks like a whitespace 
> > > > > > > > > change.
> > > > > > > > >
> > > > > > > > > Please avoid these.
> > > > > > > > >
> > > > > > > > > > -   clockid_t clock_type;
> > > > > > > > >
> > > > > > > > > Why a blank line?
> > > > > > > > >
> > > > > > > > > > } POSIX_Timer_Control;
> > > > > > > > > >
> > > > > > > > > > /**
> > > > > > > > > >
> > > > > > > > > > diff --git a/cpukit/posix/src/psxtimercreate.c 
> > > > > > > > > > b/cpukit/posix/src/psxtimercreate.c
> > > > > > > > > >
> > > > > > > > > > index a63cf1d100..e78c359bd5 100644
> > > > > > > > > >
> > > > > > > > > > --- a/cpukit/posix/src/psxtimercreate.c
> > > > > > > > > >
> > > > > > > > > > +++ b/cpukit/posix/src/psxtimercreate.c
> > > > > > > > > >
> > > > > > > > > > @@ -40,7 +40,7 @@ int timer_create(
> > > > > > > > > >
> > > > > > > > > > {
> > > > > > > > > >
> > > > > > > > > > POSIX_Timer_Control *ptimer;
> > > > > > > > > >
> > > > > > > > > > -   if ( clock_id != CLOCK_REALTIME )
> > > > > > > > > >
> > > > > > > > > > -   if ( clock_id != CLOCK_REALTIME || clock_id != 
> > > > > > > > > > CLOCK_MONOTONIC )
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > Not sure about that one. It's allways a bit difficult whith 
> > > > > > > > > these
> > > > > > > > >
> > > > > > > > > constructions but I think this one is allways true and 
> > > > > > > > > therefore will
> > > > > > > > >
> > > > > > > > > allways return an error.
> > > > > > > > >
> > > > > > > > > Let's assume clock_id is CLOCK_MONOTONIC. In that case 
> > > > > > > > > (clock_id !=
> > > > > > > > >
> > > > > > > > > CLOCK_REALTIME) is true which means that the function will 
> > > > > > > > > return with
> > > > > > > > >
> > > > > > > > > an error. The same works for CLOCK_RREALTIME and the second 
> > > > > > > > > condition.
> > > > > > > > >
> > > > > > > > > If you apply De Morgan to the term you see that
> > > > > > > > >
> > > > > > > > > (clock_id != CLOCK_REALTIME || clock_id != CLOCK_MONOTONIC)
> > > > > > > > >
> > > > > > > > > is the same as
> > > > > > > > >
> > > > > > > > > !(clock_id == CLOCK_REALTIME && clock_id == CLOCK_MONOTONIC)
> > > > > > > > >
> > > > > > > > > The two inner comparisons are exclusive. So that won't work.
> > > > > > > > >
> > > > > > > > > What you most likely want is a
> > > > > > > > >
> > > > > > > > > !(clock_id == CLOCK_REALTIME || clock_id == CLOCK_MONOTONIC)
> > > > > > > > >
> > > > > > > > > or with De Morgan again:
> > > > > > > > >
> > > > > > > > > (clock_id != CLOCK_REALTIME && clock_id != CLOCK_MONOTONIC)
> > > > > > > > >
> > > > > > > > > >         rtems_set_errno_and_return_minus_one( EINVAL );
> > > > > > > > > >
> > > > > > > > > >       if ( !timerid )
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > @@ -91,7 +91,8 @@ int timer_create(
> > > > > > > > > >
> > > > > > > > > > ptimer->timer_data.it_value.tv_nsec = 0;
> > > > > > > > > >
> > > > > > > > > > ptimer->timer_data.it_interval.tv_sec = 0;
> > > > > > > > > >
> > > > > > > > > > ptimer->timer_data.it_interval.tv_nsec = 0;
> > > > > > > > > > -------------------------------------------
> > > > > > > > > >
> > > > > > > > > > -   ptimer->clock_type=clock_id;
> > > > > > > > > >
> > > > > > > > > > -   _Watchdog_Preinitialize( &ptimer->Timer, 
> > > > > > > > > > _Per_CPU_Get_snapshot() );
> > > > > > > > > >
> > > > > > > > > >     _Watchdog_Initialize( &ptimer->Timer, _POSIX_Timer_TSR 
> > > > > > > > > > );
> > > > > > > > > >
> > > > > > > > > >     _Objects_Open_u32(&_POSIX_Timer_Information, 
> > > > > > > > > > &ptimer->Object, 0);
> > > > > > > > > >
> > > > > > > > > >     diff --git a/cpukit/posix/src/timergettime.c 
> > > > > > > > > > b/cpukit/posix/src/timergettime.c
> > > > > > > > > >
> > > > > > > > > >     index ee2a566f0e..62011cde58 100644
> > > > > > > > > >
> > > > > > > > > >     --- a/cpukit/posix/src/timergettime.c
> > > > > > > > > >
> > > > > > > > > >     +++ b/cpukit/posix/src/timergettime.c
> > > > > > > > > >
> > > > > > > > > >     @@ -28,6 +28,7 @@
> > > > > > > > > >
> > > > > > > > > >     #include <rtems/score/todimpl.h>
> > > > > > > > > >
> > > > > > > > > >     #include <rtems/score/watchdogimpl.h>
> > > > > > > > > >
> > > > > > > > > >     #include <rtems/seterr.h>
> > > > > > > > > >
> > > > > > > > > >     +#include <rtems/timespec.h>
> > > > > > > > > >
> > > > > > > > > >     /*
> > > > > > > > > >
> > > > > > > > > >     -                      - When a timer is initialized, 
> > > > > > > > > > the value of the time in
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > @@ -43,21 +44,67 @@ int timer_gettime(
> > > > > > > > > >
> > > > > > > > > > {
> > > > > > > > > >
> > > > > > > > > > POSIX_Timer_Control *ptimer;
> > > > > > > > > >
> > > > > > > > > > ISR_lock_Context lock_context;
> > > > > > > > > >
> > > > > > > > > > -   uint64_t now;
> > > > > > > > > >
> > > > > > > > > >     uint32_t remaining;
> > > > > > > > > >
> > > > > > > > > > -                 Per_CPU_Control *cpu;
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -                 struct  timespec * now; // get time now 
> > > > > > > > > > either with
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -                 struct  timespec * expire; // expire
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -                 struct  timespec * result;// get 
> > > > > > > > > > remaining time
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >     if ( !value )
> > > > > > > > > >
> > > > > > > > > > -   rtems_set_errno_and_return_minus_one( EINVAL );
> > > > > > > > > >
> > > > > > > > > > -   rtems_set_errno_and_return_minus_one( EINVAL );
> > > > > > > > > >
> > > > > > > > > >     ptimer = _POSIX_Timer_Get( timerid, &lock_context );
> > > > > > > > > >
> > > > > > > > > > -   if ( ptimer != NULL ) {
> > > > > > > > > >
> > > > > > > > > > -   Per_CPU_Control *cpu;
> > > > > > > > > >
> > > > > > > > > > -   if(ptimer== NULL ){
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > Style: There should be a space before the ==
> > > > > > > > >
> > > > > > > > > > -   rtems_set_errno_and_return_minus_one( EINVAL );
> > > > > > > > > > -   }
> > > > > > > > > >
> > > > > > > > > > +if ( ptimer->clock_type ==CLOCK_REALTIME) {
> > > > > > > > >
> > > > > > > > > Style again: Space after ==
> > > > > > > > >
> > > > > > > > > Why that many blank lines?
> > > > > > > > >
> > > > > > > > > > -   cpu = _POSIX_Timer_Acquire_critical( ptimer, 
> > > > > > > > > > &lock_context );
> > > > > > > > > >
> > > > > > > > > > -                      _TOD_Get(now); // get current time
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -                    rtems_timespec_from_ticks 
> > > > > > > > > > (ptimer->Timer.expire,expire ); // get the time to expire
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > That are C++ style comments. We normally have C-Style 
> > > > > > > > > comments in RTEMS
> > > > > > > > >
> > > > > > > > > only. Beneath that the comments exceed the line length. And 
> > > > > > > > > some of them
> > > > > > > > >
> > > > > > > > > are quite superflous. A _TOD_Get(now) doesn't need any 
> > > > > > > > > comment. The line
> > > > > > > > >
> > > > > > > > > is already telling that.
> > > > > > > > >
> > > > > > > > > Again: Blank lines. I won't mention the further blank lines 
> > > > > > > > > below!
> > > > > > > > >
> > > > > > > > > > -   if (now->tv_nsec+now->tv_sec > 
> > > > > > > > > > expire->tv_nsec+expire->tv_sec) { // check if the time 
> > > > > > > > > > expired
> > > > > > > > > >
> > > > > > > > > > -                    rtems_timespec_subtract (now ,expire , 
> > > > > > > > > > result); //
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > Empty comment at the end of the line?
> > > > > > > > >
> > > > > > > > > > -                  remaining = (uint32_t) 
> > > > > > > > > > result->tv_nsec+result->tv_sec;
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -   } else {
> > > > > > > > > >
> > > > > > > > > > -                  remaining = 0;
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -   }
> > > > > > > > > >
> > > > > > > > > > -   _Timespec_From_ticks( remaining, &value->it_value );
> > > > > > > > > >
> > > > > > > > > > -   value->it_interval = ptimer->timer_data.it_interval;
> > > > > > > > > >
> > > > > > > > > > -   _POSIX_Timer_Release( cpu, &lock_context );
> > > > > > > > > >
> > > > > > > > > > -   return 0;
> > > > > > > > > >
> > > > > > > > > > -   }
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > +if ( ptimer->clock_type ==CLOCK_MONOTONIC) {
> > > > > > > > >
> > > > > > > > > Odd indentation and missing blank before the closing bracket.
> > > > > > > > >
> > > > > > > > > Indentation and some blanks on brackets seems to be a problem 
> > > > > > > > > on quite
> > > > > > > > >
> > > > > > > > > some more lines too.
> > > > > > > > >
> > > > > > > > > > -                 cpu = _POSIX_Timer_Acquire_critical( 
> > > > > > > > > > ptimer, &lock_context );
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -   now = cpu->Watchdog.ticks;
> > > > > > > > > >
> > > > > > > > > > -                   _Timecounter_Nanouptime(now );
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -                    rtems_timespec_from_ticks 
> > > > > > > > > > (ptimer->Timer.expire,expire );
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -   if (now->tv_nsec+now->tv_sec > 
> > > > > > > > > > expire->tv_nsec+expire->tv_sec) {
> > > > > > > > > >
> > > > > > > > > > -                    rtems_timespec_subtract (now, expire, 
> > > > > > > > > > result);
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -   if ( now < ptimer->Timer.expire ) {
> > > > > > > > > >
> > > > > > > > > > -                  remaining = (uint32_t) ( 
> > > > > > > > > > ptimer->Timer.expire - now );
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -                  remaining = (uint32_t) 
> > > > > > > > > > result->tv_nsec+result->tv_sec;
> > > > > > > > > >                     } else {
> > > > > > > > > >                       remaining = 0;
> > > > > > > > > >                     }
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > diff --git a/testsuites/psxtests/psxtimer02/psxtimer.c 
> > > > > > > > > > b/testsuites/psxtests/psxtimer02/psxtimer.c
> > > > > > > > > >
> > > > > > > > > > index 9f79d33c42..029e638c76 100644
> > > > > > > > > >
> > > > > > > > > > --- a/testsuites/psxtests/psxtimer02/psxtimer.c
> > > > > > > > > >
> > > > > > > > > > +++ b/testsuites/psxtests/psxtimer02/psxtimer.c
> > > > > > > > > >
> > > > > > > > > > @@ -59,17 +59,31 @@ void *POSIX_Init (
> > > > > > > > > >
> > > > > > > > > > fatal_posix_service_status_errno( status, EINVAL, "bad 
> > > > > > > > > > clock id" );
> > > > > > > > > >
> > > > > > > > > >       puts( "timer_create - bad timer id pointer - EINVAL" 
> > > > > > > > > > );
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_REALTIME, &event, NULL );
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_MONOTONIC, &event, NULL );
> > > > > > > > > >
> > > > > > > > > >     fatal_posix_service_status_errno( status, EINVAL, "bad 
> > > > > > > > > > timer id" );
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > It seems that you replace the test for REALTIME timers. Are 
> > > > > > > > > they no
> > > > > > > > >
> > > > > > > > > longer supported with your changes? I'm not sure whether that 
> > > > > > > > > is a good
> > > > > > > > >
> > > > > > > > > idea because it would break all existing applications that 
> > > > > > > > > use REALTIME
> > > > > > > > >
> > > > > > > > > timer.
> > > > > > > > >
> > > > > > > > > >       puts( "timer_create - OK" );
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_REALTIME, NULL, &timer );
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_MONOTONIC, NULL, &timer );
> > > > > > > > > >
> > > > > > > > > >     posix_service_failed( status, "timer_create OK" );
> > > > > > > > > >
> > > > > > > > > >     puts( "timer_create - too many - EAGAIN" );
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_REALTIME, NULL, &timer1 );
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_MONOTONIC, NULL, &timer1 );
> > > > > > > > > >
> > > > > > > > > >     fatal_posix_service_status_errno( status, EAGAIN, "too 
> > > > > > > > > > many" );
> > > > > > > > > >
> > > > > > > > > > -   puts( "timer_create (monotonic) - bad timer id pointer 
> > > > > > > > > > - EINVAL" );
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_MONOTONIC, &event, NULL );
> > > > > > > > > >
> > > > > > > > > > -   fatal_posix_service_status_errno( status, EINVAL, "bad 
> > > > > > > > > > timer id" );
> > > > > > > > > >
> > > > > > > > > > -   puts( "timer_create (Monotonic) - OK" );
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_MONOTONIC, NULL, &timer );
> > > > > > > > > >
> > > > > > > > > > -   posix_service_failed( status, "timer_create OK" );
> > > > > > > > > >
> > > > > > > > > > -   puts( "timer_create (monotonic)- too many - EAGAIN" );
> > > > > > > > > >
> > > > > > > > > > -   status = timer_create( CLOCK_MONOTONIC, NULL, &timer1 );
> > > > > > > > > >
> > > > > > > > > > -   fatal_posix_service_status_errno( status, EAGAIN, "too 
> > > > > > > > > > many" );
> > > > > > > > > >
> > > > > > > > > > -   puts( "timer_delete - bad id - EINVAL" );
> > > > > > > > > >
> > > > > > > > > >     status = timer_delete( timer1 + 1 );
> > > > > > > > > >
> > > > > > > > > >     fatal_posix_service_status_errno( status, EINVAL, "bad 
> > > > > > > > > > id" );
> > > > > > > > > >
> > > > > > > > > >     @@ -100,14 +114,14 @@ void *POSIX_Init (
> > > > > > > > > >
> > > > > > > > > >     status = timer_settime( timer, TIMER_ABSTIME, &itimer, 
> > > > > > > > > > NULL );
> > > > > > > > > >
> > > > > > > > > >     fatal_posix_service_status_errno( status, EINVAL, "bad 
> > > > > > > > > > itimer value #2" );
> > > > > > > > > >
> > > > > > > > > > -   clock_gettime( CLOCK_REALTIME, &now );
> > > > > > > > > >
> > > > > > > > > > -   clock_gettime( CLOCK_MONOTONIC, &now );
> > > > > > > > > >
> > > > > > > > > >     itimer.it_value = now;
> > > > > > > > > >
> > > > > > > > > >     itimer.it_value.tv_sec = itimer.it_value.tv_sec - 1;
> > > > > > > > > >
> > > > > > > > > >     puts( "timer_settime - bad itimer value - previous time 
> > > > > > > > > > - EINVAL" );
> > > > > > > > > >
> > > > > > > > > >     status = timer_settime( timer, TIMER_ABSTIME, &itimer, 
> > > > > > > > > > NULL );
> > > > > > > > > >
> > > > > > > > > >     fatal_posix_service_status_errno( status, EINVAL, "bad 
> > > > > > > > > > itimer value #3" );
> > > > > > > > > >
> > > > > > > > > > -   clock_gettime( CLOCK_REALTIME, &now );
> > > > > > > > > >
> > > > > > > > > > -   clock_gettime( CLOCK_MONOTONIC, &now );
> > > > > > > > > >
> > > > > > > > > >     itimer.it_value = now;
> > > > > > > > > >
> > > > > > > > > >     itimer.it_value.tv_sec = itimer.it_value.tv_sec + 1;
> > > > > > > > > >
> > > > > > > > > >     puts( "timer_settime - bad id - EINVAL" );
> > > > > > > > > >
> > > > > > > > > >     @@ -129,4 +143,4 @@ void *POSIX_Init (
> > > > > > > > > >
> > > > > > > > > >     TEST_END();
> > > > > > > > > >
> > > > > > > > > >     rtems_test_exit (0);
> > > > > > > > > >
> > > > > > > > > >     -}
> > > > > > > > > >
> > > > > > > > > >     +}
> > > > > > > > > >
> > > > > > > > > >     \ No newline at end of file
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > > devel mailing list
> > > > > > > > >
> > > > > > > > > devel@rtems.org
> > > > > > > > >
> > > > > > > > > http://lists.rtems.org/mailman/listinfo/devel
> >
> > devel mailing list
> >
> > devel@rtems.org
> >
> > http://lists.rtems.org/mailman/listinfo/devel
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to