I don't know JNI or how it fetches the non-reusable routine, however: > > Maybe I'm mis-using the term "reusable". I'm not referring to "serially > > reusable" (by which the OS manages attempts to fetch the same module again > > while it still known to be in use).
I don't believe it will fetch the same serial reuseable module again. Instead later requesters will wait until the module is not in use. This used to be documented, see page 26 of GC28-0683-3 OS/VS2 MVS Supervisor Services and Macro Instructions which says: If the module is serially reusable, only one copy is ever placed in the job pack area; this copy is always used for a LOAD macro instruction. If the copy is in use, however, and the request is made using a LINK, AITACH, or XCTL macro instruction, the task requiring the load module is placed in a wait condition until the copy is available. https://archive.org/details/bitsavers_ibm370OSVS06833OSVS2MVSSupervisorServicesandMacros_11233168 Or see the code in MVS3.8 IEAVLK00. I can't see how this could have been changed and remain compatible as there might be code which depends on the serial reusable system action to serialize something else... I've personally never designed one of my programs to be linked serial reuseable, only non-reuseable or reentrant. The above serialization only occurs for the program control system calls which access programs when the system handles the transfer of control between modules, ie: ATTACH, LINK, XCTL, and EXIT. It explicitly does not apply to LOAD/DELETE -- you are the one to be doing any serializing needed with them. Perhaps the JNI uses LOAD? Or just assumes everything is reent? ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN