gtpc2m18C/C++ Language Support User's Guide

crexc, __CREXC-Create a Low-Priority Deferred Entry

This macro creates a low-priority independent ECB for deferred processing.

A variable number of bytes may be passed to the created ECB's work area starting at EBW000. The TPF system moves the parameters into an interim block of available storage and adds this block to the deferred list. Operational program zero (OPZERO) initializes an ECB with the parameters in the work area, releases the interim block, and activates the specified program.

Format

#include   <tpfapi.h>
void       crexc(int length, const void *parm, void (*segname)());
void       __CREXC(int length, const void *parm, const char *segname);

length
An integer containing the number of bytes to be passed to the created ECB. A value of zero indicates that no parameters are to be passed. A maximum of 104 bytes may be passed.

parm
A pointer of type void to the parameters to be passed.

segname
For crexc, a pointer to the external function to be called. For __CREXC, a pointer to the name of the segment to be called. segname must map to an assembler segment name, a TARGET(TPF) segment name (or transfer vector), or a TPF ISO-C dynamic link module (DLM) name.
Migration to ISO-C consideration

The TARGET(TPF) crexc function can handle segment names that are #pragma mapped. The ISO-C crexc function only handles #pragma mapped names if the first 4 characters are the same as the program name.

TARGET(TPF) restriction

Only calls to certain TPF API functions permit the use of function pointers. Pointers to functions are not supported in TARGET(TPF); their use normally results in a compiler error.

Normal Return

Void.

Error Return

Not applicable.

Programming Considerations

Examples

The following example creates a deferred entry for program COT0, passing the string VPH as input data to the program.

#include <tpfapi.h>
void COT0();
char *parmstring = "VPH";

  ·
  ·
  ·
crexc(strlen(parmstring),parmstring,COT0);

Related Information