Suppose that I have a program which is heavily multitasking. There is the
parent task and multiple subtasks, all direct children of the single
parent. The ATTACHX macro uses the ETXR parameter, which specifies a single
routine which does housekeeping of some sort. Also assume that the subtasks
are being created and ending "randomly". That is the main task is "doing
its thing", then a subtask ends and drives the ETXR code under the parent
TCB (I think under an IRB). Now this can happen anywhere in the parent's
"main loop", so I know that I need to serialize properly between the "main
loop" code and the ETXR code. Assume that I have done so. I am wondering if
a second child terminates while the parent TCB is in the ETXR code for a
child, will the ETXR code be interrupted and "redriven" for the newly
terminating child TCB. Or does RTM itself serialize the ETXR code so that a
second instance is not driven until the first instance finishes (by
exiting, thus going back to the parent's "main loop").

I.e. can the RB chain at some point look like:

PRB of parent, IRB of ETXR #1, IRB of ETXR #2, IRB of ETXR #3 for a time
line like:

main TCB loop running
child #1 ends, ETXR#1 starts running on main TCB
child #2 ends, ETXR#2 starts running on main TCB (EXTR#1 interrupted)
ETXR#2 ends, ETXR#1 resumes where it left off
ETXR#1 ends, main TCB code loop resumes from where it was interrupted.

or is the second ETXR "deferred" until the previous invocation does an SVC
3 to return to the main routine. Timeline like:

main TCB loop
child ends, causing ETXR to be invoked on main TCB
child ends while ETXR active, is queued
ETXR #1 ends
queued ETXR starts execution
ETXR #2 ends
main TCB loop resumes


I think the former. with ETXR#2 interrupting ETXR#1 is what really happens.
I can't think of a way, off hand to test this.


-- 
This is clearly another case of too many mad scientists, and not enough
hunchbacks.

Maranatha! <><
John McKown

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to