X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=docs%2Fusers_guide%2Fffi-chap.xml;h=b33e95abb6e67ee60164ad14d23f6f5832745eeb;hp=7e2c547d27cd049c0911e9fbdadc626a7a26c39c;hb=83d563cb9ede0ba792836e529b1e2929db926355;hpb=433558226790dfa88d215cf12a39df44a3ed01fd diff --git a/docs/users_guide/ffi-chap.xml b/docs/users_guide/ffi-chap.xml index 7e2c547..b33e95a 100644 --- a/docs/users_guide/ffi-chap.xml +++ b/docs/users_guide/ffi-chap.xml @@ -19,7 +19,7 @@ Foreign function interface (FFI) The FFI libraries are documented in the accompanying library documentation; see for example the - Foreign module. + Foreign module. GHC extensions to the FFI Addendum @@ -63,6 +63,21 @@ OK: + + + Primitive imports + + GHC extends the FFI with an additional calling convention + prim, e.g.: + + foreign import prim "foo" foo :: ByteArray# -> (# Int#, Int# #) + + This is used to import functions written in Cmm code that follow an + internal GHC calling convention. This feature is not intended for + use outside of the core libraries that come with GHC. For more + details see the GHC developer wiki. + + @@ -461,6 +476,15 @@ int main(int argc, char *argv[]) threads, but there may be an arbitrary number of foreign calls in progress at any one time, regardless of the +RTS -N value. + + If a call is annotated as interruptible + and the program was multithreaded, the call may be + interrupted in the event that the Haskell thread receives an + exception. The mechanism by which the interrupt occurs + is platform dependent, but is intended to cause blocking + system calls to return immediately with an interrupted error + code. The underlying operating system thread is not to be + destroyed. @@ -483,7 +507,7 @@ int main(int argc, char *argv[]) threads, which are Haskell threads tied to a particular OS thread. For information on bound threads, see the documentation - for the Control.Concurrent + for the Control.Concurrent module. @@ -548,7 +572,6 @@ int main(int argc, char *argv[])