Philippe,

>-----Original Message-----
>From: Philippe Gerum [mailto:r...@xenomai.org]
>Sent: Wednesday, August 18, 2010 12:39 PM
>To: Herrera-Bendezu, Luis
>Cc: xenomai-help@gna.org
>Subject: Re: [Xenomai-help] RTDM task blocks when connecting gdb to realtime 
>task
>
>
>On Wed, 2010-08-18 at 12:03 -0400, Herrera-Bendezu, Luis wrote:
>> Hello:
>>
>> I am using Xenomai 2.4.10 on PPC. An RTDM driver creates an RTDM task
>> using rtdm_task_init() and goes to sleep periodically via function
>> rtdm_task_sleep().
>>
>> When driver is loaded, RTDM task executes as expected. Then a realtime
>> application is started via gdbserver on target board and on a linux host
>> a gdb client is connected to that board. As soon as gdb breakpoints the
>> realtime application the RTDM task never returns from rtdm_task_sleep().
>> The application does not open the RTMD driver so at this point there is
>> no interaction with the driver.
>>
>> The RTDM task is intr_sim and the timer is no longer firing
>> # cat /proc/xenomai/timerstat/master
>> CPU  SCHEDULED   FIRED       TIMEOUT    INTERVAL   HANDLER      NAME
>> 0    29198042    9132085     3724750    -          NULL
>> [host-timer]
>> 0    1340        1340        -          -          xnthread_ti  intr_sim
>>
>> The realtime application is ancvbirt.
>> # cat /proc/xenomai/sched
>> CPU  PID    PRI      PERIOD     TIMEOUT    TIMEBASE  STAT       NAME
>>   0  0       -1      0          0          master    R          ROOT
>>   0  0       90      0          0          master    D          intr_sim
>>   0  1869     0      0          0          master    XT         ancvbirt
>>
>> Any ideas on the cause of the problem and fix?
>
>This is a side-effect of hitting a breakpoint in your application
>introduced by Xenomai: all Xenomai timers are frozen system-wide, until
>the application is continued. This includes the per-thread timer which
>is used to have your RTDM task wake up after a delay.
After continuing the application, the RTDM task does not resume execution.
I had to reload driver to have it working again.
>
>There is a way to prevent this behavior, which was defined for internal
>purposes only so far. Since Jan is not watching, here is a patch against
>2.4.10 which happily butchers his nifty interface, that should prevent
>the per-thread timers of _all_ RTDM tasks from being blocked in that
>case, which may be enough to help you though:
>
>diff --git a/ksrc/skins/rtdm/drvlib.c b/ksrc/skins/rtdm/drvlib.c
>index 65c630f..0295690 100644
>--- a/ksrc/skins/rtdm/drvlib.c
>+++ b/ksrc/skins/rtdm/drvlib.c
>@@ -144,6 +144,7 @@ int rtdm_task_init(rtdm_task_t *task, const char *name,
>       res = xnpod_init_thread(task, rtdm_tbase, name, priority, 0, 0, NULL);
>       if (res)
>               goto error_out;
>+      task->rtimer.status |= XNTIMER_NOBLCK;
>
>       if (period > 0) {
>               res = xnpod_set_thread_periodic(task, XN_INFINITE,
>@@ -151,6 +152,7 @@ int rtdm_task_init(rtdm_task_t *task, const char *name,
>                                               (rtdm_tbase,  period));
>               if (res)
>                       goto cleanup_out;
>+              task->ptimer.status |= XNTIMER_NOBLCK;
>       }
>
>       res = xnpod_start_thread(task, 0, 0, XNPOD_ALL_CPUS, task_proc, arg);
>
Yes, this patch avoids stopping the timers. I see the value on stopping the
timers on the RTDM driver when application hits a breakpoint but for some
reason timer does not recover. I am using Linux 2.6.30.
>NOTE: please don't take this patch as an official way to handle this
>issue, it is not. It's an ugly kludge, until we find a better way to
>selectively enable this behavior for built-in timers (2.5.x has a way to
>do this for user-defined timers already, it is called
>xntimer_init_noblock()).
>
>>
>> Thanks,
>> Luis G. Herrera-Bendezu
>>
>>
>> _______________________________________________
>> Xenomai-help mailing list
>> Xenomai-help@gna.org
>> https://mail.gna.org/listinfo/xenomai-help
>
>--
>Philippe.
>
Thanks,
Luis

_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to