Thank you, Philippe.  This issue is resolved.  One follow-on question: the
CSW field of /proc/Xenomai/stat indicates the number of switches between
user-mode and kernel-mode, correct?


Regards,
Peter





-----Original Message-----
From: Philippe Gerum [mailto:[email protected]] 
Sent: Tuesday, January 17, 2012 12:37 AM
To: Peter Hua
Cc: [email protected]
Subject: Re: help rejected

On 01/17/2012 02:06 AM, Peter Hua wrote:
> Hi Philippe,
>
> I retract my previous statement.  The call to rtdm_in_rt_context() 
> returned '1'.  So the task was in RT context, but I don't understand 
> how?  Is there a way to force it to be non-rt?

There is no way you can do that from kernel space; mode switches are
implemented during the syscall transition between user and kernel. 
Memory mapping operation is usually part of the init chores of a driver, in
which case this would be a non-issue since RTDM runs the .open call in
non-rt kernel context (.open_rt is deprecated and even removed in latest
versions).

If your code tries to issue this mapping call from .ioctl_rt, then you
should move this particular ioctl command to the .ioctl_nrt handler instead.
Xenomai first tries the .ioctl_rt handler if present, then downgrades to
.ioctl_nrt if the former returned -ENOSYS. So, if both .ioctl_rt and
.ioctl_nrt have to coexist in your driver, then you should follow this
pattern:

static int foo_ioctl_rt(struct rtdm_dev_context *context,
                     rtdm_user_info_t *user_info,
                     unsigned int cmd, void *arg)
{
        switch (cmd) {

        case IOC_WHATEVER_MMAP:
                /* Tell Xenomai to offload to _nrt handler. */
                return -ENOSYS;
        ...
        }
}

static int foo_ioctl_rt(struct rtdm_dev_context *context,
                     rtdm_user_info_t *user_info,
                     unsigned int cmd, void *arg)
{
        switch (cmd) {

        case IOC_WHATEVER_MMAP:
                ret =rtdm_mmap_to_user(...);
        ...
        }
}

PS: I see you are now subscribed to Xenomai-help, so you should be allowed
to post there.

>
>
> Regards,
> Peter
>
>
>
>
>
> -----Original Message-----
> From: Philippe Gerum [mailto:[email protected]]
> Sent: Monday, January 16, 2012 1:53 PM
> To: Peter Hua
> Cc: [email protected]
> Subject: Re: help rejected
>
> On 01/16/2012 05:40 PM, Peter Hua wrote:
>>
>> Hello,
>>
>> My request for help was rejected.  Also, I did not get a confirmation 
>> for the subscription request.  Please help.
>
> I'll check your subscription asap, but for the time being, the answer 
> to your question is that you may not call that routine from a 
> real-time context. This is callable only from kernel module init, and 
> any other plain linux (kernel) context, not from Xenomai -rt context in
kernel space.
>
>>
>> Regards,
>> Peter
>>
>>
>>
>>
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of 
>> [email protected]
>> Sent: Friday, January 13, 2012 12:17 PM
>> To: [email protected]
>> Subject: rtdm_mmap_to_user call failed
>>
>> You are not allowed to post to this mailing list, and your message 
>> has been automatically rejected.  If you think that your messages are 
>> being rejected in error, contact the mailing list owner at
> [email protected].
>>
>
>
> --
> Philippe.
>
>
>


--
Philippe.


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

Reply via email to