    {-# LINE 1 "src/System/PosixCompat/Extensions.hsc" #-}
    {-# LANGUAGE CPP #-}
    {-# LANGUAGE ForeignFunctionInterface #-}

    -- | This module provides some functions not present in the unix package.
    module System.PosixCompat.Extensions (
        -- * Device IDs.
          CMajor
        , CMinor
        , deviceMajor
        , deviceMinor
        , makeDeviceID
        ) where

    {-# LINE 16 "src/System/PosixCompat/Extensions.hsc" #-}

    {-# LINE 18 "src/System/PosixCompat/Extensions.hsc" #-}

    import Foreign.C.Types
    import System.PosixCompat.Types

    type CMajor = CUInt
    type CMinor = CUInt

    -- | Gets the major number from a 'DeviceID' for a device file.
    --
    -- The portable implementation always returns @0@.
    deviceMajor :: DeviceID -> CMajor

    {-# LINE 33 "src/System/PosixCompat/Extensions.hsc" #-}
    deviceMajor :: DeviceID -> CMajor
    deviceMajor DeviceID
    dev = DeviceID -> CMajor
    unix_major DeviceID
    dev

    foreign import ccall unsafe "unix_major" unix_major :: CDev -> CUInt

    {-# LINE 37 "src/System/PosixCompat/Extensions.hsc" #-}

    -- | Gets the minor number from a 'DeviceID' for a device file.
    --
    -- The portable implementation always returns @0@.
    deviceMinor :: DeviceID -> CMinor

    {-# LINE 45 "src/System/PosixCompat/Extensions.hsc" #-}
    deviceMinor :: DeviceID -> CMajor
    deviceMinor DeviceID
    dev = DeviceID -> CMajor
    unix_minor DeviceID
    dev

    foreign import ccall unsafe "unix_minor" unix_minor :: CDev -> CUInt

    {-# LINE 49 "src/System/PosixCompat/Extensions.hsc" #-}

    -- | Creates a 'DeviceID' for a device file given a major and minor number.
    makeDeviceID :: CMajor -> CMinor -> DeviceID

    {-# LINE 55 "src/System/PosixCompat/Extensions.hsc" #-}
    makeDeviceID :: CMajor -> CMajor -> DeviceID
    makeDeviceID CMajor
    ma CMajor
    mi = CMajor -> CMajor -> DeviceID
    unix_makedev CMajor
    ma CMajor
    mi

    foreign import ccall unsafe "unix_makedev" unix_makedev :: CUInt -> CUInt -> CDev

    {-# LINE 59 "src/System/PosixCompat/Extensions.hsc" #-}