Spec-Zone.ru › Haskell 7

System.Posix.DynamicLinker.Prim

Авторские права (c) Volker Stolz <vs@foldr.org> 2003
Лицензия BSD-стиль (см. файл libraries/base/LICENSE)
Поддержка vs@foldr.org
Стабильность предварительная
Переносимость непереносимая (требуется POSIX)
Безопасный Haskell Достоверный
Язык Haskell2010

Содержание

  • API низкого уровня

Описание

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 Источник

haveRtldNext :: Bool Источник

На некоторых хостах (например, SuSe и Ubuntu Linux) RTLD_NEXT (и RTLD_DEFAULT) не видны без установки макроса _GNU_SOURCE. Поскольку мы не хотим определять этот макрос, вы можете использовать функцию haveRtldNext для проверки, доступен ли флаг Next. В идеале это будет оптимизировано компилятором, чтобы быть таким же эффективным, как #ifdef.

Если вы не проверите флаг и используете его, хотя он не определён, packDL выбросит ошибку.

haveRtldLocal :: Bool Источник

Устарело: по умолчанию равно True

packRTLDFlags :: [RTLDFlags] -> CInt Источник

data RTLDFlags Источник

Флаги для dlopen.

Конструкторы

RTLD_LAZY
RTLD_NOW
RTLD_GLOBAL
RTLD_LOCAL

Примеры реализации

Read RTLDFlags
Show RTLDFlags

packDL :: DL -> Ptr () Источник

data DL Источник

Флаги для dlsym. Обратите внимание, что Next может быть недоступен на вашей конкретной платформе! Используйте haveRtldNext.

Если RTLD_DEFAULT не определён на вашей платформе, packDL Default сводится к nullPtr.

Конструкторы

Null
Next
Default
DLHandle (Ptr ())

Примеры реализации

Show DL

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API