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

Reply via email to