0 | module System.UV.Data.Signal
 1 |
 2 | import Derive.Prelude
 3 |
 4 | %language ElabReflection
 5 | %default total
 6 |
 7 | ||| Signalcodes we can react on.
 8 | public export
 9 | data SigCode : Type where
10 |   SIGABRT : SigCode
11 |   SIGFPE  : SigCode
12 |   SIGHUP  : SigCode
13 |   SIGILL  : SigCode
14 |   SIGINT  : SigCode
15 |   SIGQUIT : SigCode
16 |   SIGSEGV : SigCode
17 |   SIGTRAP : SigCode
18 |   SIGUSR1 : SigCode
19 |   SIGUSR2 : SigCode
20 |
21 | %runElab derive "SigCode" [Show,Eq]
22 |
23 | public export
24 | sigToCode : SigCode -> Bits32
25 | sigToCode SIGABRT = 6
26 | sigToCode SIGFPE  = 8
27 | sigToCode SIGHUP  = 1
28 | sigToCode SIGILL  = 4
29 | sigToCode SIGINT  = 2
30 | sigToCode SIGQUIT = 3
31 | sigToCode SIGSEGV = 11
32 | sigToCode SIGTRAP = 5
33 | sigToCode SIGUSR1 = 10
34 | sigToCode SIGUSR2 = 12
35 |
36 | public export
37 | sigFromCode : Bits32 -> SigCode
38 | sigFromCode 6 = SIGABRT
39 | sigFromCode 8 = SIGFPE
40 | sigFromCode 1 = SIGHUP
41 | sigFromCode 4 = SIGILL
42 | sigFromCode 2 = SIGINT
43 | sigFromCode 3 = SIGQUIT
44 | sigFromCode 11 = SIGSEGV
45 | sigFromCode 5 = SIGTRAP
46 | sigFromCode 10 = SIGUSR1
47 | sigFromCode _ = SIGUSR2
48 |