[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
about send in rtems_timer_service_routine
- Date: Mon, 21 Apr 2008 13:56:30 -0600
- From: daron.chabot at usask.ca (Daron Chabot)
- Subject: about send in rtems_timer_service_routine
Joel Sherrill wrote:
> Daron Chabot wrote:
>> Not having checked send(2) for blocking behavior, this is just a guess:
>> The function, rtems_timer_service_routine( ), is called from an
>> interrupt context. Code called from an interrupt context *cannot*
>> perform operations that may block waiting for resources (i.e. send(2)).
>> You could use an rtems_timer_server instead: this server runs in a
>> thread context which has no restrictions on the methods invoked from it.
>> (see http://www.rtems.com/onlinedocs/releases/rtemsdocs-4.8.0/share/
> I wouldn't say no restrictions. While in the timer server,
> dispatching is disabled so blocking is definitely not possible.
> So a blocking send() wouldn't block, it would continue executing
> like it didn't block causing havoc.
> There is another oddity. By default, the task runs at priority 0
> which is not possible to set from user applications. So changing
> the priority temporarily is impossible -- it can't be restored.
> See cpukit/rtems/src/timerserver.c.
> Does it seem like the documentation is overstating how safe
> this is?
No... the problems lie solely with this reader ;-)
The documentation is fine (might be made a little more explicit, though).
"...However, since the Timer Server task is non-preemptible, only
directives allowed from an ISR can be called in the timer service routine."
> If so, then we need to either change the documentation
> or change the critical section management here.
However, it does seem as though the "priority=0,
Thread_Disable_dispatch()", makes a Timer-Server nearly as restricted as
>> -- dc
>> On 20-Apr-08, at 2:16 AM, Ray wrote:
>>> Dear powerain ,
>>> Maybe you should check this website first
>>> here is a mandarin version
>>> BTW, it seems to me that rtems_timer_service_routine=void if I read
>>> code correct
>>> Thanks & Best Regards!
>>> Ray, rayx.cn at gmail.com
>>> ----- Receiving the following content -----
>>> From: powerain
>>> Receiver: rtems-users
>>> Time: 2008-04-20, 09:25:20
>>> Subject: about send in rtems_timer_service_routine
>>>> hi everyone,
>>>> i send a package in a rtems_timer_service_routine using send
>>>> function by a socket.
>>>> but is does not work.
>>>> who tell me why.
>>>> thanks very much.
>>>> _____________________ next part ______________________
>>>> rtems-users mailing list
>>>> rtems-users at rtems.com
>>> rtems-users mailing list
>>> rtems-users at rtems.com
>> rtems-users mailing list
>> rtems-users at rtems.com