{-# LINE 1 "System/PosixCompat/Extensions.hsc" #-}
-- | This module provides some functions not present in the unix package.
{-# LINE 2 "System/PosixCompat/Extensions.hsc" #-}
module System.PosixCompat.Extensions (
         -- * Device IDs.
         CMajor, CMinor,
         deviceMajor, deviceMinor, makeDeviceID
   ) where



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

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

{-# LINE 12 "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 25 "System/PosixCompat/Extensions.hsc" #-}
deviceMajor dev = unix_major dev

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

{-# LINE 31 "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 37 "System/PosixCompat/Extensions.hsc" #-}
deviceMinor dev = unix_minor dev

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

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

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

{-# LINE 47 "System/PosixCompat/Extensions.hsc" #-}
makeDeviceID ma mi = unix_makedev ma mi

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

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