System.Posix.DynamicLinker.Prim
| Авторские права | (c) Volker Stolz <vs@foldr.org> 2003 |
|---|---|
| Лицензия | BSD-стиль (см. файл libraries/base/LICENSE) |
| Поддержка | vs@foldr.org |
| Стабильность | предварительная |
| Переносимость | непереносимая (требуется POSIX) |
| Безопасный Haskell | Достоверный |
| Язык | Haskell2010 |
Содержание
Описание
DLOpen и друзья. Получено из GModule.chs от М.Вебера и М.Чакраварти, которая является частью c2hs. Я оставил API более или менее таким же, в основном флаги отличаются.
API низкого уровня
c_dlopen :: CString -> CInt -> IO (Ptr ()) Источник
c_dlsym :: Ptr () -> CString -> IO (FunPtr a) Источник
c_dlerror :: IO CString Источник
c_dlclose :: Ptr () -> IO CInt Источник
На некоторых хостах (например, SuSe и Ubuntu Linux) RTLD_NEXT (и RTLD_DEFAULT) не видны без установки макроса _GNU_SOURCE. Поскольку мы не хотим определять этот макрос, вы можете использовать функцию haveRtldNext для проверки, доступен ли флаг Next. В идеале это будет оптимизировано компилятором, чтобы быть таким же эффективным, как #ifdef.
Если вы не проверите флаг и используете его, хотя он не определён, packDL выбросит ошибку.
haveRtldLocal :: Bool Источник
Устарело: по умолчанию равно True
packRTLDFlags :: [RTLDFlags] -> CInt Источник
Флаги для dlopen.
Конструкторы
| RTLD_LAZY | |
| RTLD_NOW | |
| RTLD_GLOBAL | |
| RTLD_LOCAL |
packDL :: DL -> Ptr () Источник
Флаги для dlsym. Обратите внимание, что Next может быть недоступен на вашей конкретной платформе! Используйте haveRtldNext.
Если RTLD_DEFAULT не определён на вашей платформе, packDL Default сводится к 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