Copyright | (c) Volker Stolz <[email protected]> 2003 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | [email protected] |
Stability | provisional |
Portability | non-portable (requires POSIX) |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
DLOpen and friend Derived from GModule.chs by M.Weber & M.Chakravarty which is part of c2hs I left the API more or less the same, mostly the flags are different.
c_dlopen :: CString -> CInt -> IO (Ptr ()) Source
c_dlsym :: Ptr () -> CString -> IO (FunPtr a) Source
c_dlerror :: IO CString Source
c_dlclose :: Ptr () -> IO CInt Source
On some hosts (e.g. SuSe and Ubuntu Linux) RTLD_NEXT
(and RTLD_DEFAULT
) are not visible without setting the macro _GNU_SOURCE
. Since we don't want to define this macro, you can use the function haveRtldNext
to check wether the flag Next
is available. Ideally, this will be optimized by the compiler so that it should be as efficient as an #ifdef.
If you fail to test the flag and use it although it is undefined, packDL
will throw an error.
Deprecated: defaults to True
packRTLDFlags :: [RTLDFlags] -> CInt Source
Flags for dlopen
.
RTLD_LAZY | |
RTLD_NOW | |
RTLD_GLOBAL | |
RTLD_LOCAL |
Flags for dlsym
. Notice that Next
might not be available on your particular platform! Use haveRtldNext
.
If RTLD_DEFAULT
is not defined on your platform, packDL
Default
reduces to nullPtr
.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/unix-2.7.1.0/System-Posix-DynamicLinker-Prim.html