Paul Davis <[EMAIL PROTECTED]> writes: >>> you probably are calling alsa from a shared object -- try >>> >>> dlopen ("libasound.so", RTLD_LAZY | RTLD_GLOBAL); >>> >>> in your module's init function. >> >>The need for RTLD_GLOBAL is somewhat ugly, usually one wants to load >>plugins with RTLD_LOCAL. > > the suggestion is not that *your* plugin should use RTLD_GLOBAL, but > that RTLD_GLOBAL needs to be used when alsa-lib is linked into the > address space.
Ah, I haven't tried to dlopen libasound in a plugin yet. Up to now I've linked the plugin lib with -lasound, in that case you have dlopen the plugin lib with RTLD_GLOBAL. > if you don't use RTLD_GLOBAL, then the symbols in libasound are not > availble for subsequently-loaded dynamically linked code. > >>Is there any reason ALSA can't do something like >> >> if (name == NULL) { >> Dl_info dlinfo; static int dummy; dladdr((void *) &dummy, >> &dlinfo); name = dlinfo.dli_fname; >> } > > perhaps because this implementation of dlopen is platform specific? > the dladdr function and the dlinfo structure are not present in my > version of glibc, at least not as far as i can tell. Define _GNU_SOURCE. Juergen -- Juergen Kreileder, Blackdown Java-Linux Team http://www.blackdown.org/java-linux/java2-status/ ------------------------------------------------------- Sponsored by: AMD - Your access to the experts on Hammer Technology! Open Source & Linux Developers, register now for the AMD Developer Symposium. Code: EX8664 http://www.developwithamd.com/developerlab _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel