How to use rtems_event_system_send and rtems_event_system_receive?

Sebastian Huber sebastian.huber at embedded-brains.de
Mon Jul 30 06:16:36 UTC 2018


Hello Cliff,

On 27/07/18 17:45, Cliff Geschke wrote:
> Hello Sebastian,
>
> I'm afraid that moving to version 5.x would have even more incompatibilities to
> deal with.

what are the incompatibilities. Maybe we can fix some of the 
incompatibilities before the RTEMS 5.1 release.

>
> I tried the hack and it seems to work okay.  It was a mystery as to why my waits
> on SBWAIT were never satisfied.  I would have appreciated a mention of the new
> system events somewhere.

The system events are mentioned in the release notes:

https://devel.rtems.org/wiki/Release/4.11

However, it is not mentioned that they are used by the network stack. 
You can improve the release notes if you like.

>
> If I were adding system events, I think I would extend the event mask to be 64
> bits and then let the user routines access only the low 32 bits.  But let the
> system routines access them all.

RTEMS is not made of stone. You can still change the system event 
implementation if you think it is worth to do it.

>
> Thanks for the advice.
>
> Cliff
>
> -----Original Message-----
> From: Sebastian Huber [mailto:sebastian.huber at embedded-brains.de]
> Sent: Friday, July 27, 2018 3:36 AM
> To: Cliff Geschke; users at rtems.org
> Subject: Re: How to use rtems_event_system_send and rtems_event_system_receive?
>
> Hello Cliff,
>
> On 26/07/18 22:27, Cliff Geschke wrote:
>> I am migrating an application from RTEMS 4.6 to 4.11
>>
> I would directly migrate to the latest RTEMS master if you do such a
> huge version step.
>
>> I see that the BSD stack now uses the new rtems_event_system_receive()
>> and rtems_event_system_send() rather than the older rtems_event_*().
>>
>> I cannot find any documentation or guidelines for
>> rtems_event_system_*.  Can anyone point me to them?
>>
> These functions should be only used by the system and not application
> code. Therefore they are not documented in the user guide.
>
>> In my application, I want to wait for the OR of system event SBWAIT
>> and some user-defined events.  Is there an efficient way to wait for
>> both a system event or a user event?
>>
> No, they are separated. You can only wait for one or the other.
>
>> Do I need to hack my application to use system events rather than user
>> events?  That seems to defeat the purpose of having system events.
>>
> Yes, currently this hack is the only solution. I think the basic problem
> is that RTEMS offers no general purpose event system such as kqueue() or
> epoll(). In libbsd (the new network stack), we support kqueue().
> Depending on your target, the libbsd might be an option.
>

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




More information about the users mailing list