CELQGIPB — Provide interoperability parameter buffer below the bar
CELQGIPB provides an interoperability parameter buffer below the bar and returns the address of the buffer. This service can only be called in the AMODE 64 environment.
Syntax
void CELQGIPB(buf_len, ipb_addr, retcode)
INT4 *buf_len;
POINTER *ipb_addr;
INT4 *retcode;
- buf_len (input)
- A fullword integer that contains the buffer length that is passed by the caller. This parameter is required.
- ipb_addr(output)
- A pointer that points to the address of a piece of below the bar storage, or 0 if no storage obtained. This parameter is required.
- retcode(output)
- A fullword integer that indicates the return code of this service. It can contain one of the
following values:
- 0
- Service was performed successfully.
- 1
- Service was not performed successfully. Either there was a failure to allocate the buffer below the bar or the buffer length that the caller passed was 0.
- 2
- Service was not performed successfully. The depth, which refers to the number of CEL4RO31 entries in trace back of the same thread, is beyond limit 10.
- 3
- Service was not performed successfully. Service cannot be invoked in this thread because the other thread is in switching mode.
Call this CWI interface from assembler as follows:
- Input
-
- R1 has the argument.
- R5 has the environment.
- R6 has the entry point address.
- Output
-
- R3 has the argument.
- Code sequence to call this CWI
-
LLGT R6,X'4B8' Get CEELAA address LG R6,88(R6) Get CEELCA address LG R6,8(R6) Get CEECAA address LGF R6,X'448'(R6) Get 64bit fast vector address LG R5,96(R6) Get celqgipb environment LG R6,104(R6) Get celqgipb routine address BASR R7,R6 Branch to celqgipb
Call this CWI interface from c as follows:
#include <__le_cwi.h>
void CELQGIPB(uint32_t* buf_len,void** ipb_addr,uint32_t*
retcode);
Usage Notes:
- This service can only be invoked in AMODE 64 applications.
- The service is only used to provide Interoperability Parameter Buffer for service CEL4RO31.
- The buffer that is provided by service CELQGIPB is related to the depth of CEL4RO31. For each depth, there is a buffer. The Interoperability Parameter Buffer provided by CELQGIPB is for subsequent service CEL4RO31 to use. The depth refers to the number of CEL4RO31 entries in trace back of the same thread, which is maintained by CEL4RO31. When the depth is greater than 10, any call to service CELQGIPB will fail.
- CELQGIPB can only be invoked when no switching mode thread exists or the invoking thread is in switching mode. If no switching mode thread exists, once CELQGIPB is invoked the current thread is bound and other threads cannot invoke this function.
Examples
Refer to the examples in CEL4RO31 — Prepare and run programs in the AMODE 31 environment.