<div> </div>
<div>I am having some problems with POSIX Timers under RTEMS.</div>
<div>I am currently evaluating the RTEMS Operating System to access it's suitability. </div>
<div>I have a module written to the POSIX API I have been able to compile an run the code under Linux and under a number of COTS RTOS's.</div>
<div> </div>
<div>However I am unable to create a Timer using the  timer_create() function when setting event.sigev_notify = SIGEV_THREAD. </div>
<div> </div>
<div>The following document has been unable to help as the timer_create information is limited</div>
<div> </div>
<div><a href="http://www.rtems.com/onlinedocs/doc-current/share/rtems/pdf/posix_users.pdf">http://www.rtems.com/onlinedocs/doc-current/share/rtems/pdf/posix_users.pdf</a></div>
<div> </div>
<div>
<div>I notice from the following document:</div>
<div> </div>
<div><a href="http://www.rtems.com/onlinedocs/doc-current/share/rtems/pdf/posix1003_1.pdf">http://www.rtems.com/onlinedocs/doc-current/share/rtems/pdf/posix1003_1.pdf</a></div>
<div> </div>
<div>that the POSIX timer_create() function is implemented as opposed to a partial implementation</div>
<div> </div>
<div>Below is the section of code that I am attempting to run</div></div>
<div><font size="2">
<p>{<br>   ts_device_configuration *device_configuration  = device_configuration_table;<br>   tGDEF_UINT8                  loop_count                    = 0;<br>   struct sigevent                event                            = {0};<br>
   int                                    status                           = EERROR;                 </p>
<p>   event.sigev_notify = SIGEV_THREAD;<br>   event.sigev_notify_attributes = NULL; <br>   event.sigev_signo = SIGALRM;<br>   event.sigev_notify_function = device_alarm_signal_handler;<br>   event.sigev_value.sival_ptr = (void*)device_configuration;</p>

<p>   for(loop_count = 0; loop_count < DEVICE_TASK_NUMBER_OF_DEVICES_SUPPORTED; loop_count++, device_configuration++)<br>   {<br>      /*lint --e(506) Constant value Boolean */<br>      assert(device_configuration != NULL);</p>

<p>      status = timer_create(CLOCK_REALTIME, &event, &device_configuration->device_posix_timer_id);<br>      if(status == EERROR)<br>      {<br>         (void)printf("Timer Create Error: %s\r\n",strerror(errno));<br>
      }</p>
<p>      /*lint --e(792) void cast of void expression */<br>      assert(status == EOK);<br>   }    <br>}</p>
<p>I receive a Invalid argument error number.</p>
<p>I noticed the following within the <font size="2">timer_create function (timercreate.c) which appear to suggest that RTMES does not support SIGEV_THREAD notification.</font></p></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>if</p></font></font><font size="2"> ( ( evp->sigev_notify != SIGEV_NONE ) &&
<p>( evp->sigev_notify != SIGEV_SIGNAL ) ) {</p>
<p></p></font><font color="#008000" size="2"><font color="#008000" size="2">/* The value of the field sigev_notify is not valid */</font></font><font size="2">
<p>rtems_set_errno_and_return_minus_one( EINVAL );</p>
<p>}</p></font><font size="2"></font></div>
<div>Am I missing something or is SIGEV_THREAD notification from POSIX timers not supported?</div>
<div>Regards</div>
<div> </div>
<div>Sam</div>