On Thu, 2011-08-11 at 12:03 +0200, Philippe Gerum wrote:
> On Thu, 2011-08-11 at 11:37 +0200, Gilles Chanteperdrix wrote:
> > On 08/11/2011 11:10 AM, Philippe Gerum wrote:
> > > On Thu, 2011-08-11 at 10:33 +0200, Petr Cervenka wrote:
> > >> Hello.
> > >>
> > >> I created a simple examples which describe my problem.
> > >> It is some kind of server and client.
> > >> At first run a qserver and then qclient.
> > >> After that close the qserver and try to run it again.
> > >> It disallows (in my configuratio) to create the queue because it already 
> > >> exists and also the binding to it fails with error -EACCES.
> > >> This behavior continues till the qclient is closed. It's perhaps caused 
> > >> by the rt_queue_delete() at the end of qserver.
> > > 
> > > That is the intended behavior. When deleted, the queue is maintained
> > > internally until the last client bound to it exits, which also disallows
> > > creating another queue with the same name until the latter event
> > > happens.
> > > 
> > > However, deleting the queue also makes it unreachable for further
> > > bindings, until it is completely dismantled after the last client exits.
> > > At which point you may re-create a queue with the same name and bind to
> > > it. Logically speaking, that deleted queue does not exist anymore,
> > > except for the currently bound client(s), for consistency reasons.
> > 
> > Maybe we could return -EIDRM instead of -EEXIST when in this case?
> > 
> 
> Not sure. EIDRM is conventionally about telling the caller that some
> previously valid identifier has been revoked while the operation was
> ongoing, which does not match the case of trying to establish a fresh
> binding to a zombie object.

Or trying to create a new object, the same way.

>  In the first case, we did have a valid
> object on entry, in the second one, that object has never been valid
> from the caller's standpoint.
> 
> I'm unsure that returning EIDRM would be trivial to implement anyway. We
> would have to make the registry layer aware of the "magic" tags used by
> the upstream interfaces, so that it could check atomically EIDRM vs
> EEXIST when failing to hash the object key. Granted, we could move this
> magic into the xnobject struct directly though and get rid of it
> elsewhere. Some work ahead in such a case.
> 

-- 
Philippe.



_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to