CEE3CSYS — creating nested enclave

This CWI passes control to a target program. Control is passed in such a way that, if the target is a Language Environment-enabled application, the first call (if any) to CEEINT from the target program or its descendents results in the creation of a new nested enclave. CEE3CSYS can be called only from an already executing Language Environment environment. The execution of the caller of CEE3CSYS is suspended until the newly created enclave or non-Language Environment service, command, or EXEC completes its execution and returns.

Syntax

void (*CEECELVBCSYS) (name, user_arg, rsvd_word, rsvd_word, rtn_cd,[fc])
VSTRING   *name;
void      *user_arg;
void      *rsvd_word;
void      *rsvd_word;
INT4      *rtn_cd;
FEED_BACK *fc;
CEECELVBCSYS
Call this CWI interface as follows:
L     R15,CEECAACELV-CEECAA(,R12)
L     R15,2988(,R15)
BALR  R14,R15
name (input)
a halfword-prefixed character string containing the name of the entry point in the target load module that is to receive control. The character string must be the platform-specific name identifying the entry point. The name is used as specified with no mapping by CEE3CSYS. The search order for the load module is consistent with that used for SVC LINK.
user_arg (input)
the equivalent of an R1 value. This can pass a single argument in the form of a halfword-prefixed character string that can contain user parameters and optionally runtime options.
rsvd_word (input)
A fullword reserved for future use.
rsvd_word (input)
A fullword reserved for future use.
rtn_cd (output)
A full word integer with the return code from the target enclave. This is valid only when fc is CEE000.
fc (output/optional)
The feedback code from the service indicates how the service performed, and not the target enclave. The following feedback codes are possible:
Condition  
CEE000 Severity 0
Msg_No 0000
Message The service completed successfully.
CEE3DC Severity 3
Msg_No 3500
Message Not enough storage available to load name.
CEE3DD Severity 3
Msg_No 3501
Message name module not found.
CEE3DE Severity 3
Msg_No 3502
Message name module name too long.
CEE3DF Severity 3
Msg_No 3503
Message Load service request for module name was unsuccessful.
Usage Notes:
  1. The current thread waits for the new enclave or non-Language Environment service, command, or EXEC to complete and for control to return to it.
  2. The unhandled condition behavior in the target enclave is always ignored.
  3. The message file, specified by the runtime option MSGFILE, is shared across nested enclaves if the MSGFILE name is the same.
  4. Runtime options are always obtained by normal merge in the target enclave. The user_arg string is used as command line equivalent. The availability of runtime options is subject to the EXECOPS setting of the target main program). The CEEUOPT that is linked with the nested enclave's load module is used during this option merge process.
  5. If the assembler user exit that is invoked for the nested enclave creation is found in the target load module (user-supplied) it is used. Otherwise the system default user exit is used.
  6. The HLL user exit that is invoked for nested enclave initialization is found in the target load module.