Files
org-hyperion-cules/hexterns.h
Ian Shorter 4035c417e6 Provide device initialization routine with number of devices
specifed on the configuation statement or attach command.
2015-01-19 11:23:42 +01:00

634 lines
22 KiB
C

/* HEXTERNS.H (c) Copyright Roger Bowler, 1999-2012 */
/* Hercules function prototypes... */
/* */
/* Released under "The Q Public License Version 1" */
/* (http://www.hercules-390.org/herclic.html) as modifications to */
/* Hercules. */
// This header auto-#included by 'hercules.h'...
//
// The <config.h> header and other required headers are
// presumed to have already been #included ahead of it...
#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 /* _HUTIL_DLL_ */
#define HHDL_DLL_IMPORT extern
#endif /* _HUTIL_DLL_ */
#else
#define HHDL_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _GETOPT_C_
#ifndef _HUTIL_DLL_
#define GOP_DLL_IMPORT DLL_IMPORT
#else /* _HUTIL_DLL_ */
#define GOP_DLL_IMPORT extern
#endif /* _HUTIL_DLL_ */
#else
#define GOP_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 _HSCMISC_C_
#ifndef _HENGINE_DLL_
#define HMISC_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define HMISC_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define HMISC_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _HSCEMODE_C_
#ifndef _HENGINE_DLL_
#define HCEM_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define HCEM_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define HCEM_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _HSCLOC_C_
#ifndef _HENGINE_DLL_
#define HCML_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define HCML_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define HCML_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _HSCPUFUN_C_
#ifndef _HENGINE_DLL_
#define HCPU_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define HCPU_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define HCPU_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 /* _HENGINE_DLL_ */
#define CONF_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define CONF_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _CHANNEL_C_
#ifndef _HENGINE_DLL_
#define CHAN_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define CHAN_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define CHAN_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _SCRIPT_C_
#ifndef _HENGINE_DLL_
#define SCRI_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define SCRI_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define SCRI_DLL_IMPORT DLL_EXPORT
#endif
#ifndef _BLDCFG_C_
#ifndef _HENGINE_DLL_
#define BLDC_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define BLDC_DLL_IMPORT extern
#endif /* _HENGINE_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
#ifndef _OPCODE_C_
#ifndef _HENGINE_DLL_
#define OPCD_DLL_IMPORT DLL_IMPORT
#else /* _HENGINE_DLL_ */
#define OPCD_DLL_IMPORT extern
#endif /* _HENGINE_DLL_ */
#else
#define OPCD_DLL_IMPORT DLL_EXPORT
#endif
#if defined( _MSC_VER ) && (_MSC_VER < VS2005)
// '_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 bldcfg.c */
int build_config (char *fname);
/* Functions in module script.c */
SCRI_DLL_IMPORT int process_config (char *fname);
SCRI_DLL_IMPORT int parse_args (char* p, int maxargc, char** pargv, int* pargc);
/* Functions in module config.c */
void release_config ();
CONF_DLL_IMPORT DEVBLK *find_device_by_devnum (U16 lcss, U16 devnum);
DEVBLK *find_device_by_subchan (U32 ioid);
#ifdef OPTION_SYNCIO
#define DEVREGS(_dev) devregs(_dev)
CONF_DLL_IMPORT REGS *devregs(DEVBLK *dev);
#else // OPTION_NOSYNCIO
#define DEVREGS(_dev) NULL
#endif // OPTION_SYNCIO
int attach_device (U16 lcss, U16 devnum, const char *devtype, int addargc,
char *addargv[], int numconfdev);
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);
CONF_DLL_IMPORT BYTE free_group(DEVGRP *group, int locked, const char *msg, DEVBLK *errdev);
int configure_cpu (int cpu);
int deconfigure_cpu (int cpu);
int configure_numcpu (int numcpu);
int configure_memlock(int);
int configure_memfree(int);
int configure_storage(U64);
int configure_xstorage(U64);
int configure_capping(U32 value);
int configure_herc_priority(int prio);
int configure_cpu_priority(int prio);
int configure_dev_priority(int prio);
int configure_tod_priority(int prio);
int configure_srv_priority(int prio);
int configure_shrdport(U16 shrdport);
#define MAX_ARGS 1024 /* 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);
CONF_DLL_IMPORT int readlogo(char *fn);
CONF_DLL_IMPORT void clearlogo(void);
CONF_DLL_IMPORT int parse_conkpalv(char* s, int* idle, int* intv, int* cnt );
/* Functions in module archlvl.c */
int set_archlvl(char *archname);
void init_als(REGS *regs);
BYTE als_update_pending(void);
/* 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);
void set_console_title(char * status);
#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 void hao_command(char *command); /* process hao command */
#endif /* defined(OPTION_HAO) */
/* Functions in module hsccmd.c (so PTT debugging patches can access them) */
int qproc_cmd(int argc, char *argv[], char *cmdline);
extern int g_numcpu; /* Number of CPUs */
extern int g_maxcpu; /* Maximum number of CPUs */
/* Functions in module hscpufun.c (so PTT debugging patches can access them) */
HCPU_DLL_IMPORT int stopall_cmd (int argc, char *argv[], char *cmdline);
int start_cmd_cpu (int argc, char *argv[], char *cmdline);
int stop_cmd_cpu (int argc, char *argv[], char *cmdline);
/* Functions in module hscemode.c (so PTT debugging patches can access them) */
HCEM_DLL_IMPORT int aia_cmd (int argc, char *argv[], char *cmdline);
/* Functions in module cmdtab.c */
CMDT_DLL_IMPORT int InternalHercCmd(char *cmdline); /* (NEVER for guest) */
CMDT_DLL_IMPORT int HercCmdLine (char *cmdline); /* (maybe guest cmd) */
/* Note: ALL arguments -- including argument 3 (cmdline) -- are REQUIRED */
CMDT_DLL_IMPORT int CallHercCmd (int argc, char **argv, char *cmdline);
/* Functions in module losc.c */
#if defined(OPTION_LPP_RESTRICT)
void losc_set (int license_status);
void losc_check(char *ostype);
#endif /*defined(OPTION_LPP_RESTRICT)*/
#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);
OPCD_DLL_IMPORT void *(replace_opcode_r) (int arch, zz_func inst, int opcode1, int opcode2);
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 *(*replace_opcode) (int arch, zz_func inst, int opcode1, int opcode2);
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);
void *replace_opcode (int arch, zz_func inst, int opcode1, int opcode2);
#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 httpserv.c */
int http_command(int argc, char *argv[]);
int http_startup(int isconfigcalling);
char *http_get_root();
char *http_get_port();
char *http_get_portauth();
/* 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();
int set_manufacturer(char *name);
LOADPARM_DLL_IMPORT char *str_manufacturer();
int set_plant(char *name);
LOADPARM_DLL_IMPORT char *str_plant();
int set_model(char *m1, char* m2, char* m3, char* m4);
LOADPARM_DLL_IMPORT char **str_model();
char *str_modelhard();
char *str_modelcapa();
char *str_modelperm();
char *str_modeltemp();
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);
unsigned int get_RealCPCount();
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);
LOADPARM_DLL_IMPORT char *str_sysname();
LOADPARM_DLL_IMPORT char *str_sysplex();
LOADPARM_DLL_IMPORT char *str_systype();
void get_vmid(BYTE *name);
void set_vmid(BYTE *name);
LOADPARM_DLL_IMPORT char *str_vmid();
void get_cpid(BYTE *name);
void set_cpmid(BYTE *name);
LOADPARM_DLL_IMPORT char *str_cpid();
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 registerLogCallback(LOGCALLBACK);
IMPL_DLL_IMPORT COMMANDHANDLER getCommandHandler(void);
/* Functions in module timer.c */
void *timer_update_thread (void *argp);
void *capping_manager_thread(void *argp);
/* Functions in module clock.c */
void update_TOD_clock (void);
int configure_epoch(int);
int configure_yroffset(int);
int configure_tzoffset(int);
/* Functions in module service.c */
int scp_command (char *command, int priomsg, int echo);
int can_signal_quiesce ();
int can_send_command ();
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, U32 count, BYTE prevcode, int ccwseq,
BYTE *iobuf, BYTE *more, BYTE *unitstat, U32 *residual );
int ckddasd_close_device ( DEVBLK *dev );
void ckddasd_query_device (DEVBLK *dev, char **devclass,
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, U32 *residual);
FBA_DLL_IMPORT void fbadasd_read_block
( DEVBLK *dev, int blknum, int blksize, int blkfactor,
BYTE *iobuf, BYTE *unitstat, U32 *residual );
FBA_DLL_IMPORT void fbadasd_write_block
( DEVBLK *dev, int blknum, int blksize, int blkfactor,
BYTE *iobuf, BYTE *unitstat, U32 *residual );
int fbadasd_init_handler ( DEVBLK *dev, int argc, char *argv[]);
void fbadasd_execute_ccw ( DEVBLK *dev, BYTE code, BYTE flags,
BYTE chained, U32 count, BYTE prevcode, int ccwseq,
BYTE *iobuf, BYTE *more, BYTE *unitstat, U32 *residual );
int fbadasd_close_device ( DEVBLK *dev );
void fbadasd_query_device (DEVBLK *dev, char **devclass,
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();
int display_regs (REGS *regs, char *buf, int buflen, char *hdr);
int display_fregs (REGS *regs, char *buf, int buflen,char *hdr);
int display_cregs (REGS *regs, char *buf, int buflen, char *hdr);
int display_aregs (REGS *regs, char *buf, int buflen, char *hdr);
int display_subchannel (DEVBLK *dev, char *buf, int buflen, char *hdr);
const char* FormatCRW( U32 crw, char* buf, size_t bufsz );
const char* FormatORB( ORB* orb, char* buf, size_t bufsz );
const char* FormatSCL( ESW* esw, char* buf, size_t bufsz );
const char* FormatERW( ESW* esw, char* buf, size_t bufsz );
const char* FormatESW( ESW* esw, char* buf, size_t bufsz );
HMISC_DLL_IMPORT const char* FormatSID( BYTE* iobuf, int num, char* buf, size_t bufsz );
HMISC_DLL_IMPORT const char* FormatRCD( BYTE* iobuf, int num, char* buf, size_t bufsz );
HMISC_DLL_IMPORT const char* FormatRNI( BYTE* iobuf, int num, char* buf, size_t bufsz );
void get_connected_client (DEVBLK* dev, char** pclientip, char** pclientname);
void alter_display_real (REGS *regs, int argc, char *argv[], char *cmdline);
void alter_display_virt (REGS *regs, int argc, char *argv[], char *cmdline);
void disasm_stor (REGS *regs, int argc, char *argv[], char *cmdline);
int drop_privileges(int capa);
#if defined(ENABLE_OBJECT_REXX) || defined(ENABLE_REGINA_REXX)
/* Functions in module hrexx.c */
int rexx_cmd(int argc, char *argv[],char *cmdline);
int exec_cmd(int argc, char *argv[],char *cmdline);
#endif /* defined(ENABLE_OBJECT_REXX) || defined(ENABLE_REGINA_REXX) */
/* 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 */
#ifdef FEATURE_MESSAGE_SECURITY_ASSIST_EXTENSION_3
void renew_wrapping_keys(void);
#endif
/* Function in getopt.c */
GOP_DLL_IMPORT int opterr; /* if error message should be printed */
GOP_DLL_IMPORT int optind; /* index into parent argv vector */
GOP_DLL_IMPORT int optopt; /* character checked for validity */
GOP_DLL_IMPORT int optreset; /* reset getopt */
GOP_DLL_IMPORT char* optarg; /* argument associated with option */
GOP_DLL_IMPORT int getopt ( int nargc, char * const *nargv, const char *options );
GOP_DLL_IMPORT int getopt_long ( int nargc, char * const *nargv, const char *options, const struct option *long_options, int *idx );
/* Function in channel.c */
void shared_iowait (DEVBLK *dev);
CHAN_DLL_IMPORT int device_attention (DEVBLK *dev, BYTE unitstat);
CHAN_DLL_IMPORT int ARCH_DEP(device_attention) (DEVBLK *dev, BYTE unitstat);
CHAN_DLL_IMPORT void Queue_IO_Interrupt (IOINT* io, U8 clrbsy);
CHAN_DLL_IMPORT void Queue_IO_Interrupt_QLocked (IOINT* io, U8 clrbsy);
CHAN_DLL_IMPORT int Dequeue_IO_Interrupt (IOINT* io);
CHAN_DLL_IMPORT int Dequeue_IO_Interrupt_QLocked (IOINT* io);
CHAN_DLL_IMPORT void Update_IC_IOPENDING ();
CHAN_DLL_IMPORT void Update_IC_IOPENDING_QLocked ();
#define QUEUE_IO_INTERRUPT Queue_IO_Interrupt
#define QUEUE_IO_INTERRUPT_QLOCKED Queue_IO_Interrupt_QLocked
#define DEQUEUE_IO_INTERRUPT Dequeue_IO_Interrupt
#define DEQUEUE_IO_INTERRUPT_QLOCKED Dequeue_IO_Interrupt_QLocked
#define UPDATE_IC_IOPENDING Update_IC_IOPENDING
#define UPDATE_IC_IOPENDING_QLOCKED Update_IC_IOPENDING_QLocked
#endif // _HEXTERNS_H