/Haskell 8


Copyright (c) The University of Glasgow 2002
License BSD-style (see the file libraries/base/LICENSE)
Maintainer [email protected]
Stability provisional
Portability non-portable (requires POSIX)
Safe Haskell Safe
Language Haskell2010


POSIX.1-2008 support

module System.Posix.Types

module System.Posix.Signals

module System.Posix.Directory

module System.Posix.Files

module System.Posix.Unistd

module System.Posix.IO

module System.Posix.Env

module System.Posix.Process

module System.Posix.Temp

module System.Posix.Terminal

module System.Posix.Time

module System.Posix.User

module System.Posix.Resource

module System.Posix.Semaphore

module System.Posix.SharedMem

data DL Source

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.


DLHandle (Ptr ())
Instances details
Show DL
Instance details

Defined in System.Posix.DynamicLinker.Prim


showsPrec :: Int -> DL -> ShowS Source

show :: DL -> String Source

showList :: [DL] -> ShowS Source

data RTLDFlags Source

Flags for dlopen.

c_dlclose :: Ptr () -> IO CInt Source

c_dlerror :: IO CString Source

c_dlsym :: Ptr () -> CString -> IO (FunPtr a) Source

c_dlopen :: CString -> CInt -> IO (Ptr ()) Source

haveRtldNext :: Bool 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.

haveRtldLocal :: Bool Source

Deprecated: defaults to True

packRTLDFlags :: [RTLDFlags] -> CInt Source

packDL :: DL -> Ptr () Source

dlclose :: DL -> IO () Source

dlerror :: IO String Source

dlsym :: DL -> String -> IO (FunPtr a) Source

dlsym returns the address binding of the symbol described in symbol, as it occurs in the shared object identified by source.

undl :: DL -> Ptr () Source

undl obtains the raw handle. You mustn't do something like withDL mod flags $ liftM undl >>= p -> use p

dlopen :: FilePath -> [RTLDFlags] -> IO DL Source

withDL :: String -> [RTLDFlags] -> (DL -> IO a) -> IO a Source

withDL_ :: String -> [RTLDFlags] -> (DL -> IO a) -> IO () Source

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).