8 | module System.Posix.Timer.Types
11 | import Data.C.Integer
12 | import Derive.Finite
13 | import Derive.Prelude
16 | %language ElabReflection
19 | data Which = ITIMER_REAL | ITIMER_VIRTUAL | ITIMER_PROF
21 | %runElab derive "Which" [Show,Eq,Ord,Finite]
24 | data ClockId : Type where
25 | CLOCK_REALTIME : ClockId
26 | CLOCK_MONOTONIC : ClockId
27 | CLOCK_PROCESS_CPUTIME_ID : ClockId
28 | CLOCK_THREAD_CPUTIME_ID : ClockId
30 | %runElab derive "ClockId" [Show,Eq,Ord,Finite]
34 | whichCode : Which -> Bits8
35 | whichCode ITIMER_REAL = 0
36 | whichCode ITIMER_VIRTUAL = 1
37 | whichCode ITIMER_PROF = 2
40 | clockCode : ClockId -> Bits8
41 | clockCode CLOCK_REALTIME = 0
42 | clockCode CLOCK_MONOTONIC = 1
43 | clockCode CLOCK_PROCESS_CPUTIME_ID = 2
44 | clockCode CLOCK_THREAD_CPUTIME_ID = 3
46 | public export %inline
47 | timeval_size : Bits32
50 | public export %inline
51 | itimerval_size : Bits32
54 | public export %inline
55 | itimerspec_size : Bits32
56 | itimerspec_size = 32
58 | public export %inline
59 | CLOCKS_PER_SEC : ClockT
60 | CLOCKS_PER_SEC = 1000000