sys comments for rmes/smes calls, process table (user list) words

noticed "exit" call falls into "rmes" call!!!
This commit is contained in:
Phil Budne
2016-03-08 11:51:03 -05:00
parent 3e84f42637
commit 03d5e49ae9
5 changed files with 48 additions and 36 deletions
+36 -27
View File
@@ -1,7 +1,7 @@
"** 01-s1.pdf page 14
" s3
" search for user (process)
" search for user (process) table entry
" call:
" jms searchu; worker_routine_addr
" worker called with copy of a process table entry in "lu"
@@ -113,36 +113,44 @@ badcal: " bad (unimplemented) system call
isz u.ulistp
dzm u.ulistp i " clear pid in process table
jms swap " find a new process to run
" exit falls into "rmes" !!!
" rmes system call
" sys smes
" returns with message delivered, or error if process does not exit
" AC/ sending pid
" MQ/ message
.rmes:
jms awake
lac o100000
lac o100000 " mark this process to "not ready"
tad u.ulistp i
dac u.ulistp i
law 2
tad u.ulistp
dac 9f+t
dac 9f+t " pointer to msg status in proc table
-1
dac 9f+t i
jms swap
dac 9f+t i " set to -1 (waiting for message)
jms swap " switch processes
law 2
tad u.ulistp
dac 9f+t
lac 9f+t i
cma
dac u.ac
dzm 9f+t i
lac 9f+t i " get msg status word
cma " complement (get sender pid)
dac u.ac " return in user AC
dzm 9f+t i " clear status word
isz 9f+t
lac 9f+t i
dac u.mq
dzm 9f+t i
lac 9f+t i " get message
dac u.mq " return in user MQ
dzm 9f+t i " clear message
jmp sysexit
t = t+1
"** 01-s1.pdf page 16
" smes system call
" AC/ pid
" MQ/ message
" sys smes
" returns with message delivered, or error if process does not exit
.smes:
lac u.ac " get pid from user AC
sna spa " >0?
@@ -158,10 +166,10 @@ t = t+1
sad u.ac " match?
skp " yes
jmp 1b i " no
lac lu+2 " get mailbox
lac lu+2 " get mailbox status
sad dm1 " -1?
jmp 1f " yes
lac o100000 " no: increment process status
lac o100000 " no: bump our process status (to notready?)
tad u.ulistp i
dac u.ulistp i
law 2
@@ -178,35 +186,36 @@ t = t+1
1:
-3
tad 8
dac 9f+t
lac o700000
dac 9f+t " pointer to dest process ulist entry
lac o700000 " complement process status? marks ready??
tad 9f+t i
dac 9f+t i
isz 9f+t
isz 9f+t
lac u.pid
cma
dac 9f+t i
isz 9f+t
lac u.mq
dac 9f+t i
isz 9f+t " point to mailbox word?
lac u.pid " get our pid
cma " complement
dac 9f+t i " store in mailbox??
isz 9f+t " advance to next word
lac u.mq " get user MQ
dac 9f+t i " save as message
jmp okexit
t = t+1
" wake up process hanging on rmes for current process??
awake: 0
jms searchu; 1f
jmp awake i
1: 0 " searchu worker
lac u.pid " get caller pid
sad lu+2 " match process table entry?
sad lu+2 " match mailbox status?
skp " yes
jmp 1b i " no, return
-3
tad 8 " get pointer to pid in process table??
tad 8 " get pointer to process table entry
dac 9f+t " save in t0
"** 01-s1.pdf page 17
lac o700000 " set high bits
tad 9f+t i
lac o700000
tad 9f+t i " complement process status (mark ready)??
dac 9f+t i
jmp 1b i " return from worker
t = t+1