module Bindings.Posix.Signal where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
import Bindings.Posix.Sys.Types
data C'sigset_t = C'sigset_t{
} deriving (Eq,Show)
instance Storable C'sigset_t where
sizeOf _ = 128
alignment _ = 4
peek p = do
return $ C'sigset_t
poke p (C'sigset_t) = do
return ()
data C'sigevent = C'sigevent{
c'sigevent'sigev_notify :: CInt,
c'sigevent'sigev_signo :: CInt,
c'sigevent'sigev_value :: C'sigval,
c'sigevent'_sigev_un'_sigev_thread'_function :: FunPtr (C'sigval -> IO ()),
c'sigevent'_sigev_un'_sigev_thread'_attribute :: Ptr C'pthread_attr_t
} deriving (Eq,Show)
p'sigevent'sigev_notify p = plusPtr p 8
p'sigevent'sigev_notify :: Ptr (C'sigevent) -> Ptr (CInt)
p'sigevent'sigev_signo p = plusPtr p 4
p'sigevent'sigev_signo :: Ptr (C'sigevent) -> Ptr (CInt)
p'sigevent'sigev_value p = plusPtr p 0
p'sigevent'sigev_value :: Ptr (C'sigevent) -> Ptr (C'sigval)
p'sigevent'_sigev_un'_sigev_thread'_function p = plusPtr p 12
p'sigevent'_sigev_un'_sigev_thread'_function :: Ptr (C'sigevent) -> Ptr (FunPtr (C'sigval -> IO ()))
p'sigevent'_sigev_un'_sigev_thread'_attribute p = plusPtr p 16
p'sigevent'_sigev_un'_sigev_thread'_attribute :: Ptr (C'sigevent) -> Ptr (Ptr C'pthread_attr_t)
instance Storable C'sigevent where
sizeOf _ = 64
alignment _ = 4
peek p = do
v0 <- peekByteOff p 8
v1 <- peekByteOff p 4
v2 <- peekByteOff p 0
v3 <- peekByteOff p 12
v4 <- peekByteOff p 16
return $ C'sigevent v0 v1 v2 v3 v4
poke p (C'sigevent v0 v1 v2 v3 v4) = do
pokeByteOff p 8 v0
pokeByteOff p 4 v1
pokeByteOff p 0 v2
pokeByteOff p 12 v3
pokeByteOff p 16 v4
return ()
c'SIGEV_NONE = 1
c'SIGEV_NONE :: (Num a) => a
c'SIGEV_SIGNAL = 0
c'SIGEV_SIGNAL :: (Num a) => a
c'SIGEV_THREAD = 2
c'SIGEV_THREAD :: (Num a) => a
data C'sigval = C'sigval{
c'sigval'sival_int :: CInt,
c'sigval'sival_ptr :: Ptr ()
} deriving (Eq,Show)
p'sigval'sival_int p = plusPtr p 0
p'sigval'sival_int :: Ptr (C'sigval) -> Ptr (CInt)
p'sigval'sival_ptr p = plusPtr p 0
p'sigval'sival_ptr :: Ptr (C'sigval) -> Ptr (Ptr ())
instance Storable C'sigval where
sizeOf _ = 4
alignment _ = 4
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 0
return $ C'sigval v0 v1
poke p (C'sigval v0 v1) = do
pokeByteOff p 0 v0
pokeByteOff p 0 v1
return ()
c'SIGRTMIN = 34
c'SIGRTMIN :: (Num a) => a
c'SIGRTMAX = 64
c'SIGRTMAX :: (Num a) => a
c'SIGABRT = 6
c'SIGABRT :: (Num a) => a
c'SIGALRM = 14
c'SIGALRM :: (Num a) => a
c'SIGBUS = 7
c'SIGBUS :: (Num a) => a
c'SIGCHLD = 17
c'SIGCHLD :: (Num a) => a
c'SIGCONT = 18
c'SIGCONT :: (Num a) => a
c'SIGFPE = 8
c'SIGFPE :: (Num a) => a
c'SIGHUP = 1
c'SIGHUP :: (Num a) => a
c'SIGILL = 4
c'SIGILL :: (Num a) => a
c'SIGINT = 2
c'SIGINT :: (Num a) => a
c'SIGKILL = 9
c'SIGKILL :: (Num a) => a
c'SIGPIPE = 13
c'SIGPIPE :: (Num a) => a
c'SIGQUIT = 3
c'SIGQUIT :: (Num a) => a
c'SIGSEGV = 11
c'SIGSEGV :: (Num a) => a
c'SIGSTOP = 19
c'SIGSTOP :: (Num a) => a
c'SIGTERM = 15
c'SIGTERM :: (Num a) => a
c'SIGTSTP = 20
c'SIGTSTP :: (Num a) => a
c'SIGTTIN = 21
c'SIGTTIN :: (Num a) => a
c'SIGTTOU = 22
c'SIGTTOU :: (Num a) => a
c'SIGUSR1 = 10
c'SIGUSR1 :: (Num a) => a
c'SIGUSR2 = 12
c'SIGUSR2 :: (Num a) => a
c'SIGURG = 23
c'SIGURG :: (Num a) => a
data C'sigaction = C'sigaction{
c'sigaction'__sigaction_handler'sa_handler :: FunPtr (CInt -> IO ()),
c'sigaction'sa_mask :: C'sigset_t,
c'sigaction'sa_flags :: CInt,
c'sigaction'__sigaction_handler'sa_sigaction :: FunPtr (CInt -> Ptr C'siginfo_t -> Ptr () -> IO ())
} deriving (Eq,Show)
p'sigaction'__sigaction_handler'sa_handler p = plusPtr p 0
p'sigaction'__sigaction_handler'sa_handler :: Ptr (C'sigaction) -> Ptr (FunPtr (CInt -> IO ()))
p'sigaction'sa_mask p = plusPtr p 4
p'sigaction'sa_mask :: Ptr (C'sigaction) -> Ptr (C'sigset_t)
p'sigaction'sa_flags p = plusPtr p 132
p'sigaction'sa_flags :: Ptr (C'sigaction) -> Ptr (CInt)
p'sigaction'__sigaction_handler'sa_sigaction p = plusPtr p 0
p'sigaction'__sigaction_handler'sa_sigaction :: Ptr (C'sigaction) -> Ptr (FunPtr (CInt -> Ptr C'siginfo_t -> Ptr () -> IO ()))
instance Storable C'sigaction where
sizeOf _ = 140
alignment _ = 4
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 4
v2 <- peekByteOff p 132
v3 <- peekByteOff p 0
return $ C'sigaction v0 v1 v2 v3
poke p (C'sigaction v0 v1 v2 v3) = do
pokeByteOff p 0 v0
pokeByteOff p 4 v1
pokeByteOff p 132 v2
pokeByteOff p 0 v3
return ()
c'SIG_BLOCK = 0
c'SIG_BLOCK :: (Num a) => a
c'SIG_UNBLOCK = 1
c'SIG_UNBLOCK :: (Num a) => a
c'SIG_SETMASK = 2
c'SIG_SETMASK :: (Num a) => a
c'SA_NOCLDSTOP = 1
c'SA_NOCLDSTOP :: (Num a) => a
c'SA_RESETHAND = 2147483648
c'SA_RESETHAND :: (Num a) => a
c'SA_RESTART = 268435456
c'SA_RESTART :: (Num a) => a
c'SA_SIGINFO = 4
c'SA_SIGINFO :: (Num a) => a
c'SA_NOCLDWAIT = 2
c'SA_NOCLDWAIT :: (Num a) => a
c'SA_NODEFER = 1073741824
c'SA_NODEFER :: (Num a) => a
data C'mcontext_t = C'mcontext_t{
} deriving (Eq,Show)
instance Storable C'mcontext_t where
sizeOf _ = 88
alignment _ = 4
peek p = do
return $ C'mcontext_t
poke p (C'mcontext_t) = do
return ()
data C'ucontext_t = C'ucontext_t{
c'ucontext_t'uc_link :: Ptr C'ucontext_t,
c'ucontext_t'uc_sigmask :: C'sigset_t,
c'ucontext_t'uc_stack :: C'stack_t,
c'ucontext_t'uc_mcontext :: C'mcontext_t
} deriving (Eq,Show)
p'ucontext_t'uc_link p = plusPtr p 4
p'ucontext_t'uc_link :: Ptr (C'ucontext_t) -> Ptr (Ptr C'ucontext_t)
p'ucontext_t'uc_sigmask p = plusPtr p 108
p'ucontext_t'uc_sigmask :: Ptr (C'ucontext_t) -> Ptr (C'sigset_t)
p'ucontext_t'uc_stack p = plusPtr p 8
p'ucontext_t'uc_stack :: Ptr (C'ucontext_t) -> Ptr (C'stack_t)
p'ucontext_t'uc_mcontext p = plusPtr p 20
p'ucontext_t'uc_mcontext :: Ptr (C'ucontext_t) -> Ptr (C'mcontext_t)
instance Storable C'ucontext_t where
sizeOf _ = 348
alignment _ = 4
peek p = do
v0 <- peekByteOff p 4
v1 <- peekByteOff p 108
v2 <- peekByteOff p 8
v3 <- peekByteOff p 20
return $ C'ucontext_t v0 v1 v2 v3
poke p (C'ucontext_t v0 v1 v2 v3) = do
pokeByteOff p 4 v0
pokeByteOff p 108 v1
pokeByteOff p 8 v2
pokeByteOff p 20 v3
return ()
data C'stack_t = C'stack_t{
c'stack_t'ss_sp :: Ptr (),
c'stack_t'ss_size :: CSize,
c'stack_t'ss_flags :: CInt
} deriving (Eq,Show)
p'stack_t'ss_sp p = plusPtr p 0
p'stack_t'ss_sp :: Ptr (C'stack_t) -> Ptr (Ptr ())
p'stack_t'ss_size p = plusPtr p 8
p'stack_t'ss_size :: Ptr (C'stack_t) -> Ptr (CSize)
p'stack_t'ss_flags p = plusPtr p 4
p'stack_t'ss_flags :: Ptr (C'stack_t) -> Ptr (CInt)
instance Storable C'stack_t where
sizeOf _ = 12
alignment _ = 4
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 8
v2 <- peekByteOff p 4
return $ C'stack_t v0 v1 v2
poke p (C'stack_t v0 v1 v2) = do
pokeByteOff p 0 v0
pokeByteOff p 8 v1
pokeByteOff p 4 v2
return ()
data C'siginfo_t = C'siginfo_t{
c'siginfo_t'si_signo :: CInt,
c'siginfo_t'si_code :: CInt,
c'siginfo_t'_sifields'_kill'si_pid :: C'pid_t,
c'siginfo_t'_sifields'_kill'si_uid :: C'uid_t,
c'siginfo_t'_sifields'_sigfault'si_addr :: Ptr (),
c'siginfo_t'_sifields'_sigchld'si_status :: CInt,
c'siginfo_t'_sifields'_rt'si_sigval :: C'sigval
} deriving (Eq,Show)
p'siginfo_t'si_signo p = plusPtr p 0
p'siginfo_t'si_signo :: Ptr (C'siginfo_t) -> Ptr (CInt)
p'siginfo_t'si_code p = plusPtr p 8
p'siginfo_t'si_code :: Ptr (C'siginfo_t) -> Ptr (CInt)
p'siginfo_t'_sifields'_kill'si_pid p = plusPtr p 12
p'siginfo_t'_sifields'_kill'si_pid :: Ptr (C'siginfo_t) -> Ptr (C'pid_t)
p'siginfo_t'_sifields'_kill'si_uid p = plusPtr p 16
p'siginfo_t'_sifields'_kill'si_uid :: Ptr (C'siginfo_t) -> Ptr (C'uid_t)
p'siginfo_t'_sifields'_sigfault'si_addr p = plusPtr p 12
p'siginfo_t'_sifields'_sigfault'si_addr :: Ptr (C'siginfo_t) -> Ptr (Ptr ())
p'siginfo_t'_sifields'_sigchld'si_status p = plusPtr p 20
p'siginfo_t'_sifields'_sigchld'si_status :: Ptr (C'siginfo_t) -> Ptr (CInt)
p'siginfo_t'_sifields'_rt'si_sigval p = plusPtr p 20
p'siginfo_t'_sifields'_rt'si_sigval :: Ptr (C'siginfo_t) -> Ptr (C'sigval)
instance Storable C'siginfo_t where
sizeOf _ = 128
alignment _ = 4
peek p = do
v0 <- peekByteOff p 0
v1 <- peekByteOff p 8
v2 <- peekByteOff p 12
v3 <- peekByteOff p 16
v4 <- peekByteOff p 12
v5 <- peekByteOff p 20
v6 <- peekByteOff p 20
return $ C'siginfo_t v0 v1 v2 v3 v4 v5 v6
poke p (C'siginfo_t v0 v1 v2 v3 v4 v5 v6) = do
pokeByteOff p 0 v0
pokeByteOff p 8 v1
pokeByteOff p 12 v2
pokeByteOff p 16 v3
pokeByteOff p 12 v4
pokeByteOff p 20 v5
pokeByteOff p 20 v6
return ()
c'ILL_ILLOPC = 1
c'ILL_ILLOPC :: (Num a) => a
c'ILL_ILLOPN = 2
c'ILL_ILLOPN :: (Num a) => a
c'ILL_ILLADR = 3
c'ILL_ILLADR :: (Num a) => a
c'ILL_ILLTRP = 4
c'ILL_ILLTRP :: (Num a) => a
c'ILL_PRVOPC = 5
c'ILL_PRVOPC :: (Num a) => a
c'ILL_PRVREG = 6
c'ILL_PRVREG :: (Num a) => a
c'ILL_COPROC = 7
c'ILL_COPROC :: (Num a) => a
c'ILL_BADSTK = 8
c'ILL_BADSTK :: (Num a) => a
c'FPE_INTDIV = 1
c'FPE_INTDIV :: (Num a) => a
c'FPE_INTOVF = 2
c'FPE_INTOVF :: (Num a) => a
c'FPE_FLTDIV = 3
c'FPE_FLTDIV :: (Num a) => a
c'FPE_FLTOVF = 4
c'FPE_FLTOVF :: (Num a) => a
c'FPE_FLTUND = 5
c'FPE_FLTUND :: (Num a) => a
c'FPE_FLTRES = 6
c'FPE_FLTRES :: (Num a) => a
c'FPE_FLTINV = 7
c'FPE_FLTINV :: (Num a) => a
c'FPE_FLTSUB = 8
c'FPE_FLTSUB :: (Num a) => a
c'SEGV_MAPERR = 1
c'SEGV_MAPERR :: (Num a) => a
c'SEGV_ACCERR = 2
c'SEGV_ACCERR :: (Num a) => a
c'BUS_ADRALN = 1
c'BUS_ADRALN :: (Num a) => a
c'BUS_ADRERR = 2
c'BUS_ADRERR :: (Num a) => a
c'BUS_OBJERR = 3
c'BUS_OBJERR :: (Num a) => a
c'CLD_EXITED = 1
c'CLD_EXITED :: (Num a) => a
c'CLD_KILLED = 2
c'CLD_KILLED :: (Num a) => a
c'CLD_DUMPED = 3
c'CLD_DUMPED :: (Num a) => a
c'CLD_TRAPPED = 4
c'CLD_TRAPPED :: (Num a) => a
c'CLD_STOPPED = 5
c'CLD_STOPPED :: (Num a) => a
c'CLD_CONTINUED = 6
c'CLD_CONTINUED :: (Num a) => a
c'SI_USER = 0
c'SI_USER :: (Num a) => a
c'SI_QUEUE = 1
c'SI_QUEUE :: (Num a) => a
c'SI_TIMER = 2
c'SI_TIMER :: (Num a) => a
c'SI_ASYNCIO = 4
c'SI_ASYNCIO :: (Num a) => a
c'SI_MESGQ = 3
c'SI_MESGQ :: (Num a) => a
foreign import ccall "kill" c'kill
:: C'pid_t -> CInt -> IO CInt
foreign import ccall "&kill" p'kill
:: FunPtr (C'pid_t -> CInt -> IO CInt)
foreign import ccall "psignal" c'psignal
:: CInt -> CString -> IO ()
foreign import ccall "&psignal" p'psignal
:: FunPtr (CInt -> CString -> IO ())
foreign import ccall "pthread_kill" c'pthread_kill
:: C'pthread_t -> CInt -> IO CInt
foreign import ccall "&pthread_kill" p'pthread_kill
:: FunPtr (C'pthread_t -> CInt -> IO CInt)
foreign import ccall "pthread_sigmask" c'pthread_sigmask
:: CInt -> Ptr C'sigset_t -> Ptr C'sigset_t -> IO CInt
foreign import ccall "&pthread_sigmask" p'pthread_sigmask
:: FunPtr (CInt -> Ptr C'sigset_t -> Ptr C'sigset_t -> IO CInt)
foreign import ccall "sigaction" c'sigaction
:: CInt -> Ptr C'sigaction -> Ptr C'sigaction -> IO CInt
foreign import ccall "&sigaction" p'sigaction
:: FunPtr (CInt -> Ptr C'sigaction -> Ptr C'sigaction -> IO CInt)
foreign import ccall "sigaddset" c'sigaddset
:: Ptr C'sigset_t -> CInt -> IO CInt
foreign import ccall "&sigaddset" p'sigaddset
:: FunPtr (Ptr C'sigset_t -> CInt -> IO CInt)
foreign import ccall "sigdelset" c'sigdelset
:: Ptr C'sigset_t -> CInt -> IO CInt
foreign import ccall "&sigdelset" p'sigdelset
:: FunPtr (Ptr C'sigset_t -> CInt -> IO CInt)
foreign import ccall "sigemptyset" c'sigemptyset
:: Ptr C'sigset_t -> IO CInt
foreign import ccall "&sigemptyset" p'sigemptyset
:: FunPtr (Ptr C'sigset_t -> IO CInt)
foreign import ccall "sigfillset" c'sigfillset
:: Ptr C'sigset_t -> IO CInt
foreign import ccall "&sigfillset" p'sigfillset
:: FunPtr (Ptr C'sigset_t -> IO CInt)
foreign import ccall "sigismember" c'sigismember
:: Ptr C'sigset_t -> CInt -> IO CInt
foreign import ccall "&sigismember" p'sigismember
:: FunPtr (Ptr C'sigset_t -> CInt -> IO CInt)
foreign import ccall "sigpending" c'sigpending
:: Ptr C'sigset_t -> IO CInt
foreign import ccall "&sigpending" p'sigpending
:: FunPtr (Ptr C'sigset_t -> IO CInt)
foreign import ccall "sigprocmask" c'sigprocmask
:: CInt -> Ptr C'sigset_t -> Ptr C'sigset_t -> IO CInt
foreign import ccall "&sigprocmask" p'sigprocmask
:: FunPtr (CInt -> Ptr C'sigset_t -> Ptr C'sigset_t -> IO CInt)
foreign import ccall "sigsuspend" c'sigsuspend
:: Ptr C'sigset_t -> IO CInt
foreign import ccall "&sigsuspend" p'sigsuspend
:: FunPtr (Ptr C'sigset_t -> IO CInt)
foreign import ccall "sigwait" c'sigwait
:: Ptr C'sigset_t -> Ptr CInt -> IO CInt
foreign import ccall "&sigwait" p'sigwait
:: FunPtr (Ptr C'sigset_t -> Ptr CInt -> IO CInt)
foreign import ccall "sigwaitinfo" c'sigwaitinfo
:: Ptr C'sigset_t -> Ptr C'siginfo_t -> IO CInt
foreign import ccall "&sigwaitinfo" p'sigwaitinfo
:: FunPtr (Ptr C'sigset_t -> Ptr C'siginfo_t -> IO CInt)