Jan Kiszka wrote:
> Johan Borkhuis wrote:
>   
>> Hello,
>>
>> I am trying to use semaphores inside my driver. It is a driver that can 
>> be used as standard Linux driver and RTDM driver.
>>
>> However, when I use rt_sem_p or rtdm_sem_timeddown in my read_nrt 
>>     
>
> Calling those blocking RT services over a non-RT RTDM handler is a
> strong indication that you are doing something fundamentally wrong.
>
> (BTW, for consistency reasons, you shouldn't use native API services in
> RTDM drivers. Technically, this can be OK, but it is at least very unclean.)
>   

This is true, but as the RTDM sem's did not work for me I moved to the 
rt_sem, which also did not work for the same reason.

>> function I get a -1 return value, indicating EPERM. When I look at the 
>> thread state I see a value of 0x00400080, which indicates a standard 
>> Linux thread. The rtdm-context is 0x00000001.
>> The userspace thread has a thread state of 00300380.
>>
>> What am I doing wrong here? How can I get a semaphore or other sync 
>> mechanism to work inside my RTDM driver?
>>     
>
> RT resources are for RT threads in _primary_ mode. Why do you want to
> pend on those resources while the threads are in secondary ("nrt") more?
>   

The main problem is is that part of the driver (especially the interrupt 
handler) is running in primary mode. The application itself is running 
partly in secondary mode. I need some mechanism to have the application 
waiting for a signal from the interrupt handler.
Do I need to implement this using rtdm_nrtsig, or are there other ways 
to send signals from primary to secondary mode?

Kind regards,
    Johan Borkhuis

-- 
Johan Borkhuis                                  Dutch Space BV
email:        [EMAIL PROTECTED]          Newtonweg 1
phone:        071-5245788                       Leiden
fax:          071-5245499                       The Netherlands


_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to