timer_create problem

Aitor.Viana.Sanchez at esa.int Aitor.Viana.Sanchez at esa.int
Thu Jun 14 12:35:45 UTC 2007


Yes, i already stepped into the code...and also guessed the same, but i 
didn't have time to put the post, sorry about it. Now i do: 
This was the error but only in RTEMS, not in Linux, so i am wondering if 
POSIX saids something about it. I mean, whether POSIX saids specifically 
that this error should be raised if this field is not set. Anyway both 
implementations Linux and RTEMS should behave in the same way...either 
raising the error or not.








Joel Sherrill <joel.sherrill at oarcorp.com> 
Sent by: rtems-users-bounces+aitor.viana.sanchez=esa.int at rtems.org
14/06/2007 14:18

To
Aitor.Viana.Sanchez at esa.int
cc
rtems-users-bounces+aitor.viana.sanchez=esa.int at rtems.org, 
"rtems-users at rtems.com" <rtems-users at rtems.org>
Subject
Re: timer_create problem





Aitor.Viana.Sanchez at esa.int wrote:
>
> I just have changed the value of sigev.sigev_notify to SIGEV_SIGNAL
> (just to verify) and I got the same error.
>
At this point, I would have to recommend stepping into the
function with and seeing which condition is not met.

This is a good example of where a support contract comes
into play.  I could spent more time investigating your problem
then.  My 2nd guess is:

if ( !evp->sigev_signo )
rtems_set_errno_and_return_minus_one( EINVAL );

since I see a memset(0...) and no set of that field.

--joel
>
>
>
> rtems-users-bounces+aitor.viana.sanchez=esa.int at rtems.org wrote on
> 13/06/2007 21:13:24:
>
> > Aitor.Viana.Sanchez at esa.int wrote:
> > >
> > > Hi all,
> > >
> > > i am having a look to the CANFestival v3.0 trying to port it to 
RTEMS.
> > > I get the code already running over RTEMS but I have a problem with
> > > the timer_create POSIX function.
> > >
> > > The main.c source code gets inside the RTEMS configuration which
> > > includes:
> > >
> > > ...
> > > #define CONFIGURE_MAXIMUM_TIMERS            10
> > > ...
> > >
> > > /** RTEMS Configuration */
> > > #define CONFIGURE_MAXIMUM_RTEMS_TIMERS CONFIGURE_MAXIMUM_TIMERS
> > > ...
> > >
> > > /** POSIX Configuration */
> > > #define CONFIGURE_MAXIMUM_POSIX_TIMERS
>  CONFIGURE_MAXIMUM_TIMERS
> > > ...
> > >
> > > When I try to create a timer calling the timer_create routine:
> > >         ....
> > >
> > >         memset (&sigev, 0, sizeof (struct sigevent));
> > >         sigev.sigev_value.sival_int = 0;
> > >         sigev.sigev_notify = SIGEV_THREAD;
> > >         sigev.sigev_notify_attributes = NULL;
> > >         sigev.sigev_notify_function = timer_notify;
> > >
> > >         status = timer_create (CLOCK_REALTIME, &sigev, &timer);
> > >         if (status != 0)
> > >                            MSG_ERR(errno, strerror(errno), status);
> > >
> > >         .....
> > >
> > > i got an error which is quite weird. I got the errno = 22 which is
> > > "invalid argument", that means that the specified clockid
> > > (CLOCK_REALTIME) is not defined. Nevertheless, i tried to call the
> > > function clock_gettime, which also needs the clockid 
(CLOCK_REALTIME)
> > > as a parameter, and i got no problem at all.
> > >
> > > I am using RTEMS 4.6.5.
> > >
> > > Do you have any idea that could help me to solve this problem ?
> > >
> > Looking in cpukit/posix/src/ptimer1.c, I see other reasons for EINVAL:
>
> > if (evp != NULL) {
> > /* The structure has data */
> > if ( ( evp->sigev_notify != SIGEV_NONE ) &&
> > ( evp->sigev_notify != SIGEV_SIGNAL ) ) {
> > /* The value of the field sigev_notify is not valid */
> > rtems_set_errno_and_return_minus_one( EINVAL );
> > }
>
> > if ( !evp->sigev_signo )
> > rtems_set_errno_and_return_minus_one( EINVAL );
> >
> > if ( !is_valid_signo(evp->sigev_signo) )
> > rtems_set_errno_and_return_minus_one( EINVAL );
> > }
>
> >
> > It looks like SIGEV_THREAD is not currently supported.
>
> > If you need it, I would be happy to give you an estimate on
> > implementing it for you.
>
> > Thanks.
>
> > --joel
> > > Cheers
> > >
> > >
> > >
> > > -----------------------------
> > > Aitor Viana Sánchez
> > >
> > > ESA - European Space Technology Centre (ESTEC)
> > > TEC-EDD - Data Handling and Computing Section
> > > ESA/ESTEC P.O. Box 299 / 2200AG Noordwijk ZH, The Netherlands
> > > Tel (+31) 71 565 6727
> > > Email: aitor.viana.sanchez at esa.int
> > >
> ------------------------------------------------------------------------
> > >
> > > _______________________________________________
> > > rtems-users mailing list
> > > rtems-users at rtems.com
> > > http://rtems.rtems.org/mailman/listinfo/rtems-users
> > >
>
> > _______________________________________________
> > rtems-users mailing list
> > rtems-users at rtems.com
> > http://rtems.rtems.org/mailman/listinfo/rtems-users

_______________________________________________
rtems-users mailing list
rtems-users at rtems.com
http://rtems.rtems.org/mailman/listinfo/rtems-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20070614/712fc762/attachment.html>


More information about the users mailing list