@@ -60,9 +60,9 @@ module Control.Monad.IOSim.Types
60
60
, ppDebug
61
61
, module Control.Monad.IOSim.CommonTypes
62
62
, Thrower (.. )
63
- , Time (.. )
64
- , addTime
65
- , diffTime
63
+ , SI. Time (.. )
64
+ , SI. addTime
65
+ , SI. diffTime
66
66
-- * Internal API
67
67
, Timeout (.. )
68
68
, newTimeout
@@ -97,7 +97,8 @@ import Control.Monad.Class.MonadTest
97
97
import Control.Monad.Class.MonadThrow as MonadThrow hiding (getMaskingState )
98
98
import Control.Monad.Class.MonadThrow qualified as MonadThrow
99
99
import Control.Monad.Class.MonadTime
100
- import Control.Monad.Class.MonadTime.SI
100
+ import Control.Monad.Class.MonadTime.SI (DiffTime )
101
+ import Control.Monad.Class.MonadTime.SI qualified as SI
101
102
import Control.Monad.Class.MonadTimer
102
103
import Control.Monad.Class.MonadTimer.SI (TimeoutState (.. ))
103
104
import Control.Monad.Class.MonadTimer.SI qualified as SI
@@ -167,7 +168,7 @@ data SimA s a where
167
168
168
169
LiftST :: StrictST. ST s a -> (a -> SimA s b ) -> SimA s b
169
170
170
- GetMonoTime :: (Time -> SimA s b ) -> SimA s b
171
+ GetMonoTime :: (SI. Time -> SimA s b ) -> SimA s b
171
172
GetWallTime :: (UTCTime -> SimA s b ) -> SimA s b
172
173
SetWallTime :: UTCTime -> SimA s b -> SimA s b
173
174
UnshareClock :: SimA s b -> SimA s b
@@ -479,6 +480,7 @@ instance MonadFork (IOSim s) where
479
480
forkIO $ try (restore task) >>= k
480
481
throwTo tid e = IOSim $ oneShot $ \ k -> ThrowTo (toException e) tid (k () )
481
482
yield = IOSim $ oneShot $ \ k -> YieldSim (k () )
483
+ getNumCapabilities = return 1
482
484
483
485
instance MonadTest (IOSim s ) where
484
486
exploreRaces = IOSim $ oneShot $ \ k -> ExploreRaces (k () )
@@ -672,10 +674,10 @@ instance MonadMonotonicTimeNSec (IOSim s) where
672
674
getMonotonicTimeNSec = IOSim $ oneShot $ \ k -> GetMonoTime (k . conv)
673
675
where
674
676
-- convert time in picoseconds to nanoseconds
675
- conv :: Time -> Word64
676
- conv (Time d) = fromIntegral (diffTimeToPicoseconds d `div` 1_000 )
677
+ conv :: SI. Time -> Word64
678
+ conv (SI. Time d) = fromIntegral (diffTimeToPicoseconds d `div` 1_000 )
677
679
678
- instance MonadMonotonicTime (IOSim s ) where
680
+ instance SI. MonadMonotonicTime (IOSim s ) where
679
681
getMonotonicTime = IOSim $ oneShot $ \ k -> GetMonoTime k
680
682
681
683
instance MonadTime (IOSim s ) where
@@ -788,14 +790,14 @@ instance MonadEventlog (IOSim s) where
788
790
data SimEvent
789
791
-- | Used when using `IOSim`.
790
792
= SimEvent {
791
- seTime :: ! Time ,
793
+ seTime :: ! SI. Time ,
792
794
seThreadId :: ! IOSimThreadId ,
793
795
seThreadLabel :: ! (Maybe ThreadLabel ),
794
796
seType :: ! SimEventType
795
797
}
796
798
-- | Only used for /IOSimPOR/
797
799
| SimPOREvent {
798
- seTime :: ! Time ,
800
+ seTime :: ! SI. Time ,
799
801
seThreadId :: ! IOSimThreadId ,
800
802
seStep :: ! Int ,
801
803
seThreadLabel :: ! (Maybe ThreadLabel ),
@@ -815,7 +817,7 @@ ppSimEvent :: Int -- ^ width of the time
815
817
-> SimEvent
816
818
-> String
817
819
818
- ppSimEvent timeWidth tidWidth tLabelWidth SimEvent {seTime = Time time, seThreadId, seThreadLabel, seType} =
820
+ ppSimEvent timeWidth tidWidth tLabelWidth SimEvent {seTime = SI. Time time, seThreadId, seThreadLabel, seType} =
819
821
printf " %-*s - %-*s %-*s - %s"
820
822
timeWidth
821
823
(show time)
@@ -825,7 +827,7 @@ ppSimEvent timeWidth tidWidth tLabelWidth SimEvent {seTime = Time time, seThread
825
827
(fromMaybe " " seThreadLabel)
826
828
(ppSimEventType seType)
827
829
828
- ppSimEvent timeWidth tidWidth tLableWidth SimPOREvent {seTime = Time time, seThreadId, seStep, seThreadLabel, seType} =
830
+ ppSimEvent timeWidth tidWidth tLableWidth SimPOREvent {seTime = SI. Time time, seThreadId, seStep, seThreadLabel, seType} =
829
831
printf " %-*s - %-*s %-*s - %s"
830
832
timeWidth
831
833
(show time)
@@ -841,11 +843,11 @@ ppSimEvent _ _ _ (SimRacesFound controls) =
841
843
842
844
-- | A result type of a simulation.
843
845
data SimResult a
844
- = MainReturn ! Time ! (Labelled IOSimThreadId ) a ! [Labelled IOSimThreadId ]
846
+ = MainReturn ! SI. Time ! (Labelled IOSimThreadId ) a ! [Labelled IOSimThreadId ]
845
847
-- ^ Return value of the main thread.
846
- | MainException ! Time ! (Labelled IOSimThreadId ) SomeException ! [Labelled IOSimThreadId ]
848
+ | MainException ! SI. Time ! (Labelled IOSimThreadId ) SomeException ! [Labelled IOSimThreadId ]
847
849
-- ^ Exception thrown by the main thread.
848
- | Deadlock ! Time ! [Labelled IOSimThreadId ]
850
+ | Deadlock ! SI. Time ! [Labelled IOSimThreadId ]
849
851
-- ^ Deadlock discovered in the simulation. Deadlocks are discovered if
850
852
-- simply the simulation cannot do any progress in a given time slot and
851
853
-- there's no event which would advance the time.
@@ -863,7 +865,7 @@ ppSimResult :: Show a
863
865
-> SimResult a
864
866
-> String
865
867
ppSimResult timeWidth tidWidth thLabelWidth r = case r of
866
- MainReturn (Time time) tid a tids ->
868
+ MainReturn (SI. Time time) tid a tids ->
867
869
printf " %-*s - %-*s %-*s - %s %s"
868
870
timeWidth
869
871
(show time)
@@ -873,7 +875,7 @@ ppSimResult timeWidth tidWidth thLabelWidth r = case r of
873
875
(fromMaybe " " $ l_label tid)
874
876
(" MainReturn " ++ show a)
875
877
(" [" ++ intercalate " ," (ppLabelled ppIOSimThreadId `map` tids) ++ " ]" )
876
- MainException (Time time) tid e tids ->
878
+ MainException (SI. Time time) tid e tids ->
877
879
printf " %-*s - %-*s %-*s - %s %s"
878
880
timeWidth
879
881
(show time)
@@ -883,7 +885,7 @@ ppSimResult timeWidth tidWidth thLabelWidth r = case r of
883
885
(fromMaybe " " $ l_label tid)
884
886
(" MainException " ++ show e)
885
887
(" [" ++ intercalate " ," (ppLabelled ppIOSimThreadId `map` tids) ++ " ]" )
886
- Deadlock (Time time) tids ->
888
+ Deadlock (SI. Time time) tids ->
887
889
printf " %-*s - %-*s %-*s - %s %s"
888
890
timeWidth
889
891
(show time)
@@ -920,12 +922,12 @@ ppTrace tr = Trace.ppTrace
920
922
bimaximum
921
923
. bimap (const (Max 0 , Max 0 , Max 0 ))
922
924
(\ a -> case a of
923
- SimEvent {seTime = Time time, seThreadId, seThreadLabel} ->
925
+ SimEvent {seTime = SI. Time time, seThreadId, seThreadLabel} ->
924
926
( Max (length (show time))
925
927
, Max (length (show (seThreadId)))
926
928
, Max (length seThreadLabel)
927
929
)
928
- SimPOREvent {seTime = Time time, seThreadId, seThreadLabel} ->
930
+ SimPOREvent {seTime = SI. Time time, seThreadId, seThreadLabel} ->
929
931
( Max (length (show time))
930
932
, Max (length (show (seThreadId)))
931
933
, Max (length seThreadLabel)
@@ -974,13 +976,13 @@ ppDebug = appEndo
974
976
. Trace. toList
975
977
976
978
977
- pattern SimTrace :: Time -> IOSimThreadId -> Maybe ThreadLabel -> SimEventType -> SimTrace a
979
+ pattern SimTrace :: SI. Time -> IOSimThreadId -> Maybe ThreadLabel -> SimEventType -> SimTrace a
978
980
-> SimTrace a
979
981
pattern SimTrace time threadId threadLabel traceEvent trace =
980
982
Trace. Cons (SimEvent time threadId threadLabel traceEvent)
981
983
trace
982
984
983
- pattern SimPORTrace :: Time -> IOSimThreadId -> Int -> Maybe ThreadLabel -> SimEventType -> SimTrace a
985
+ pattern SimPORTrace :: SI. Time -> IOSimThreadId -> Int -> Maybe ThreadLabel -> SimEventType -> SimTrace a
984
986
-> SimTrace a
985
987
pattern SimPORTrace time threadId step threadLabel traceEvent trace =
986
988
Trace. Cons (SimPOREvent time threadId step threadLabel traceEvent)
@@ -992,15 +994,15 @@ pattern TraceRacesFound controls trace =
992
994
Trace. Cons (SimRacesFound controls)
993
995
trace
994
996
995
- pattern TraceMainReturn :: Time -> Labelled IOSimThreadId -> a -> [Labelled IOSimThreadId ]
997
+ pattern TraceMainReturn :: SI. Time -> Labelled IOSimThreadId -> a -> [Labelled IOSimThreadId ]
996
998
-> SimTrace a
997
999
pattern TraceMainReturn time tid a threads = Trace. Nil (MainReturn time tid a threads)
998
1000
999
- pattern TraceMainException :: Time -> Labelled IOSimThreadId -> SomeException -> [Labelled IOSimThreadId ]
1001
+ pattern TraceMainException :: SI. Time -> Labelled IOSimThreadId -> SomeException -> [Labelled IOSimThreadId ]
1000
1002
-> SimTrace a
1001
1003
pattern TraceMainException time tid err threads = Trace. Nil (MainException time tid err threads)
1002
1004
1003
- pattern TraceDeadlock :: Time -> [Labelled IOSimThreadId ]
1005
+ pattern TraceDeadlock :: SI. Time -> [Labelled IOSimThreadId ]
1004
1006
-> SimTrace a
1005
1007
pattern TraceDeadlock time threads = Trace. Nil (Deadlock time threads)
1006
1008
@@ -1066,22 +1068,22 @@ data SimEventType
1066
1068
-- Timeouts, Timers & Delays
1067
1069
--
1068
1070
1069
- | EventThreadDelay TimeoutId Time
1071
+ | EventThreadDelay TimeoutId SI. Time
1070
1072
-- ^ thread delayed
1071
1073
| EventThreadDelayFired TimeoutId
1072
1074
-- ^ thread woken up after a delay
1073
1075
1074
- | EventTimeoutCreated TimeoutId IOSimThreadId Time
1076
+ | EventTimeoutCreated TimeoutId IOSimThreadId SI. Time
1075
1077
-- ^ new timeout created (via `timeout`)
1076
1078
| EventTimeoutFired TimeoutId
1077
1079
-- ^ timeout fired
1078
1080
1079
- | EventRegisterDelayCreated TimeoutId TVarId Time
1081
+ | EventRegisterDelayCreated TimeoutId TVarId SI. Time
1080
1082
-- ^ registered delay (via `registerDelay`)
1081
1083
| EventRegisterDelayFired TimeoutId
1082
1084
-- ^ registered delay fired
1083
1085
1084
- | EventTimerCreated TimeoutId TVarId Time
1086
+ | EventTimerCreated TimeoutId TVarId SI. Time
1085
1087
-- ^ a new 'Timeout' created (via `newTimeout`)
1086
1088
| EventTimerCancelled TimeoutId
1087
1089
-- ^ a 'Timeout' was cancelled (via `cancelTimeout`)
0 commit comments