{-# language BlockArguments, CApiFFI #-}
module Create where
import CreateFlagsType (CreateFlags(..))
import CreateOptionsType (CreateOptions(..))
import CreateOptionsFlags (createOptionsFlags)
import NameType (Name (..))
import Foreign.C as C (CInt (..), CUInt (..))
import Foreign.C.String (CString, withCString)
import System.IO (IO)
import System.Posix.Types (Fd (..))
create :: CreateOptions -> IO Fd
create :: CreateOptions -> IO Fd
create CreateOptions
x =
String -> (CString -> IO Fd) -> IO Fd
forall a. String -> (CString -> IO a) -> IO a
withCString (Name -> String
nameString (CreateOptions -> Name
name CreateOptions
x)) \CString
name' ->
CString -> CreateFlags -> IO Fd
c_create CString
name' (CreateOptions -> CreateFlags
createOptionsFlags CreateOptions
x)
foreign import ccall unsafe "memfd_create"
c_create :: CString -> CreateFlags -> IO Fd