/* * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. This file is offered as-is, * without any warranty. */ #ifndef @LOADER_H_GUARD@ #define @LOADER_H_GUARD@ @INCLUDES@ #if defined(@ENABLE_DLOPEN@) && @ENABLE_DLOPEN@ #define FUNC(ret, name, args, cargs) \ ret @FUNCTION_PREFIX@_##name args; #define VOID_FUNC FUNC #include "@FUNCTIONS_H@" #undef VOID_FUNC #undef FUNC #define @WRAPPER@(name) @FUNCTION_PREFIX@_##name #else #define @WRAPPER@(name) name #endif /* @ENABLE_DLOPEN@ */ /* Ensure SONAME to be loaded with dlopen FLAGS, and all the necessary * symbols are resolved. * * Returns 0 on success; negative error code otherwise. * * Note that this function is NOT thread-safe; when calling it from * multi-threaded programs, protect it with a locking mechanism. */ int @LIBRARY_PREFIX@_ensure_library (const char *soname, int flags); /* Unload library and reset symbols. * * Note that this function is NOT thread-safe; when calling it from * multi-threaded programs, protect it with a locking mechanism. */ void @LIBRARY_PREFIX@_unload_library (void); /* Return 1 if the library is loaded and usable. * * Note that this function is NOT thread-safe; when calling it from * multi-threaded programs, protect it with a locking mechanism. */ unsigned @LIBRARY_PREFIX@_is_usable (void); #endif /* @LOADER_H_GUARD@ */