APIDefinitions.h
Go to the documentation of this file.
1 /*----------------------------------------------------------------------------*/
2 /* */
3 /* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4 /* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5 /* */
6 /* This program and the accompanying materials are made available under */
7 /* the terms of the Common Public License v1.0 which accompanies this */
8 /* distribution. A copy is also available at the following address: */
9 /* http://www.oorexx.org/license.html */
10 /* */
11 /* Redistribution and use in source and binary forms, with or */
12 /* without modification, are permitted provided that the following */
13 /* conditions are met: */
14 /* */
15 /* Redistributions of source code must retain the above copyright */
16 /* notice, this list of conditions and the following disclaimer. */
17 /* Redistributions in binary form must reproduce the above copyright */
18 /* notice, this list of conditions and the following disclaimer in */
19 /* the documentation and/or other materials provided with the distribution. */
20 /* */
21 /* Neither the name of Rexx Language Association nor the names */
22 /* of its contributors may be used to endorse or promote products */
23 /* derived from this software without specific prior written permission. */
24 /* */
25 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31 /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33 /* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36 /* */
37 /*----------------------------------------------------------------------------*/
38 /*********************************************************************/
39 /* REXX for UNIX APIDefinitions.h */
40 /*********************************************************************/
41 
42 #ifndef AIXAPI_H_INCLUDED
43 #define AIXAPI_H_INCLUDED
44 
45 #include "rexx.h"
46 /*** Structure of Rexx API registration block (APIBLOCK) */
47 
48 #define USERLENGTH 8 /* Length of saved user data */
49 #define MAXNAME 128
50 #define REGNOOFTYPES 3
51 
52 typedef struct apireg_node {
53  size_t next; /* number of the next block */
54  char apiname[MAXNAME]; /* routine name */
55  char apidll_name[MAXNAME]; /* module name */
56  char apidll_proc[MAXNAME]; /* procedure name */
57  char apiuser[USERLENGTH]; /* user area */
58  REXXPFN apiaddr; /* routine address */
59  void *apimod_handle; /* dynalink module handle */
60  size_t apidrop_auth; /* Permission to drop */
61  process_id_t apipid; /* Pid of Registrant */
62  process_id_t apiownpid; /* Pid of owner */
63  int apiFunRegFlag; /* Main reg set to >0< */
65 
67 
68 #define APISIZE sizeof(APIBLOCK) /* for size of API Block */
69 #define NAMESIZE 0x00ff /* size of a function name */
70 #define SZSTR(x) (x?strlen(x)+1:0) /* size of allocated string */
71 #define MAXARGS 20 /* max # args to func. or proc. */
72 #define YES 1
73 #define NO 0
74 
75 
76 
77 
78 #define NAMESIZE 0x00ff /* size of a function name */
79 
80 typedef struct _MACRO { /****** MACRO structure *******/
81  size_t next; /* pointer to next function */
82  char name[NAMESIZE]; /* function name */
83  RXSTRING temp_buf; /* temp buffer */
84  size_t image; /* pcode+literals image */
85  size_t i_size; /* size of image */
86  size_t srch_pos; /* search order position */
87  } MACRO; /******************************/
88  /******************************/
89 typedef MACRO *PMACRO; /* pointer to MACRO structure */
90  /******************************/
91 #define MACROSIZE sizeof(MACRO) /* size of MACRO structure */
92 #define PMNULL ((PMACRO *)0) /* null pointer to PMACRO */
93 #define SZSTR(x) (x?strlen(x)+1:0) /* size of allocated string */
94 
95 
96 /* Semaphore control structure. Used for the rexxutil semaphores */
97 typedef struct _SEMCONT {
98  char name[MAXNAME]; /* semaphore name */
99  int usecount; /* semaphore usecount */
100  int type; /* semaphore type: 0=Event */
101  /* 1=Mutex */
102  bool waitandreset; /* eventsem second new arg */
104 
105 #define EVENT 0 /* event semaphore */
106 #define MUTEX 1 /* mutex semaphore */
107 
108 #endif
struct _SEMCONT SEMCONT
MACRO * PMACRO
APIBLOCK * PAPIBLOCK
struct apireg_node APIBLOCK
struct _MACRO MACRO
#define MAXNAME
#define USERLENGTH
#define NAMESIZE
char name[NAMESIZE]
size_t next
RXSTRING temp_buf
size_t srch_pos
size_t i_size
size_t image
char name[MAXNAME]
bool waitandreset
process_id_t apiownpid
char apidll_name[MAXNAME]
char apiuser[USERLENGTH]
process_id_t apipid
size_t apidrop_auth
void * apimod_handle
char apiname[MAXNAME]
char apidll_proc[MAXNAME]
REXXPFN apiaddr
pid_t process_id_t
void * REXXPFN