Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
clean-and-itasks
clean-libraries
Commits
e1604c5f
Commit
e1604c5f
authored
Nov 30, 1999
by
Peter Achten
Browse files
(PA) improved naming and removed comments
parent
c953ba22
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
ObjectIO/ObjectIO/iostate.dcl
View file @
e1604c5f
...
...
@@ -19,38 +19,38 @@ from timertable import TimerTable
::
*
IOSt
l
::
*
PSt
l
=
{
ls
::
!
l
// The local (and private) data of the process
,
io
::
!*
IOSt
l
// The IOSt environment of the process
=
{
ls
::
!
l
// The local (and private) data of the process
,
io
::
!*
IOSt
l
// The IOSt environment of the process
}
::
*
Locals
:==
RR
*
LocalIO
::
*
LocalIO
::
*
CProcesses
// The 'context-free' processes administration
:==
RR
*
CProcess
// is a round-robin
::
*
CProcess
// The context-free process
=
E
.
.
l
:
{
localState
::
!
Maybe
l
,
localIOSt
::
!*
IOSt
l
{
localState
::
!
Maybe
l
// its local state
,
localIOSt
::
!*
IOSt
l
// its context-free IOSt
}
::
RuntimeState
=
Running
// The process is running
|
Blocked
!
SystemId
// The process is blocked for the process with given id
|
Closed
// The process is closed
=
Running
// The process is running
|
Blocked
!
SystemId
// The process is blocked for the process with given id
|
Closed
// The process is closed
::
GUIShare
:==
OSGUIShare
::
ActivateRequests
:==
[
OSActivateRequest
]
::
DoubleDownDist
:==
Int
::
InputTrack
// Input being tracked:
=
{
itWindow
::
!
OSWindowPtr
// the parent window
,
itControl
::
!
Int
// zero if parent window, otherwise item nr of control (>0)
,
itKind
::
!
InputTrackKind
// the input kinds being tracked
::
InputTrack
// Input being tracked:
=
{
itWindow
::
!
OSWindowPtr
// the parent window
,
itControl
::
!
Int
// zero if parent window, otherwise item nr of control (>0)
,
itKind
::
!
InputTrackKind
// the input kinds being tracked
}
::
InputTrackKind
// Input source kinds:
=
{
itkMouse
::
!
Bool
// mouse
,
itkKeyboard
::
!
Bool
// keyboard
::
InputTrackKind
// Input source kinds:
=
{
itkMouse
::
!
Bool
// mouse
,
itkKeyboard
::
!
Bool
// keyboard
}
::
ClipboardState
=
{
cbsCount
::
!
Int
// ScrapCount of last access
=
{
cbsCount
::
!
Int
// ScrapCount of last access
}
...
...
@@ -75,7 +75,7 @@ IOStGetOSTime :: !(IOSt .l) -> (!OSTime, !IOSt .l)
IOStGetActivateRequests
::
!(
IOSt
.
l
)
->
(!
ActivateRequests
,
!
IOSt
.
l
)
IOStGetEvents
::
!(
IOSt
.
l
)
->
(!*
OSEvents
,
!
IOSt
.
l
)
IOStGetWorld
::
!(
IOSt
.
l
)
->
(!*
World
,
!
IOSt
.
l
)
IOStGet
Locals
::
!(
IOSt
.
l
)
->
(!
Local
s
,
!
IOSt
.
l
)
IOStGet
CProcesses
::
!(
IOSt
.
l
)
->
(!
CProcesse
s
,
!
IOSt
.
l
)
IOStGetProcessStack
::
!(
IOSt
.
l
)
->
(!
ProcessStack
,
!
IOSt
.
l
)
IOStGetDocumentInterface
::
!(
IOSt
.
l
)
->
(!
DocumentInterface
,
!
IOSt
.
l
)
IOStGetOSDInfo
::
!(
IOSt
.
l
)
->
(!
OSDInfo
,
!
IOSt
.
l
)
...
...
@@ -104,7 +104,7 @@ IOStSetOSTime :: !OSTime !(IOSt .l) -> IOSt .l
IOStSetActivateRequests
::
!
ActivateRequests
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSetEvents
::
!*
OSEvents
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSetWorld
::
!*
World
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSet
Locals
::
!
Locals
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSet
CProcesses
::
!
CProcesses
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSetProcessStack
::
!
ProcessStack
!(
IOSt
.
l
)
->
IOSt
.
l
SelectIOSt
::
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSetOSDInfo
::
!
OSDInfo
!(
IOSt
.
l
)
->
IOSt
.
l
...
...
@@ -116,7 +116,7 @@ IOStSetClipboardState :: !ClipboardState !(IOSt .l) -> IOSt .l
IOStSetDeviceFunctions
::
![
DeviceFunctions
(
PSt
.
l
)]
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSetRcvDisabled
::
!
Bool
!(
IOSt
.
l
)
->
IOSt
.
l
/* MW11++*/
IOStSwapIO
::
!(![*
World
],!
Local
s
)
!(
IOSt
.
l
)
->
(!(![*
World
],!
Local
s
),!
IOSt
.
l
)
IOStSwapIO
::
!(![*
World
],!
CProcesse
s
)
!(
IOSt
.
l
)
->
(!(![*
World
],!
CProcesse
s
),!
IOSt
.
l
)
IOStLastInteraction
::
!(
IOSt
.
l
)
->
(!
Bool
,
!
IOSt
.
l
)
IOStHasDevice
::
!
Device
!(
IOSt
.
l
)
->
(!
Bool
,
!
IOSt
.
l
)
...
...
ObjectIO/ObjectIO/iostate.icl
View file @
e1604c5f
...
...
@@ -22,12 +22,12 @@ from roundrobin import RR, emptyRR, notodoRR
,
io
::
!*
IOSt
l
// The IOSt environment of the process
}
::
*
Locals
:==
RR
*
LocalIO
::
*
LocalIO
::
*
CProcesses
// The 'context-free' processes administration
:==
RR
*
CProcess
// is a round-robin
::
*
CProcess
// The context-free process
=
E
.
.
l
:
{
localState
::
!
Maybe
l
,
localIOSt
::
!*
IOSt
l
{
localState
::
!
Maybe
l
// its local state
,
localIOSt
::
!*
IOSt
l
// its context-free IOSt
}
::
*
IOSt
l
=
{
iounique
::
!*
IOUnique
l
...
...
@@ -36,7 +36,7 @@ from roundrobin import RR, emptyRR, notodoRR
::
*
IOUnique
l
=
{
ioevents
::
!*
OSEvents
// The event stream environment
,
ioworld
::
![*
World
]
// The world environment
,
io
local
::
*
Locals
// All other processes
,
io
processes
::
*
CProcesses
// All other processes
,
ioinit
::
!
IdFun
(
PSt
l
)
// The initialisation functions of the process
,
iotoolbox
::
!*
OSToolbox
// The Mac continuation value
}
...
...
@@ -148,7 +148,7 @@ emptyIOUnique initIO
=
(
wMetrics
,
{
ioevents
=
OSnewEvents
,
ioworld
=
[]
,
io
local
=
emptyRR
,
io
processes
=
emptyRR
,
ioinit
=
initIO
,
iotoolbox
=
tb
}
...
...
@@ -306,13 +306,13 @@ IOStSetWorld :: !*World !(IOSt .l) -> IOSt .l
IOStSetWorld
w
ioState
=:{
iounique
=
unique
=:{
ioworld
=
ws
}}
=
{
ioState
&
iounique
={
unique
&
ioworld
=[
w
:
ws
]}}
// Access rules to
Local
s:
// Access rules to
CProcesse
s:
IOStGet
Local
s
::
!(
IOSt
.
l
)
->
(!
Local
s
,
!
IOSt
.
l
)
IOStGet
Local
s
ioState
=:{
iounique
=
unique
=:{
io
local
}}
=
(
iolocal
,{
ioState
&
iounique
={
unique
&
io
local
=
emptyRR
}})
IOStGet
CProcesse
s
::
!(
IOSt
.
l
)
->
(!
CProcesse
s
,
!
IOSt
.
l
)
IOStGet
CProcesse
s
ioState
=:{
iounique
=
unique
=:{
io
processes
}}
=
(
ioprocesses
,{
ioState
&
iounique
={
unique
&
io
processes
=
emptyRR
}})
IOStSet
Locals
::
!
Local
s
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSet
Locals
local
ioState
=
{
ioState
&
iounique
={
ioState
.
iounique
&
io
local
=
local
}}
IOStSet
CProcesses
::
!
CProcesse
s
!(
IOSt
.
l
)
->
IOSt
.
l
IOStSet
CProcesses
processes
ioState
=
{
ioState
&
iounique
={
ioState
.
iounique
&
io
processes
=
processes
}}
// Access to the ProcessStack of the IOSt:
...
...
@@ -350,9 +350,9 @@ IOStGetProcessKind ioState=:{ioshare} = (ioshare.iokind, ioState)
// Swapping of IOSt environments:
IOStSwapIO
::
!(![*
World
],!
Local
s
)
!(
IOSt
.
l
)
->
(!(![*
World
],!
Local
s
),!
IOSt
.
l
)
IOStSwapIO
(
world`
,
local
s`
)
ioState
=:{
iounique
=
unique
=:{
ioworld
,
io
local
}}
=
((
ioworld
,
io
local
),{
ioState
&
iounique
={
unique
&
ioworld
=
world`
,
io
local
=
local
s`
}})
IOStSwapIO
::
!(![*
World
],!
CProcesse
s
)
!(
IOSt
.
l
)
->
(!(![*
World
],!
CProcesse
s
),!
IOSt
.
l
)
IOStSwapIO
(
world`
,
cprocesse
s`
)
ioState
=:{
iounique
=
unique
=:{
ioworld
,
io
processes
}}
=
((
ioworld
,
io
processes
),{
ioState
&
iounique
={
unique
&
ioworld
=
world`
,
io
processes
=
cprocesse
s`
}})
// Access to the SystemId of the IOSt:
...
...
@@ -441,9 +441,9 @@ IOStSetDeviceFunctions funcs ioState=:{ioshare} = {ioState & ioshare={ioshare &
IOStLastInteraction
::
!(
IOSt
.
l
)
->
(!
Bool
,!
IOSt
.
l
)
IOStLastInteraction
ioState
#
(
local
s
,
ioState
)
=
IOStGet
Local
s
ioState
(
empty
,
local
s
)
=
notodoRR
local
s
#
ioState
=
IOStSet
Locals
local
s
ioState
#
(
processe
s
,
ioState
)
=
IOStGet
CProcesse
s
ioState
(
empty
,
processe
s
)
=
notodoRR
processe
s
#
ioState
=
IOStSet
CProcesses
processe
s
ioState
=
(
not
empty
,
ioState
)
IOStHasDevice
::
!
Device
!(
IOSt
.
l
)
->
(!
Bool
,!
IOSt
.
l
)
...
...
ObjectIO/ObjectIO/scheduler.dcl
View file @
e1604c5f
...
...
@@ -8,7 +8,7 @@ definition module scheduler
import
deviceevents
,
StdMaybe
from
StdString
import
String
from
id
import
Id
from
iostate
import
PSt
,
IOSt
,
RR
,
Locals
,
LocalIO
from
iostate
import
PSt
,
IOSt
,
RR
,
CProcesses
,
CProcess
from
receivertable
import
ReceiverTable
,
ReceiverTableEntry
,
RecLoc
from
device
import
Device
from
processstack
import
ProcessStack
,
ProcessShowState
,
ShowFlag
,
ProcessKind
,
InteractiveProcess
,
VirtualProcess
...
...
@@ -32,18 +32,11 @@ from StdProcessDef import ProcessInit, DocumentInterface, NDI, SDI, MDI
=
{
envsEvents
::
!*
OSEvents
,
envsWorld
::
!*
World
}
/*
:: *GContext p
= { groupPublic :: p
, groupLocals :: !*Locals p
}
*/
::
*
Context
=
{
cEnvs
::
!*
Environs
// The global environments
,
cProcessStack
::
ProcessStack
// The global process stack
,
cMaxIONr
::
SystemId
// The global maximum system number
// , cGroups :: *Groups // All process groups
,
cProcesses
::
*
Locals
// All processes
,
cProcesses
::
*
CProcesses
// All processes
,
cModalProcess
::
Maybe
SystemId
// The SystemId of the interactive process that has a modal window
,
cReceiverTable
::
ReceiverTable
// The global receiver-process table
,
cTimerTable
::
TimerTable
// The table of all currently active timers
...
...
@@ -149,11 +142,11 @@ accContext :: !.(St Context .x) !(PSt .l) -> (!.x, !PSt .l)
,
!
Maybe
r
// optional access information
)
accessLocals
::
!(
St
LocalIO
(
Result
r
))
!*
Local
s
->
(!
Result
r
,!*
Local
s
)
accessLocals
::
!(
St
CProcess
(
Result
r
))
!*
CProcesse
s
->
(!
Result
r
,!*
CProcesse
s
)
/* Let f::(IOSt .l .p) -> (Result r,IOSt .l .p) be an IOSt access function.
To thread f through *
Local
s until fst(fst(f io)), define gLocals as follows:
To thread f through *
CProcesse
s until fst(fst(f io)), define gLocals as follows:
gLocals :: *
(Locals .p)
-> (Result r, *
Locals .p
)
gLocals :: *
CProcesses
-> (Result r, *
CProcesses
)
gLocals locals = accessLocals f` locals
where f` localIO = (r,{localIO & localIOSt=ioState})
where (r,ioState) = f localIO.localIOSt
...
...
ObjectIO/ObjectIO/scheduler.icl
View file @
e1604c5f
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment