{-# LINE 1 "CreateFlags.hsc" #-}
{-# language CPP #-}

module CreateFlags where

import CreateFlagsType (CreateFlags (..))
import HugeTLBSizeType (HugeTLBSize (..))

import Data.Maybe (Maybe (..))



-- | Set the close-on-exec (@FD_CLOEXEC@) flag on the new file descriptor
--
-- By default, the new file descriptor is set to remain open across an @execve@ ("execute program") or @fork@ system call and is available to the child process. Use of this flag avoids leaking the file descriptor to child processes.
--
closeOnExec :: CreateFlags
closeOnExec = CreateFlags (1)
{-# LINE 18 "CreateFlags.hsc" #-}

-- | Allow sealing operations on this file
--
-- The initial set of seals is empty. If this flag is not set, the initial set of seals will be @F_SEAL_SEAL@, meaning that no other seals can be set on the file.
--
allowSealing :: CreateFlags
allowSealing = CreateFlags (2)
{-# LINE 25 "CreateFlags.hsc" #-}

-- | The anonymous file will be created in the hugetlbfs filesystem using huge pages
hugeTLB :: CreateFlags
hugeTLB = CreateFlags (4)
{-# LINE 29 "CreateFlags.hsc" #-}

-- | Used in conjunction with 'hugeTLB' to select alternative hugeTLB page sizes
hugeTLBSize :: HugeTLBSize -> Maybe CreateFlags

hugeTLBSize HugeTLB_64KB =

{-# LINE 35 "CreateFlags.hsc" #-}
    Just (CreateFlags (1073741824))
{-# LINE 36 "CreateFlags.hsc" #-}

{-# LINE 39 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_512KB =

{-# LINE 42 "CreateFlags.hsc" #-}
    Just (CreateFlags (1275068416))
{-# LINE 43 "CreateFlags.hsc" #-}

{-# LINE 46 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_1MB =

{-# LINE 49 "CreateFlags.hsc" #-}
    Just (CreateFlags (1342177280))
{-# LINE 50 "CreateFlags.hsc" #-}

{-# LINE 53 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_2MB =

{-# LINE 56 "CreateFlags.hsc" #-}
    Just (CreateFlags (1409286144))
{-# LINE 57 "CreateFlags.hsc" #-}

{-# LINE 60 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_8MB =

{-# LINE 63 "CreateFlags.hsc" #-}
    Just (CreateFlags (1543503872))
{-# LINE 64 "CreateFlags.hsc" #-}

{-# LINE 67 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_16MB =

{-# LINE 70 "CreateFlags.hsc" #-}
    Just (CreateFlags (1610612736))
{-# LINE 71 "CreateFlags.hsc" #-}

{-# LINE 74 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_32MB =

{-# LINE 79 "CreateFlags.hsc" #-}
    Nothing

{-# LINE 81 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_256MB =

{-# LINE 84 "CreateFlags.hsc" #-}
    Just (CreateFlags (1879048192))
{-# LINE 85 "CreateFlags.hsc" #-}

{-# LINE 88 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_512MB =

{-# LINE 93 "CreateFlags.hsc" #-}
    Nothing

{-# LINE 95 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_1GB =

{-# LINE 98 "CreateFlags.hsc" #-}
    Just (CreateFlags (2013265920))
{-# LINE 99 "CreateFlags.hsc" #-}

{-# LINE 102 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_2GB =

{-# LINE 105 "CreateFlags.hsc" #-}
    Just (CreateFlags (2080374784))
{-# LINE 106 "CreateFlags.hsc" #-}

{-# LINE 109 "CreateFlags.hsc" #-}

hugeTLBSize HugeTLB_16GB =

{-# LINE 112 "CreateFlags.hsc" #-}
    Just (CreateFlags (-2013265920))
{-# LINE 113 "CreateFlags.hsc" #-}

{-# LINE 116 "CreateFlags.hsc" #-}