Skip to content
  • Philippe Gerum's avatar
    cobalt, copperplate: sanitize auto-shadowing, mlocking, TLS control · edbb158f
    Philippe Gerum authored
    1. libcobalt now controls dynamically whether auto-shadowing of the
    current context is disabled by checking the new XENO_NOSHADOW
    environment variable for existence. Otherwise, the current thread
    becomes a Xenomai thread when the library constructor is executed.
    
    This replaces the former static mechanism based on building with
    --enable-dlopen-skins, aimed at dynamic loading of the POSIX interface
    via dlopen(). Applications can run putenv("XENO_NOSHADOW=<non-empty>")
    before dynamically loading libcobalt.so.
    
    2. global memory locking is systematically performed from the library
    constructor if auto-shadowing is enabled, and remains in effect
    afterwards. Applications which do not want such locking to be in
    effect during their initialization phase should call munlockall()
    explicitly, then lock the process memory anew before creating any
    Xenomai thread.
    
    3. The new --enable-dlopen-libs build switch must be passed to allow
    Xenomai libaries to be dynamically loaded via dlopen(). This replaces
    the former --enable-dlopen-skins switch. Unlike the latter,
    --enable-dlopen-libs does not implicitly disable TLS support.
    
    3. The --with-__thread build switch has been renamed --enable-tls. TLS
    is now available to dynamically loaded Xenomai libraries,
    i.e. --enable-tls --enable-dlopen-libs is valid.
    edbb158f
To learn more about this project, read the wiki.