From: Philippe Gerum <rpm@xenomai.org>
To: Dmitry Adamushko <dmitry.adamushko@domain.hid>
Cc: xenomai@xenomai.org
Subject: [Xenomai-core] Re: [syscall.c] rt_bind_queue/heap()
Date: Tue, 11 Oct 2005 09:45:38 +0200 [thread overview]
Message-ID: <434B6DA2.6080806@domain.hid> (raw)
In-Reply-To: <b647ffbd0510102343w3828a0cs@domain.hid>
Dmitry Adamushko wrote:
> On 10/10/05, Philippe Gerum <rpm@xenomai.org> wrote:
>
>>Dmitry Adamushko wrote:
>>
>>>>As you noticed below, the point is that this feature should be active for
>>>>kernel-based code only; for user-space, we're toast: typical chicken-and-egg
>>>>problem since we need the registry to cross the space boundaries but the
>>>>registry requires a name to index the object first. So yes, we need to check for
>>>>anonymous calls in every service taking a symbolic name in native/syscalls.c,
>>>>and return -EINVAL when applicable.
>>>
>>>
>>>I thought that "libnative" would be a better place since this way we
>>>would avoid the user mode -> kernel mode switch.
>>>
>>>
>>>
>>>>...Or, we might auto-generate some dummy name in native/syscalls.c we would pass
>>>>to the registry when this situation arises, so that anonymous creation and use
>>>
>>>>from user-space would still be possible.
>>>
>>>
>>>Yep, in this case a name would be a string == object's address, thus
>>>it's unique.
>>>
>>>Ok, I'd probably vote for the 2-nd approach.
>>>
>>
>>Definitely better since this keeps the semantics consistent across execution spaces.
>>
>
>
> Then we still have a difference in behaviour of the objectes depending
> on where they are craeted. I mean, the NULL-named user-space objects
> will be displayed under some, well, not-that-informative names (e.g.
> 0xc3264780) while the kernel-based ones will not have an entry in the
> registry (they are really NULL-named).
>
> So,
>
> 1) don't display such names in /proc;
> 2) make a common mechanism for both spaces.
>
> rt_mutex_create() // for other objects as well
> {
> ...
> - xnobject_copy_name(mutex->name,name);
> +xnobject_create_name(mutex->name,name, object);
> ...
> }
>
> xnobject_create_name(dst,src, object)
> {
> if (src)
> xnobject_copy_name(mutex->name,name);
> else
> snprintf(dst, XNOBJECT_NAME_LEN, "%p", object);
> }
>
> // the slightly ugly thing is that we need to be sure that dst is
> always object->name so it's really of XNOBJECT_NAME_LEN size.
>
We should pass the size along with the copy buffer, mainly for readability, and
also as a safety belt.
> Then we don't need "*name = '\n';" in syscall.c:__rt_object_create().
> But this bit should be removed in any case.
>
> What do you think?
>
> Frankly, I like this approach better. All objects get some name if
> they are NULL-named by a user and the code changes are a bit more
> graceful. To show them in /proc or not is still another question.
I'd like we don't generalize an exception case here. The fact that for some
internal reason we need to put a dummy name on anon objects created from
user-space should not make all anon objects from kernel space have a registry
slot too, this would just be overkill (registry slots don't come for free actually).
That said, the remaining point basically is: how do we avoid anon objects with
auto-generated names from appearing under /proc? I'm not a fan of "magic values"
which would distinguish a real name from a dummy one, so I'd rather use the
existing possibility of passing a NULL pnode pointer to rt_registry_enter(),
which would still index an object without actually exporting it to the /proc
interface. The question is: how could we make the *_create() calls invoking
rt_registry_enter() with a NULL pnode when applicable, without changing the
kernel-based interface of the API.
--
Philippe.
next prev parent reply other threads:[~2005-10-11 7:45 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-10 11:50 [Xenomai-core] Re: [syscall.c] rt_bind_queue/heap() Dmitry Adamushko
2005-10-10 11:59 ` Philippe Gerum
2005-10-10 12:02 ` Philippe Gerum
2005-10-10 12:29 ` Dmitry Adamushko
2005-10-10 12:35 ` Philippe Gerum
2005-10-10 13:25 ` Dmitry Adamushko
2005-10-11 6:43 ` Dmitry Adamushko
2005-10-11 7:45 ` Philippe Gerum [this message]
2005-10-11 12:47 ` Dmitry Adamushko
2005-10-11 12:59 ` Philippe Gerum
2005-10-11 13:03 ` Philippe Gerum
2005-10-11 7:24 ` Jim Cromie
[not found] <434A4BD9.1030407@domain.hid>
2005-10-10 11:33 ` Dmitry Adamushko
2005-10-10 11:42 ` Philippe Gerum
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=434B6DA2.6080806@domain.hid \
--to=rpm@xenomai.org \
--cc=dmitry.adamushko@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.