From: Philippe Gerum <rpm@xenomai.org>
To: Philippe Gerum <rpm@xenomai.org>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-help] user mode vs. kernel module
Date: Sun, 12 Mar 2006 18:09:25 +0100 [thread overview]
Message-ID: <441455C5.3020808@domain.hid> (raw)
In-Reply-To: <44140395.7090702@domain.hid>
Philippe Gerum wrote:
> Ignacio García Pérez wrote:
>
>> Hi,
>>
>> So far I've had my application implemented entirely as a kernel module
>> with some user mode helper programs. I've had in mind changing to user
>> mode but never felt compelled enough.
>>
>> Now, having a new requirement to implement, I think it's the moment to
>> give it a try, and I'm porting it. I have a couple of questions:
>>
>> 1- How significative, in real world terms, is the overhead involved in
>> operaing in user mode?. As far as I know all operations are executed
>> via "pods" which involve one or more system calls and context
>> switches. I'm using a Geode board right now but there are plans to
>> move to a more low-end platform (486).
>>
>> 2- ioperm. This is a true headache. I've spent countless hours
>> debugging this and banging my head agaist the wall. I'm not 100% sure
>> of what's going on here, but it looks like the ioperm call must be
>> issued from primary mode if you are doing the I/O from primary mode.
>> Something like this would segfault:
>>
>> ioperm(0x443, 0x01, 1);
>> rt_mutex_lock(...)
>> outb(0x01, 0x443)
>>
>> While this works fine:
>>
>> rt_mutex_lock(...)
>> ioperm(0x443, 0x01, 1);
>> outb(0x01, 0x443);
>>
>> While leads me to think that the rt_mutex_lock puts the task in
>> primary mode and then both ioperm and outb are executed in the same
>> mode so everything works.
>>
>> Is this right?
>
>
> No.
>
> . If so, I find this extremely inconvenient...
>
>>
>
> Fixed in the repository. Use iopl(3) as a work-around, or resync.
>
Btw, the fix concerns the active i/o bitmap ownership in the TSS for kernel
versions >= 2.6.15, but the segfault you encounter is likely an application error:
ioperm() cannot be used for ports above 0x3ff. You must resort to using iopl() to
access port address 0x443.
>> Nacho.
>>
>>
>>
>>
>>
>> _______________________________________________
>> Xenomai-help mailing list
>> Xenomai-help@domain.hid
>> https://mail.gna.org/listinfo/xenomai-help
>>
>
>
--
Philippe.
next prev parent reply other threads:[~2006-03-12 17:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-10 8:52 [Xenomai-help] user mode vs. kernel module Ignacio García Pérez
2006-03-12 11:18 ` Philippe Gerum
2006-03-12 17:09 ` Philippe Gerum [this message]
2006-03-14 9:10 ` Ignacio García Pérez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=441455C5.3020808@domain.hid \
--to=rpm@xenomai.org \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.