ghc-internal-9.1001.0: Basic libraries
Copyright(c) The FFI task force 2001
LicenseBSD-style (see the file libraries/base/LICENSE)
Maintainerffi@haskell.org
Stabilityprovisional
Portabilityportable
Safe HaskellTrustworthy
LanguageHaskell2010

GHC.Internal.Foreign.C.Error

Description

C-specific Marshalling support: Handling of C "errno" error codes.

Synopsis

Haskell representations of errno values

newtype Errno Source #

Haskell representation for errno values. The implementation is deliberately exposed, to allow users to add their own definitions of Errno values.

Constructors

Errno CInt 

Instances

Instances details
Eq Errno Source #

@since base-2.01

Instance details

Defined in GHC.Internal.Foreign.C.Error

Methods

(==) :: Errno -> Errno -> Bool Source #

(/=) :: Errno -> Errno -> Bool Source #

Common errno symbols

Different operating systems and/or C libraries often support different values of errno. This module defines the common values, but due to the open definition of Errno users may add definitions which are not predefined.

eNOTSUP :: Errno Source #

@since base-4.7.0.0

Errno functions

isValidErrno :: Errno -> Bool Source #

Yield True if the given Errno value is valid on the system. This implies that the Eq instance of Errno is also system dependent as it is only defined for valid values of Errno.

getErrno :: IO Errno Source #

Get the current value of errno in the current thread.

On GHC, the runtime will ensure that any Haskell thread will only see "its own" errno, by saving and restoring the value when Haskell threads are scheduled across OS threads.

resetErrno :: IO () Source #

Reset the current thread's errno value to eOK.

errnoToIOError Source #

Arguments

:: String

the location where the error occurred

-> Errno

the error number

-> Maybe Handle

optional handle associated with the error

-> Maybe String

optional filename associated with the error

-> IOError 

Construct an IOError based on the given Errno value. The optional information can be used to improve the accuracy of error messages.

throwErrno Source #

Arguments

:: String

textual description of the error location

-> IO a 

Throw an IOError corresponding to the current value of getErrno.

Guards for IO operations that may fail

throwErrnoIf Source #

Arguments

:: (a -> Bool)

predicate to apply to the result value of the IO operation

-> String

textual description of the location

-> IO a

the IO operation to be executed

-> IO a 

Throw an IOError corresponding to the current value of getErrno if the result value of the IO action meets the given predicate.

throwErrnoIf_ :: (a -> Bool) -> String -> IO a -> IO () Source #

as throwErrnoIf, but discards the result of the IO action after error handling.

throwErrnoIfRetry :: (a -> Bool) -> String -> IO a -> IO a Source #

as throwErrnoIf, but retry the IO action when it yields the error code eINTR - this amounts to the standard retry loop for interrupted POSIX system calls.

throwErrnoIfRetry_ :: (a -> Bool) -> String -> IO a -> IO () Source #

as throwErrnoIfRetry, but discards the result.

throwErrnoIfMinus1 :: (Eq a, Num a) => String -> IO a -> IO a Source #

Throw an IOError corresponding to the current value of getErrno if the IO action returns a result of -1.

throwErrnoIfMinus1_ :: (Eq a, Num a) => String -> IO a -> IO () Source #

as throwErrnoIfMinus1, but discards the result.

throwErrnoIfMinus1Retry :: (Eq a, Num a) => String -> IO a -> IO a Source #

Throw an IOError corresponding to the current value of getErrno if the IO action returns a result of -1, but retries in case of an interrupted operation.

throwErrnoIfMinus1Retry_ :: (Eq a, Num a) => String -> IO a -> IO () Source #

as throwErrnoIfMinus1, but discards the result.

throwErrnoIfNull :: String -> IO (Ptr a) -> IO (Ptr a) Source #

Throw an IOError corresponding to the current value of getErrno if the IO action returns nullPtr.

throwErrnoIfNullRetry :: String -> IO (Ptr a) -> IO (Ptr a) Source #

Throw an IOError corresponding to the current value of getErrno if the IO action returns nullPtr, but retry in case of an interrupted operation.

throwErrnoIfRetryMayBlock Source #

Arguments

:: (a -> Bool)

predicate to apply to the result value of the IO operation

-> String

textual description of the location

-> IO a

the IO operation to be executed

-> IO b

action to execute before retrying if an immediate retry would block

-> IO a 

as throwErrnoIfRetry, but additionally if the operation yields the error code eAGAIN or eWOULDBLOCK, an alternative action is executed before retrying.

throwErrnoIfRetryMayBlock_ :: (a -> Bool) -> String -> IO a -> IO b -> IO () Source #

as throwErrnoIfRetryMayBlock, but discards the result.

throwErrnoIfMinus1RetryMayBlock :: (Eq a, Num a) => String -> IO a -> IO b -> IO a Source #

as throwErrnoIfMinus1Retry, but checks for operations that would block.

throwErrnoIfMinus1RetryMayBlock_ :: (Eq a, Num a) => String -> IO a -> IO b -> IO () Source #

as throwErrnoIfMinus1RetryMayBlock, but discards the result.

throwErrnoIfNullRetryMayBlock :: String -> IO (Ptr a) -> IO b -> IO (Ptr a) Source #

as throwErrnoIfNullRetry, but checks for operations that would block.

throwErrnoPath :: String -> FilePath -> IO a Source #

as throwErrno, but exceptions include the given path when appropriate.

throwErrnoPathIf :: (a -> Bool) -> String -> FilePath -> IO a -> IO a Source #

as throwErrnoIf, but exceptions include the given path when appropriate.

throwErrnoPathIf_ :: (a -> Bool) -> String -> FilePath -> IO a -> IO () Source #

as throwErrnoIf_, but exceptions include the given path when appropriate.

throwErrnoPathIfNull :: String -> FilePath -> IO (Ptr a) -> IO (Ptr a) Source #

as throwErrnoIfNull, but exceptions include the given path when appropriate.

throwErrnoPathIfMinus1 :: (Eq a, Num a) => String -> FilePath -> IO a -> IO a Source #

as throwErrnoIfMinus1, but exceptions include the given path when appropriate.

throwErrnoPathIfMinus1_ :: (Eq a, Num a) => String -> FilePath -> IO a -> IO () Source #

as throwErrnoIfMinus1_, but exceptions include the given path when appropriate.