Gilles Chanteperdrix wrote:
> Jan Kiszka wrote:
>  > Gilles Chanteperdrix wrote:
>  > > Jan Kiszka wrote:
>  > >  > Gilles Chanteperdrix wrote:
>  > >  > > Philippe Gerum wrote:
>  > >  > >  > Gilles Chanteperdrix wrote:
>  > >  > >  > > Since binding of the semaphore heaps is now made by 
> xeno_skin_bind, there is
>  > >  > >  > > much less modifications in src/skins/posix/init.c. However, I 
> had to do
>  > >  > >  > > something really ugly: since binding the semaphore heaps by 
> xeno_skin_bind
>  > >  > >  > > requires calls to open, ioctl, mmap, close and munmap, I 
> redefined these symbols
>  > >  > >  > > to be the __real_ variants before including bind.h.
>  > >  > >  > 
>  > >  > >  > Is there any upside to do this instead of simply calling the 
> __real_*
>  > >  > >  > placeholders, since we do already provide weak wrappers for 
> those when the
>  > >  > >  > linker's wrapping magic is not invoked?
>  > >  > > 
>  > >  > > The point is that the wrappers and linker magic only take place for
>  > >  > > POSIX skins. Other skins have to call the genuine open, ioctl, mmap,
>  > >  > > close and munmap services.
>  > >  > 
>  > >  > What about controlling the desired prefix for generic functions in
>  > >  > bind.h via some #define that the caller has to/can set before 
> including
>  > >  > the header:
>  > >  > 
>  > >  > #define POSIX_PREFIX  __real_
>  > >  > #include <asm-generic/bits/bind.h>
>  > >  > 
>  > >  > and there we would have:
>  > >  > 
>  > >  > POSIX_PREFIX##open(...);
>  > >  > 
>  > >  > Looks a bit cleaner to me.
>  > > 
>  > > Well, in this case we end up cluttering the code with the POSIX_PREFIX
>  > > macro, even in the non posix case where no prefix is needed.
>  > 
>  > Yes, but there are only few spots. The advantage of this strategy is
>  > that it is explicit in-place (ie. inside bind.h). That avoids potential
>  > collateral damage in the future when other services are added to that
>  > helper which shall not be wrapped.
> 
> Actually, the only important call is open. Since once the file
> descriptor has been created with __real_open, all syscall wrappers will
> automatically fall back to the __real syscall variants.
> 

Then let's just provide __real_open() as a weak symbol in all libs; that's less
error-prone that fiddling with the preprocessor.

-- 
Philippe.

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

Reply via email to