ghc-9.14.0.20251128: The GHC API
Safe HaskellNone
LanguageGHC2021

GHC.Types.ForeignCall

Synopsis

Documentation

newtype ForeignCall #

Constructors

CCall CCallSpec 

Instances

Instances details
NFData ForeignCall # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

rnf :: ForeignCall -> () Source #

Binary ForeignCall # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable ForeignCall # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: ForeignCall -> SDoc #

Eq ForeignCall # 
Instance details

Defined in GHC.Types.ForeignCall

data Safety #

Constructors

PlaySafe

Might invoke Haskell GC, or do a call back, or switch threads, etc. So make sure things are tidy before the call. Additionally, in the threaded RTS we arrange for the external call to be executed by a separate OS thread, i.e., _concurrently_ to the execution of other Haskell threads.

PlayInterruptible

Like PlaySafe, but additionally the worker thread running this foreign call may be unceremoniously killed, so it must be scheduled on an unbound thread.

PlayRisky

None of the above can happen; the call will return without interacting with the runtime system at all. Specifically:

  • No GC
  • No call backs
  • No blocking
  • No precise exceptions

Instances

Instances details
NFData Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

rnf :: Safety -> () Source #

Binary Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: Safety -> SDoc #

Eq Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Data Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Safety -> c Safety Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Safety Source #

toConstr :: Safety -> Constr Source #

dataTypeOf :: Safety -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Safety) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Safety) Source #

gmapT :: (forall b. Data b => b -> b) -> Safety -> Safety Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Safety -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Safety -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Safety -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Safety -> m Safety Source #

Enum Safety # 
Instance details

Defined in GHC.Types.ForeignCall

Show Safety # 
Instance details

Defined in GHC.Types.ForeignCall

type Anno Safety # 
Instance details

Defined in GHC.Hs.Decls

data CExportSpec #

Instances

Instances details
Binary CExportSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CExportSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CExportSpec -> SDoc #

Data CExportSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CExportSpec -> c CExportSpec Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CExportSpec Source #

toConstr :: CExportSpec -> Constr Source #

dataTypeOf :: CExportSpec -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CExportSpec) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CExportSpec) Source #

gmapT :: (forall b. Data b => b -> b) -> CExportSpec -> CExportSpec Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CExportSpec -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CExportSpec -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CExportSpec -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CExportSpec -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CExportSpec -> m CExportSpec Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CExportSpec -> m CExportSpec Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CExportSpec -> m CExportSpec Source #

type Anno CExportSpec # 
Instance details

Defined in GHC.Hs.Decls

data CCallSpec #

Instances

Instances details
NFData CCallSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

rnf :: CCallSpec -> () Source #

Binary CCallSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CCallSpec # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CCallSpec -> SDoc #

Eq CCallSpec # 
Instance details

Defined in GHC.Types.ForeignCall

data CCallTarget #

How to call a particular function in C-land.

Instances

Instances details
NFData CCallTarget # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

rnf :: CCallTarget -> () Source #

Binary CCallTarget # 
Instance details

Defined in GHC.Types.ForeignCall

Eq CCallTarget # 
Instance details

Defined in GHC.Types.ForeignCall

Data CCallTarget # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CCallTarget -> c CCallTarget Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CCallTarget Source #

toConstr :: CCallTarget -> Constr Source #

dataTypeOf :: CCallTarget -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CCallTarget) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CCallTarget) Source #

gmapT :: (forall b. Data b => b -> b) -> CCallTarget -> CCallTarget Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CCallTarget -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CCallTarget -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CCallTarget -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CCallTarget -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CCallTarget -> m CCallTarget Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallTarget -> m CCallTarget Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallTarget -> m CCallTarget Source #

data CCallConv #

Instances

Instances details
NFData CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

rnf :: CCallConv -> () Source #

Binary CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CCallConv -> SDoc #

Eq CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Data CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CCallConv -> c CCallConv Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CCallConv Source #

toConstr :: CCallConv -> Constr Source #

dataTypeOf :: CCallConv -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CCallConv) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CCallConv) Source #

gmapT :: (forall b. Data b => b -> b) -> CCallConv -> CCallConv Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CCallConv -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CCallConv -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CCallConv -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CCallConv -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CCallConv -> m CCallConv Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallConv -> m CCallConv Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CCallConv -> m CCallConv Source #

Enum CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

Show CCallConv # 
Instance details

Defined in GHC.Types.ForeignCall

type Anno CCallConv # 
Instance details

Defined in GHC.Hs.Decls

data Header #

Instances

Instances details
NFData Header # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

rnf :: Header -> () Source #

Binary Header # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable Header # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: Header -> SDoc #

Eq Header # 
Instance details

Defined in GHC.Types.ForeignCall

Data Header # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Header -> c Header Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Header Source #

toConstr :: Header -> Constr Source #

dataTypeOf :: Header -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Header) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Header) Source #

gmapT :: (forall b. Data b => b -> b) -> Header -> Header Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Header -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Header -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Header -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Header -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Header -> m Header Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Header -> m Header Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Header -> m Header Source #

data CType #

A C type, used in CAPI FFI calls

Instances

Instances details
NFData CType # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

rnf :: CType -> () Source #

Binary CType # 
Instance details

Defined in GHC.Types.ForeignCall

Outputable CType # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

ppr :: CType -> SDoc #

Eq CType # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

(==) :: CType -> CType -> Bool Source #

(/=) :: CType -> CType -> Bool Source #

Data CType # 
Instance details

Defined in GHC.Types.ForeignCall

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CType -> c CType Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c CType Source #

toConstr :: CType -> Constr Source #

dataTypeOf :: CType -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c CType) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c CType) Source #

gmapT :: (forall b. Data b => b -> b) -> CType -> CType Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CType -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CType -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CType -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CType -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CType -> m CType Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CType -> m CType Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CType -> m CType Source #

type Anno CType # 
Instance details

Defined in GHC.Hs.Decls