From: Jan Kiszka <jan.kiszka@domain.hid>
To: Rodrigo Rosenfeld Rosas <lbocseg@domain.hid>
Cc: xenomai@xenomai.org
Subject: Re: [Xenomai-help] RTDM mmap alternative
Date: Thu, 09 Feb 2006 17:53:14 +0100 [thread overview]
Message-ID: <43EB737A.3010704@domain.hid> (raw)
In-Reply-To: <200602091404.11342.lbocseg@domain.hid>
[-- Attachment #1: Type: text/plain, Size: 3066 bytes --]
Rodrigo Rosenfeld Rosas wrote:
> Em Quinta 09 Fevereiro 2006 06:53, Jan Kiszka escreveu:
>
>> Rodrigo Rosenfeld Rosas wrote:
>>> One more doubt: how would I munmap that memory? do_munmap and passing
>>> current->mm as the first parameter and the physical address as start? I'm
>>> not
>> Yes, but better save current->mm at mmap time and pass *this* value on
>> unmap. I'm thinking about a way to include this in RTDM.
>
> Why should I make a backup of mm? Why would it change? Just for curiosity...
Because current may change, at least with the currently lacking
auto-cleanup of RT objects (including devices and sockets) on process
termination. If we then invoke an enforced closure (e.g. via "echo
<fildes> > /proc/xenomai/rtdm/open_fildes"), mm or current has to be known.
>
>>> sure... Maybe the user can call munmap directly since it doesn't need the
>>> file descriptor. But which address should (s)he pass to start parameter,
>>> the virtual or the physical one?
>> This is also an option. The user would have to pass the virtual address
>> the driver returned.
>
> I'm curious. How do you know in which circunstances should one pass the
> virtual or the physical address? I never know which to use...
The user typically only knows the virtual one, at least when looking at
mmap/munmap. Only if there is some specific agreement between driver and
user (see /dev/mem), the physical address behind it may be known as
well. Still, [do_]munmap takes the virtual one.
>
>> But I think we still need a cleanup on RTDM device closure to avoid
>> access to the mapped physical buffers after that point. I wonder how
>> this is done in standard drivers, will have to look at some of them.
>
> Sorry, I can't help here, since the user munmap don't pass through the
> driver... :( I don't know if it is even done by the drivers. The mmap man
> page states:
>
> "The munmap() system call deletes the mappings for the specified address
> range, and causes further references to addresses within the range to
> generate invalid memory references. The region is also automatically
> unmapped when the process is terminated. On the other hand, closing the file
> descriptor does not unmap the region."
>
> So, the mmap will be undone when the program finishes, I think.
Indeed, this is also what I quickly verified in practice. E.g., if you
do not munmap the region I provided in my test driver, the user-space
tool will still be able to access the physical memory behind it. In that
case, the user kmalloc'ing (or whatever) that region again after a kfree
would access memory that is probably used in a totally different way
meanwhile. Dangerous!
If it is just RAM, you may track the releases (register vma_fops) and
call kfree only when the last user finished. But when it's physical
device memory, you may want to have access earlier. Thus we need
"enforced" munmap on rt_dev_close, maintained by the individual driver.
Therefore, I will introduce also rtdm_munmap() or so.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]
next prev parent reply other threads:[~2006-02-09 16:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-03 19:27 [Xenomai-help] RTDM mmap alternative Rodrigo Rosenfeld Rosas
2006-02-04 9:07 ` Jan Kiszka
2006-02-04 12:44 ` Rodrigo Rosenfeld Rosas
2006-02-04 12:41 ` Jan Kiszka
2006-02-04 14:19 ` Rodrigo Rosenfeld Rosas
2006-02-06 21:00 ` Rodrigo Rosenfeld Rosas
2006-02-07 17:38 ` Jan Kiszka
2006-02-07 19:22 ` Rodrigo Rosenfeld Rosas
2006-02-07 20:03 ` Jan Kiszka
2006-02-08 2:15 ` Rodrigo Rosenfeld Rosas
2006-02-08 12:43 ` Rodrigo Rosenfeld Rosas
2006-02-08 13:14 ` Jan Kiszka
2006-02-08 18:03 ` Rodrigo Rosenfeld Rosas
2006-02-08 18:26 ` Jan Kiszka
2006-02-08 19:35 ` Rodrigo Rosenfeld Rosas
2006-02-08 19:07 ` Rodrigo Rosenfeld Rosas
2006-02-08 21:28 ` Rodrigo Rosenfeld Rosas
2006-02-09 8:53 ` Jan Kiszka
2006-02-09 16:04 ` Rodrigo Rosenfeld Rosas
2006-02-09 16:53 ` Jan Kiszka [this message]
2006-02-09 17:58 ` Rodrigo Rosenfeld Rosas
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=43EB737A.3010704@domain.hid \
--to=jan.kiszka@domain.hid \
--cc=lbocseg@domain.hid \
--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.