/
hexterns.h
432 lines (383 loc) · 15.2 KB
/
hexterns.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
/* HEXTERNS.H (c) Copyright Roger Bowler, 1999-2009 */
/* Hercules function prototypes */
#ifndef _HEXTERNS_H
#define _HEXTERNS_H
#include "hercules.h"
// Define all DLL Imports depending on current file
#ifndef _HSYS_C_
#define HSYS_DLL_IMPORT DLL_IMPORT
#else /* _HSYS_C_ */
#define HSYS_DLL_IMPORT DLL_EXPORT
#endif /* _HSYS_C_ */
#ifndef _CCKDDASD_C_
#ifndef _HDASD_DLL_
#define CCKD_DLL_IMPORT DLL_IMPORT
#else /* _HDASD_DLL_ */
#define CCKD_DLL_IMPORT extern
#endif /* _HDASD_DLL_ */
#else
#define CCKD_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _HDL_C_
#ifndef _HUTIL_DLL_
#define HHDL_DLL_IMPORT DLL_IMPORT
#else /* _HDASD_DLL_ */
#define HHDL_DLL_IMPORT extern
#endif /* _HDASD_DLL_ */
#else
#define HHDL_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _HSCCMD_C_
#ifndef _HENGINE_DLL_
#define HCMD_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define HCMD_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define HCMD_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _CMDTAB_C_
#ifndef _HENGINE_DLL_
#define CMDT_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define CMDT_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define CMDT_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _HAO_C_
#ifndef _HENGINE_DLL_
#define HAO_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define HAO_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define HAO_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _PANEL_C_
#ifndef _HENGINE_DLL_
#define HPAN_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define HPAN_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define HPAN_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _IMPL_C_
#ifndef _HENGINE_DLL_
#define IMPL_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define IMPL_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define IMPL_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _CCKDUTIL_C_
#ifndef _HDASD_DLL_
#define CCDU_DLL_IMPORT DLL_IMPORT
#else /* _HDASD_DLL_ */
#define CCDU_DLL_IMPORT extern
#endif /* _HDASD_DLL_ */
#else
#define CCDU_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _CONFIG_C_
#ifndef _HENGINE_DLL_
#define CONF_DLL_IMPORT DLL_IMPORT
#else /* _HDASD_DLL_ */
#define CONF_DLL_IMPORT extern
#endif /* _HDASD_DLL_ */
#else
#define CONF_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _BLDCFG_C_
#ifndef _HENGINE_DLL_
#define BLDC_DLL_IMPORT DLL_IMPORT
#else /* _HDASD_DLL_ */
#define BLDC_DLL_IMPORT extern
#endif /* _HDASD_DLL_ */
#else
#define BLDC_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _SERVICE_C_
#ifndef _HENGINE_DLL_
#define SERV_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define SERV_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define SERV_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _LOADPARM_C_
#ifndef _HENGINE_DLL_
#define LOADPARM_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define LOADPARM_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define LOADPARM_DLL_IMPORT DLL_EXPORT
#endif
#if defined( _MSC_VER ) && (_MSC_VER >= 1300) && (_MSC_VER < 1400)
// '_ftol' is defined in MSVCRT.DLL
// '_ftol2' we define ourselves in "w32ftol2.c"
extern long _ftol ( double dblSource );
extern long _ftol2( double dblSource );
#endif
#if !defined(HAVE_STRSIGNAL)
const char* strsignal(int signo); // (ours is in 'strsignal.c')
#endif
#if defined(HAVE_SETRESUID)
/* (the following missing from SUSE 7.1) */
int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid);
int setresuid(uid_t ruid, uid_t euid, uid_t suid);
int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
#endif
/* Function used to compare filenames */
#if defined(MIXEDCASE_FILENAMES_ARE_UNIQUE)
#define strfilenamecmp strcmp
#define strnfilenamecmp strncmp
#else
#define strfilenamecmp strcasecmp
#define strnfilenamecmp strncasecmp
#endif
/* Global data areas in module config.c */
HSYS_DLL_IMPORT SYSBLK sysblk; /* System control block */
CCKD_DLL_IMPORT CCKDBLK cckdblk; /* CCKD global block */
#ifdef EXTERNALGUI
HSYS_DLL_IMPORT int extgui; // __attribute__ ((deprecated));
/* The external gui interface is now external and now uses the
HDC(debug_cpu_state, regs) interface */
#endif /*EXTERNALGUI*/
/* Functions in module config.c or bldcfg.c */
void build_config (char *fname);
void release_config ();
CONF_DLL_IMPORT DEVBLK *find_device_by_devnum (U16 lcss, U16 devnum);
DEVBLK *find_device_by_subchan (U32 ioid);
REGS *devregs(DEVBLK *dev);
DEVBLK *get_devblk (U16 lcss, U16 devnum);
void ret_devblk (DEVBLK *dev);
int attach_device (U16 lcss, U16 devnum, const char *devtype, int addargc,
char *addargv[]);
int detach_subchan (U16 lcss, U16 subchan);
int detach_device (U16 lcss, U16 devnum);
int define_device (U16 lcss, U16 olddev, U16 newdev);
CONF_DLL_IMPORT int group_device(DEVBLK *dev, int members);
int configure_cpu (int cpu);
int deconfigure_cpu (int cpu);
BLDC_DLL_IMPORT int parse_args (char* p, int maxargc, char** pargv, int* pargc);
#define MAX_ARGS 128 /* Max argv[] array size */
int parse_and_attach_devices(const char *devnums,const char *devtype,int ac,char **av);
CONF_DLL_IMPORT int parse_single_devnum(const char *spec, U16 *lcss, U16 *devnum);
int parse_single_devnum_silent(const char *spec, U16 *lcss, U16 *devnum);
int readlogo(char *fn);
void clearlogo(void);
CONF_DLL_IMPORT int parse_conkpalv(char* s, int* idle, int* intv, int* cnt );
#if defined( OPTION_TAPE_AUTOMOUNT )
BLDC_DLL_IMPORT int add_tamdir( char *tamdir, TAMDIR **ppTAMDIR );
#endif /* OPTION_TAPE_AUTOMOUNT */
/* Global data areas and functions in module cpu.c */
extern const char* arch_name[];
extern const char* get_arch_mode_string(REGS* regs);
/* Functions in module panel.c */
void expire_kept_msgs(int unconditional);
#ifdef OPTION_MIPS_COUNTING
HPAN_DLL_IMPORT U32 maxrates_rpt_intvl; // (reporting interval)
HPAN_DLL_IMPORT U32 curr_high_mips_rate; // (high water mark for current interval)
HPAN_DLL_IMPORT U32 curr_high_sios_rate; // (high water mark for current interval)
HPAN_DLL_IMPORT U32 prev_high_mips_rate; // (saved high water mark for previous interval)
HPAN_DLL_IMPORT U32 prev_high_sios_rate; // (saved high water mark for previous interval)
HPAN_DLL_IMPORT time_t curr_int_start_time; // (start time of current interval)
HPAN_DLL_IMPORT time_t prev_int_start_time; // (start time of previous interval)
HPAN_DLL_IMPORT void update_maxrates_hwm(); // (update high-water-mark values)
#endif // OPTION_MIPS_COUNTING
/* Functions in module hao.c (Hercules Automatic Operator) */
#if defined(OPTION_HAO)
HAO_DLL_IMPORT int hao_initialize(void); /* initialize hao */
HAO_DLL_IMPORT void hao_command(char *command); /* process hao command */
HAO_DLL_IMPORT void hao_message(char *message); /* process message */
#endif /* defined(OPTION_HAO) */
/* Functions in module hsccmd.c (so PTT debugging patches can access them) */
HCMD_DLL_IMPORT int aia_cmd (int argc, char *argv[], char *cmdline);
HCMD_DLL_IMPORT int stopall_cmd (int argc, char *argv[], char *cmdline);
HCMD_DLL_IMPORT int devinit_cmd (int argc, char *argv[], char *cmdline); /* Used in ctcadpt.c for CTCE recovery @PJJ */
/* Functions in module cmdtab.c */
CMDT_DLL_IMPORT int ProcessConfigCommand (int argc, char **argv, char *cmdline);
/* Functions in losc.c */
void losc_set (int license_status);
void losc_check(char *ostype);
#if defined(OPTION_DYNAMIC_LOAD)
HHDL_DLL_IMPORT char *(*hdl_device_type_equates) (const char *);
CMDT_DLL_IMPORT void *(panel_command_r) (void *cmdline);
HPAN_DLL_IMPORT void (panel_display_r) (void);
HSYS_DLL_IMPORT int (*config_command) (int argc, char *argv[], char *cmdline);
HSYS_DLL_IMPORT int (*system_command) (int argc, char *argv[], char *cmdline);
HSYS_DLL_IMPORT void (*daemon_task) (void);
HSYS_DLL_IMPORT void (*panel_display) (void);
HSYS_DLL_IMPORT void *(*panel_command) (void *);
HSYS_DLL_IMPORT void *(*debug_device_state) (DEVBLK *);
HSYS_DLL_IMPORT void *(*debug_cpu_state) (REGS *);
HSYS_DLL_IMPORT void *(*debug_cd_cmd) (char *);
HSYS_DLL_IMPORT void *(*debug_watchdog_signal) (REGS *);
HSYS_DLL_IMPORT void *(*debug_program_interrupt) (REGS *, int);
HSYS_DLL_IMPORT void *(*debug_diagnose) (U32, int, int, REGS *);
HSYS_DLL_IMPORT void *(*debug_iucv) (int, VADR, REGS *);
HSYS_DLL_IMPORT void *(*debug_sclp_unknown_command) (U32, void *, REGS *);
HSYS_DLL_IMPORT void *(*debug_sclp_unknown_event) (void *, void *, REGS *);
HSYS_DLL_IMPORT void *(*debug_sclp_unknown_event_mask) (void *, void *, REGS *);
HSYS_DLL_IMPORT void *(*debug_chsc_unknown_request) (void *, void *, REGS *);
HSYS_DLL_IMPORT void *(*debug_sclp_event_data) (void *, void *, REGS *);
#else
void *panel_command (void *cmdline);
void panel_display (void);
#define debug_cpu_state NULL
#define debug_cd_cmd NULL
#define debug_device_state NULL
#define debug_program_interrupt NULL
#define debug_diagnose NULL
#define debug_iucv NULL
#define debug_sclp_unknown_command NULL
#define debug_sclp_unknown_event NULL
#define debug_sclp_event_data NULL
#define debug_chsc_unknown_request NULL
#define debug_watchdog_signal NULL
#endif
/* Functions in module loadparm.c */
void set_loadparm(char *name);
void get_loadparm(BYTE *dest);
char *str_loadparm();
void set_lparname(char *name);
void get_lparname(BYTE *dest);
LOADPARM_DLL_IMPORT char *str_lparname();
void set_manufacturer(char *name);
void set_plant(char *name);
void set_model(int argc, char *m1, char* m2, char* m3, char* m4);
void get_manufacturer(BYTE *name);
void get_plant(BYTE *name);
void get_model(BYTE *name);
void get_modelcapa(BYTE *name);
void get_modelperm(BYTE *name);
void get_modeltemp(BYTE *name);
void get_sysname(BYTE *name);
void get_systype(BYTE *name);
void get_sysplex(BYTE *name);
void set_sysname(BYTE *name);
void set_systype(BYTE *name);
void set_sysplex(BYTE *name);
void get_mpfactors(BYTE *dest);
/* Functions in module impl.c */
IMPL_DLL_IMPORT void system_cleanup(void);
typedef void (*LOGCALLBACK)(const char *,size_t);
typedef void *(*COMMANDHANDLER)(void *);
IMPL_DLL_IMPORT int impl(int,char **);
IMPL_DLL_IMPORT void regiserLogCallback(LOGCALLBACK);
IMPL_DLL_IMPORT COMMANDHANDLER getCommandHandler(void);
/* Functions in module timer.c */
void update_TOD_clock (void);
void *timer_update_thread (void *argp);
/* Functions in module service.c */
void scp_command (char *command, int priomsg);
int can_signal_quiesce ();
int signal_quiesce (U16 count, BYTE unit);
void sclp_attention(U16 type);
void sclp_reset();
SERV_DLL_IMPORT void sclp_sysg_attention();
int servc_hsuspend(void *file);
int servc_hresume(void *file);
/* Functions in module ckddasd.c */
void ckd_build_sense ( DEVBLK *, BYTE, BYTE, BYTE, BYTE, BYTE);
int ckddasd_init_handler ( DEVBLK *dev, int argc, char *argv[]);
void ckddasd_execute_ccw ( DEVBLK *dev, BYTE code, BYTE flags,
BYTE chained, U16 count, BYTE prevcode, int ccwseq,
BYTE *iobuf, BYTE *more, BYTE *unitstat, U16 *residual );
int ckddasd_close_device ( DEVBLK *dev );
void ckddasd_query_device (DEVBLK *dev, char **class,
int buflen, char *buffer);
int ckddasd_hsuspend ( DEVBLK *dev, void *file );
int ckddasd_hresume ( DEVBLK *dev, void *file );
/* Functions in module fbadasd.c */
FBA_DLL_IMPORT void fbadasd_syncblk_io (DEVBLK *dev, BYTE type, int blknum,
int blksize, BYTE *iobuf, BYTE *unitstat, U16 *residual);
FBA_DLL_IMPORT void fbadasd_read_block
( DEVBLK *dev, int blknum, int blksize, int blkfactor,
BYTE *iobuf, BYTE *unitstat, U16 *residual );
FBA_DLL_IMPORT void fbadasd_write_block
( DEVBLK *dev, int blknum, int blksize, int blkfactor,
BYTE *iobuf, BYTE *unitstat, U16 *residual );
int fbadasd_init_handler ( DEVBLK *dev, int argc, char *argv[]);
void fbadasd_execute_ccw ( DEVBLK *dev, BYTE code, BYTE flags,
BYTE chained, U16 count, BYTE prevcode, int ccwseq,
BYTE *iobuf, BYTE *more, BYTE *unitstat, U16 *residual );
int fbadasd_close_device ( DEVBLK *dev );
void fbadasd_query_device (DEVBLK *dev, char **class,
int buflen, char *buffer);
int fbadasd_hsuspend ( DEVBLK *dev, void *file );
int fbadasd_hresume ( DEVBLK *dev, void *file );
/* Functions in module cckddasd.c */
DEVIF cckddasd_init_handler;
int cckddasd_close_device (DEVBLK *);
int cckd_read_track (DEVBLK *, int, BYTE *);
int cckd_update_track (DEVBLK *, int, int, BYTE *, int, BYTE *);
int cfba_read_block (DEVBLK *, int, BYTE *);
int cfba_write_block (DEVBLK *, int, int, BYTE *, int, BYTE *);
CCKD_DLL_IMPORT void *cckd_sf_add (void *);
CCKD_DLL_IMPORT void *cckd_sf_remove (void *);
CCKD_DLL_IMPORT void *cckd_sf_stats (void *);
CCKD_DLL_IMPORT void *cckd_sf_comp (void *);
CCKD_DLL_IMPORT void *cckd_sf_chk (void *);
CCKD_DLL_IMPORT int cckd_command(char *, int);
CCKD_DLL_IMPORT void cckd_print_itrace ();
/* Functions in module cckdutil.c */
CCDU_DLL_IMPORT int cckd_swapend (DEVBLK *);
CCDU_DLL_IMPORT void cckd_swapend_chdr (CCKD_DEVHDR *);
CCDU_DLL_IMPORT void cckd_swapend_l1 (CCKD_L1ENT *, int);
CCDU_DLL_IMPORT void cckd_swapend_l2 (CCKD_L2ENT *);
CCDU_DLL_IMPORT void cckd_swapend_free (CCKD_FREEBLK *);
CCDU_DLL_IMPORT void cckd_swapend4 (char *);
CCDU_DLL_IMPORT void cckd_swapend2 (char *);
CCDU_DLL_IMPORT int cckd_endian ();
CCDU_DLL_IMPORT int cckd_comp (DEVBLK *);
CCDU_DLL_IMPORT int cckd_chkdsk (DEVBLK *, int);
CCDU_DLL_IMPORT void cckdumsg (DEVBLK *, int, char *, ...);
/* Functions in module hscmisc.c */
int herc_system (char* command);
void do_shutdown();
void display_regs (REGS *regs);
void display_fregs (REGS *regs);
void display_cregs (REGS *regs);
void display_aregs (REGS *regs);
void display_subchannel (DEVBLK *dev);
void get_connected_client (DEVBLK* dev, char** pclientip, char** pclientname);
void alter_display_real (char *opnd, REGS *regs);
void alter_display_virt (char *opnd, REGS *regs);
void disasm_stor(REGS *regs, char *opnd);
int drop_privileges(int capa);
/* Functions in module sr.c */
int suspend_cmd(int argc, char *argv[],char *cmdline);
int resume_cmd(int argc, char *argv[],char *cmdline);
/* Functions in ecpsvm.c that are not *direct* instructions */
/* but support functions either used by other instruction */
/* functions or from somewhere else */
#ifdef FEATURE_ECPSVM
int ecpsvm_dosvc(REGS *regs, int svccode);
int ecpsvm_dossm(REGS *regs,int b,VADR ea);
int ecpsvm_dolpsw(REGS *regs,int b,VADR ea);
int ecpsvm_dostnsm(REGS *regs,int b,VADR ea,int imm);
int ecpsvm_dostosm(REGS *regs,int b,VADR ea,int imm);
int ecpsvm_dosio(REGS *regs,int b,VADR ea);
int ecpsvm_dodiag(REGS *regs,int r1,int r3,int b2,VADR effective_addr2);
int ecpsvm_dolctl(REGS *regs,int r1,int r3,int b2,VADR effective_addr2);
int ecpsvm_dostctl(REGS *regs,int r1,int r3,int b2,VADR effective_addr2);
int ecpsvm_doiucv(REGS *regs,int b2,VADR effective_addr2);
int ecpsvm_virttmr_ext(REGS *regs);
#endif
/* Functions in module w32ctca.c */
#if defined(OPTION_W32_CTCI)
HSYS_DLL_IMPORT int (*debug_tt32_stats) (int);
HSYS_DLL_IMPORT void (*debug_tt32_tracing) (int);
#endif // defined(OPTION_W32_CTCI)
/* Function in crypto.c */
#if defined(_FEATURE_MESSAGE_SECURITY_ASSIST)
void renew_wrapping_keys(void);
#endif
#endif // _HEXTERNS_H