acnet_callbacks_h

/*
**	Copyright 1994, Universities Research Association.  All rights reserved.
*/
/******************************************************************************/
/* acnet_callbacks.h
**  
**	defined constants and data structures to support ACNET callback
**	communications
**
*/
/******************************************************************************/

#ifndef ACNET_CALLBACKS_DEFINED			/* do this only once */
#define	ACNET_CALLBACKS_DEFINED

#include "cnsparam.h"
#include "cns_data_structs.h"
#include "clib.h"
#include "cbslib.h"

#define	ACB_FUNC_NAME_LEN		32	/* function name length */

#define	ACB_ALL_ENTRIES			-1	/* return all entries */

/*
**  CLIB memory management routines ...
*/
#define	MEM_ACB_TC_REQUEST_STATS	1	/* request memory statistics */
#define	MEM_ACB_TC_DIAG_ON		2	/* turn on memory diagnostics */
#define	MEM_ACB_TC_DIAG_CLEAR		3	/* clear memory diagnostics */
#define	MEM_ACB_TC_ANALYZE_MEM		4	/* analyze dynamic memory */
#define	MEM_ACB_TC_READ_HEADER		5	/* read memory block header */
#define	MEM_ACB_TC_READ_MEMORY		6	/* read memory */
#define	MEM_ACB_TC_MEM_ENABLE		7	/* enable memory allocation and deallocation */
#define	MEM_ACB_TC_MEM_DISABLE		8	/* disable memory allocation and deallocation */
#define	MEM_ACB_TC_DUMP_MEMORY		9	/* dump memory */

#define	MEM_ACB_TCSUB_READ_FIRST	1	/* read first block */
#define	MEM_ACB_TCSUB_READ_PREVIOUS	2	/* read previous block */
#define	MEM_ACB_TCSUB_READ_NEXT		3	/* read next block */
#define	MEM_ACB_TCSUB_READ_LAST		4	/* read last block */
#define	MEM_ACB_TCSUB_READ_NUMBER	5	/* read specified block */
#define	MEM_ACB_TCSUB_READ_ALL		6	/* read all blocks */

#define	MEM_ACB_OUTPUT_NORMAL		0	/* output returns in network reply */
#define	MEM_ACB_OUTPUT_MAIL		1	/* output goes to mail message */
#define	MEM_ACB_OUTPUT_STDOUT		2	/* output goes to standard output */

#define	MEM_REQMASK_MALLOC_WRITE	1	/* turn on malloc memory fills */
#define	MEM_REQMASK_FREE_WRITE		2	/* turn on free memory fills */
#define	MEM_REQMASK_MALLOC_TRACE	4	/* turn on malloc memory traces */
#define	MEM_REQMASK_FREE_TRACE		8	/* turn on free memory traces */

#define	MEM_PARAM_MAX_OUT_SPEC_LEN	64	/* output specifier length */

typedef struct MEM_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_MEMORY */
    short	type_code;			/* memory callback main type code */
    short	subtype;			/* memory callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    unsigned char	malloc_fill_char;	/* malloc memory fill character (meaningless for statistics request) */
    unsigned char	free_fill_char;		/* free memory fill character (meaningless for statistics request) */
    char	*read_address;			/* read address for memory read */
    short	output;				/* output type */
    /* On Linux the output specifier when used for email, must be a "real" email
       address, i.e., no SMTP% or DECNET(almond::hendricks) addresses. */
    char	output_specifier[MEM_PARAM_MAX_OUT_SPEC_LEN];	/* output specifier string */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ MEM_ACB_REQUEST;

#define	MEM_PARAM_REPLY_FILLER		3786	/* reply structure filler size */

typedef struct MEM_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    unsigned short	analysis_mode;
    unsigned short	analysis_mode_pending;
    unsigned int	num_alloc_blocks;
    unsigned int	dynamic_memory;
    unsigned int	free_errors;
    unsigned int	malloc_errors;
    unsigned int	realloc_errors;
    unsigned short	bad_alloc_list;
    unsigned short	bad_block_header;
    unsigned int	bad_header_block_num;
    unsigned short	bad_block_footer;
    unsigned int	bad_footer_block_num;
    unsigned int	num_printfs;
    unsigned int	malloc_calls;		/* # of calls to */
    unsigned int	calloc_calls;		/* # of calls to */
    unsigned int	realloc_calls;		/* # of calls to */
    unsigned int	free_calls;		/* # of calls to */
    unsigned int	min_allocation;
    unsigned int	max_allocation;
    unsigned short	malloc_fill;
    unsigned short	free_fill;
    unsigned char	malloc_fill_char;
    unsigned char	free_fill_char;
    unsigned short	malloc_trace;
    unsigned short	free_trace;
    unsigned int	memory_disabled;
    unsigned int	allocation_size_errors;	/* number of allocation requests with invalid sizes */
    unsigned int	last_block_read_id;	/* ID of last block read */
    unsigned int	current_block_id;	/* current block ID */
    unsigned int	footer_length;		/* number of footer to structures to insert after each block */
    unsigned int	num_trace_errors;	/* number of memory trace errors reported */
    unsigned int	memory_analyze_calls;	/* # of calls to */
    unsigned int	memory_diagnostic_contrl_calls;	/* # of calls to */
    unsigned int	memory_block_length_calls;	/* # of calls to */
    char		unused[MEM_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ MEM_ACB_REPLY;

typedef struct MEM_ACB_READ_BLOCK		/* ACNET callback read memory block structure */
    {
    char	*address;
    char	*prev_block;
    char	*next_block;
    char	*data_address;			/* address of data area */
    unsigned int	num_bytes;		/* length of data area in bytes */
    unsigned int	caller_pc;		/* PC of allocater */
    int		footer;				/* footer data */
    unsigned int	block_id;		/* block ID */
    unsigned int	footer_block_id;	/* block ID (from footer) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ MEM_ACB_READ_BLOCK;

#define	MEM_PARAM_MAX_MEM_BLOCKS	105	/* maximum number of memory blocks to return */

typedef struct MEM_ACB_READ_BLOCK_REPLY		/* ACNET callback read memory block reply structure */
    {
    short	status;				/* returned status of request */
    unsigned int	num_blocks;		/* number of blocks returned */
    unsigned int	num_blocks_total;	/* total number of blocks in memory */
    MEM_ACB_READ_BLOCK	blocks[MEM_PARAM_MAX_MEM_BLOCKS];	/* returned memory blocks */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ MEM_ACB_READ_BLOCK_REPLY;

#define	MEM_PARAM_MAX_READ_BYTES	3840	/* maximum number of bytes to read */

typedef struct MEM_ACB_READ_MEM_REPLY		/* ACNET callback read memory reply structure */
    {
    short	status;				/* returned status of request */
    short	num_bytes;			/* number of bytes returned */
    char	memory[MEM_PARAM_MAX_READ_BYTES];	/* returned data */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ MEM_ACB_READ_MEM_REPLY;

/* end of memory management */


/*
**  WNLIB graphics routines ...
*/
#define	WNLIB_ACB_TC_REQUEST_STATS	1	/* request graphics statistics */
#define	WNLIB_ACB_TC_DIAG_CLEAR		3	/* clear WNLIB diagnostics */
#define	WNLIB_ACB_TC_WIN_INFO		5	/* read window information */
#define	WNLIB_ACB_TC_SWITCH_INFO	6	/* read switch information */
#define	WNLIB_ACB_TC_WINDOW_LIST	15	/* request the list of windows */
#define	WNLIB_ACB_TC_SWITCH_LIST	21	/* request the list of switches */

typedef struct WNLIB_ACB_REQUEST		/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_WNLIB */
    short	type_code;			/* WNLIB callback main type code */
    short	subtype;			/* WNLIB callback secondary type code */
    int		item_id;			/* window or switch ID */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_ACB_REQUEST;

#define	WNLIB_PARAM_NUM_SCREENS		2	/* number of graphics screens */

typedef struct WNLIB_RECTANGLE
    {
    int		x1;
    int		y1;
    int		x2;
    int		y2;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_RECTANGLE;

typedef struct WNLIB_GLOBAL_VALUES		/* WNLIB routines data save structure */
    {
    int		active;				/* active graphics window */
    int		last;				/* last accessed graphics window */
    int		clipon;				/* window clipping flag  */
    int		color;				/* current drawing color */
    int		draw_mode[WNLIB_PARAM_NUM_SCREENS];	/* current drawing mode */
    int		vector_width[WNLIB_PARAM_NUM_SCREENS];	/* current vector width */
    int		vector_pattern[WNLIB_PARAM_NUM_SCREENS];	/* current vector pattern */
    int		vector_pattern_size[WNLIB_PARAM_NUM_SCREENS];	/* current vector pattern size */
    int		vector_pattern_separation[WNLIB_PARAM_NUM_SCREENS];	/* current vector pattern separation */
    int		text_size[WNLIB_PARAM_NUM_SCREENS];	/* current text size */
    int		text_rot[WNLIB_PARAM_NUM_SCREENS];	/* current text rotation */
    int		text_mode[WNLIB_PARAM_NUM_SCREENS];	/* current text drawing mode */
    int		text_video[WNLIB_PARAM_NUM_SCREENS];	/* current text video mode */
    int		fill_mode[WNLIB_PARAM_NUM_SCREENS];	/* current closed object fill mode */
    int		border_width[WNLIB_PARAM_NUM_SCREENS];	/* line width for closed objects */
    WNLIB_RECTANGLE	clip_region[WNLIB_PARAM_NUM_SCREENS];	/* current clipping regions */
    int		bkgd_color;			/* current window background color */
    int		text_scaling;			/* current text scaling */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_GLOBAL_VALUES;

typedef	struct WNLIB_SYMBOL_ATTR		/* plot symbol attributes */
    {
    char	symb_name[LEN_LEXOBJECT];	/* current symbol name */
    short 	symb_rot;			/* symbol rotation */
    short 	symb_i1;			/* symbol identifiers... */
    short 	symb_i2;
    short 	symb_i3;
    short 	symb_i4;
    short 	symb_i5;
    short 	symb_i6;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_SYMBOL_ATTR;

#define	WNLIB_PARAM_REPLY_FILLER	3138	/* reply structure filler size */

typedef struct WNLIB_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    unsigned int	num_errors;		/* total number of errors */
    short	last_error;			/* last error detected */
    char	last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected */
    char	last_invarg_func[ACB_FUNC_NAME_LEN+2];	/* function in which last invalid argument error was detected */
    int		last_invarg_num;		/* last invalid argument number */
    int		last_error_window;		/* window ID of last error */
    int		last_error_switch;		/* switch ID of last error */
    unsigned short	num_windows;		/* number of windows */
    int		top_window;			/* ID of the last window created */
    int		last_window_created;		/* ID of last new window created */
    unsigned int	creator_caller_pc;	/* PC of window creator */
    int		last_window_deleted;		/* ID of last window deleted */
    unsigned int	deleter_caller_pc;	/* PC of window deleter */
    short	create_screen;			/* output graphics screen for new windows */
    short	active_screen;			/* current output graphics screen */
    int		active_screen_index;		/* index to active screen */
    int		is_pa;				/* flag indicating whether or not this is a PA */
    int		current_window;			/* next available window ID */
    int		exposed;			/* window exposed flag */
    unsigned int	num_cursor_update_errors;	/* total number of cursor update errors */
    int		cursor_is_on;			/* graphics cursor state */
    int		last_raw_cursor_x;		/* last raw cursor X position */
    int		last_raw_cursor_y;		/* last raw cursor Y position */
    int		last_cursor_window;		/* last window cursor was in */
    float	last_cursor_x;			/* last scaled cursor X position */
    float	last_cursor_y;			/* last scaled cursor Y position */
    int		cursor_type;			/* graphics cursor type (number) */
    int		blinking_cursor;		/* flag indicating if the graphics cursor is a blinking one */
    int		disable_zero_vectors;		/* control drawing zero length vectors */
    int		wn_num_fnd;			/* # of windows found in last call to wn_find_id */
    int		screen_xmax[WNLIB_PARAM_NUM_SCREENS];	/* maximum screen x coordinate */
    int		screen_ymax[WNLIB_PARAM_NUM_SCREENS];	/* maximum screen y coordinate */
    WNLIB_SYMBOL_ATTR	symtyp;			/* symbol attributes */
    WNLIB_GLOBAL_VALUES	wn_values;		/* misc global values */
    unsigned short	num_switches;		/* number of switches */
    int		top_switch;			/* ID of the last switch created */
    int		last_wid;
    int		sw_was_pressed;
    int		last_sw_pressed;
    int		flash_length;
    int		current_switch;
    int		last_sw_id;
    unsigned int	wn_active;		/* # of calls to */
    unsigned int	wn_axis_grid;		/* # of calls to */
    unsigned int	wn_axis_label;		/* # of calls to */
    unsigned int	wn_background_color;	/* # of calls to */
    unsigned int	wn_blank;		/* # of calls to */
    unsigned int	wn_border_width;	/* # of calls to */
    unsigned int	wn_box;			/* # of calls to */
    unsigned int	wn_check_for_interrupt;	/* # of calls to */
    unsigned int	wn_circle;		/* # of calls to */
    unsigned int	wn_circular_arc;	/* # of calls to */
    unsigned int	wn_clip;		/* # of calls to */
    unsigned int	wn_color;		/* # of calls to */
    unsigned int	wn_colored_text;	/* # of calls to */
    unsigned int	wn_connect_points;	/* # of calls to */
    unsigned int	wn_cursor_disable;	/* # of calls to */
    unsigned int	wn_cursor_init;		/* # of calls to */
    unsigned int	wn_cursor_init_pixel;	/* # of calls to */
    unsigned int	wn_cursor_update;	/* # of calls to */
    unsigned int	wn_cursor_update_pixel;	/* # of calls to */
    unsigned int	wn_data_extrema;	/* # of calls to */
    unsigned int	wn_data_fft;		/* # of calls to */
    unsigned int	wn_data_mean;		/* # of calls to */
    unsigned int	wn_data_polyfit;	/* # of calls to */
    unsigned int	wn_data_query;		/* # of calls to */
    unsigned int	wn_data_recall;		/* # of calls to */
    unsigned int	wn_data_save;		/* # of calls to */
    unsigned int	wn_data_set_cut;	/* # of calls to */
    unsigned int	wn_delete;		/* # of calls to */
    unsigned int	wn_delete_all;		/* # of calls to */
    unsigned int	wn_display_value;	/* # of calls to */
    unsigned int	wn_draw_mode;		/* # of calls to */
    unsigned int	wn_erase;		/* # of calls to */
    unsigned int	wn_erase_screen;	/* # of calls to */
    unsigned int	wn_external_colored_text;	/* # of calls to */
    unsigned int	wn_external_display_value;	/* # of calls to */
    unsigned int	wn_external_text;	/* # of calls to */
    unsigned int	wn_fill_mode;		/* # of calls to */
    unsigned int	wn_find_id;		/* # of calls to */
    unsigned int	wn_find_list;		/* # of calls to */
    unsigned int	wn_flush;		/* # of calls to */
    unsigned int	wn_getscrn;		/* # of calls to */
    unsigned int	wn_getworld;		/* # of calls to */
    unsigned int	wn_get_view_coords;	/* # of calls to */
    unsigned int	wn_get_world_coords;	/* # of calls to */
    unsigned int	wn_grid;		/* # of calls to */
    unsigned int	wn_intersect;		/* # of calls to */
    unsigned int	wn_occluded;		/* # of calls to */
    unsigned int	wn_plot_fill;		/* # of calls to */
    unsigned int	wn_point;		/* # of calls to */
    unsigned int	wn_point_set;		/* # of calls to */
    unsigned int	wn_polygon;		/* # of calls to */
    unsigned int	wn_printf_at;		/* # of calls to */
    unsigned int	wn_query_setup;		/* # of calls to */
    unsigned int	wn_quick_grid;		/* # of calls to */
    unsigned int	wn_read_background_format;	/* # of calls to */
    unsigned int	wn_read_background_size;	/* # of calls to */
    unsigned int	wn_read_text_format;	/* # of calls to */
    unsigned int	wn_redraw_grid;		/* # of calls to */
    unsigned int	wn_screen_init;		/* # of calls to */
    unsigned int	wn_screen_title;	/* # of calls to */
    unsigned int	wn_select_screen;	/* # of calls to */
    unsigned int	wn_setsym;		/* # of calls to */
    unsigned int	wn_set_background_format;	/* # of calls to */
    unsigned int	wn_set_background_size;	/* # of calls to */
    unsigned int	wn_set_cursor_type;	/* # of calls to */
    unsigned int	wn_set_plot_symbol;	/* # of calls to */
    unsigned int	wn_set_scaling;		/* # of calls to */
    unsigned int	wn_switch_create;	/* # of calls to */
    unsigned int	wn_switch_delete;	/* # of calls to */
    unsigned int	wn_switch_disable;	/* # of calls to */
    unsigned int	wn_switch_enable;	/* # of calls to */
    unsigned int	wn_switch_pressed;	/* # of calls to */
    unsigned int	wn_switch_read;		/* # of calls to */
    unsigned int	wn_switch_relabel;	/* # of calls to */
    unsigned int	wn_switch_set_state;	/* # of calls to */
    unsigned int	wn_switch_window_delete;	/* # of calls to */
    unsigned int	wn_symbol;		/* # of calls to */
    unsigned int	wn_symbol_set;		/* # of calls to */
    unsigned int	wn_text;		/* # of calls to */
    unsigned int	wn_text_attributes;	/* # of calls to */
    unsigned int	wn_text_coord_to_virtual;	/* # of calls to */
    unsigned int	wn_text_rotation;	/* # of calls to */
    unsigned int	wn_text_scaling;	/* # of calls to */
    unsigned int	wn_text_size;		/* # of calls to */
    unsigned int	wn_vector;		/* # of calls to */
    unsigned int	wn_vector_grain;	/* # of calls to */
    unsigned int	wn_vector_width;	/* # of calls to */
    unsigned int	wn_view;		/* # of calls to */
    unsigned int	wn_view_construct;	/* # of calls to */
    unsigned int	wn_view_pixel;		/* # of calls to */
    unsigned int	wn_view_text_format;	/* # of calls to */
    unsigned int	wn_wide_vector;		/* # of calls to */
    unsigned int	wn_window_has_switch;	/* # of calls to */
    unsigned int	wn_world;		/* # of calls to */
    char		unused[WNLIB_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_ACB_REPLY;

typedef struct WNLIB_DATASET			/* saved data */
    {
    int 		ds_num_points;		/* # of points in set */
    int 		ds_num_active;		/* # of points in set */
    int 		ds_num_range;		/* # of points in set */
    unsigned char	ds_connect;		/* TRUE/FALSE -> IN/NOT IN connect mode */
    unsigned char	ds_fillit;		/* TRUE/FALSE -> IN/NOT IN fill mode */
    float		xcut_min;		/* data set cut limits */
    float		xcut_max;
    float		ycut_min;
    float		ycut_max;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_DATASET;

typedef struct WNLIB_GRID_INFO
    {
    int			num_major;		/* number of major ticks */
    int			num_minor;		/* number of minor ticks */
    int			grid_it;		/* grid enable flag */
    int			invert_ticks;		/* tick orientation flag */
    int			grid_line_type;		/* major grid line type */
    int			color;			/* grid color */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_GRID_INFO;

#define	WNLIB_PARAM_NUM_GRID_PLANES	4	/* number of grid planes */

typedef struct WNLIB_ACB_WIN_INFO_REPLY		/* graphic window data */
    {
    short		status;			/* returned status of request */
    int			id;			/* window ID */
    float		wind_x1;		/* window coordinates  (0.0-1.0) */
    float		wind_y1;		/* " */
    float		wind_x2;		/* " */
    float		wind_y2;		/* " */
    float		xmin;			/* virtual coordinates */
    float		xmax;			/* " */
    float		ymin;			/* " */
    float		ymax;			/* " */
    float		x_mult;			/* virtual scaling constants */
    float		x_offset;		/* " */
    float		y_mult;			/* " */
    float		y_offset;		/* " */
    int			x1;			/* physical coordinates */
    int			y1;			/* " */
    int			x2;			/* " */
    int			y2;			/* " */
    int			erase_x1;		/* physical erase coordinates */
    int			erase_y1;		/* " */
    int			erase_x2;		/* " */
    int			erase_y2;		/* " */
    int			world_def;		/* world coordinates defined */
    int			phys_def;		/* physical coordinates defined */
    int			connect_points;		/* connect points flag */
    int			plot_fill;		/* plot fill flag */
    float		plot_fill_base;		/* fill border */
    float		last_x_point;		/* last plotted point: x coord */
    float		last_y_point;		/* last plotted point: y coord */
    int			stack_depth;		/* stack position */
    int			bkgd_color;		/* window background color */
    int			scale_type_x;		/* scale type of x-axis */
    int			scale_type_y;		/* scale type of y-axis */
    int			data_save;		/* data save flag */
    WNLIB_DATASET	data_header;		/* saved data header */
    int			symbol_type;		/* type of plot symbol */
    int			symbol_size;		/* size of plot symbol */
    short		screen;			/* screen where window is displayed */
    WNLIB_GRID_INFO	grid_info[WNLIB_PARAM_NUM_GRID_PLANES];	/* grid information */
    unsigned int	num_plotted_values;	/* number of plotted points/symbols in this window */
    unsigned int	num_plot_errors;	/* number of plot point/symbol errors in this window */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_ACB_WIN_INFO_REPLY;

#define	WNLIB_PARAM_MAX_LIST_ENTRIES	30	/* maximum number of window list entries */

typedef struct WNLIB_WINDOW_LIST_ENTRY		/* window list entry data */
    {
    int		window_id;			/* window ID */
    short	screen;				/* screen where window is displayed */
    float	wind_x1;			/* window coordinates  (0.0-1.0) */
    float	wind_y1;			/* " */
    float	wind_x2;			/* " */
    float	wind_y2;			/* " */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_WINDOW_LIST_ENTRY;

typedef struct WNLIB_ACB_WINDOW_LIST_REPLY	/* window list data */
    {
    short	status;				/* returned status of request */
    short	num_returned;			/* number of window entries returned */
    short	unused;
    WNLIB_WINDOW_LIST_ENTRY	window_list[WNLIB_PARAM_MAX_LIST_ENTRIES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_ACB_WINDOW_LIST_REPLY;

#define	WNLIB_PARAM_SWITCH_TEXT_LEN	64	/* length of switch text */
#define	WNLIB_PARAM_MAX_SWITCH		8	/* maximum number of component switches */

typedef struct WNLIB_SWITCH_INFO
    {
    int			xmin;			/* left coordinate of switch */
    int			ymin;			/* bottom coordinate of switch */
    int			xmax;			/* right coordinate of switch */
    int			ymax;			/* top coordinate of switch */
    int			state;			/* present state of switch */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_SWITCH_INFO;

typedef struct WNLIB_ACB_SWITCH_INFO_REPLY	/* switch data */
    {
    short		status;			/* returned status of request */
    int			id;			/* switch ID number */
    int			type;			/* type of switch */
    int			state;			/* present state of switch */
    char		text[WNLIB_PARAM_SWITCH_TEXT_LEN+2];	/* switch text */
    int			text_size;		/* text size */
    int			char_width;		/* width of a character in pixels */
    int			char_height;		/* height of a character in pixels */
    int			num_lines;		/* number of lines of text */
    int			line_length;		/* number of characters per line */
    int			num_switch;		/* # of individual switches in this switch */
    int			color;			/* color of switch */
    WNLIB_SWITCH_INFO	info[WNLIB_PARAM_MAX_SWITCH];	/* individual switch info */
    int			*dest;			/* value to load if switch state changes */
    int			is_enabled;		/* switch enable flag */
    int			in_callback;		/* in callback handler for this switch */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_ACB_SWITCH_INFO_REPLY;

#define	WNLIB_PARAM_MAX_SWITCHES	500	/* maximum number of returned switches */

typedef struct WNLIB_ACB_SWITCH_LIST_REPLY	/* switch list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of switches returned */
    unsigned int	num_switches;		/* number of switches in existence */
    int		switches[WNLIB_PARAM_MAX_SWITCHES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WNLIB_ACB_SWITCH_LIST_REPLY;

/* end of WNLIB */


/*
**  window_manager routines ...
*/
#define	WMNGR_ACB_TC_REQUEST_STATS	1	/* request window_manager statistics */
#define	WMNGR_ACB_TC_DIAG_CLEAR		3	/* clear window_manager diagnostics */
#define	WMNGR_ACB_TC_WIN_INFO		5	/* read window information */
#define	WMNGR_ACB_TC_SWITCH_INFO	6	/* read switch information */
#define	WMNGR_ACB_TC_SLIDER_INFO	7	/* read slider information */
#define	WMNGR_ACB_TC_MENUBAR_INFO	8	/* read menu bar information */
#define	WMNGR_ACB_TC_HILITE_INFO	9	/* read highlight information */
#define	WMNGR_ACB_TC_SELECT_FIELD_INFO	10	/* read select field type information */
#define	WMNGR_ACB_TC_TITLE_TO_ID	11	/* convert window title to ID */
#define	WMNGR_ACB_TC_HANDLE_TO_ID	12	/* convert window handle to ID */
#define	WMNGR_ACB_TC_READ_TEXT		13	/* read window text */
#define	WMNGR_ACB_TC_MAIL_WINDOW	14	/* mail window to user */
#define	WMNGR_ACB_TC_WINDOW_LIST	15	/* request the list of windows */
#define	WMNGR_ACB_TC_SELECT_FIELD_INST	16	/* read select field instance information */
#define	WMNGR_ACB_TC_FIELD_INFO		17	/* read callback field instance information */
#define	WMNGR_ACB_TC_HELP_INFO		18	/* read help callback field instance information */
#define	WMNGR_ACB_TC_FIELD_LIST		19	/* request the list of callback fields */
#define	WMNGR_ACB_TC_HELP_LIST		20	/* request the list of help callback fields */
#define	WMNGR_ACB_TC_SWITCH_LIST	21	/* request the list of switches */
#define	WMNGR_ACB_TC_SLIDER_LIST	22	/* request the list of sliders */
#define	WMNGR_ACB_TC_HILITE_LIST	23	/* request the list of highlight regions */
#define	WMNGR_ACB_TC_SELECT_FIELD_LIST	24	/* request the list of select field types */
#define	WMNGR_ACB_TC_SF_INST_LIST	25	/* request the list of select field instances */
#define	WMNGR_ACB_TC_MENUBAR_LIST	26	/* read the list of menu bars */
#define	WMNGR_ACB_TC_BUBBLE_HELP_INFO	27	/* read bubble help callback field instance information */
#define	WMNGR_ACB_TC_BUBBLE_HELP_LIST	28	/* request the list of bubble help callback fields */
#define	WMNGR_ACB_TC_CALLBACK_INFO	29	/* request a specific window callback */
#define	WMNGR_ACB_TC_CALLBACK_LIST	30	/* request the list of window callbacks */
#define	WMNGR_ACB_TC_MNGR_CB_INFO	31	/* request a specific window manager callback */
#define	WMNGR_ACB_TC_MNGR_CB_LIST	32	/* request the list of window manager callbacks */
#define	WMNGR_ACB_TC_LIST_FIELD_INFO	33	/* read list field instance information */
#define	WMNGR_ACB_TC_LIST_FIELD_LIST	34	/* request the list of list fields */
#define	WMNGR_ACB_TC_INPUT_FIELD_INFO	35	/* read input field instance information */
#define	WMNGR_ACB_TC_INPUT_FIELD_LIST	36	/* request the list of input fields */
#define	WMNGR_ACB_TC_BUTTON_INFO	37	/* read button instance information */
#define	WMNGR_ACB_TC_BUTTON_LIST	38	/* request the list of buttons */
#define	WMNGR_ACB_TC_DEBUG_ENABLE	39	/* enable debug mode */
#define	WMNGR_ACB_TC_DEBUG_DISABLE	40	/* disable debug mode */
#define	WMNGR_ACB_TC_MAIL_ENABLE	41	/* enable error mail */
#define	WMNGR_ACB_TC_MAIL_DISABLE	42	/* disable error mail */

#define	WMNGR_ACB_REQUEST_TEXT_LEN	80	/* maximum length of request text */

typedef struct WMNGR_ACB_REQUEST		/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_WMNGR */
    short	type_code;			/* window_manager callback main type code */
    short	subtype;			/* window_manager callback secondary type code */
    int		item_id;			/* window or switch ID */
    int		row;				/* window position */
    int		column;
    int		length;				/* text request length */
    char	title_or_handle[WMNGR_ACB_REQUEST_TEXT_LEN+2];	/* window title or handle */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_REQUEST;

typedef struct WMNGR_LAST_INT			/* last interrupt info structure */
    {
    short	wid;
    short	type;
    int		row;
    int		col;
    int		info;
    int		exposed;
    short	real_wid;
    int		real_row;
    int		real_col;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_LAST_INT;

#define	WMNGR_PARAM_REPLY_FILLER	2292	/* reply structure filler size */

typedef struct WMNGR_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    unsigned int	num_errors;		/* total number of errors */
    unsigned int	read_errors;		/* total number of window_tvm(x) read errors */
    unsigned int	write_errors;		/* total number of window_tvm(x) write errors */
    short	last_error;			/* last error detected */
    char	last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected */
    char	last_invarg_func[ACB_FUNC_NAME_LEN+2];	/* function in which last invalid argument error was detected */
    int		last_invarg_num;		/* last invalid argument number */
    short	last_error_window;		/* window ID of last error */
    int		last_error_switch;		/* switch ID of last error */
    int		last_error_slider;		/* slider ID of the last error */
    short	last_error_hilite;		/* highlight region ID of the last error */
    int		last_error_select_field;	/* select field ID of the last error */
    int		num_windows;			/* # of presently active windows */
    short	top_window;			/* ID of the last window created regardless of method */
    short	last_window_created;		/* ID of last new window created */
    unsigned int	creator_caller_pc;	/* PC of window creator */
    short	last_window_deleted;		/* ID of last window deleted */
    unsigned int	deleter_caller_pc;	/* PC of window deleter */
    int		num_popup;			/* # of windows which are popup in nature */
    int		disable_clipping;		/* global clipping flag */
    int		expose_event;			/* flag indicating whether a window has been exposed */
    int		inhib_last_row;			/* flag indicating whether to update the last_row window field */
    int		disable_scroll_io;		/* override window's scroll_io flag */
    int		auto_int_enabled;		/* flag indicating whether 'window_intype' should execute special interrupts */
    int		hide_special_ints;		/* special window interrupt info pass through flag */
    int		moves_enabled;			/* flag indicating whether user-enacted move routines are enabled */
    int		window_io_disabled;		/* flag to disable window I/O when moving or resizing windows */
    int		simple_lines;			/* flag to make line drawing ignore scroll buffer considerations */
    int		last_scroll;			/* number of lines scrolled during the last scroll command */
    int		last_scroll_horz;		/* number of characters scrolled during the last horizontal scroll command */
    short	last_wid;			/* last window accessed */
    int		current_window;			/* next available window ID */
    int		scroll_limit;			/* number of lines allowed in a window's scroll buffer */
    int		save_scroll_buffer;		/* allows saving of scroll buffers upon window deletion */
    int		save_image_text;		/* allows saving of image text upon window deletion */
    int		bkgd_color;			/* window background color */
    int		num_callback;			/* number of callback routines */
    int		curr_callback_index;		/* current callback index */
    unsigned int	num_pre_create_callbacks;	/* number of pre window create callbacks */
    unsigned int	num_create_callbacks;	/* number of window create callbacks */
    unsigned int	num_change_callbacks;	/* number of window change callbacks */
    unsigned int	num_pre_delete_callbacks;	/* number of pre window delete callbacks */
    unsigned int	num_delete_callbacks;	/* number of window delete callbacks */
    WMNGR_LAST_INT	last_int;		/* information from last interrupt */
    int		key_case;			/* currently selected key case */
    int		key_color;			/* currently selected key color */
    int		key_echo;			/* currently selected key echo mode */
    int		restore_hint;			/* window restore mode hint value */
    unsigned int	num_keybd_interrupts;	/* number of keyboard interrupts */
    unsigned int	num_keyup_interrupts;	/* number of key up interrupts */
    unsigned int	num_per_interrupts;	/* number of periodic interrupts */
    unsigned int	num_focusin_interrupts;	/* number of focus in interrupts */
    unsigned int	num_focusout_interrupts;	/* number of focus out interrupts */
    unsigned int	num_shift_keybd_interrupts;	/* number of shift-keyboard interrupts */
    unsigned int	num_ctrl_keybd_interrupts;	/* number of ctrl-keyboard interrupts */
    unsigned int	num_alt_keybd_interrupts;	/* number of alt-keyboard interrupts */
    unsigned int	num_double_click_interrupts;	/* number of double click interrupts */
    unsigned int	num_graphic_interrupts;	/* number of graphics window interrupts */
    int		top_switch;			/* ID of the last switch created */
    int		switch_was_pressed;		/* switch parameters ... */
    int		switch_last_pressed;
    int		switch_flash_length;
    int		switch_current_switch;
    int		switch_total_switch;
    int		switch_last_id;
    int		top_slider;			/* ID of the last slider created */
    int		a_slider_was_moved;		/* slider parameters ... */
    int		slider_last_moved_id;
    int		slider_current_slider;
    int		slider_total_sliders;
    int		slider_last_id;
    short	top_menu_bar_window;
    int		num_menu_bars;			/* menu bar parameters ... */
    short	mb_last_wid;
    int		mb_deleted_wid;
    int		mb_auto_int_count;
    short	top_hilite;			/* ID of the last highlight region created */
    int		num_hilite_regions;		/* highlight parameters ... */
    int		current_hilite;
    short	last_hid;
    int		num_auto_hilite;
    int		top_select_field;		/* ID of the last select field type created or mapped */
    short	top_select_field_window;
    int		num_select_types;		/* select field parameters ... */
    int		num_auto_select;
    int		in_field_callback;		/* field manager parameters ... */
    int		current_field_id;
    unsigned int	total_fields;
    int		field_last_id;
    int		in_help;			/* help manager parameters ... */
    int		help_enabled;
    int		current_help_id;
    unsigned int	total_help_regions;
    int		help_last_id;
    int		bubble_help_enabled;		/* bubble help manager parameters ... */
    int		bubble_help_display;
    int		current_bubble_help_id;
    unsigned int	total_bubble_help_regions;
    int		bubble_help_last_id;
    int		num_list_fields;		/* list field parameters ... */
    int		current_button_id;		/* window button parameters */
    int		total_buttons;
    int		last_button_id;
    unsigned int	binbox;			/* # of calls to */
    unsigned int	binfld;			/* # of calls to */
    unsigned int	bubble_help_callback_init;	/* # of calls to */
    unsigned int	bubble_help_callback_term;	/* # of calls to */
    unsigned int	bubble_help_enable_disable;	/* # of calls to */
    unsigned int	bubble_help_setup;	/* # of calls to */
    unsigned int	bubble_help_window_delete;	/* # of calls to */
    unsigned int	btvblnk;		/* # of calls to */
    unsigned int	btvceol;		/* # of calls to */
    unsigned int	btvceop;		/* # of calls to */
    unsigned int	btvcolr;		/* # of calls to */
    unsigned int	btvdisp;		/* # of calls to */
    unsigned int	btvfill;		/* # of calls to */
    unsigned int	btvm;			/* # of calls to */
    unsigned int	btvmx;			/* # of calls to */
    unsigned int	field_window_delete;	/* # of calls to */
    unsigned int	help_callback_init;	/* # of calls to */
    unsigned int	help_callback_term;	/* # of calls to */
    unsigned int	help_enable_disable;	/* # of calls to */
    unsigned int	help_window_delete;	/* # of calls to */
    unsigned int	hilite_create;		/* # of calls to */
    unsigned int	hilite_delete;		/* # of calls to */
    unsigned int	hilite_resume;		/* # of calls to */
    unsigned int	hilite_simple_row_create;	/* # of calls to */
    unsigned int	hilite_suspend;		/* # of calls to */
    unsigned int	hilite_update;		/* # of calls to */
    unsigned int	hilite_window_delete;	/* # of calls to */
    unsigned int	interrupt_window;	/* # of calls to */
    unsigned int	in_window;		/* # of calls to */
    unsigned int	in_window_box;		/* # of calls to */
    unsigned int	in_window_field;	/* # of calls to */
    unsigned int	in_window_line;		/* # of calls to */
    unsigned int	list_field_create;	/* # of calls to */
    unsigned int	list_field_delete;	/* # of calls to */
    unsigned int	list_field_disable;	/* # of calls to */
    unsigned int	list_field_enable;	/* # of calls to */
    unsigned int	list_field_read;	/* # of calls to */
    unsigned int	list_field_set;		/* # of calls to */
    unsigned int	list_field_window_delete;	/* # of calls to */
    unsigned int	menu_bar_change_entry;	/* # of calls to */
    unsigned int	menu_bar_create;	/* # of calls to */
    unsigned int	menu_bar_delete;	/* # of calls to */
    unsigned int	menu_bar_disable;	/* # of calls to */
    unsigned int	menu_bar_dncase_entry;	/* # of calls to */
    unsigned int	menu_bar_enable;	/* # of calls to */
    unsigned int	menu_bar_field_coordinates;	/* # of calls to */
    unsigned int	menu_bar_min_width;	/* # of calls to */
    unsigned int	menu_bar_upcase_entry;	/* # of calls to */
    unsigned int	menu_bar_update;	/* # of calls to */
    unsigned int	screen_column;		/* # of calls to */
    unsigned int	screen_row;		/* # of calls to */
    unsigned int	select_field_delete;	/* # of calls to */
    unsigned int	select_field_disable;	/* # of calls to */
    unsigned int	select_field_display_info;	/* # of calls to */
    unsigned int	select_field_enable;	/* # of calls to */
    unsigned int	select_field_init;	/* # of calls to */
    unsigned int	select_field_read;	/* # of calls to */
    unsigned int	select_field_register;	/* # of calls to */
    unsigned int	select_field_set;	/* # of calls to */
    unsigned int	select_field_set_by_value;	/* # of calls to */
    unsigned int	select_field_text_to_id;	/* # of calls to */
    unsigned int	select_field_update;	/* # of calls to */
    unsigned int	slider_create;		/* # of calls to */
    unsigned int	slider_delete;		/* # of calls to */
    unsigned int	slider_get_values;	/* # of calls to */
    unsigned int	slider_read;		/* # of calls to */
    unsigned int	slider_set;		/* # of calls to */
    unsigned int	slider_set_values;	/* # of calls to */
    unsigned int	slider_update;		/* # of calls to */
    unsigned int	slider_was_moved;	/* # of calls to */
    unsigned int	switch_change_case;	/* # of calls to */
    unsigned int	switch_create;		/* # of calls to */
    unsigned int	switch_create_radio;	/* # of calls to */
    unsigned int	switch_delete;		/* # of calls to */
    unsigned int	switch_disable;		/* # of calls to */
    unsigned int	switch_enable;		/* # of calls to */
    unsigned int	switch_pressed;		/* # of calls to */
    unsigned int	switch_read;		/* # of calls to */
    unsigned int	switch_relabel;		/* # of calls to */
    unsigned int	switch_set_flash;	/* # of calls to */
    unsigned int	switch_set_state;	/* # of calls to */
    unsigned int	switch_text_to_id;	/* # of calls to */
    unsigned int	switch_window_delete;	/* # of calls to */
    unsigned int	window_accept_input_field;	/* # of calls to */
    unsigned int	window_accept_input_region;	/* # of calls to */
    unsigned int	window_add_callback;	/* # of calls to */
    unsigned int	window_align_to_window;	/* # of calls to */
    unsigned int	window_background_color;	/* # of calls to */
    unsigned int	window_blank;		/* # of calls to */
    unsigned int	window_border_button;	/* # of calls to */
    unsigned int	window_box;		/* # of calls to */
    unsigned int	window_button_create;	/* # of calls to */
    unsigned int	window_button_delete;	/* # of calls to */
    unsigned int	window_button_disable;	/* # of calls to */
    unsigned int	window_button_enable;	/* # of calls to */
    unsigned int	window_button_set_id_type;	/* # of calls to */
    unsigned int	window_button_text_to_id;	/* # of calls to */
    unsigned int	window_button_window_delete;	/* # of calls to */
    unsigned int	window_callback_init;	/* # of calls to */
    unsigned int	window_callback_term;	/* # of calls to */
    unsigned int	window_center_text;	/* # of calls to */
    unsigned int	window_column;		/* # of calls to */
    unsigned int	window_construct;	/* # of calls to */
    unsigned int	window_control_callbacks;	/* # of calls to */
    unsigned int	window_coordinate_limits;	/* # of calls to */
    unsigned int	window_coords;		/* # of calls to */
    unsigned int	window_copy;		/* # of calls to */
    unsigned int	window_create;		/* # of calls to */
    unsigned int	window_delete;		/* # of calls to */
    unsigned int	window_delete_border_button;	/* # of calls to */
    unsigned int	window_delete_char;	/* # of calls to */
    unsigned int	window_delete_line;	/* # of calls to */
    unsigned int	window_delete_scroll_buffer;	/* # of calls to */
    unsigned int	window_disable_interrupts;	/* # of calls to */
    unsigned int	window_disable_move;	/* # of calls to */
    unsigned int	window_disable_occluded_ints;	/* # of calls to */
    unsigned int	window_disable_resize;	/* # of calls to */
    unsigned int	window_disable_restack;	/* # of calls to */
    unsigned int	window_disable_scroll_io;	/* # of calls to */
    unsigned int	window_disable_scroll_save;	/* # of calls to */
    unsigned int	window_disable_scroll_slider;	/* # of calls to */
    unsigned int	window_disable_scroll_status;	/* # of calls to */
    unsigned int	window_display_value;	/* # of calls to */
    unsigned int	window_down_case;	/* # of calls to */
    unsigned int	window_draw_char;	/* # of calls to */
    unsigned int	window_enable_interrupts;	/* # of calls to */
    unsigned int	window_enable_move;	/* # of calls to */
    unsigned int	window_enable_occluded_ints;	/* # of calls to */
    unsigned int	window_enable_resize;	/* # of calls to */
    unsigned int	window_enable_restack;	/* # of calls to */
    unsigned int	window_enable_scroll_io;	/* # of calls to */
    unsigned int	window_enable_scroll_save;	/* # of calls to */
    unsigned int	window_enable_scroll_slider;	/* # of calls to */
    unsigned int	window_enable_scroll_status;	/* # of calls to */
    unsigned int	window_end_intype_loop;	/* # of calls to */
    unsigned int	window_entry_to_row;	/* # of calls to */
    unsigned int	window_erase;		/* # of calls to */
    unsigned int	window_erase_line;	/* # of calls to */
    unsigned int	window_erase_to_eol;	/* # of calls to */
    unsigned int	window_exposed_region;	/* # of calls to */
    unsigned int	window_field_add_callback;	/* # of calls to */
    unsigned int	window_field_alter_interrupt;	/* # of calls to */
    unsigned int	window_field_create;	/* # of calls to */
    unsigned int	window_field_delete;	/* # of calls to */
    unsigned int	window_field_delete_callback;	/* # of calls to */
    unsigned int	window_field_disable;	/* # of calls to */
    unsigned int	window_field_enable;	/* # of calls to */
    unsigned int	window_field_init;	/* # of calls to */
    unsigned int	window_fit_window;	/* # of calls to */
    unsigned int	window_flush_text_region;	/* # of calls to */
    unsigned int	window_flush_typed_text;	/* # of calls to */
    unsigned int	window_freeze;		/* # of calls to */
    unsigned int	window_gap;		/* # of calls to */
    unsigned int	window_gap_length;	/* # of calls to */
    unsigned int	window_get_parameter;	/* # of calls to */
    unsigned int	window_get_id_list;	/* # of calls to */
    unsigned int	window_handle_to_id;	/* # of calls to */
    unsigned int	window_has_button;	/* # of calls to */
    unsigned int	window_has_feature;	/* # of calls to */
    unsigned int	window_has_help;	/* # of calls to */
    unsigned int	window_has_menu_bar;	/* # of calls to */
    unsigned int	window_has_switch;	/* # of calls to */
    unsigned int	window_hilite;		/* # of calls to */
    unsigned int	window_hilite_line;	/* # of calls to */
    unsigned int	window_hline;		/* # of calls to */
    unsigned int	window_hole;		/* # of calls to */
    unsigned int	window_hscroll;		/* # of calls to */
    unsigned int	window_hscroll_offset;	/* # of calls to */
    unsigned int	window_hscroll_page;	/* # of calls to */
    unsigned int	window_init;		/* # of calls to */
    unsigned int	window_init_sequential_write;	/* # of calls to */
    unsigned int	window_input_value;	/* # of calls to */
    unsigned int	window_insert_char;	/* # of calls to */
    unsigned int	window_insert_line;	/* # of calls to */
    unsigned int	window_interrupt_cursor;	/* # of calls to */
    unsigned int	window_intersect;	/* # of calls to */
    unsigned int	window_intype;		/* # of calls to */
    unsigned int	window_intype_again;	/* # of calls to */
    unsigned int	window_intype_loop;	/* # of calls to */
    unsigned int	window_intype_put_data;	/* # of calls to */
    unsigned int	window_in_border_button;	/* # of calls to */
    unsigned int	window_is_frozen;	/* # of calls to */
    unsigned int	window_is_in_scroll_buffer;	/* # of calls to */
    unsigned int	window_is_in_visible_scroll;	/* # of calls to */
    unsigned int	window_is_occluding;	/* # of calls to */
    unsigned int	window_justify_text;	/* # of calls to */
    unsigned int	window_key_case;	/* # of calls to */
    unsigned int	window_key_color;	/* # of calls to */
    unsigned int	window_key_echo;	/* # of calls to */
    unsigned int	window_last_io_location;	/* # of calls to */
    unsigned int	window_last_scroll;	/* # of calls to */
    unsigned int	window_last_horizontal_scroll;	/* # of calls to */
    unsigned int	window_manager_initialized;	/* # of calls to */
    unsigned int	window_menu_bar_create;	/* # of calls to */
    unsigned int	window_menu_bar_delete;	/* # of calls to */
    unsigned int	window_menu_bar_update;	/* # of calls to */
    unsigned int	window_move;		/* # of calls to */
    unsigned int	window_move_disable;	/* # of calls to */
    unsigned int	window_move_enable;	/* # of calls to */
    unsigned int	window_next_scroll_row;	/* # of calls to */
    unsigned int	window_num_popup_windows;	/* # of calls to */
    unsigned int	window_occluded;	/* # of calls to */
    unsigned int	window_occluded_by;	/* # of calls to */
    unsigned int	window_occluding;	/* # of calls to */
    unsigned int	window_physical_column;	/* # of calls to */
    unsigned int	window_printf;		/* # of calls to */
    unsigned int	window_printf_at;	/* # of calls to */
    unsigned int	window_printf_noscroll;	/* # of calls to */
    unsigned int	window_query_scroll;	/* # of calls to */
    unsigned int	window_read_color_text;	/* # of calls to */
    unsigned int	window_read_cursor;	/* # of calls to */
    unsigned int	window_read_handle;	/* # of calls to */
    unsigned int	window_read_menu_bar_info;	/* # of calls to */
    unsigned int	window_read_text;	/* # of calls to */
    unsigned int	window_reborder;	/* # of calls to */
    unsigned int	window_rectangle;	/* # of calls to */
    unsigned int	window_refresh;		/* # of calls to */
    unsigned int	window_refresh_all;	/* # of calls to */
    unsigned int	window_register_func;	/* # of calls to */
    unsigned int	window_remove_callback;	/* # of calls to */
    unsigned int	window_request_delete;	/* # of calls to */
    unsigned int	window_resize;		/* # of calls to */
    unsigned int	window_restore_hint;	/* # of calls to */
    unsigned int	window_restore_border_line;	/* # of calls to */
    unsigned int	window_retitle;		/* # of calls to */
    unsigned int	window_row;		/* # of calls to */
    unsigned int	window_row_is_visible;	/* # of calls to */
    unsigned int	window_row_to_entry;	/* # of calls to */
    unsigned int	window_save_border_line;	/* # of calls to */
    unsigned int	window_scroll;		/* # of calls to */
    unsigned int	window_scroll_block;	/* # of calls to */
    unsigned int	window_scroll_offset;	/* # of calls to */
    unsigned int	window_scroll_page;	/* # of calls to */
    unsigned int	window_scroll_to_bottom;	/* # of calls to */
    unsigned int	window_scroll_to_left;	/* # of calls to */
    unsigned int	window_scroll_to_right;	/* # of calls to */
    unsigned int	window_scroll_to_top;	/* # of calls to */
    unsigned int	window_select_copy;	/* # of calls to */
    unsigned int	window_select_pop;	/* # of calls to */
    unsigned int	window_select_push;	/* # of calls to */
    unsigned int	window_select_stack;	/* # of calls to */
    unsigned int	window_sequential_write;	/* # of calls to */
    unsigned int	window_seq_write_xchar;	/* # of calls to */
    unsigned int	window_set_background_size;	/* # of calls to */
    unsigned int	window_set_clip;	/* # of calls to */
    unsigned int	window_set_cursor;	/* # of calls to */
    unsigned int	window_set_handle;	/* # of calls to */
    unsigned int	window_set_parameter;	/* # of calls to */
    unsigned int	window_set_popup;	/* # of calls to */
    unsigned int	window_set_position;	/* # of calls to */
    unsigned int	window_set_resize_mode;	/* # of calls to */
    unsigned int	window_set_scroll_colors;	/* # of calls to */
    unsigned int	window_set_scroll_limit;	/* # of calls to */
    unsigned int	window_set_scroll_region;	/* # of calls to */
    unsigned int	window_set_size;	/* # of calls to */
    unsigned int	window_set_size_limit;	/* # of calls to */
    unsigned int	window_size;		/* # of calls to */
    unsigned int	window_text_block;	/* # of calls to */
    unsigned int	window_text_color;	/* # of calls to */
    unsigned int	window_text_fill;	/* # of calls to */
    unsigned int	window_title;		/* # of calls to */
    unsigned int	window_title_to_id;	/* # of calls to */
    unsigned int	window_topmost;		/* # of calls to */
    unsigned int	window_total_lines;	/* # of calls to */
    unsigned int	window_to_back;		/* # of calls to */
    unsigned int	window_to_front;	/* # of calls to */
    unsigned int	window_to_graphic_screen;	/* # of calls to */
    unsigned int	window_to_printer;	/* # of calls to */
    unsigned int	window_tvdisp;		/* # of calls to */
    unsigned int	window_tvm;		/* # of calls to */
    unsigned int	window_tvmx;		/* # of calls to */
    unsigned int	window_tvsave;		/* # of calls to */
    unsigned int	window_unfit_window;	/* # of calls to */
    unsigned int	window_unfreeze;	/* # of calls to */
    unsigned int	window_unregister_function;	/* # of calls to */
    unsigned int	window_update_background;	/* # of calls to */
    unsigned int	window_up_case;		/* # of calls to */
    unsigned int	window_vertical_text;	/* # of calls to */
    unsigned int	window_virtual_column;	/* # of calls to */
    unsigned int	window_vline;		/* # of calls to */
    unsigned int	window_write_line;	/* # of calls to */
    unsigned int	window_write_scroll;	/* # of calls to */
    unsigned int	window_write_xchar_line;	/* # of calls to */
    char		unused[WMNGR_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_REPLY;

typedef struct WMNGR_SCROLL_BAR			/* scroll bar position info */
    {
    int		enabled;			/* scroll bar indicator enabled flag */
    int		color;				/* scroll bar color */
    int		length;				/* length of scroll bar */
    int		offset;				/* scroll bar offset */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_SCROLL_BAR;

typedef struct WMNGR_SCROLL_STATS		/* scroll statistics display info */
    {
    int		enabled;			/* display flag */
    int		color;				/* display color */
    int		col;				/* starting column of display */
    int		length;				/* length of display */
    int		field_length;			/* length of an individual field */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_SCROLL_STATS;

typedef struct WMNGR_SCROLL_REGION		/* scrolling region info */
    {
    int		urow;				/* top row */
    int		nrows;				/* # of rows */
    int		lcol;				/* left column */
    int		ncols;				/* # of columns */
    int		base_urow;			/* base top row disregarding special exceptions */
    int		base_nrows;			/* base # of rows disregarding special exceptions */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_SCROLL_REGION;

typedef struct WMNGR_SIZE_LIMIT			/* size limit info */
    {
    int		min_rows;			/* minimum # of rows */
    int		max_rows;			/* maximum # of rows */
    int		min_cols;			/* minimum # of columns */
    int		max_cols;			/* maximum # of columns */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_SIZE_LIMIT;

typedef struct WMNGR_LOGICAL_IO			/* logical I/O location info */
    {
    int		row;				/* passed I/O row */
    int		row_offset;			/* row offset at time of I/O */
    int		column;				/* passed I/O column */
    int		column_offset;			/* column offset at time of I/O */
    int		scroll_it;			/* flag indicating if I/O was in scroll buffer */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_LOGICAL_IO;

typedef struct WMNGR_COORDINATE_LIMITS		/* window coordinate limit info */
    {
    unsigned char	top_row;
    unsigned char	bottom_row;
    unsigned char	top_inside_row;
    unsigned char	bottom_inside_row;
    unsigned char	left_col;
    unsigned char	right_col;
    unsigned char	left_inside_col;
    unsigned char	right_inside_col;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_COORDINATE_LIMITS;

typedef struct WMNGR_POS_SIZE			/* window position and size info */
    {
    unsigned char	row;
    unsigned char	col;
    unsigned char	nrows;
    unsigned char	ncols;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_POS_SIZE;

#define	WMNGR_PARAM_TITLE_LEN		64	/* length of title text */
#define	WMNGR_PARAM_HANDLE_LEN		64	/* length of handle text */

typedef struct WMNGR_ACB_WIN_INFO_REPLY		/* window data */
    {
    short	status;				/* returned status of request */
    short	id;				/* window ID */
    unsigned char	lcol;			/* left column */
    unsigned char	urow;			/* top row */
    unsigned char	rcol;			/* right column */
    unsigned char	drow;			/* bottom row */
    unsigned char	curs_row;		/* cursor row */
    unsigned char	curs_col;		/* cursor column */
    char	title[WMNGR_PARAM_TITLE_LEN+2];	/* window title */
    char	title_length;			/* window title length */
    char	title_color;			/* window title color */
    char	border_color;			/* window border color */
    char	border_style;			/* style of border */
    int		height;				/* height of window in rows */
    int		width;				/* width of window in columns */
    int		stack_depth;			/* occlusion indicator */
    int		clip_it;			/* right and bottom clipping flag */
    int		move_it;			/* move enable flag */
    int		resize_it;			/* resize enable flag */
    int		resize_mode;			/* resize constraint mode */
    int		pop_it;				/* window push/pop enable flag */
    int		scroll_it;			/* scroll bar present flag */
    int		restore;			/* text repaint mode */
    int		last_row;			/* last row written to */
    int		num_off_top;			/* # of lines scrolled off the top of the screen */
    int		num_off_bottom;			/* # of lines scrolled off the bottom of the screen */
    int		scroll_limit;			/* max # of lines in scroll buffer */
    WMNGR_SCROLL_BAR	scroll_bar;		/* present position of scroll bar */
    int		scroll_io;			/* scroll buffer I/O enable flag */
    int		column_offset;			/* horizontal scroll offset */
    int		menu_bar_row;			/* row containing menu bar */
    WMNGR_SCROLL_STATS	scroll_stats;		/* scroll statistics display info */
    int		bkgd_color;			/* window background color */
    int		scroll_save;			/* save scrolled lines flag */
    WMNGR_SCROLL_REGION	scroll_region;		/* scrolling region of window */
    int		line_length;			/* virtual line length */
    WMNGR_SIZE_LIMIT	size_limit;		/* window size limits */
    int		scroll_it_horz;			/* horizontal scroll bar present flag */
    WMNGR_SCROLL_BAR	scroll_bar_horz;	/* present position of horizontal scroll bar */
    int		inside_height;			/* height of window inside border */
    int		inside_width;			/* width of window inside border */
    int		occluded_ints_enabled;		/* flag to determine whether to accept interrupts when the window is occluded */
    short	parent;				/* parent window ID */
    int		num_destructors;		/* number of destructor functions */
    int		num_scrollers;			/* number of scroll functions */
    int		num_resizers;			/* number of resize functions */
    int		num_movers;			/* number of move functions */
    int		num_exposers;			/* number of expose functions */
    short	is_popup;			/* flag to indicate if this is a popup window */
    int		last_column;			/* last column written to */
    WMNGR_LOGICAL_IO	last_logical_io;	/* last logical I/O location written to */
    int		cr_pending;			/* carriage return pending flag for printf style operations */
    int		scrollbar_id_vert;		/* vertical scroll bar ID */
    int		scrollbar_id_horz;		/* horizontal scroll bar ID */
    char	handle[WMNGR_PARAM_HANDLE_LEN+2];	/* window handle text */
    WMNGR_COORDINATE_LIMITS	coord_limits;	/* window coordinate extrema */
    short	delete_flag;			/* global delete condition flag */
    WMNGR_POS_SIZE	initial_pos_size;	/* initial position and size info */
    unsigned short	vertical_scroll_inc;	/* vertical scroll increment */
    unsigned short	vertical_scroll_page_inc;	/* vertical scroll page increment */
    unsigned short	horizontal_scroll_inc;	/* horizontal scroll increment */
    unsigned short	horizontal_scroll_page_inc;	/* horizontal scroll page increment */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_WIN_INFO_REPLY;

#define	WMNGR_PARAM_MAX_LIST_ENTRIES	57	/* maximum number of window list entries */

typedef struct WMNGR_WINDOW_LIST_ENTRY		/* window list entry data */
    {
    short	window_id;			/* window ID */
    char	title[WMNGR_PARAM_TITLE_LEN+2];	/* window title */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_WINDOW_LIST_ENTRY;

typedef struct WMNGR_ACB_WINDOW_LIST_REPLY	/* window list data */
    {
    short	status;				/* returned status of request */
    short	num_returned;			/* number of window entries returned */
    short	unused;
    WMNGR_WINDOW_LIST_ENTRY	window_list[WMNGR_PARAM_MAX_LIST_ENTRIES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_WINDOW_LIST_REPLY;

#define	WMNGR_PARAM_MAX_SWITCH		8	/* maximum number of component switches */

typedef struct WMNGR_SWITCH_INFO
    {
    int		row;				/* top row of switch */
    int		col;				/* left column of switch */
    int		height;				/* height of switch in rows */
    int		width;				/* width of switch in columns */
    int		state;				/* present state of switch */
    int		color;				/* switch interior color */
    int		border_color;			/* switch border color */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_SWITCH_INFO;

typedef struct WMNGR_ACB_SWITCH_INFO_REPLY	/* switch data */
    {
    short		status;			/* returned status of request */
    int			id;			/* switch ID number */
    int			type;			/* type of switch */
    int			state;
    int			is_scrollable;		/* scrollable switch flag */
    int			num_switch;		/* # of individual switches in this switch */
    WMNGR_SWITCH_INFO	info[WMNGR_PARAM_MAX_SWITCH];	/* individual switch info */
    int			*dest;			/* value to load if switch state changes */
    int			is_enabled;		/* switch enable flag */
    int			in_callback;		/* in callback handler for this switch */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SWITCH_INFO_REPLY;

typedef struct WMNGR_ACB_SLIDER_INFO_REPLY	/* slider information structure */
    {
    short	status;				/* returned status of request */
    int		id;				/* slider ID number */
    int		length;				/* length of slider */
    int		width;				/* width of slider */
    int		orientation;			/* orientation of slider */
    int		decrement_row;			/* decrement field row */
    int		decrement_col;			/* decrement field column */
    int		slider_nrows;			/* overall slider number of rows */
    int		slider_ncols;			/* overall slider number of columns */
    int		decrement_nrows;		/* decrement field number of rows */
    int		decrement_ncols;		/* decrement field number of columns */
    int		increment_row;			/* increment field row */
    int		increment_col;			/* increment field column */
    int		increment_nrows;		/* increment field number of rows */
    int		increment_ncols;		/* increment field number of columns */
    char	decrement_char;
    char	increment_char;
    int		drag_row;			/* starting drag field row */
    int		drag_col;			/* starting drag field column */
    int		drag_length;			/* drag field length */
    int		indicator_len;			/* length of indicator */
    int		indicator_row;			/* indicator row */
    int		indicator_col;			/* indicator column */
    int		indicator_nrows;		/* indicator number of rows */
    int		indicator_ncols;		/* indicator number of columns */
    int		border_style;			/* type of border */
    int		indicator_color;
    int		background_color;
    int		border_color;
    float	min_value;			/* minimum value */
    float	max_value;			/* maximum value */
    float	increment;			/* small increment value */
    float	block_increment;		/* large increment value */
    int		enabled;			/* slider enabled flag */
    int		offset;				/* present indicator offset */
    int		drawn_length;			/* presently drawn indicator length */
    float	value;				/* present value of slider */
    int		auto_update;			/* automatic update flag */
    int		is_scrollable;			/* scrollable slider flag */
    int		scroll_start_row;		/* first row of scroll region */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SLIDER_INFO_REPLY;

#define	WMNGR_PARAM_MAX_MB_FIELDS	8	/* maximum number of menu bar fields */

typedef struct WMNGR_MENUBAR_FIELD_DATA
    {
    int		start;				/* starting column */
    int		length;				/* field length */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_MENUBAR_FIELD_DATA;

typedef struct WMNGR_ACB_MENUBAR_INFO_REPLY	/* menu bar data reply structure */
    {
    short	status;				/* returned status of request */
    short	wid;				/* window ID */
    int		enabled;			/* menu bar enable flag */
    int		row;				/* menu bar row */
    int		numitem;			/* # of menu items */
    int		length;				/* length of title bar */
    WMNGR_MENUBAR_FIELD_DATA	fields[WMNGR_PARAM_MAX_MB_FIELDS];	/* array of field info */
    int			auto_update;		/* automatic update flag */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_MENUBAR_INFO_REPLY;

typedef struct WMNGR_ACB_HILITE_INFO_REPLY	/* highlight data reply structure */
    {
    short	status;				/* returned status of request */
    short	id;				/* highlight ID */
    short	wid;				/* window ID */
    int		toprow;				/* top row of highlight region */
    int		lftcol;				/* leftmost column of highlight region */
    int		numitem;			/* # of highlighted items */
    int		numchar;			/* # of characters per entry */
    int		ncol;				/* # of columns */
    int		itmper;				/* items per column */
    int		width;				/* width of region in characters */
    int		field_len;			/* cursor check field length */
    int		field_off;			/* cursor check field offset */
    int		field_orient;			/* cursor check field orientation */
    int		separate;			/* # of characters separating adjacent columns */
    int		olditm;				/* last highlighted selection */
    int		auto_update;			/* automatic update flag */
    int		color;				/* highlight color */
    int		is_suspended;			/* flag which if nonzero indicates that this highlight region's updating is suspended */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_HILITE_INFO_REPLY;

typedef struct WMNGR_ACB_WINDOW_ID_REPLY	/* window ID */
    {
    short	status;				/* returned status of request */
    short	id;				/* returned window ID */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_WINDOW_ID_REPLY;

#define	WMNGR_ACB_MAX_READ_TEXT		256	/* maximum number of characters to read */

typedef struct WMNGR_ACB_READ_TEXT_REPLY	/* window text */
    {
    short	status;				/* returned status of request */
    int		return_length;
    XCHAR	text[WMNGR_ACB_MAX_READ_TEXT];	/* returned window text */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_READ_TEXT_REPLY;

typedef struct WMNGR_ACB_STATUS_REPLY		/* simple status */
    {
    short	status;				/* returned status of request */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_STATUS_REPLY;

#define	WMNGR_ACB_MAX_SF_LABEL_LEN	32	/* maximum select field label length */
#define	WMNGR_ACB_MAX_SF_ENTRY_LEN	32	/* maximum select field entry length */
#define	WMNGR_ACB_MAX_SF_ENTRIES	64	/* maximum number of select field entriesd */

typedef struct WMNGR_ACB_SELECT_FIELD_INFO_REPLY	/* select field data reply structure */
    {
    short	status;				/* returned status of request */
    int		id;				/* select field ID */
    char	label[WMNGR_ACB_MAX_SF_LABEL_LEN+2];	/* label text */
    int		label_len;			/* label length */
    int		entry_len;			/* length of an entry */
    int		num_entries;			/* actual number of entries */
    char	entry_text[WMNGR_ACB_MAX_SF_ENTRIES*32];	/* entry text */
    int		entry_indices[WMNGR_ACB_MAX_SF_ENTRIES];	/* entry indices */
    int		(*verify_func)();		/* verify entry function */
    int		(*next_func)();			/* next entry function */
    int		(*menu_func)();			/* menu of entries function */
    int		char_case;			/* entry character case */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SELECT_FIELD_INFO_REPLY;

typedef struct WMNGR_ACB_SELECT_FIELD_INST_REPLY	/* select field instance data reply structure */
    {
    short	status;				/* returned status of request */
    short	wid;				/* window containing select field */
    int		select_type;			/* select field type ID */
    int		row;				/* select field row */
    int		col;				/* select field left column */
    int		entry_index;			/* current entry index */
    char	entry_text[WMNGR_ACB_MAX_SF_ENTRY_LEN+2];	/* current entry text */
    int		auto_update;			/* automatic update flag */
    void	(*update_func)();		/* update function */
    void	*update_data;			/* update function data */
    int	is_enabled;			/* select field enable flag */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SELECT_FIELD_INST_REPLY;

typedef struct WMNGR_ACB_FIELD_INFO_REPLY	/* window callback field instance data reply structure */
    {
    short	status;				/* returned status of request */
    short	window_id;			/* window ID */
    int		field_id;			/* field ID */
    int		user_top_row;			/* user supplied top row of callback field */
    int		physical_top_row;		/* top row of callback field in physical coordinates */
    int		top_row;			/* top row of callback field in window image */
    int		user_left_column;		/* user supplied left column of callback field */
    int		physical_left_column;		/* left column of callback field in physical coordinates */
    int		left_column;			/* left column of callback field in window image */
    int		height;				/* height of callback field in rows */
    int		width;				/* width of callback field in columns */
    int		is_scrollable;			/* flag indicating whether or not the callback field is scrollable */
    unsigned int	interrupt_mask;		/* mask of enabled interrupts */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_FIELD_INFO_REPLY;

#define	WMNGR_PARAM_HELP_FILE_LEN	127	/* maximum length of a help file name */

typedef struct WMNGR_ACB_HELP_INFO_REPLY	/* window help callback field instance data reply structure */
    {
    short	status;				/* returned status of request */
    short	window_id;			/* window ID */
    char	window_handle[WMNGR_PARAM_HANDLE_LEN+2];	/* window handle */
    int		help_id;			/* help ID */
    int		top_row;			/* top row of help region */
    int		left_column;			/* left column of help region */
    int		height;				/* height of help region in rows */
    int		width;				/* width of help region in columns */
    int		coords_pending;			/* coordinates must still be resolved */
    int		is_scrollable;			/* flag indicating whether or not the help region is scrollable */
    int		display_coord_type;		/* display coordinate type */
    int		display_row;			/* help window top row */
    int		display_column;			/* help window left column */
    int		help_type;			/* type of help display */
    char	file_name[WMNGR_PARAM_HELP_FILE_LEN+1];	/* help text file name */
    int		file_record;			/* help text file record */
    int		cnshelp_level;			/* console help file level */
    int		cnshelp_entry;			/* console help entry */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_HELP_INFO_REPLY;

#define	WMNGR_PARAM_MAX_FIELDS	500		/* maximum number of returned fields */

typedef struct WMNGR_ACB_FIELD_LIST_REPLY	/* field list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of fields returned */
    unsigned int	num_fields;		/* number of fields in existence */
    int		fields[WMNGR_PARAM_MAX_FIELDS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_FIELD_LIST_REPLY;

#define	WMNGR_PARAM_MAX_HELP_FIELDS	500	/* maximum number of returned help fields */

typedef struct WMNGR_ACB_HELP_LIST_REPLY	/* help field list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of help fields returned */
    unsigned int	num_help_fields;	/* number of help fields in existence */
    int		help_fields[WMNGR_PARAM_MAX_HELP_FIELDS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_HELP_LIST_REPLY;

#define	WMNGR_PARAM_MAX_SWITCHES	500	/* maximum number of returned switches */

typedef struct WMNGR_ACB_SWITCH_LIST_REPLY	/* switch list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of switches returned */
    unsigned int	num_switches;		/* number of switches in existence */
    int		switches[WMNGR_PARAM_MAX_SWITCHES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SWITCH_LIST_REPLY;

#define	WMNGR_PARAM_MAX_SLIDERS		500	/* maximum number of returned sliders */

typedef struct WMNGR_ACB_SLIDER_LIST_REPLY	/* slider list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of sliders returned */
    unsigned int	num_sliders;		/* number of sliders in existence */
    int		sliders[WMNGR_PARAM_MAX_SLIDERS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SLIDER_LIST_REPLY;

#define	WMNGR_PARAM_MAX_HILITE_REGIONS	500	/* maximum number of returned highlight regions */

typedef struct WMNGR_ACB_HILITE_LIST_REPLY	/* highlight region list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of highlight regions returned */
    unsigned int	num_hilite_regions;	/* number of highlight regions in existence */
    short		hilite_regions[WMNGR_PARAM_MAX_HILITE_REGIONS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_HILITE_LIST_REPLY;

#define	WMNGR_PARAM_MAX_SELECT_FIELDS	500	/* maximum number of returned select fields */

typedef struct WMNGR_ACB_SELECT_FIELD_LIST_REPLY	/* select field list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of select fields returned */
    unsigned int	num_select_fields;	/* number of select fields in existence */
    int		select_fields[WMNGR_PARAM_MAX_SELECT_FIELDS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SELECT_FIELD_LIST_REPLY;

typedef struct WMNGR_ACB_SF_INST_ENTRY		/* select field instance entry */
    {
    short	window_id;			/* window containing select field */
    int		select_type;			/* select field type ID */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SF_INST_ENTRY;

typedef struct WMNGR_ACB_SF_INST_LIST_REPLY	/* select field instance list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of select fields returned */
    unsigned int	num_select_fields;	/* number of select fields in existence */
    WMNGR_ACB_SF_INST_ENTRY	select_fields[WMNGR_PARAM_MAX_SELECT_FIELDS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_SF_INST_LIST_REPLY;

#define	WMNGR_PARAM_MAX_MENUBARS	500	/* maximum number of returned menu bars */

typedef struct WMNGR_ACB_MENUBAR_LIST_REPLY	/* menu bar list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of menu bars returned */
    unsigned int	num_menu_bars;		/* number of menu bars in existence */
    short		window_ids[WMNGR_PARAM_MAX_MENUBARS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_MENUBAR_LIST_REPLY;

typedef struct WMNGR_ACB_BUBBLE_HELP_INFO_REPLY	/* window bubble help callback field instance data reply structure */
    {
    short	status;				/* returned status of request */
    short	window_id;			/* window ID */
    char	window_handle[WMNGR_PARAM_HANDLE_LEN+2];	/* window handle */
    int		help_id;			/* help ID */
    int		top_row;			/* top row of help region */
    int		left_column;			/* left column of help region */
    int		height;				/* height of help region in rows */
    int		width;				/* width of help region in columns */
    int		coords_pending;			/* coordinates must still be resolved */
    int		help_type;			/* type of help display */
    char	file_name[WMNGR_PARAM_HELP_FILE_LEN+1];	/* help text file name */
    int		file_record;			/* help text file record */
    int		cnshelp_level;			/* console help file level */
    int		cnshelp_entry;			/* console help entry */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_BUBBLE_HELP_INFO_REPLY;

#define	WMNGR_PARAM_MAX_BUBBLE_HELP_FIELDS	500	/* maximum number of returned bubble help fields */

typedef struct WMNGR_ACB_BUBBLE_HELP_LIST_REPLY	/* help field list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of bubble help fields returned */
    unsigned int	num_help_fields;	/* number of bubble help fields in existence */
    int		help_fields[WMNGR_PARAM_MAX_BUBBLE_HELP_FIELDS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_BUBBLE_HELP_LIST_REPLY;

#define	WMNGR_PARAM_CB_HANDLE_LEN	30	/* length of callback handle text */

typedef struct WMNGR_ACB_CALLBACK_ENTRY		/* window callback entry */
    {
    int		index;				/* list location index */
    int		callback_id;			/* callback ID */
    int		window_id;			/* window ID */
    int		priority;			/* callback priority */
    unsigned int	events;			/* mask of active events */
    window_callback_function	func;		/* callback function */
    void	*callback_data;			/* callback data */
    unsigned int	caller_pc;		/* PC of caller */
    unsigned int	num_calls;		/* number of times called */
    char	handle[WMNGR_PARAM_CB_HANDLE_LEN+2];	/* callback handle */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_CALLBACK_ENTRY;

typedef struct WMNGR_ACB_CALLBACK_INFO_REPLY	/* callback info reply */
    {
    short	status;				/* returned status of request */
    WMNGR_ACB_CALLBACK_ENTRY	callback;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_CALLBACK_INFO_REPLY;

#define	WMNGR_PARAM_MAX_CALLBACKS	55	/* maximum number of returned callbacks */

typedef struct WMNGR_ACB_CALLBACK_LIST_REPLY	/* callback list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of callbacks returned */
    unsigned int	num_callbacks;		/* number of callbacks in existence */
    WMNGR_ACB_CALLBACK_ENTRY	callbacks[WMNGR_PARAM_MAX_CALLBACKS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_CALLBACK_LIST_REPLY;

typedef struct WMNGR_ACB_MNGR_CB_ENTRY		/* window manager callback entry */
    {
    int		callback_id;			/* callback ID */
    window_op_callback_function	func;		/* callback function */
    void	*callback_data;			/* callback data */
    unsigned int	caller_pc;		/* PC of caller */
    unsigned int	num_calls;		/* number of times called */
    char	handle[WMNGR_PARAM_CB_HANDLE_LEN+2];	/* callback handle */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_MNGR_CB_ENTRY;

typedef struct WMNGR_ACB_MNGR_CB_INFO_REPLY	/* callback info reply */
    {
    short	status;				/* returned status of request */
    WMNGR_ACB_MNGR_CB_ENTRY	callback;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_MNGR_CB_INFO_REPLY;

#define	WMNGR_PARAM_MAX_MNGR_CALLBACKS	70	/* maximum number of returned callbacks */

typedef struct WMNGR_ACB_MNGR_CB_LIST_REPLY	/* window manager callback list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of callbacks returned */
    unsigned int	num_callbacks;		/* number of callbacks in existence */
    WMNGR_ACB_MNGR_CB_ENTRY	callbacks[WMNGR_PARAM_MAX_MNGR_CALLBACKS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_MNGR_CB_LIST_REPLY;

typedef struct WMNGR_ACB_LIST_FIELD_ENTRY	/* list field entry */
    {
    short	window_id;			/* window ID */
    int		field_id;			/* field ID */
    int		row;				/* row of callback field */
    int		left_column;			/* left column of callback field */
    int		width;				/* width of callback field in columns */
    int		label_left_column;		/* left column of label field */
    int		label_width;			/* width of label field in columns */
    int		label_color;			/* label color */
    int		is_scrollable;			/* flag indicating whether or not the callback field is scrollable */
    int		row_entry;			/* row entry of list field in scroll buffer */
    int		virtual_column;			/* left column of label field in scroll buffer */
    int		current_item;			/* currently selected item */
    int		menu_text_length;		/* menu entry length */
    int		list_color;			/* displayed list entry color */
    int		num_entries;			/* number of menu entries */
    int		text_fill_char;			/* character to fill in after shorter entries */
    int		auto_update;			/* automatic update flag */
    int		help_id;			/* overall help ID */
    int		bubble_help_id;			/* overall bubble help ID */
    void	(*callback_func)();		/* user callback function */
    void	*callback_data;			/* user data to pass to 'callback_func' */
    int		callback_field_id;		/* window field callback ID */
    int		is_enabled;			/* list field enable flag */
    unsigned int	caller_pc;		/* PC of caller */
    unsigned int	num_sets;		/* number of times the value was set */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_LIST_FIELD_ENTRY;

typedef struct WMNGR_ACB_LIST_FIELD_INFO_REPLY	/* list field info reply */
    {
    short	status;				/* returned status of request */
    WMNGR_ACB_LIST_FIELD_ENTRY	list_field;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_LIST_FIELD_INFO_REPLY;

#define	WMNGR_PARAM_MAX_LIST_FIELDS	500	/* maximum number of returned list fields */

typedef struct WMNGR_ACB_LIST_FIELD_LIST_REPLY	/* list field list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of fields returned */
    unsigned int	num_fields;		/* number of fields in existence */
    int		list_fields[WMNGR_PARAM_MAX_LIST_FIELDS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_LIST_FIELD_LIST_REPLY;

#define	WMNGR_PARAM_INPUT_TEXT_LEN	30	/* length of input field label text */

typedef struct WMNGR_ACB_INPUT_FIELD_ENTRY	/* input field entry */
    {
    short	window_id;			/* window ID */
    int		field_id;			/* field ID */
    char	handle[WMNGR_PARAM_HANDLE_LEN+2];	/* handle */
    int		row;				/* row of callback field */
    int		left_column;			/* left column of callback field */
    int		width;				/* width of callback field in columns */
    char	label[WMNGR_PARAM_INPUT_TEXT_LEN+2];	/* label text */
    int		label_left_column;		/* left column of label field */
    int		label_width;			/* width of label field in columns */
    int		label_color;			/* label color */
    int		is_scrollable;			/* flag indicating whether or not the callback field is scrollable */
    int		row_entry;			/* row entry of input field in scroll buffer */
    int		virtual_column;			/* left column of label field in scroll buffer */
    int		data_type;			/* data type */
    int		data_length;			/* data length in bytes */
    float	minimum;			/* minimum allowable value */
    float	maximum;			/* maximum allowable value */
    float	current_value;			/* current value of field */
    int		value_length;			/* length of value field in columns */
    int		value_color;			/* displayed value color */
    int		num_values;			/* number of values */
    int		want_bracket_chars;		/* flag indicating whether or not to have bracketing characters */
    int		auto_update;			/* automatic update flag */
    int		help_id;			/* overall help ID */
    int		bubble_help_id;			/* overall bubble help ID */
    void	(*callback_func)();		/* user callback function */
    void	*callback_data;			/* user data to pass to 'callback_func' */
    int		callback_field_id;		/* window field callback ID */
    int		is_enabled;			/* input field enable flag */
    unsigned int	caller_pc;		/* PC of caller */
    unsigned int	num_sets;		/* number of times the value was set */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_INPUT_FIELD_ENTRY;

typedef struct WMNGR_ACB_INPUT_FIELD_INFO_REPLY	/* input field info reply */
    {
    short	status;				/* returned status of request */
    WMNGR_ACB_INPUT_FIELD_ENTRY	input_field;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_INPUT_FIELD_INFO_REPLY;

#define	WMNGR_PARAM_MAX_INPUT_FIELDS	500	/* maximum number of returned input fields */

typedef struct WMNGR_ACB_INPUT_FIELD_LIST_REPLY	/* input field list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of fields returned */
    unsigned int	num_fields;		/* number of fields in existence */
    int		input_fields[WMNGR_PARAM_MAX_INPUT_FIELDS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_INPUT_FIELD_LIST_REPLY;

typedef struct WMNGR_ACB_BUTTON_ENTRY		/* button entry */
    {
    short	window_id;			/* window ID */
    int		button_id;			/* button ID */
    char	handle[WMNGR_PARAM_HANDLE_LEN+2];	/* handle */
    int		row;				/* button row */
    int		left_column;			/* left column of button */
    int		width;				/* width of button in columns */
    int		is_scrollable;			/* flag indicating whether or not the button is scrollable */
    int		row_entry;			/* row entry of button in scroll buffer */
    int		virtual_column;			/* left column of button in scroll buffer */
    int		want_bracket_chars;		/* flag indicating whether or not to have bracketing characters */
    int		label_color;			/* label color */
    int		bracket_color;			/* bracket character color */
    int		help_id;			/* help ID */
    int		bubble_help_id;			/* bubble help ID */
    int		callback_field_id;		/* window field callback ID */
    int		is_enabled;			/* button enable flag */
    unsigned int	caller_pc;		/* PC of caller */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_BUTTON_ENTRY;

typedef struct WMNGR_ACB_BUTTON_INFO_REPLY	/* button info reply */
    {
    short	status;				/* returned status of request */
    WMNGR_ACB_BUTTON_ENTRY	button;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_BUTTON_INFO_REPLY;

#define	WMNGR_PARAM_MAX_BUTTONS		500	/* maximum number of returned buttons */

typedef struct WMNGR_ACB_BUTTON_LIST_REPLY	/* button list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of buttons returned */
    unsigned int	num_buttons;		/* number of buttons in existence */
    int		buttons[WMNGR_PARAM_MAX_BUTTONS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ WMNGR_ACB_BUTTON_LIST_REPLY;

/* end of window manager */


/*
**  database routines ...
*/
#define	DBM_ACB_TC_REQUEST_STATS	1	/* request database statistics */
#define	DBM_ACB_TC_DIAG_CLEAR		3	/* clear database statistics */
#define	DBM_ACB_TC_SET_PROC_PERIOD	4	/* set proc check period */
#define	DBM_ACB_TC_READ_WA_HEADERS	5	/* read list of work area headers */
#define	DBM_ACB_TC_READ_WORK_AREA	6	/* read work area */
#define	DBM_ACB_TC_READ_WA_ENTRY	7	/* read work area entry */
#define	DBM_ACB_TC_READ_WA_ENTRIES	8	/* read list of work area entries */

typedef struct DBM_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_DATABASE */
    short	type_code;			/* DBM callback main type code */
    short	subtype;			/* DBM callback secondary type code */
    int	request_data;			/* request specific data */
    int	request_data_2;			/* request specific data */
    char	*read_address;			/* address for work area read */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DBM_ACB_REQUEST;

#define	DBM_PARAM_REPLY_FILLER		3642	/* reply structure filler size */

typedef struct DBM_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    unsigned int	num_errors;		/* total number of errors */
    short	last_error;			/* last error detected */
    char	last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected */
    int		last_error_di;			/* device index of last error */
    short	last_error_pi;			/* property index of last error */
    int		last_request_di;		/* device index of last request */
    short	last_request_pi;		/* property index of last request */
    unsigned short	num_work_areas;		/* number of work areas */
    unsigned int	periodic_proc_count;	/* number of dbprocs in current period */
    unsigned int	max_periodic_proc_count;	/* max number of dbprocs in a period */
    unsigned short	proc_check_period;	/* dbproc measurement period */
    unsigned int	total_dbproc_time;	/* total time spent in DBPROCs in 15 Hz ticks */
    unsigned int	longest_dbproc;		/* longest DBPROC in 15 Hz ticks */
    unsigned int	db_num_errors;		/* total number of errors (db_xxx routines) */
    short	db_last_error;			/* last error detected (db_xxx routines) */
    char	db_last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected (db_xxx routines) */
    unsigned int	total_dbsend_time;	/* total time spent in db_send_c in 15 Hz ticks */
    unsigned int	longest_dbsend;		/* longest db_send_c in 15 Hz ticks */
    unsigned int	total_dbopen_time;	/* total time spent in db_open in 15 Hz ticks */
    unsigned int	longest_dbopen;		/* longest db_open in 15 Hz ticks */
    unsigned int	total_dbselect_time;	/* total time spent in db_select in 15 Hz ticks */
    unsigned int	longest_dbselect;	/* longest db_select in 15 Hz ticks */
    unsigned int	total_dbmodify_time;	/* total time spent in db_modify in 15 Hz ticks */
    unsigned int	longest_dbmodify;	/* longest db_modify in 15 Hz ticks */
    unsigned int	total_dbinsert_time;	/* total time spent in db_insert in 15 Hz ticks */
    unsigned int	longest_dbinsert;	/* longest db_insert in 15 Hz ticks */
    char		*last_processed_wa;	/* last processed work area */
    unsigned int	dbareq;			/* # of calls to */
    unsigned int	dbget;			/* # of calls to */
    unsigned int	dbgeti;			/* # of calls to */
    unsigned int	dbm_read;		/* # of calls to */
    unsigned int	dbm_send;		/* # of calls to */
    unsigned int	dbproc;			/* # of calls to */
    unsigned int	dbrdi;			/* # of calls to */
    unsigned int	dbreq;			/* # of calls to */
    unsigned int	dbrmc;			/* # of calls to */
    unsigned int	dbrpdb;			/* # of calls to */
    unsigned int	dbsize;			/* # of calls to */
    unsigned int	dbwain;			/* # of calls to */
    unsigned int	db_close;		/* # of calls to */
    unsigned int	db_connect;		/* # of calls to */
    unsigned int	db_disconnect;		/* # of calls to */
    unsigned int	db_error;		/* # of calls to */
    unsigned int	db_insert;		/* # of calls to */
    unsigned int	db_modify;		/* # of calls to */
    unsigned int	db_nextrow;		/* # of calls to */
    unsigned int	db_open;		/* # of calls to */
    unsigned int	db_select;		/* # of calls to */
    unsigned int	db_send;		/* # of calls to */
    unsigned int	db_users;		/* # of calls to */
    unsigned int	di2nam;			/* # of calls to */
    unsigned int	nam2di;			/* # of calls to */
    char		unused[DBM_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DBM_ACB_REPLY;

typedef struct DBM_ACB_WA_HEADER		/* ACNET callback work area header structure */
    {
    char		*work_area;		/* pointer to work area */
    unsigned short	num_uses;		/* number of uses of this work area (0 -> no proc yet) */
    unsigned int	num_bytes;		/* size of work area in bytes (0 -> proc is pending) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DBM_ACB_WA_HEADER;

#define	DBM_PARAM_MAX_WA_HEADERS	300	/* maximum number of work area headers to return */

typedef struct DBM_ACB_WA_HEADERS_REPLY		/* ACNET callback work area headers structure */
    {
    short	status;				/* returned status of request */
    short	num_work_areas;			/* number of work areas returned */
    DBM_ACB_WA_HEADER	headers[DBM_PARAM_MAX_WA_HEADERS];	/* list of work area headers */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DBM_ACB_WA_HEADERS_REPLY;

#define	DBM_PARAM_MAX_READ_BYTES	3840	/* maximum number of bytes to read */

#define	DBM_PARAM_WA_REPLY_FILLER	56	/* reply structure filler size */

typedef struct DBM_ACB_READ_WORK_AREA_REPLY	/* ACNET callback read work area reply structure */
    {
    short	status;				/* returned status of request */
    short	num_bytes;			/* number of bytes returned */
    char	work_area[DBM_PARAM_MAX_READ_BYTES];	/* returned data */
    char	unused[DBM_PARAM_WA_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DBM_ACB_READ_WORK_AREA_REPLY;

typedef struct DBM_ACB_WA_ENTRY			/* ACNET callback work area entry structure */
    {
    short	returned_length;		/* length of data or ACNET error code if negative */
    short	byte_offset;			/* offset in bytes from the end of the header to the returned data */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DBM_ACB_WA_ENTRY;

#define	DBM_PARAM_MAX_WA_ENTRIES	900	/* maximum number of work area entries to return */

typedef struct DBM_ACB_WA_ENTRIES_REPLY		/* ACNET callback work area entries structure */
    {
    short		status;			/* returned status of request */
    unsigned short	num_entries;		/* number of data entries returned */
    unsigned short	num_bytes;		/* total size of work area in bytes */
    DBM_ACB_WA_ENTRY	entries[DBM_PARAM_MAX_WA_ENTRIES];	/* list of work area entries */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DBM_ACB_WA_ENTRIES_REPLY;

/* end of DBM */


/*
**  Error handling routines ...
*/
#define	ERR_ACB_TC_REQUEST_STATS	1	/* request error handling statistics */
#define	ERR_ACB_TC_DIAG_CLEAR		3	/* clear error handling diagnostics */
#define	ERR_ACB_TC_DEBUG_ENABLE		4	/* enable debug mode */
#define	ERR_ACB_TC_DEBUG_DISABLE	5	/* disable debug mode */
#define	ERR_ACB_TC_MAIL_ENABLE		6	/* enable error mail */
#define	ERR_ACB_TC_MAIL_DISABLE		7	/* disable error mail */
#define	ERR_ACB_TC_REMOTE_ERROR		8	/* receive remote error message */
#define	ERR_ACB_TC_REMOTE_MESSAGE	9	/* receive remote message */

#define	ERR_PARAM_FILE_NAME_LEN		8	/* log file name length */
#define	ERR_PARAM_AUTHOR_NAME_LEN	32	/* message author name length */
#define	ERR_MESSAGE_LEN			132	/* length of an error message strign */

typedef struct ERR_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_ERROR */
    short	type_code;			/* error callback main type code */
    short	subtype;			/* error callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    unsigned int	timestamp;
    int		source_node;
    char	source_process[PROCESS_NAME_LEN];
    int		dest_node;
    char	dest_process[PROCESS_NAME_LEN];
    int		error_type;
    int		error_code;
    int		priority;
    int		color;
    char	log_file[ERR_PARAM_FILE_NAME_LEN+2];
    char	author[ERR_PARAM_AUTHOR_NAME_LEN+2];
    char	message_string[ERR_MESSAGE_LEN+2];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ERR_ACB_REQUEST;

#define	ERR_PARAM_AUTHOR_LEN		6	/* log file author length */
#define	ERR_PARAM_NUM_SAVED_ERRORS	30	/* maximum number of saved errors */

#define	ERR_PARAM_REPLY_FILLER		3564	/* reply structure filler size */

typedef struct ERR_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    int		init_done;			/* flag TRUE if error_init called */
    unsigned int	num_init_errors;	/* total number of error handling initialization errors */
    short	last_init_error;		/* last initialization error detected */
    int		last_error_type;		/* type of last error */
    int		last_error;			/* last error */
    int		display_type;			/* type of display available */
    int		logging_type;			/* logging type flag */
    int		max_message_length;		/* allowed length of error message */
    char	log_author[ERR_PARAM_AUTHOR_LEN+2];	/* log author string */
    char	file_name[ERR_PARAM_FILE_NAME_LEN+2];	/* log file name */
    int		no_display;			/* if TRUE do not display errors */
    int		is_graphic_display;		/* TRUE if called for a graphic display */
    short	error_window_id;		/* window ID for scrolling window */
    int		error_row;			/* TV location of message */
    int		error_column;
    int		error_num_rows;			/* number of rows for scrolling messages */
    int		use_window_manager;		/* use window manager TV I/O routines */
    short	graphic_text_size;		/* text size for graphics displays */
    short	acnet_error_list[ERR_PARAM_NUM_SAVED_ERRORS];	/* list of ACNET errors in window */
    unsigned int	num_error_display_errors;	/* number of actual errors handled by error_display(_c) */
    unsigned int	num_error_message_errors;	/* number of actual errors handled by error_message(_c) */
    unsigned int	num_error_disp_uti_errors;	/* number of actual errors handled by error_disp_uti */
    short	error_callback_id;		/* INTYPE callback ID */
    short	erase_callback_id;		/* INTYPE callback ID for error erases */
    int		default_priority;		/* default log priority */
    int		embedded_errors_enabled;	/* flag controlling whether library routines can call error_display */
    int		error_display_is_up;		/* flag if error already on TV */
    int		default_author;			/* flag author type */
    int		trace_errors;			/* TRUE if error traceback is on */
    int		error_trace_num_entries;	/* number of entries in error stack */
    int		error_trace_num_errors;		/* number of actual errors in error stack */
    int		error_clipping;			/* clip repeated errors */
    int		clip_depth;			/* number of errors to allow before clipping */
    int		error_context;			/* error_display context */
    int		error_move_and_resize;		/* window moving and resizing flag */
    int		erase_timeout;			/* erase timeout in seconds for single line displays */
    int		acnet_text_enabled;		/* flag determining format of ACNET error displays */
    int		log_uti_errors;			/* UTI error logging flag */
    int		error_border;			/* flag indicating whether or not the error window has a border */
    int		noncns_environment;		/* TRUE-> non console environment */
    unsigned int	num_log_write_errors;	/* total number of share log write errors */
    short	last_log_write_error;		/* last shared log write error detected */
    unsigned int	error_clip_depth;	/* # of calls to */
    unsigned int	error_close;		/* # of calls to */
    unsigned int	error_cmprintf;		/* # of calls to */
    unsigned int	error_colored_message;	/* # of calls to */
    unsigned int	error_display;		/* # of calls to */
    unsigned int	error_disp_uti;		/* # of calls to */
    unsigned int	error_erase;		/* # of calls to */
    unsigned int	error_imbedded_enabled;	/* # of calls to */
    unsigned int	error_imbedded_off;	/* # of calls to */
    unsigned int	error_imbedded_on;	/* # of calls to */
    unsigned int	error_init;		/* # of calls to */
    unsigned int	error_init_uti;		/* # of calls to */
    unsigned int	error_last;		/* # of calls to */
    unsigned int	error_message;		/* # of calls to */
    unsigned int	error_move_disable;	/* # of calls to */
    unsigned int	error_move_enable;	/* # of calls to */
    unsigned int	error_mprintf;		/* # of calls to */
    unsigned int	error_pop_window;	/* # of calls to */
    unsigned int	error_printf;		/* # of calls to */
    unsigned int	error_query_clipping;	/* # of calls to */
    unsigned int	error_query_setup;	/* # of calls to */
    unsigned int	error_size_and_position;	/* # of calls to */
    unsigned int	error_trace_get;	/* # of calls to */
    unsigned int	error_trace_off;	/* # of calls to */
    unsigned int	error_trace_on;		/* # of calls to */
    unsigned int	error_trace_view;	/* # of calls to */
    unsigned int	error_uti_logging;	/* # of calls to */
    unsigned int	log_write;		/* # of calls to */
    char		unused[ERR_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ERR_ACB_REPLY;

/* end of error handling */


/*
**  General process information ...
*/
#define	PROC_ACB_TC_REQUEST_STATS	1	/* request process information statistics */

typedef struct PROC_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_PROCINFO */
    short	type_code;			/* process information callback main type code */
    short	subtype;			/* process information callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ PROC_ACB_REQUEST;

typedef struct PROC_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    char	process_name[SYSTEM_PROCESS_NAME_LEN+2];	/* process name */
    char	user_name[USER_NAME_LEN+2];	/* process user name */
    unsigned int	process_startup_time;	/* time that process was started in clinks */
    unsigned int	remaining_memory;	/* memory remaining in bytes */
    unsigned int	memory_quota;		/* memory quota for this process */
    unsigned int	peak_memory_size; 	/* peak virtual memory size for this process */
    unsigned int	current_physical_memory;	/* current physical memory for this process */
    unsigned int	default_physical_memory;	/* default physical memory for this process */
    unsigned int	physical_memory_quota;	/* physical memory quota for this process */
    unsigned int	physical_memory_limit;	/* maximum physical memory for this process */
    unsigned int	peak_physical_memory;	/* peak physical memory for this process */
    unsigned int	shared_memory;		/* shared memory used by this process */
    unsigned int	num_page_faults;	/* number of page faults */
    unsigned int	current_priority;	/* current process priority */
    unsigned int	base_priority;		/* base process priority */
    unsigned int	cpu_time;		/* CPU time used by process in 10 millisecond ticks */
    unsigned int	cpu_time_limit;		/* CPU time limit for this process */
    unsigned int	remaining_open_file_quota;	/* remaining open file quota for this process */
    unsigned int	open_file_quota;	/* open file quota for this process */
    unsigned int	remaining_buffered_io_byte_count;	/* remaining buffered I/O byte count quota for this process */
    unsigned int	buffered_io_byte_count_quota;	/* buffered I/O byte count quota for this process */
    unsigned int	remaining_buffered_io;	/* remaining buffered I/O quota for this process */
    unsigned int	buffered_io_quota;	/* buffered I/O quota for this process */
    unsigned int	remaining_direct_io;	/* remaining direct I/O quota for this process */
    unsigned int	direct_io_quota;	/* direct I/O quota for this process */
    unsigned int	remaining_lock_quota;	/* remaining lock request quota for this process */
    unsigned int	lock_quota;		/* lock request quota for this process */
    unsigned int	remaining_timer_quota;	/* remaining timer queue entry quota for this process */
    unsigned int	timer_quota;		/* timer queue entry quota for this process */
    unsigned int	process_id;		/* process ID */
    unsigned int	clib_date;		/* date of CLIB image */
    int		current_clib_installed;		/* is the current CLIB installed? */
    int		clib_type;			/* type of CLIB in use */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ PROC_ACB_REPLY;

/* end of general process information */


/*
**  Filesharing UTI routines ...
*/
#define	FSHARE_ACB_TC_REQUEST_STATS	1	/* request Filesharing statistics */
#define	FSHARE_ACB_TC_DIAG_CLEAR	3	/* clear Filesharing diagnostics */
#define	FSHARE_ACB_TC_FILE_INFO		5	/* read file information (given file name) */
#define	FSHARE_ACB_TC_VUN_TO_FILE_INFO	6	/* read file information (given VUN) */
#define	FSHARE_ACB_TC_FILE_LIST		7	/* request the list of open files */
#define	FSHARE_ACB_TC_ENABLE_WRITE_LOGGING	8	/* enable logging file writes */
#define	FSHARE_ACB_TC_DISABLE_WRITE_LOGGING	9	/* disable logging file writes */

#define	FSHARE_PARAM_FILE_NAME_LEN	60	/* maximum file name to return */

typedef struct FSHARE_ACB_REQUEST		/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_FSHARE */
    short	type_code;			/* Filesharing callback main type code */
    short	subtype;			/* Filesharing callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    short	vun;				/* requested VUN */
    char	file_name[FSHARE_PARAM_FILE_NAME_LEN+2];	/* requested null terminated file name */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FSHARE_ACB_REQUEST;

#define	FSHARE_PARAM_REPLY_FILLER	3374	/* reply structure filler size */

typedef struct FSHARE_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    short	last_error;			/* last error detected */
    int		last_extended_error;		/* system status from last error detected */
    short	last_error_vun;			/* VUN of file associated with last error detected */
    int		last_error_record;		/* record number associated with last error detected */
    char	last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected */
    int		file_trace;			/* file trace flag */
    short	fshare_node;			/* current Filesharing node */
    char	connect_name[PROC_NAMLEN+2];	/* task connect name for Filesharing */
    unsigned int	num_open;		/* number of open files */
    unsigned int	num_open_for_write;	/* number of files open for writing */
    unsigned int	num_reopens;		/* number of files automatically reopened */
    unsigned int	last_reopen_time;	/* time a file was last reopened automatically */
    unsigned int	num_opens;		/* # of successful file opens */
    unsigned int	num_closes;		/* # of successful file closes */
    unsigned int	num_reads;		/* # of successful file reads */
    unsigned int	num_multiple_reads;	/* # of successful file multiple reads */
    unsigned int	num_writes;		/* # of successful file writes */
    unsigned int	num_deletes;		/* # of successful file deletes */
    unsigned int	num_rewinds;		/* # of successful file rewinds */
    unsigned int	num_unlocks;		/* # of successful file unlocks */
    unsigned int	num_eof_writes;		/* # of successful file EOF writes */
    unsigned int	num_asynch_opens;	/* # of asynchronous opens */
    unsigned int	num_asynch_reads;	/* # of asynchronous reads */
    unsigned int	num_asynch_read_multiples;	/* # of asynchronous multiple reads */
    unsigned int	num_asynch_writes;	/* # of asynchronous writes */
    unsigned int	num_open_errors;	/* # of file open errors */
    unsigned int	num_close_errors;	/* # of file close errors */
    unsigned int	num_read_errors;	/* # of file read errors */
    unsigned int	num_read_multiple_errors;	/* # of file read errors */
    unsigned int	num_write_errors;	/* # of file write errors */
    unsigned int	num_delete_errors;	/* # of file delete errors */
    unsigned int	num_rewind_errors;	/* # of file rewind errors */
    unsigned int	num_unlock_errors;	/* # of file unlock errors */
    unsigned int	num_write_eof_errors;	/* # of file unlock errors */
    unsigned int	total_open_time;	/* total time spent in opening files in 15 Hz ticks */
    unsigned int	longest_open;		/* longest Filesharing open in 15 Hz ticks */
    unsigned int	total_close_time;	/* total time spent in closing files in 15 Hz ticks */
    unsigned int	longest_close;		/* longest Filesharing close in 15 Hz ticks */
    unsigned int	total_read_time;	/* total time spent in reading files in 15 Hz ticks */
    unsigned int	longest_read;		/* longest Filesharing read in 15 Hz ticks */
    unsigned int	total_read_multiple_time;	/* total time spent in multiple record reads in 15 Hz ticks */
    unsigned int	longest_read_multiple;	/* longest Filesharing multiple read in 15 Hz ticks */
    unsigned int	total_write_time;	/* total time spent in writing files in 15 Hz ticks */
    unsigned int	longest_write;		/* longest Filesharing write in 15 Hz ticks */
    unsigned int	total_delete_time;	/* total time spent in deleting files in 15 Hz ticks */
    unsigned int	longest_delete;		/* longest Filesharing delete in 15 Hz ticks */
    unsigned int	total_rewind_time;	/* total time spent in rewinding files in 15 Hz ticks */
    unsigned int	longest_rewind;		/* longest Filesharing rewind in 15 Hz ticks */
    unsigned int	total_unlock_time;	/* total time spent in unlocking files in 15 Hz ticks */
    unsigned int	longest_unlock;		/* longest Filesharing unlock in 15 Hz ticks */
    unsigned int	total_write_eof_time;	/* total time spent in writing an EOF in 15 Hz ticks */
    unsigned int	longest_write_eof;	/* longest Filesharing in writing and EOF in 15 Hz ticks */
    short	last_open_vun;			/* last file opened */
    unsigned int	open_caller_pc;		/* PC of file opener */
    short	last_close_vun;			/* last file closed */
    unsigned int	close_caller_pc;	/* PC of file closer */
    short	last_read_vun;			/* last file read */
    short	last_read_multiple_vun;		/* last file multiply read */
    short	last_write_vun;			/* last file written */
    short	last_delete_vun;		/* last file deleted */
    short	last_rewind_vun;		/* last file rewound */
    short	last_unlock_vun;		/* last file unlocked */
    int		last_read_record;		/* last record read */
    int		last_read_multiple_record;	/* last record multiply read */
    int		last_write_record;		/* last record written */
    int		last_deleted_record;		/* last record deleted */
    unsigned int	read_mismatch;		/* # of read size mismatches */
    short	last_open_status;		/* ACNET error on last open */
    short	last_close_status;		/* ACNET error on last close */
    short	last_read_status;		/* ACNET error on last read */
    short	last_read_multiple_status;	/* ACNET error on last multiple read */
    short	last_write_status;		/* ACNET error on last write */
    short	last_delete_status;		/* ACNET error on last delete */
    short	last_rewind_status;		/* ACNET error on last rewind */
    short	last_unlock_status;		/* ACNET error on last unlock */
    short	last_write_eof_status;		/* ACNET error on last EOF write */
    char	last_open_file_name[FSHARE_PARAM_FILE_NAME_LEN+2];	/* null terminated last opened file name */
    char	last_close_file_name[FSHARE_PARAM_FILE_NAME_LEN+2];	/* null terminated last closed file name */
    char	last_write_file_name[FSHARE_PARAM_FILE_NAME_LEN+2];	/* null terminated last written file name */
    unsigned int	fsclos;			/* # of calls to */
    unsigned int	fsdel;			/* # of calls to */
    unsigned int	fshare_task_info;	/* # of calls to */
    unsigned int	fsopen;			/* # of calls to */
    unsigned int	fsrdm;			/* # of calls to */
    unsigned int	fsread;			/* # of calls to */
    unsigned int	fsrew;			/* # of calls to */
    unsigned int	fsunlk;			/* # of calls to */
    unsigned int	fsweof;			/* # of calls to */
    unsigned int	fswrit;			/* # of calls to */
    char		unused[FSHARE_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FSHARE_ACB_REPLY;

typedef struct FSHARE_ACB_FILE_INFO_REPLY
    {
    short	status;				/* returned status of request */
    char	file_name[FSHARE_PARAM_FILE_NAME_LEN+2];	/* null terminated file name */
    short	vun;				/* Virtual Unit Number */
    short	write_access;			/* write access */
    short	access_mode;			/* record access */
    int	max_record;			/* maximum write record */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FSHARE_ACB_FILE_INFO_REPLY;

#define	FSHARE_PARAM_MAX_LIST_ENTRIES	40	/* maximum number of file list entries */

typedef struct FSHARE_FILE_LIST_ENTRY		/* file list entry data */
    {
    char	file_name[FSHARE_PARAM_FILE_NAME_LEN+2];	/* null terminated file name */
    short	vun;				/* Virtual Unit Number */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FSHARE_FILE_LIST_ENTRY;

typedef struct FSHARE_ACB_FILE_LIST_REPLY	/* file list data */
    {
    short	status;				/* returned status of request */
    short	num_returned;			/* number of file entries returned */
    short	unused;
    FSHARE_FILE_LIST_ENTRY	file_list[FSHARE_PARAM_MAX_LIST_ENTRIES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FSHARE_ACB_FILE_LIST_REPLY;

/* end of FSHARE */


/*
**  DIO information ...
*/
#define	DIO_ACB_TC_REQUEST_STATS	1	/* request DIO information statistics */
#define	DIO_ACB_TC_DIAG_CLEAR		3	/* clear DIO diagnostics */
#define	DIO_ACB_TC_SETTING_ENABLE	4	/* enable settings */
#define	DIO_ACB_TC_SETTING_DISABLE	5	/* disable settings */
#define	DIO_ACB_TC_DELETE_CACHE		6	/* delete all entries from DIO's cache */
#define	DIO_ACB_TC_TOGGLE_LOG		7	/* toggle error logging */
#define	DIO_ACB_TC_SET_TIMEOUT		8	/* set a timeout value */
#define	DIO_ACB_TC_SET_STALE_NOTIFY	9	/* enable/disable stale reading notification */
#define	DIO_ACB_TC_READ_LISTS		10	/* retrieve current list IDs */
#define	DIO_ACB_TC_READ_DEVICES		11	/* retrieve current single devices */
#define	DIO_ACB_TC_READ_LIST_DEVICES	12	/* retrieve current list devices */
#define	DIO_ACB_TC_READ_ONESHOT_DEVICES	13	/* retrieve last one shot read devices */
#define	DIO_ACB_TC_DEBUG_ENABLE		14	/* enable debug mode */
#define	DIO_ACB_TC_DEBUG_DISABLE	15	/* disable debug mode */
#define	DIO_ACB_TC_MAIL_ENABLE		16	/* enable error mail */
#define	DIO_ACB_TC_MAIL_DISABLE		17	/* disable error mail */
#define	DIO_ACB_TC_READ_SET_HISTORY	18	/* retrieve device setting history */
#define	DIO_ACB_TC_READ_ERROR_HISTORY	19	/* retrieve device reading error history */
#define	DIO_ACB_TC_SET_ERROR_HISTORY	20	/* retrieve device setting error history */
#define	DIO_ACB_TC_CLEAR_ONESHOTS	21	/* clear one shot reading history */
#define	DIO_ACB_TC_CLEAR_SETTINGS	22	/* clear setting history */
#define	DIO_ACB_TC_CLEAR_READ_ERRORS	23	/* clear reading error history */
#define	DIO_ACB_TC_CLEAR_SET_ERRORS	24	/* clear setting error history */

#define	DIO_ACB_TCSUB_READING		1	/* access reading information */
#define	DIO_ACB_TCSUB_SETTING		2	/* access setting information */
#define	DIO_ACB_TCSUB_DATABASE		4	/* access database information */
#define	DIO_ACB_TCSUB_ENABLE		8	/* enable a parameter */
#define	DIO_ACB_TCSUB_DISABLE		0x10	/* disable a parameter */

typedef struct DIO_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_DIO */
    short	type_code;			/* DIO information callback main type code */
    short	subtype;			/* DIO information callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_REQUEST;

/* DIO statistics info */

#define	DIO_PARAM_REPLY_FILLER	2650		/* reply structure filler size */

typedef struct DIO_ACB_REPLY			/* ACNET callback reply structure */
    {
    short		status;			/* returned status of request */
    unsigned int	logit_state;		/* logging state */
    unsigned int	setting_state;		/* setting flag state */
    unsigned int	dbm_tmo;		/* dbm timeout */
    unsigned int	dpm_read_tmo;		/* dpget timeout */
    unsigned int	dpm_set_tmo;		/* dpset timeout */
    unsigned int	read_dev_single;	/* # of single retrieval devices */
    unsigned int	read_dev_list;		/* # of retrieval devices in lists */
    unsigned int	set_dev_single;		/* # of single setting devices */
    unsigned int	set_dev_list;		/* # of setting devices in lists */
    unsigned int	read_snap_list;		/* # of snapshot devices being read */
    unsigned int	num_read_list;		/* # of retrieval lists */
    unsigned int	num_set_list;		/* # of setting lists */
    unsigned int	td_num_list;		/* # of TD lists */
    unsigned int	num_snap_list;		/* # of snapshot lists */
    unsigned int	num_pdb_entries;	/* # of PDB entries in DBPOOL */
    unsigned int	num_info_entries;	/* # of entries in INFOPOOL */
    unsigned int	ftd_event;		/* count of devices read on event */
    unsigned int	ftd_freq;		/* count of (all but 1 Hz and 15 Hz) */
    unsigned int	ftd_1hz;		/* count of devices read at 1 Hz */
    unsigned int	ftd_15hz;		/* count of devices read at 15 Hz */
    unsigned int	ftd_default;		/* count of devices using default FTD */
    unsigned int	ftd_noshot;		/* count of devices using no shot FTD */
    unsigned int	dynamic_memory;		/* # of bytes of dynamic memory */
    unsigned int	out_of_memory;		/* out of dynamic memory flag */
    unsigned int	free_errors;		/* # of memory free errors */
    unsigned int	acnet_errors;		/* ACNET generated errors */
    unsigned int	dio_errors;		/* DIO generated errors */
    unsigned int	dbm_errors;		/* DBM generated errors */
    unsigned int	dpm_errors;		/* DPM generated errors */
    unsigned int	dbm_timeouts;		/* # of database timeouts */
    unsigned int	dpm_pendings;		/* # of DPM pendings */
    unsigned int	misc_errors;		/* # of errors */
    int			last_error;		/* last error detected */
    unsigned int	ftd_one_shot;		/* count of one shot reads */
    unsigned int	total_dbproc_time;	/* total time spent in DBPROCs in 15 Hz ticks */
    unsigned int	longest_dbproc;		/* longest DBPROC in 15 Hz ticks */
    unsigned int	total_dpproc_time;	/* total time spent in DPPROCs in 15 Hz ticks */
    unsigned int	longest_dpproc;		/* longest DPPROC in 15 Hz ticks */
    unsigned int	ret_count;		/* # of returned statistics messages */
    int			last_device_read;	/* last device read info */
    short		last_property_read;
    short		last_read_status;
    int			last_device_set;	/* last device set info */
    short		last_property_set;
    short		last_set_status;
    int			last_error_read_device;	/* last reading error info */
    short		last_error_read_property;
    short		last_error_read;
    int			last_error_set_device;	/* last setting error info */
    short		last_error_set_property;
    short		last_error_set;
    unsigned int	num_oneshot_reads;
    int			last_oneshot_device;
    short		last_oneshot_property;
    unsigned int	num_di_entries;		/* # of entries in DI pool */
    unsigned int	num_settings;		/* number of settings attempted */
    unsigned int	num_setting_errors;	/* number of setting errors */
    short		dio_one_shot;		/* DIO one shot FTD */
    int			dio_notify_stale;	/* stale data notify flag */
    int			dio_use_mio;		/* MIO in use */
    int			dio_mio_set_read;	/* MIO: PRSET map to PRREAD */
    unsigned int	hash_table_size;	/* size of cache hash table */
    unsigned int	dbproc;			/* # of DBPROC calls */
    unsigned int	dpproc;			/* # of DPPROC calls */
    unsigned int	dio_alarm_dnom;		/* # of calls to */
    unsigned int	dio_alarm_dnom_lst;	/* # of calls to */
    unsigned int	dio_alarm_events;	/* # of calls to */
    unsigned int	dio_alarm_events_lst;	/* # of calls to */
    unsigned int	dio_alarm_flags;	/* # of calls to */
    unsigned int	dio_alarm_flags_list;	/* # of calls to */
    unsigned int	dio_alarm_limits;	/* # of calls to */
    unsigned int	dio_alarm_lim_lst;	/* # of calls to */
    unsigned int	dio_alarm_tries;	/* # of calls to */
    unsigned int	dio_alarm_tries_lst;	/* # of calls to */
    unsigned int	dio_analog_alarm_text;	/* # of calls to */
    unsigned int	dio_array_device_negative;	/* # of calls to */
    unsigned int	dio_array_device_off;	/* # of calls to */
    unsigned int	dio_array_device_on;	/* # of calls to */
    unsigned int	dio_array_device_positive;	/* # of calls to */
    unsigned int	dio_array_device_reset;	/* # of calls to */
    unsigned int	dio_bld_alrm_lst;	/* # of calls to */
    unsigned int	dio_bld_get;		/* # of calls to */
    unsigned int	dio_bld_get_raw;	/* # of calls to */
    unsigned int	dio_bld_set;		/* # of calls to */
    unsigned int	dio_bld_set_raw;	/* # of calls to */
    unsigned int	dio_build_alarm_list;	/* # of calls to */
    unsigned int	dio_build_get_array_list;	/* # of calls to */
    unsigned int	dio_build_snapshot_list;/* # of calls to */
    unsigned int	dio_cache_property_info;	/* # of calls to */
    unsigned int	dio_cache_scaling_info;	/* # of calls to */
    unsigned int	dio_cancel_alarm;	/* # of calls to */
    unsigned int	dio_cancel_alarm_lst;	/* # of calls to */
    unsigned int	dio_cancel_get_array;	/* # of calls to */
    unsigned int	dio_cancel_set_array;	/* # of calls to */
    unsigned int	dio_cancel_snapshot_list;	/* # of calls to */
    unsigned int	dio_can_ftp;		/* # of calls to */
    unsigned int	dio_can_get;		/* # of calls to */
    unsigned int	dio_can_get_lst;	/* # of calls to */
    unsigned int	dio_can_set;		/* # of calls to */
    unsigned int	dio_can_set_device;	/* # of calls to */
    unsigned int	dio_can_set_lst;	/* # of calls to */
    unsigned int	dio_can_snapshot;	/* # of calls to */
    unsigned int	dio_can_trigger_snapshot;	/* # of calls to */
    unsigned int	dio_change_ftd;		/* # of calls to */
    unsigned int	dio_change_ftd_lst;	/* # of calls to */
    unsigned int	dio_check_read_request_size;	/* # of calls to */
    unsigned int	dio_check_set_request_size;	/* # of calls to */
    unsigned int	dio_clear_redirection_slot;	/* # of calls to */
    unsigned int	dio_cntrl_dev;		/* # of calls to */
    unsigned int	dio_cntrl_lst;		/* # of calls to */
    unsigned int	dio_data_len;		/* # of calls to */
    unsigned int	dio_dbquery;		/* # of calls to */
    unsigned int	dio_db_retriever;	/* # of calls to */
    unsigned int	dio_default_ftd;	/* # of calls to */
    unsigned int	dio_delete_all_emc_info;/* # of calls to */
    unsigned int	dio_delete_all_info;	/* # of calls to */
    unsigned int	dio_delete_all_name_info;	/* # of calls to */
    unsigned int	dio_delete_cache;	/* # of calls to */
    unsigned int	dio_delete_info;	/* # of calls to */
    unsigned int	dio_delete_name_info;	/* # of calls to */
    unsigned int	dio_delete_pdb;		/* # of calls to */
    unsigned int	dio_delete_pdb_all;	/* # of calls to */
    unsigned int	dio_delete_pdb_lst;	/* # of calls to */
    unsigned int	dio_delete_requests;	/* # of calls to */
    unsigned int	dio_desired_alarm_limit_type;	/* # of calls to */
    unsigned int	dio_device_index;	/* # of calls to */
    unsigned int	dio_device_location;	/* # of calls to */
    unsigned int	dio_device_ssdr;	/* # of calls to */
    unsigned int	dio_device_state;	/* # of calls to */
    unsigned int	dio_device_type;	/* # of calls to */
    unsigned int	dio_dev_emc;		/* # of calls to */
    unsigned int	dio_dev_name;		/* # of calls to */
    unsigned int	dio_dev_node;		/* # of calls to */
    unsigned int	dio_dev_ssdn;		/* # of calls to */
    unsigned int	dio_dev_text;		/* # of calls to */
    unsigned int	dio_dev_type;		/* # of calls to */
    unsigned int	dio_digital_alarm_text;	/* # of calls to */
    unsigned int	dio_disable;		/* # of calls to */
    unsigned int	dio_disable_abort;	/* # of calls to */
    unsigned int	dio_disable_settings;	/* # of calls to */
    unsigned int	dio_display_attributes;	/* # of calls to */
    unsigned int	dio_dis_abt_lst;	/* # of calls to */
    unsigned int	dio_dis_lst;		/* # of calls to */
    unsigned int	dio_dpreq_info;		/* # of calls to */
    unsigned int	dio_emc_to_device_index;/* # of calls to */
    unsigned int	dio_emc_type;		/* # of calls to */
    unsigned int	dio_enable;		/* # of calls to */
    unsigned int	dio_enable_abort;	/* # of calls to */
    unsigned int	dio_enable_error_logging;	/* # of calls to */
    unsigned int	dio_enable_settings;	/* # of calls to */
    unsigned int	dio_ena_abt_lst;	/* # of calls to */
    unsigned int	dio_ena_lst;		/* # of calls to */
    unsigned int	dio_event_control;	/* # of calls to */
    unsigned int	dio_event_control_list;	/* # of calls to */
    unsigned int	dio_extract_alarm_info;	/* # of calls to */
    unsigned int	dio_extrema;		/* # of calls to */
    unsigned int	dio_extrema_pdb;	/* # of calls to */
    unsigned int	dio_ext_text;		/* # of calls to */
    unsigned int	dio_family;		/* # of calls to */
    unsigned int	dio_family_info;	/* # of calls to */
    unsigned int	dio_find_name;		/* # of calls to */
    unsigned int	dio_flush;		/* # of calls to */
    unsigned int	dio_frig_houses;	/* # of calls to */
    unsigned int	dio_get_alarm;		/* # of calls to */
    unsigned int	dio_get_alrm_lst;	/* # of calls to */
    unsigned int	dio_get_array_device;	/* # of calls to */
    unsigned int	dio_get_db_alarm;	/* # of calls to */
    unsigned int	dio_get_dev;		/* # of calls to */
    unsigned int	dio_get_directed_list;	/* # of calls to */
    unsigned int	dio_get_directed_list_raw;	/* # of calls to */
    unsigned int	dio_get_last_setting;	/* # of calls to */
    unsigned int	dio_get_last_setting_raw;	/* # of calls to */
    unsigned int	dio_get_lst;		/* # of calls to */
    unsigned int	dio_get_lst_raw;	/* # of calls to */
    unsigned int	dio_get_oneshot_ftd;	/* # of calls to */
    unsigned int	dio_get_pdb;		/* # of calls to */
    unsigned int	dio_get_properties;	/* # of calls to */
    unsigned int	dio_get_raw;		/* # of calls to */
    unsigned int	dio_get_retry;		/* # of calls to */
    unsigned int	dio_get_retry_directed;	/* # of calls to */
    unsigned int	dio_get_snapshot_list;	/* # of calls to */
    unsigned int	dio_get_status_array_device;	/* # of calls to */
    unsigned int	dio_get_timer_ref;	/* # of calls to */
    unsigned int	dio_has_property;	/* # of calls to */
    unsigned int	dio_has_property_list;	/* # of calls to */
    unsigned int	dio_has_setting_record;	/* # of calls to */
    unsigned int	dio_insert_pdb_lst;	/* # of calls to */
    unsigned int	dio_insert_reqlst;	/* # of calls to */
    unsigned int	dio_is_abort;		/* # of calls to */
    unsigned int	dio_is_abrt_inh;	/* # of calls to */
    unsigned int	dio_is_abtinh_lst;	/* # of calls to */
    unsigned int	dio_is_abt_lst;		/* # of calls to */
    unsigned int	dio_is_broken;		/* # of calls to */
    unsigned int	dio_is_bypas;		/* # of calls to */
    unsigned int	dio_is_byp_lst;		/* # of calls to */
    unsigned int	dio_is_controlled_set;	/* # of calls to */
    unsigned int	dio_is_controlled_set_list;	/* # of calls to */
    unsigned int	dio_is_display_dec;	/* # of calls to */
    unsigned int	dio_is_display_short;	/* # of calls to */
    unsigned int	dio_is_family;		/* # of calls to */
    unsigned int	dio_is_good;		/* # of calls to */
    unsigned int	dio_is_good_lst;	/* # of calls to */
    unsigned int	dio_is_on;		/* # of calls to */
    unsigned int	dio_is_on_lst;		/* # of calls to */
    unsigned int	dio_is_positive;	/* # of calls to */
    unsigned int	dio_is_pos_lst;		/* # of calls to */
    unsigned int	dio_is_ramping;		/* # of calls to */
    unsigned int	dio_is_ramping_list;	/* # of calls to */
    unsigned int	dio_is_rdy_lst;		/* # of calls to */
    unsigned int	dio_is_ready;		/* # of calls to */
    unsigned int	dio_is_remote;		/* # of calls to */
    unsigned int	dio_is_rem_lst;		/* # of calls to */
    unsigned int	dio_is_setting_enabled;	/* # of calls to */
    unsigned int	dio_is_step_motor;	/* # of calls to */
    unsigned int	dio_list_info;		/* # of calls to */
    unsigned int	dio_log_error;		/* # of calls to */
    unsigned int	dio_madc_location;	/* # of calls to */
    unsigned int	dio_madc_number;	/* # of calls to */
    unsigned int	dio_move_step_motor;	/* # of calls to */
    unsigned int	dio_negative;		/* # of calls to */
    unsigned int	dio_neg_lst;		/* # of calls to */
    unsigned int	dio_node;		/* # of calls to */
    unsigned int	dio_off;		/* # of calls to */
    unsigned int	dio_off_lst;		/* # of calls to */
    unsigned int	dio_on;			/* # of calls to */
    unsigned int	dio_on_lst;		/* # of calls to */
    unsigned int	dio_parse_long_device_name;	/* # of calls to */
    unsigned int	dio_pdb_ctl;		/* # of calls to */
    unsigned int	dio_pdb_sts;		/* # of calls to */
    unsigned int	dio_positive;		/* # of calls to */
    unsigned int	dio_pos_lst;		/* # of calls to */
    unsigned int	dio_primary_to_scaled_data;	/* # of calls to */
    unsigned int	dio_protection_mask;	/* # of calls to */
    unsigned int	dio_query_tuner;	/* # of calls to */
    unsigned int	dio_raw_data_type;	/* # of calls to */
    unsigned int	dio_raw_to_scaled_custom;	/* # of calls to */
    unsigned int	dio_raw_to_scaled_data;	/* # of calls to */
    unsigned int	dio_raw_to_status;	/* # of calls to */
    unsigned int	dio_raw_to_status_text;	/* # of calls to */
    unsigned int	dio_raw_to_value_text;	/* # of calls to */
    unsigned int	dio_rearm_snapshot_list;/* # of calls to */
    unsigned int	dio_reset;		/* # of calls to */
    unsigned int	dio_restore_last_setting; /* # of calls to */
    unsigned int	dio_rst_lst;		/* # of calls to */
    unsigned int	dio_salarm_dnom;	/* # of calls to */
    unsigned int	dio_salarm_dnom_lst;	/* # of calls to */
    unsigned int	dio_salarm_lim;		/* # of calls to */
    unsigned int	dio_salarm_lim_lst;	/* # of calls to */
    unsigned int	dio_save_info;		/* # of calls to */
    unsigned int	dio_scaled_to_raw_data;	/* # of calls to */
    unsigned int	dio_scaled_to_value_text;	/* # of calls to */
    unsigned int	dio_scaling;		/* # of calls to */
    unsigned int	dio_scaling_len;	/* # of calls to */
    unsigned int	dio_scaling_length_list;	/* # of calls to */
    unsigned int	dio_scaling_text;	/* # of calls to */
    unsigned int	dio_set_abort_inh_lst;	/* # of calls to */
    unsigned int	dio_set_alarm_flags;	/* # of calls to */
    unsigned int	dio_set_array_device;	/* # of calls to */
    unsigned int	dio_set_broken;		/* # of calls to */
    unsigned int	dio_set_bypass_lst;	/* # of calls to */
    unsigned int	dio_set_dc_mode;	/* # of calls to */
    unsigned int	dio_set_dc_mode_list;	/* # of calls to */
    unsigned int	dio_set_dev;		/* # of calls to */
    unsigned int	dio_set_for_read;	/* # of calls to */
    unsigned int	dio_set_hash_table_size;	/* # of calls to */
    unsigned int	dio_set_lst;		/* # of calls to */
    unsigned int	dio_set_lst_raw;	/* # of calls to */
    unsigned int	dio_set_ramp_mode;	/* # of calls to */
    unsigned int	dio_set_ramp_mode_list;	/* # of calls to */
    unsigned int	dio_set_raw;		/* # of calls to */
    unsigned int	dio_set_redirection_slot;	/* # of calls to */
    unsigned int	dio_set_step_motor;	/* # of calls to */
    unsigned int	dio_set_timer_ref;	/* # of calls to */
    unsigned int	dio_siblings;		/* # of calls to */
    unsigned int	dio_simulate;		/* # of calls to */
    unsigned int	dio_simulate_query;	/* # of calls to */
    unsigned int	dio_slist_info;		/* # of calls to */
    unsigned int	dio_ssdn_to_device_type;	/* # of calls to */
    unsigned int	dio_ssdn_to_location;	/* # of calls to */
    unsigned int	dio_status;		/* # of calls to */
    unsigned int	dio_sts_lst;		/* # of calls to */
    unsigned int	dio_sts_txt;		/* # of calls to */
    unsigned int	dio_sts_txt_lst;	/* # of calls to */
    unsigned int	dio_tuner;		/* # of calls to */
    unsigned int	dio_units_text;		/* # of calls to */
    unsigned int	dio_value_text;		/* # of calls to */
    unsigned int	dio_virtual_machine_info;	/* # of calls to */
    unsigned int	dio_wildcard_build;	/* # of calls to */
    unsigned int	dio_wildcard_cancel;	/* # of calls to */
    unsigned int	dio_wildcard_read;	/* # of calls to */
    unsigned int	mio_cancel;		/* # of calls to */
    unsigned int	mio_control;		/* # of calls to */
    unsigned int	mio_control_list;	/* # of calls to */
    unsigned int	mio_fill_status;	/* # of calls to */
    unsigned int	mio_pool_address;	/* # of calls to */
    unsigned int	mio_read;		/* # of calls to */
    unsigned int	mio_read_directed;	/* # of calls to */
    unsigned int	mio_read_directed_list;	/* # of calls to */
    unsigned int	mio_read_list;		/* # of calls to */
    unsigned int	mio_select_pool;	/* # of calls to */
    unsigned int	mio_set;		/* # of calls to */
    unsigned int	mio_set_list;		/* # of calls to */
    unsigned int	mio_time_set;		/* # of calls to */
    unsigned int	mng_dbpool;		/* # of calls to */
    unsigned int	mng_dipool;		/* # of calls to */
    unsigned int	mng_emcpool;		/* # of calls to */
    unsigned int	mng_infopool;		/* # of calls to */
    unsigned int	mng_infopool_2;		/* # of calls to */
    unsigned int	read_packeted_data;	/* # of calls to */
    unsigned int	read_packeted_device;	/* # of calls to */
    unsigned int	td_build;		/* # of calls to */
    unsigned int	td_cancel; 		/* # of calls to */
    unsigned int	td_read;		/* # of calls to */
    unsigned int	td_read_one; 		/* # of calls to */
    unsigned int	td_set;			/* # of calls to */
    unsigned int	td_set_one; 		/* # of calls to */
    unsigned int	td_query;		/* # of calls to */
    char		unused[DIO_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_REPLY;

#define	DIO_PARAM_MAX_LIST_ENTRIES	450	/* maximum number of DIO list entries */

typedef struct DIO_ACB_LIST_ENTRY		/* DIO list entry data */
    {
    int		list_id;			/* list ID */
    unsigned int	num_devices;		/* number of devices in list */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_LIST_ENTRY;

typedef struct DIO_ACB_READ_LISTS_REPLY		/* DIO list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of lists returned */
    unsigned int	num_lists;		/* number of lists in existence */
    DIO_ACB_LIST_ENTRY	lists[DIO_PARAM_MAX_LIST_ENTRIES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_READ_LISTS_REPLY;

#define	DIO_PARAM_MAX_DEVICES	320		/* maximum number of devices */

typedef struct DIO_ACB_DEVICE_ENTRY		/* DIO device entry data */
    {
    int			device_index;		/* device index */
    short		property;		/* property index */
    short		ftd;			/* Frequency Time Descriptor */
    unsigned short	length;			/* data length in bytes */
    unsigned short	offset;			/* data offset in bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_DEVICE_ENTRY;

typedef struct DIO_ACB_READ_DEVICES_REPLY	/* DIO device data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of devices returned */
    unsigned int	num_devices;		/* number of devices in existence */
    DIO_ACB_DEVICE_ENTRY	devices[DIO_PARAM_MAX_DEVICES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_READ_DEVICES_REPLY;

#define	DIO_PARAM_MAX_ONESHOTS	150		/* maximum number of one shot devices */

typedef struct DIO_ACB_READ_ONESHOTS_REPLY	/* one shot reading device data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of oneshot devices returned */
    unsigned int	num_devices;		/* number of oneshot devices in existence */
    DIO_ACB_DEVICE_ENTRY	devices[DIO_PARAM_MAX_ONESHOTS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_READ_ONESHOTS_REPLY;

typedef struct DIO_ACB_SET_HISTORY_ENTRY	/* DIO setting history entry data */
    {
    int			device_index;		/* setting device index */
    short		property;		/* setting property index */
    int			length;			/* data length in bytes */
    int			offset;			/* data offset in bytes */
    unsigned int	setting_data;		/* up to first 4 bytes of raw setting data */
    short		error;			/* setting status */
    unsigned int	timestamp;		/* timestamp of setting in clinks */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_SET_HISTORY_ENTRY;

#define	DIO_PARAM_MAX_SET_HISTORY	150	/* maximum number of setting history entries */

typedef struct DIO_ACB_SET_HISTORY_REPLY	/* setting history data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of setting history entries returned */
    unsigned int	num_devices;		/* number of setting history entries in existence */
    DIO_ACB_SET_HISTORY_ENTRY	devices[DIO_PARAM_MAX_SET_HISTORY];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_SET_HISTORY_REPLY;

typedef struct DIO_ACB_READ_ERROR_ENTRY		/* DIO reading error history entry data */
    {
    int			device_index;		/* reading device index */
    short		property;		/* reading property index */
    int			length;			/* data length in bytes */
    int			offset;			/* data offset in bytes */
    int			ftd;			/* reading FTD */
    int			error;			/* reading status */
    unsigned int	timestamp;		/* timestamp of reading in clinks (not filled in) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_READ_ERROR_ENTRY;

#define	DIO_PARAM_MAX_READ_ERROR_HISTORY	150	/* maximum number of reading error history entries */

typedef struct DIO_ACB_READ_ERROR_REPLY		/* reading error history data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of reading error history entries returned */
    unsigned int	num_devices;		/* number of reading error history entries in existence */
    DIO_ACB_READ_ERROR_ENTRY	devices[DIO_PARAM_MAX_READ_ERROR_HISTORY];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_READ_ERROR_REPLY;

typedef struct DIO_ACB_SET_ERROR_ENTRY		/* DIO setting error history entry data */
    {
    int			device_index;		/* setting device index */
    short		property;		/* setting property index */
    int			length;			/* data length in bytes */
    int			offset;			/* data offset in bytes */
    unsigned int	setting_data;		/* up to first 4 bytes of raw setting data */
    int			error;			/* setting status */
    unsigned int	timestamp;		/* timestamp of setting in clinks */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_SET_ERROR_ENTRY;

#define	DIO_PARAM_MAX_SET_ERROR_HISTORY	150	/* maximum number of setting error history entries */

typedef struct DIO_ACB_SET_ERROR_REPLY		/* setting error history data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of setting error history entries returned */
    unsigned int	num_devices;		/* number of setting error history entries in existence */
    DIO_ACB_SET_ERROR_ENTRY	devices[DIO_PARAM_MAX_SET_ERROR_HISTORY];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DIO_ACB_SET_ERROR_REPLY;

/* end of DIO */


/*
**  FM information ...
*/
#define	FMNGR_ACB_TC_REQUEST_STATS	1	/* request FM information statistics */
#define	FMNGR_ACB_TC_DIAG_CLEAR		3	/* clear FM diagnostics */
#define	FMNGR_ACB_TC_WRITING_ENABLE	4	/* enable writings */
#define	FMNGR_ACB_TC_WRITING_DISABLE	5	/* disable writings */
#define	FMNGR_ACB_TC_VUN_TO_FILE_INFO	6	/* read file information (given VUN) */
#define	FMNGR_ACB_TC_TOGGLE_LOG		7	/* toggle error logging */
#define	FMNGR_ACB_TC_SET_TIMEOUT	8	/* set file access timeout */
#define	FMNGR_ACB_TC_FILE_INFO		9	/* read file information (given file name) */
#define	FMNGR_ACB_TC_FILE_LIST		10	/* request the list of open files */

#define	FMNGR_PARAM_FILE_NAME_LEN	60	/* maximum file name to return */

typedef struct FMNGR_ACB_REQUEST		/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_FM */
    short	type_code;			/* FM information callback main type code */
    short	subtype;			/* FM information callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    unsigned int	fshare_timeout;		/* Filesharing timeout period in seconds */
    short	vun;				/* requested VUN */
    char	file_name[FMNGR_PARAM_FILE_NAME_LEN+2];	/* requested null terminated file name */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FMNGR_ACB_REQUEST;

/* FM statistics info */

#define	FMNGR_PARAM_REPLY_FILLER	3508	/* reply structure filler size */

typedef struct FMNGR_ACB_REPLY			/* ACNET callback reply structure */
    {
    short		status;			/* returned status of request */
    unsigned int	logit_state;		/* logging state */
    unsigned int	write_state;		/* writing flag state */
    unsigned int	fshare_tmo;		/* Filesharing timeout period in sec */
    unsigned int	num_open;		/* # of open files */
    unsigned int	dynamic_memory;		/* # of bytes of dynamic memory */
    unsigned int	out_of_memory;		/* out of dynamic memory flag */
    unsigned int	asynch_entries;		/* # of entries in list */
/* statistics after this point cleared by fm_clear_stats */
/* a CONSTANT in fm_statistics.c must be edited if entries are added above */
    unsigned int	free_errors;		/* # of memory free errors */
    unsigned int	acnet_errors;		/* ACNET generated errors */
    unsigned int	fshare_errors;		/* Filesharing generated errors */
    unsigned int	fm_errors;		/* file manager generated errors */
    unsigned int	locked_errors;		/* record locked errors */
    unsigned int	busy_errors;		/* busy errors */
    unsigned int	tmo_errors;		/* timeout errors */
    unsigned int	already_open_errors;	/* file already open errors */
    unsigned int	novun_errors;		/* no such VUN errors */
    unsigned int	nofile_errors;		/* no such file errors */
    unsigned int	misc_errors;		/* # of miscellaneous errors */
    unsigned int	num_opens;		/* # of successful file opens */
    unsigned int	num_closes;		/* # of successful file closes */
    unsigned int	num_reads;		/* # of successful file reads */
    unsigned int	num_writes;		/* # of successful file writes */
    unsigned int	num_deletes;		/* # of successful file deletes */
    unsigned int	num_rewinds;		/* # of successful file rewinds */
    unsigned int	num_unlocks;		/* # of successful file unlocks */
    unsigned int	fm_check_reply;		/* # of calls to */
    unsigned int	fm_close;		/* # of calls to */
    unsigned int	fm_close_all;		/* # of calls to */
    unsigned int	fm_close_by_name;	/* # of calls to */
    unsigned int	fm_delete_record;	/* # of calls to */
    unsigned int	fm_file_attributes;	/* # of calls to */
    unsigned int	fm_get_access;		/* # of calls to */
    unsigned int	fm_get_filename;	/* # of calls to */
    unsigned int	fm_get_vun;		/* # of calls to */
    unsigned int	fm_io;			/* # of calls to */
    unsigned int	fm_is_open;		/* # of calls to */
    unsigned int	fm_is_writing_enabled;	/* # of calls to */
    unsigned int	fm_open;		/* # of calls to */
    unsigned int	fm_open_io;		/* # of calls to */
    unsigned int	fm_open_read;		/* # of calls to */
    unsigned int	fm_open_write;		/* # of calls to */
    unsigned int	fm_query_tuner;		/* # of calls to */
    unsigned int	fm_read;		/* # of calls to */
    unsigned int	fm_read_defaults;	/* # of calls to */
    unsigned int	fm_read_multiple;	/* # of calls to */
    unsigned int	fm_restore_defaults;	/* # of calls to */
    unsigned int	fm_rewind;		/* # of calls to */
    unsigned int	fm_save_defaults;	/* # of calls to */
    unsigned int	fm_set_defaults;	/* # of calls to */
    unsigned int	fm_tuner;		/* # of calls to */
    unsigned int	fm_unlock;		/* # of calls to */
    unsigned int	fm_write;		/* # of calls to */
    unsigned int	fm_write_disable;	/* # of calls to */
    unsigned int	fm_write_enable;	/* # of calls to */
    unsigned int	total_open_time;	/* total time spent in opening files in 15 Hz ticks */
    unsigned int	longest_open;		/* longest Filesharing open in 15 Hz ticks */
    unsigned int	total_close_time;	/* total time spent in closing files in 15 Hz ticks */
    unsigned int	longest_close;		/* longest Filesharing close in 15 Hz ticks */
    unsigned int	total_read_time;	/* total time spent in reading files in 15 Hz ticks */
    unsigned int	longest_read;		/* longest Filesharing read in 15 Hz ticks */
    unsigned int	total_write_time;	/* total time spent in writing files in 15 Hz ticks */
    unsigned int	longest_write;		/* longest Filesharing write in 15 Hz ticks */
    unsigned int	total_delete_time;	/* total time spent in deleting files in 15 Hz ticks */
    unsigned int	longest_delete;		/* longest Filesharing delete in 15 Hz ticks */
    unsigned int	total_rewind_time;	/* total time spent in rewinding files in 15 Hz ticks */
    unsigned int	longest_rewind;		/* longest Filesharing rewind in 15 Hz ticks */
    unsigned int	total_unlock_time;	/* total time spent in unlocking files in 15 Hz ticks */
    unsigned int	longest_unlock;		/* longest Filesharing unlock in 15 Hz ticks */
    char		last_read_file[FSHARE_NAMLEN+1];	/* last file read */
    char		last_write_file[FSHARE_NAMLEN+1];	/* last file written */
    char		last_deleted_file[FSHARE_NAMLEN+1];	/* last file deleted */
    char		last_rewound_file[FSHARE_NAMLEN+1];	/* last file rewound */
    char		last_unlocked_file[FSHARE_NAMLEN+1];	/* last file unlocked */
    int			last_read_rec;		/* last record read */
    int			last_write_rec;		/* last record written */
    int			last_deleted_rec;	/* last record deleted */
    unsigned int	read_mismatch;		/* # of read size mismatches */
    unsigned int	ret_count;		/* # of returned statistics messages */
    int			read_error;		/* ACNET error on last read */
    int			write_error;		/* ACNET error on last write */
    int			delete_error;		/* ACNET error on last delete */
    int			rewind_error;		/* ACNET error on last rewind */
    int			unlock_error;		/* ACNET error on last unlock */
    unsigned int	total_recs_read;	/* total # of records read */
    unsigned int	total_asynch_io;	/* total # of asynch FS calls */
    char unused[FMNGR_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FMNGR_ACB_REPLY;

typedef struct FMNGR_ACB_FILE_INFO_REPLY
    {
    short		status;			/* returned status of request */
    char		file_name[FMNGR_PARAM_FILE_NAME_LEN+2];	/* null terminated file name */
    short		vun;			/* Virtual Unit Number */
    short		write_access;		/* write access */
    short		access_mode;		/* record access */
    int			max_record;		/* maximum write record */
    int			last_record_read;	/* last record read */
    unsigned int	num_reads;		/* number of reads from this file */
    short		last_read_status;	/* status of last read */
    unsigned int	num_read_errors;	/* number of read errors for this file */
    int			last_record_written;	/* last record written */
    unsigned int	num_writes;		/* number of writes to this file */
    short		last_write_status;	/* status of last write */
    unsigned int	num_write_errors;	/* number of write errors for this file */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FMNGR_ACB_FILE_INFO_REPLY;

#define	FMNGR_PARAM_MAX_LIST_ENTRIES	40	/* maximum number of file list entries */

typedef struct FMNGR_FILE_LIST_ENTRY		/* file list entry data */
    {
    char	file_name[FMNGR_PARAM_FILE_NAME_LEN+2];	/* null terminated file name */
    short	vun;				/* Virtual Unit Number */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FMNGR_FILE_LIST_ENTRY;

typedef struct FMNGR_ACB_FILE_LIST_REPLY	/* file list data */
    {
    short	status;				/* returned status of request */
    unsigned int	num_returned;		/* number of file entries returned */
    unsigned int	num_files;		/* number of files currently open */
    FMNGR_FILE_LIST_ENTRY	file_list[FMNGR_PARAM_MAX_LIST_ENTRIES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ FMNGR_ACB_FILE_LIST_REPLY;

/* end of FM */


/*
**  TV information ...
*/
#define	TV_ACB_TC_REQUEST_STATS		1	/* request TV information statistics */
#define	TV_ACB_TC_DIAG_CLEAR		3	/* clear TV diagnostics */
#define	TV_ACB_TC_CALLBACK_INFO		29	/* request a specific intype callback */
#define	TV_ACB_TC_CALLBACK_LIST		30	/* request the list of intype callbacks */

typedef struct TV_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_TV */
    short	type_code;			/* TV information callback main type code */
    short	subtype;			/* TV information callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ TV_ACB_REQUEST;

#define	TV_PARAM_REPLY_FILLER		3484	/* reply structure filler size */

typedef struct TV_ACB_REPLY			/* TV ACNET callback reply structure */
    {
    short		status;
    int			num_rows;		/* current number of rows */
    int			num_columns;		/* current number of columns */
    int			cursor_row;		/* current cursor row */
    int			cursor_column;		/* current cursor column */
    int			interrupt_type;		/* last interrupt type */
    int			interrupt_row;		/* last interrupt row */
    int			interrupt_column;	/* last interrupt column */
    int			echo_color;		/* current character echoing color */
    int			echo_case;		/* current character echoing case */
    unsigned int	num_keybd_interrupts;	/* number of keyboard interrupts */
    unsigned int	num_keyup_interrupts;	/* number of key up interrupts */
    unsigned int	num_per_interrupts;	/* number of periodic interrupts */
    unsigned int	num_focusin_interrupts;	/* number of focus in interrupts */
    unsigned int	num_focusout_interrupts;	/* number of focus out interrupts */
    unsigned int	num_shift_keybd_interrupts;	/* number of shift-keyboard interrupts */
    unsigned int	num_ctrl_keybd_interrupts;	/* number of ctrl-keyboard interrupts */
    unsigned int	num_alt_keybd_interrupts;	/* number of alt-keyboard interrupts */
    unsigned int	num_callbacks;		/* number of intype callbacks */
    int			curr_callback_index;	/* current callback index */
    unsigned int	cktrmu;			/* # of calls to */
    unsigned int	cknob;			/* # of calls to */
    unsigned int	display_url;		/* # of calls to */
    unsigned int	dknob;			/* # of calls to */
    unsigned int	inbox;			/* # of calls to */
    unsigned int	infld;			/* # of calls to */
    unsigned int	intype;			/* # of calls to */
    unsigned int	intype_again;		/* # of calls to */
    unsigned int	intype_callback_init;	/* # of calls to */
    unsigned int	intype_callback_term;	/* # of calls to */
    unsigned int	intype_put_rowcol;	/* # of calls to */
    unsigned int	lcktrm;			/* # of calls to */
    unsigned int	litapc;			/* # of calls to */
    unsigned int	rdcurs;			/* # of calls to */
    unsigned int	tskver;			/* (unused, i.e., routine removed) # of calls to */
    unsigned int	tvblnk;			/* # of calls to */
    unsigned int	tvbrat;			/* # of calls to */
    unsigned int	tvcase;			/* # of calls to */
    unsigned int	tvceol;			/* # of calls to */
    unsigned int	tvceop;			/* # of calls to */
    unsigned int	tvclr;			/* # of calls to */
    unsigned int	tvcolr;			/* # of calls to */
    unsigned int	tvdisp;			/* # of calls to */
    unsigned int	tvfill;			/* # of calls to */
    unsigned int	tvflsh;			/* # of calls to */
    unsigned int	tvfontsize;		/* # of calls to */
    unsigned int	tvkbat;			/* # of calls to */
    unsigned int	tvm;			/* # of calls to */
    unsigned int	tvmap;			/* # of calls to */
    unsigned int	tvmx;			/* # of calls to */
    unsigned int	tvrfmt;			/* # of calls to */
    unsigned int	tvrkba;			/* # of calls to */
    unsigned int	tvrst;			/* # of calls to */
    unsigned int	tvrwdo;			/* # of calls to */
    unsigned int	tvsave;			/* # of calls to */
    unsigned int	tvscrl;			/* # of calls to */
    unsigned int	tvscrs;			/* # of calls to */
    unsigned int	tvsfmt;			/* # of calls to */
    unsigned int	tvslot;			/* # of calls to */
    unsigned int	tvtitl;			/* # of calls to */
    unsigned int	tvunmap;		/* # of calls to */
    unsigned int	tvwndo;			/* # of calls to */
    unsigned int	tv_check_key;		/* # of calls to */
    unsigned int	tv_get_key;		/* # of calls to */
    unsigned int	tv_get_title;		/* # of calls to */
    unsigned int	tv_kb_echo;		/* # of calls to */
    unsigned int	tv_last_char;		/* # of calls to */
    unsigned int	tv_set_title;		/* # of calls to */
    unsigned int	wdelet;			/* # of calls to */
    unsigned int	wmake;			/* # of calls to */
    unsigned int	wtxt;
    unsigned int	clrrct;
    unsigned int	pntrct;
    unsigned int	clear;
    unsigned int	sfmt;
    unsigned int	scrl;
    unsigned int	scrs;
    unsigned int	wtitle;
    unsigned int	tvnoop;
    unsigned int	expose;
    unsigned int	fcolor;
    unsigned int	bcolor;
    unsigned int	user_chars;		/* total chars of I/O to the TV screen */
    unsigned int	mgr_chars;
    char		title[82];		/* window title (null terminated) */
    char		unused[TV_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ TV_ACB_REPLY;

#define	TV_PARAM_CB_HANDLE_LEN	30		/* length of callback handle text */

typedef struct TV_ACB_CALLBACK_ENTRY		/* intype callback entry */
    {
    int			index;			/* list location index */
    int			callback_id;		/* callback ID */
    int			priority;		/* callback priority */
    void		(*func)();		/* callback function */
    void		*callback_data;		/* callback data */
    unsigned int	caller_pc;		/* PC of caller */
    unsigned int	num_calls;		/* number of times called */
    char		handle[TV_PARAM_CB_HANDLE_LEN+2];	/* callback handle */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ TV_ACB_CALLBACK_ENTRY;

typedef struct TV_ACB_CALLBACK_INFO_REPLY	/* callback info reply */
    {
    short		status;			/* returned status of request */
    TV_ACB_CALLBACK_ENTRY	callback;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ TV_ACB_CALLBACK_INFO_REPLY;

#define	TV_PARAM_MAX_CALLBACKS	55		/* maximum number of returned callbacks */

typedef struct TV_ACB_CALLBACK_LIST_REPLY	/* callback list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of callbacks returned */
    unsigned int	num_callbacks;		/* number of callbacks in existence */
    TV_ACB_CALLBACK_ENTRY	callbacks[TV_PARAM_MAX_CALLBACKS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ TV_ACB_CALLBACK_LIST_REPLY;

/* end of TV */


/*
**  LX information ...
*/
#define	LX_ACB_TC_REQUEST_STATS		1	/* request LX information statistics */
#define	LX_ACB_TC_DIAG_CLEAR		3	/* clear LX diagnostics */

typedef struct LX_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_LX */
    short	type_code;			/* LX information callback main type code */
    short	subtype;			/* LX information callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ LX_ACB_REQUEST;

#define	LX_PARAM_REPLY_FILLER		3644	/* reply structure filler size */

typedef struct LX_ACB_REPLY			/* LX ACNET callback reply structure */
    {
    short		status;
    unsigned int	lxarc;			/* # of calls to */
    unsigned int	lxbmov;			/* # of calls to */
    unsigned int	lxbord;			/* # of calls to */
    unsigned int	lxbrat;			/* # of calls to */
    unsigned int	lxcarc;			/* # of calls to */
    unsigned int	lxcatt;			/* # of calls to */
    unsigned int	lxcint;			/* # of calls to */
    unsigned int	lxcir;			/* # of calls to */
    unsigned int	lxclim;			/* # of calls to */
    unsigned int	lxclip;			/* # of calls to */
    unsigned int	lxcmap;			/* # of calls to */
    unsigned int	lxcopy;			/* # of calls to */
    unsigned int	lxctyp;			/* # of calls to */
    unsigned int	lxcurs;			/* # of calls to */
    unsigned int	lxcvec;			/* # of calls to */
    unsigned int	lxelip;			/* # of calls to */
    unsigned int	lxeras;			/* # of calls to */
    unsigned int	lxfill;			/* # of calls to */
    unsigned int	lxflsh;			/* # of calls to */
    unsigned int	lxhdwr;			/* # of calls to */
    unsigned int	lxhint;			/* # of calls to */
    unsigned int	lxmode;			/* # of calls to */
    unsigned int	lxpars;			/* # of calls to */
    unsigned int	lxpatt;			/* # of calls to */
    unsigned int	lxpfil;			/* # of calls to */
    unsigned int	lxpimg;			/* # of calls to */
    unsigned int	lxpnt;			/* # of calls to */
    unsigned int	lxpnts;			/* # of calls to */
    unsigned int	lxrcmd;			/* # of calls to */
    unsigned int	lxrect;			/* # of calls to */
    unsigned int	lxrst;			/* # of calls to */
    unsigned int	lxslot;			/* # of calls to */
    unsigned int	lxtext;			/* # of calls to */
    unsigned int	lxtitl;			/* # of calls to */
    unsigned int	lxvec;			/* # of calls to */
    unsigned int	lxvwid;			/* # of calls to */
    unsigned int	lxwsiz;			/* # of calls to */
    unsigned int	lx_load_font;		/* # of calls to */
    unsigned int	lx_query_font;		/* # of calls to */
    unsigned int	doExpose;
    unsigned int	fcolor;
    unsigned int	bcolor;
    unsigned int	querypointer;
    unsigned int	readque;
    unsigned int	fullque;
    unsigned int	loadfont;
    unsigned int	waitcount;
    unsigned int	wait;
    unsigned int	cvec_num;
    unsigned int	pnts_num;
    unsigned int	rect_num;
    unsigned int	text_num;
    unsigned int	vec_num;
    char		title[42];
    char 		unused[LX_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ LX_ACB_REPLY;

/* end of LX */


/*
**  ACNET API routines ...
*/
#define	ACNETAPI_ACB_TC_REQUEST_STATS	1	/* request ACNET API statistics */
#define	ACNETAPI_ACB_TC_DIAG_CLEAR	3	/* clear ACNET API diagnostics */
#define	ACNETAPI_ACB_TC_REQUEST_INFO	5	/* read request information */
#define	ACNETAPI_ACB_TC_TASK_INFO	6	/* read task information */
#define	ACNETAPI_ACB_TC_REQUEST_LIST	15	/* request the list of requests */
#define	ACNETAPI_ACB_TC_TASK_LIST	16	/* request the list of tasks */

typedef struct ACNETAPI_ACB_REQUEST		/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_ACNETAPI */
    short	type_code;			/* ACNET API callback main type code */
    short	subtype;			/* ACNET API callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    int		start_index;			/* first entry to return */
    int		num_entries;			/* maximum number of entries to return */
    unsigned short	request_id;		/* request ID */
    char	task[PROC_NAMLEN+2];		/* handle string */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_REQUEST;

#define	ACNETAPI_PARAM_REPLY_FILLER	3842	/* reply structure filler size */

typedef struct ACNETAPI_ACB_REPLY		/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    char	current_handle[PROC_NAMLEN+2];	/* current ACNET handle */
    unsigned int	num_requests;
    unsigned int	num_tasks;
    unsigned int	acnet_accept_requests;	/* # of calls to */
    unsigned int	acnet_cancel_request;	/* # of calls to */
    unsigned int	acnet_connect;		/* # of calls to */
    unsigned int	acnet_disconnect;	/* # of calls to */
    unsigned int	acnet_get_reply;	/* # of calls to */
    unsigned int	acnet_get_request;	/* # of calls to */
    unsigned int	acnet_node_name;	/* # of calls to */
    unsigned int	acnet_reply;		/* # of calls to */
    unsigned int	acnet_request;		/* # of calls to */
    unsigned int	acnet_wait;		/* # of calls to */
    char 	unused[ACNETAPI_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_REPLY;

typedef struct ACNETAPI_ACB_REQUEST_REPLY	/* request information */
    {
    short		status;			/* returned status of request */
    unsigned short	request_id;		/* request ID */
    int		rad50_request_task;		/* requesting task */
    int		rad50_reply_task;		/* replier task */
    int		is_multiple_reply;
    int		is_obsolete;
    int		reply_count;
    short	reply_node;			/* reply node */
    unsigned int	reply_time;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_REQUEST_REPLY;

typedef struct ACNETAPI_ACB_TASK_REPLY		/* task information */
    {
    short	status;				/* returned status of request */
    int		rad50_task;			/* RAD50 task name */
    unsigned int	num_requests;		/* number of active requests */
    unsigned int	num_requests_received;
    unsigned int	num_bytes_in_requests;
    unsigned int	num_replies_received;
    unsigned int	num_bytes_in_replies;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_TASK_REPLY;

#define	ACNETAPI_PARAM_MAX_REQUESTS	130	/* maximum number of returned requests */

typedef struct ACNETAPI_ACB_REQ_LIST_ENTRY	/* request list entry */
    {
    unsigned short	request_id;		/* request ID */
    int		rad50_request_task;		/* requesting task */
    int		rad50_reply_task;		/* replier task */
    int		is_multiple_reply;
    int		is_obsolete;
    int		reply_count;
    short	reply_node;			/* reply node */
    unsigned int	reply_time;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_REQ_LIST_ENTRY;

typedef struct ACNETAPI_ACB_REQ_LIST_REPLY	/* request list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of requests returned */
    unsigned int	num_requests;		/* number of requests in existence */
    ACNETAPI_ACB_REQ_LIST_ENTRY	requests[ACNETAPI_PARAM_MAX_REQUESTS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_REQ_LIST_REPLY;

#define	ACNETAPI_PARAM_MAX_TASKS	160	/* maximum number of returned tasks */

typedef struct ACNETAPI_ACB_TASK_LIST_ENTRY	/* task list entry */
    {
    int		rad50_task;			/* RAD50 task name */
    unsigned int	num_requests;		/* number of active requests */
    unsigned int	num_requests_received;
    unsigned int	num_bytes_in_requests;
    unsigned int	num_replies_received;
    unsigned int	num_bytes_in_replies;
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_TASK_LIST_ENTRY;

typedef struct ACNETAPI_ACB_TASK_LIST_REPLY	/* task list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of tasks returned */
    unsigned int	num_tasks;		/* number of tasks in existence */
    ACNETAPI_ACB_TASK_LIST_ENTRY	tasks[ACNETAPI_PARAM_MAX_TASKS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACNETAPI_ACB_TASK_LIST_REPLY;

/* end of ACNETAPI */


/*
**  Lock routines ...
*/
#define	LOCK_ACB_TC_REQUEST_STATS	1	/* request lock statistics */
#define	LOCK_ACB_TC_DIAG_CLEAR		3	/* clear lock diagnostics */
#define	LOCK_ACB_TC_CHECK_LOCK		5	/* check lock status */
#define	LOCK_ACB_TC_LOCK_LIST		15	/* request the list of locks */

typedef struct LOCK_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_LOCK */
    short	type_code;			/* lock callback main type code */
    short	subtype;			/* lock callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    int		start_index;			/* first entry to return */
    int		num_entries;			/* maximum number of entries to return */
    char	object_name[LOCK_MAX_NAME_LEN+2];	/* lock name string */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ LOCK_ACB_REQUEST;

#define	LOCK_PARAM_REPLY_FILLER	3848		/* reply structure filler size */

typedef struct LOCK_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    int		node;
    int		process_id;
    char	owner[LOCK_OWNER_NAME_LEN+2];
    unsigned int	num_locks;
    unsigned int	lock_check_requests;
    unsigned int	lock_check_failures;
    unsigned int	lock_read;		/* # of calls to */
    unsigned int	lock_release;		/* # of calls to */
    unsigned int	lock_request;		/* # of calls to */
    char 	unused[LOCK_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ LOCK_ACB_REPLY;

typedef struct LOCK_ACB_CHECK_LOCK_REPLY	/* check lock data */
    {
    short		status;			/* returned status of request */
    unsigned int	time_locked;		/* time lock was acquired */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ LOCK_ACB_CHECK_LOCK_REPLY;

#define	LOCK_PARAM_MAX_LOCKS	55		/* maximum number of returned locks */

typedef struct LOCK_ACB_LOCK_LIST_ENTRY		/* lock list entry */
    {
    char		object_name[LOCK_MAX_NAME_LEN+2];	/* lock name */
    unsigned int	time_locked;		/* time lock was acquired (clinks) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ LOCK_ACB_LOCK_LIST_ENTRY;

typedef struct LOCK_ACB_LOCK_LIST_REPLY		/* lock list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of locks returned */
    unsigned int	num_locks;		/* number of locks in existence */
    LOCK_ACB_LOCK_LIST_ENTRY	locks[LOCK_PARAM_MAX_LOCKS];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ LOCK_ACB_LOCK_LIST_REPLY;

/* end of LOCK */


/*
**  datapool routines ...
*/
#define	DPM_ACB_TC_REQUEST_STATS	1	/* request datapool statistics */
#define	DPM_ACB_TC_DIAG_CLEAR		3	/* clear database statistics */
#define	DPM_ACB_TC_SET_PROC_PERIOD	4	/* set proc check period */
#define	DPM_ACB_TC_TRACE_ENABLE		5	/* enable device trace */
#define	DPM_ACB_TC_TRACE_DISABLE	6	/* disable device trace */
#define	DPM_ACB_TC_READ_CRL_BY_IRINX	11	/* retrieve a Common Request List entry by irinx */
#define	DPM_ACB_TC_READ_CRL_BY_DIPI	12	/* retrieve a Common Request List entry by DI/PI */

#define	DPM_ACB_OUTPUT_NORMAL		0	/* output returns in network reply */
#define	DPM_ACB_OUTPUT_MAIL		1	/* output goes to mail message */
#define	DPM_ACB_OUTPUT_STDOUT		2	/* output goes to standard output */
#define	DPM_ACB_OUTPUT_FILE		3	/* output goes to a local file */

#define	DPM_ACB_MIN_PROC_PERIOD		1	/* minimum proc check period */

#define	DPM_PARAM_MAX_OUT_SPEC_LEN	64	/* output specifier length */

typedef struct DPM_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_DATAPOOL */
    short	type_code;			/* DPM callback main type code */
    short	subtype;			/* DPM callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    int		start_index;			/* first entry to return */
    int		num_entries;			/* maximum number of entries to return */
    int		request_data;			/* request specific data */
    int		request_data_2;			/* request specific data */
    short	output;				/* output type */
    char	output_specifier[DPM_PARAM_MAX_OUT_SPEC_LEN];	/* output specifier string */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DPM_ACB_REQUEST;

#define	DPM_PARAM_REPLY_FILLER	3602		/* reply structure filler size */

typedef struct DPM_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    unsigned int	num_errors;		/* total number of errors */
    int		last_error;			/* last error detected */
    char	last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected */
    int		last_error_device;		/* device index associated with the last error */
    short	last_error_property;		/* property index associated with the last error */
    unsigned int	num_invalid_device_indices;	/* number of invalid device indices requested */
    int		last_invalid_device_index;	/* last invalid device index requested */
    unsigned int	last_invalid_device_index_caller_pc;	/* caller PC of last requested invalid device index */
    unsigned int	num_request_errors;	/* total number of dpreq errors */
    int		last_request_error;		/* last dpreq error detected */
    int		last_request_error_device;	/* device index associated with the last dpreq error */
    short	last_request_error_property;	/* property index associated with the last dpreq error */
    unsigned int	num_proc_errors;	/* total number of dpproc errors */
    int		last_proc_error;		/* last dpproc error detected */
    unsigned int	num_get_errors;		/* total number of dpget errors */
    int		last_get_error;			/* last dpget error detected */
    int		last_get_error_device;		/* device index associated with the last dpget error */
    short	last_get_error_property;	/* property index associated with the last dpget error */
    unsigned int	num_set_errors;		/* total number of dpset errors */
    int		last_set_error;			/* last dpset error detected */
    int		last_set_error_device;		/* device index associated with the last dpset error */
    short	last_set_error_property;	/* property index associated with the last dpset error */
    unsigned int	num_set_reply_errors;	/* total number of dpsrpy errors */
    int		last_set_reply_error;		/* last dpsrpy error detected */
    unsigned int	num_remove_errors;	/* total number of dprem errors */
    int		last_remove_error;		/* last dprem error detected */
    int		last_remove_error_device;	/* device index associated with the last dpset error */
    short	last_remove_error_property;	/* property index associated with the last dpset error */
    unsigned int	ftd_one_shot;		/* count of one shot reads */
    int		last_device_requested;		/* device index of last request */
    short	last_property_requested;	/* property index of last request */
    int		last_ftd_requested;
    int		last_length_requested;
    int		last_offset_requested;
    int		last_one_shot_device_requested;
    short	last_one_shot_property_requested;
    int		last_one_shot_length_requested;
    int		last_one_shot_offset_requested;
    int		last_request_status;		/* ACNET error on last request */
    int		last_proc_status;		/* ACNET error on last proc */
    int		last_get_status;		/* ACNET error on last get */
    int		last_set_status;		/* ACNET error on last set */
    int		last_set_reply_status;		/* ACNET error on last set with reply */
    int		last_remove_status;		/* ACNET error on last remove */
    int		device_trace;			/* flag indicating if device tracing is on */
    unsigned int	periodic_proc_count;	/* number of dpprocs in current period */
    unsigned int	max_periodic_proc_count;	/* max number of dpprocs in a period */
    unsigned int	proc_check_period;	/* dpproc measurement period */
    unsigned int	total_dpproc_time;	/* total time spent in DPPROCs in 15 Hz ticks */
    unsigned int	longest_dpproc;		/* longest DPPROC in 15 Hz ticks */
    unsigned int	request_caller_pc;	/* PC of last device requestor */
    unsigned int	proc_caller_pc;		/* PC of last device proc */
    unsigned int	get_caller_pc;		/* PC of last device get */
    unsigned int	set_caller_pc;		/* PC of last device set */
    unsigned int	remove_caller_pc;	/* PC of last device remove */
    unsigned int	dio_clear_redirection_slot;	/* # of calls to */
    unsigned int	dio_enable_error_logging;	/* # of calls to */
    unsigned int	dio_log_error;		/* # of calls to */
    unsigned int	dio_set_redirection_slot;	/* # of calls to */
    unsigned int	dpcanq;			/* # of calls to */
    unsigned int	dpdcrl;			/* # of calls to */
    unsigned int	dpftd;			/* # of calls to */
    unsigned int	dpget;			/* # of calls to */
    unsigned int	dpproc;			/* # of calls to */
    unsigned int	dprall;			/* # of calls to */
    unsigned int	dprem;			/* # of calls to */
    unsigned int	dpreq;			/* # of calls to */
    unsigned int	dpset;			/* # of calls to */
    unsigned int	dpsrpy;			/* # of calls to */
    unsigned int	dp_get_ftd;		/* # of calls to */
    char 	unused[DPM_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DPM_ACB_REPLY;

typedef struct DPM_ACB_CRL_REPLY		/* Common Request List entry */
    {
    short		status;			/* returned status of request */
    unsigned short	irinx;			/* IRINX verification */
    unsigned int	dipi;			/* Device Index/Property Index */
    unsigned short	error_seqnum;		/* sequence # of last error */
    void		*new_data;		/* new error/data pointer */
    unsigned int	task_id;		/* task ID owning request */
    unsigned char	ssdn[LEN_SSDN];		/* SubSystem Device Number */
    short		ftd;			/* Frequency Time Descriptor */
    unsigned short	length;			/* # of bytes requested or default */
    unsigned short	offset;			/* offset in bytes from element 0 */
    short		node;			/* target node */
    short		error;			/* DPM trapped error */
    unsigned char	crl_length;		/* length of this CRL entry */
    unsigned char	crl_flags;		/* CRL flags */
    unsigned int	setting_mask;		/* setting protection mask */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ DPM_ACB_CRL_REPLY;

/* end of DPM */


/*
**  APPDS routines
*/
#define	APPDS_ACB_REQUEST_STATS	1		/* request APPDS statistics */
#define	APPDS_ACB_CLEAR_STATS	2		/* clear APPDS statistics */
#define	APPDS_ACB_REQUEST_TABLE_STATS	3	/* request statistics on a given table */
#define	APPDS_ACB_REQUEST_TABLE_LIST	4	/* list  of open tables */

typedef struct APPDS_ACB_REQUEST		/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_APPDS_CALLBACK */
    short	type_code;			/* APPDS callback main type code */
    short	subtype;			/* APPDS callback secondary type code */
    char	table_name[26];			/* name of table statistics requested from,null terminated */
    char	db_name[26];			/* name of the database where the table resides, null terminated */
    char	server_name[26];		/* name of the server where the database resides, null terminated */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ APPDS_ACB_REQUEST;

#define	APPDS_PARAM_REPLY_FILLER	3642	/* reply structure filler size */

typedef struct	APPDS_ACB_REPLY			/* ACNET callback reply structure */
    {
    short		status;			/*returned status of request */
    unsigned int	appds_read_count;
    unsigned int	seq_read_success_count;
    unsigned int	seq_read_fail_count;
    short		seq_read_longest_tm;
    short		seq_read_shortest_tm;
    short		seq_read_last_tm;
    unsigned int	indx_read_success_count;
    unsigned int	indx_read_fail_count;
    short		indx_read_longest_tm;
    short		indx_read_shortest_tm;
    short		indx_read_last_tm;
    unsigned int	key_read_success_count;
    unsigned int	key_read_fail_count;
    short		key_read_longest_tm;
    short		key_read_shortest_tm;
    short		key_read_last_tm;
    unsigned int	appds_write_count;
    unsigned int	seq_write_success_count;
    unsigned int	seq_write_fail_count;
    short		seq_write_longest_tm;
    short		seq_write_shortest_tm;
    short		seq_write_last_tm;
    unsigned int	indx_write_success_count;
    unsigned int	indx_write_fail_count;
    short		indx_write_longest_tm;
    short		indx_write_shortest_tm;
    short		indx_write_last_tm;
    unsigned int	key_write_success_count;
    unsigned int	key_write_fail_count;
    short		key_write_longest_tm;
    short		key_write_shortest_tm;
    short		key_write_last_tm;
    unsigned int	appds_delete_count;
    unsigned int	seq_delete_success_count;
    unsigned int	seq_delete_fail_count;
    short		seq_delete_longest_tm;
    short		seq_delete_shortest_tm;
    short		seq_delete_last_tm;
    unsigned int	indx_delete_success_count;
    unsigned int	indx_delete_fail_count;
    short		indx_delete_longest_tm;
    short		indx_delete_shortest_tm;
    short		indx_delete_last_tm;
    unsigned int	key_delete_success_count;
    unsigned int	key_delete_fail_count;
    short		key_delete_longest_tm;
    short		key_delete_shortest_tm;
    short		key_delete_last_tm;
    unsigned int	free_table_cache_count;		/* # of times free_table_cache_count has been called */
    unsigned int	set_inter_mode_count;		/* # of times set_inter_mode_count has been called */
    unsigned int	get_inter_mode_count;		/* # of times get_inter_mode_count has been called */
    unsigned int	get_table_status_count;		/* # of times get_table_status_count has been called */
    unsigned int	key_match_count;		/* # of times key_match_count has been called */
    int			last_read_status;		/* status of the last read */					
    int			last_write_status;		/* status of the last write */
    int			last_delete_status;		/* status of the last delete */
    int			last_error_code;		/* the last error code returned */
    char		last_error_table[26];		/* name of that table where the last error occured */
    char		last_error_operation[26];				/* the last operation that produced an error */
    char		last_error_access[26];		/* the access mode that table was in when the error occured */
    unsigned int	error_count;			/* number of errors across all open tables */
    char		unused[APPDS_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ APPDS_ACB_REPLY;

#define	APPDS_PARAM_TABLE_REPLY_FILLER 3818

typedef struct	APPDS_ACB_TABLE_REPLY			/* ACNET callback reply structure */
    {
    short		status;				/* returned status of request */
    unsigned int  	read_count;			/* # of successful reads on this table */
    unsigned int  	read_fail_count;		/* # of failed read on this table */
    int			last_read_status;		/* status of the last read */
    short		longest_read_tm;		/* longest read time in k15hz */
    short		shortest_read_tm;		/* shortest read time in k15hz */
    short		last_read_tm;			/* last read time in k15hz */
    unsigned int	write_count;			/* # of successful writes to this table */
    unsigned int	write_fail_count;		/* # of failed writes to the table */
    int			last_write_status;		/* status of the last write */
    short		longest_write_tm;		/* longest write time in k15hz */
    short		shortest_write_tm;		/* shortest write time in k15hz */
    short		last_write_tm;			/* last write time in k15hz */
    unsigned int	delete_count;			/* # of successful deletes to this table */
    unsigned int	delete_fail_count;		/* # of failed deletes to the table */
    int			last_delete_status;		/* status of the last delete */
    short		longest_delete_tm;		/* longest delete time in k15hz */
    short		shortest_delete_tm;		/* shortest delete time in k15hz */
    short		last_delete_tm;			/* last delete time in k15hz */
    char		last_error_operation[26];	/* the last operation to produce an error */
    char		unused[APPDS_PARAM_TABLE_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ APPDS_ACB_TABLE_REPLY;

#define	APPDS_MAX_NAME_LIST_ENTRIES	20		/* maximum number of table names that will be returned */
#define	APPDS_PARAM_TABLE_LIST_FILLER	2336

struct appds_table_struct
    {
    char		table_name[26];			/* name of the table, NULL terminated */
    char		db_name[26];			/* name of the database, NULL terminated */
    char		db_server[26];			/* name of the database server, NULL terminated */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */;

typedef struct APPDS_ACB_TABLE_LIST_REPLY		/* ACNET callback reply structure */
    {
    short		status;				/* returned status of resuest */
    short		open_table_count;		/* the number of open tables */
    struct		appds_table_struct table_list[APPDS_MAX_NAME_LIST_ENTRIES];	/* list of table name structures */
    char		unused[APPDS_PARAM_TABLE_LIST_FILLER];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ APPDS_ACB_TABLE_LIST_REPLY;

/* end of APPDS */


/*
**  ACL routines ...
*/
#define	ACL_ACB_TC_REQUEST_STATS	1	/* request ACL statistics */
#define	ACL_ACB_TC_DIAG_CLEAR		3	/* clear ACL diagnostics */
#define	ACL_ACB_TC_SYMBOL_LIST		15	/* request the list of symbols */
#define	ACL_ACB_TC_VARIABLE_LIST	16	/* request the list of variables */
#define	ACL_ACB_TC_READ_DEVICE_LIST	17	/* request the list of read devices */
#define	ACL_ACB_TC_SET_DEVICE_LIST	18	/* request the list of set devices */
#define	ACL_ACB_TC_READ_SYMBOL		19	/* read a symbol value */
#define	ACL_ACB_TC_SET_SYMBOL		20	/* set a symbol value */
#define	ACL_ACB_TC_DELETE_SYMBOL	21	/* delete a symbol value */
#define	ACL_ACB_TC_DELETE_ALL_SYMBOLS	22	/* delete all symbol values */
#define	ACL_ACB_TC_READ_VARIABLE	23	/* read a variable value */
#define	ACL_ACB_TC_SET_VARIABLE		24	/* set a variable value */
#define	ACL_ACB_TC_CURRENT_SCRIPT	25	/* request the current script name */
#define	ACL_ACB_TC_COMMAND_LIST		26	/* request information about the current list of commands */
#define	ACL_ACB_TC_SOURCE_CODE		27	/* request lines of source code */

#define	ACL_ACB_MAX_VALUE_LENGTH	128	/* maximum value length */

typedef struct ACL_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_ACNETAPI */
    short	type_code;			/* ACNET API callback main type code */
    short	subtype;			/* ACNET API callback secondary type code */
    unsigned int	request_flags;		/* request modifier flags (meaningless for statistics request) */
    int		start_index;			/* first entry to return */
    int		num_entries;			/* maximum number of entries to return */
    char	object_name[ACL_SYMBOL_NAME_LEN+2];	/* symbol name string */
    int		value_type;			/* type of value */
    char	value_data[ACL_ACB_MAX_VALUE_LENGTH];	/* value data */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACL_ACB_REQUEST;

#define	ACL_PARAM_REPLY_FILLER		5312	/* reply structure filler size */

#define	ACL_ACB_SCRIPT_NAME_LENGTH	64	/* maximum ACL script name length */
#define	ACL_ACB_COMMAND_NAME_LENGTH	32	/* maximum ACL command name length */
#define	ACL_ACB_LOG_FILE_NAME_LENGTH	128	/* maximum ACL log file name length */
#define	ACL_ACB_SCRIPT_PATH_NAME_LEN	128	/* maximum ACL script path name length */

typedef struct ACL_ACB_COMMAND_STATS		/* individual command statistics */
    {
    unsigned int	num_calls;		/* number of calls to this command */
    unsigned int	longest_time;		/* longest time spent processing this command */
    unsigned int	total_time;		/* total time spent processing this command */
    } ACL_ACB_COMMAND_STATS;

typedef struct ACL_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    char	script_name[ACL_ACB_SCRIPT_NAME_LENGTH+2];
    char	last_script_name[ACL_ACB_SCRIPT_NAME_LENGTH+2];
    unsigned int	num_scripts_executed;
    unsigned int	num_script_files_executed;
    unsigned int	debug_flags;
    int		current_mode;
    unsigned int	num_source_lines;
    unsigned int	num_commands;
    int		execution_level;
    int		command_index;
    int		current_line_number;
    char	current_command_string[ACL_ACB_COMMAND_NAME_LENGTH+2];
    int		command_type;
    int		error_status;
    int		last_error_status;
    ARRAY_DEVICE_DATA	last_error_device;
    int		return_level;
    int		return_index;
    int		error_handler_show_errors;
    int		in_error_handler;
    int		error_return_index;
    int		error_command_type;
    int		in_always_block;
    int		always_block_index;
    int		always_block_status;
    unsigned int	num_variables;
    int		symbol_table_type;
    unsigned int	num_symbols;
    int		in_if_block;
    int		if_level;
    int		loop_level;
    short	default_ftd;
    int		read_timeout;
    int		set_timeout;
    int		database_timeout;
    int		want_stale;
    int		settings_enable;
    int		suppress_settings;
    int		want_verbose_output;
    int		subst_name_length;
    int		num_subst_devices;
    int		num_device_arg_info;
    int		num_subst_strings;
    int		num_string_arg_info;
    char	default_log_file[ACL_ACB_LOG_FILE_NAME_LENGTH+2];
    int		acl_info_type;
    int		global_error_handler_index;
    int		current_error_handler_index;
    int		exit_script_on_error;
    int		num_procs;
    char	default_path[ACL_ACB_SCRIPT_PATH_NAME_LEN+2];
    int		global_data_source;
    int		maintain_outter_specifier;
    int		settings_allowed;
    int		file_writes_allowed;
    int		remote_programs_allowed;
    int		command_or_script_files_allowed;
    int		debug_level;
    int		last_pending_device;
    int		last_error_count_device;
    int		last_error_count_status;
    unsigned int	script_start_time;
    unsigned int	last_script_time;
    unsigned int	script_start_clinks;
    unsigned int	last_script_clinks;
    int		seqnet_connected;
    int		file_execution;
    int		is_web_user;
    int		allow_obsolete_device_names;
    int		comment_char_disabled;
    int		alt_comment_char_disabled;
    unsigned int	init_time_ticks;
    unsigned int	init_time_clinks;
    ACL_ACB_COMMAND_STATS	declare_stats;
    ACL_ACB_COMMAND_STATS	assignment_stats;
    ACL_ACB_COMMAND_STATS	read_device_stats;
    ACL_ACB_COMMAND_STATS	set_device_stats;
    ACL_ACB_COMMAND_STATS	increment_device_stats;
    ACL_ACB_COMMAND_STATS	decrement_device_stats;
    ACL_ACB_COMMAND_STATS	label_stats;
    ACL_ACB_COMMAND_STATS	goto_stats;
    ACL_ACB_COMMAND_STATS	gosub_stats;
    ACL_ACB_COMMAND_STATS	return_stats;
    ACL_ACB_COMMAND_STATS	print_stats;
    ACL_ACB_COMMAND_STATS	exit_stats;
    ACL_ACB_COMMAND_STATS	if_stats;
    ACL_ACB_COMMAND_STATS	elseif_stats;
    ACL_ACB_COMMAND_STATS	else_stats;
    ACL_ACB_COMMAND_STATS	endif_stats;
    ACL_ACB_COMMAND_STATS	loop_stats;
    ACL_ACB_COMMAND_STATS	endloop_stats;
    ACL_ACB_COMMAND_STATS	mail_stats;
    ACL_ACB_COMMAND_STATS	run_stats;
    ACL_ACB_COMMAND_STATS	show_device_stats;
    ACL_ACB_COMMAND_STATS	wait_stats;
    ACL_ACB_COMMAND_STATS	list_device_stats;
    ACL_ACB_COMMAND_STATS	timeout_stats;
    ACL_ACB_COMMAND_STATS	settings_stats;
    ACL_ACB_COMMAND_STATS	lock_stats;
    ACL_ACB_COMMAND_STATS	unlock_stats;
    ACL_ACB_COMMAND_STATS	while_stats;
    ACL_ACB_COMMAND_STATS	endwhile_stats;
    ACL_ACB_COMMAND_STATS	reset_device_stats;
    ACL_ACB_COMMAND_STATS	turn_device_stats;
    ACL_ACB_COMMAND_STATS	enable_stats;
    ACL_ACB_COMMAND_STATS	disable_stats;
    ACL_ACB_COMMAND_STATS	activate_stats;
    ACL_ACB_COMMAND_STATS	deactivate_stats;
    ACL_ACB_COMMAND_STATS	on_error_stats;
    ACL_ACB_COMMAND_STATS	retry_stats;
    ACL_ACB_COMMAND_STATS	data_source_stats;
    ACL_ACB_COMMAND_STATS	cnswin_stats;
    ACL_ACB_COMMAND_STATS	url_display_stats;
    ACL_ACB_COMMAND_STATS	image_draw_stats;
    ACL_ACB_COMMAND_STATS	output_stats;
    ACL_ACB_COMMAND_STATS	data_event_stats;
    ACL_ACB_COMMAND_STATS	version_stats;
    ACL_ACB_COMMAND_STATS	ch13_message_stats;
    ACL_ACB_COMMAND_STATS	fill_device_stats;
    ACL_ACB_COMMAND_STATS	ramp_device_stats;
    ACL_ACB_COMMAND_STATS	trigger_stats;
    ACL_ACB_COMMAND_STATS	toggle_device_stats;
    ACL_ACB_COMMAND_STATS	restore_device_stats;
    ACL_ACB_COMMAND_STATS	program_log_stats;
    ACL_ACB_COMMAND_STATS	downtime_log_stats;
    ACL_ACB_COMMAND_STATS	alarm_log_stats;
    ACL_ACB_COMMAND_STATS	download_stats;
    ACL_ACB_COMMAND_STATS	delete_cache_stats;
    ACL_ACB_COMMAND_STATS	device_arg_info_stats;
    ACL_ACB_COMMAND_STATS	string_arg_info_stats;
    ACL_ACB_COMMAND_STATS	program_info_stats;
    ACL_ACB_COMMAND_STATS	compare_device_stats;
    ACL_ACB_COMMAND_STATS	copy_device_stats;
    ACL_ACB_COMMAND_STATS	system_stats;
    ACL_ACB_COMMAND_STATS	gpib_stats;
    ACL_ACB_COMMAND_STATS	node_info_stats;
    ACL_ACB_COMMAND_STATS	node_stats;
    ACL_ACB_COMMAND_STATS	reboot_stats;
    ACL_ACB_COMMAND_STATS	setting_log_stats;
    ACL_ACB_COMMAND_STATS	error_text_stats;
    ACL_ACB_COMMAND_STATS	fit_stats;
    ACL_ACB_COMMAND_STATS	user_info_stats;
    ACL_ACB_COMMAND_STATS	camac_stats;
    ACL_ACB_COMMAND_STATS	exitloop_stats;
    ACL_ACB_COMMAND_STATS	continue_stats;
    ACL_ACB_COMMAND_STATS	save_file_stats;
    ACL_ACB_COMMAND_STATS	bypass_stats;
    ACL_ACB_COMMAND_STATS	alarm_limit_stats;
    ACL_ACB_COMMAND_STATS	nominal_mask_stats;
    ACL_ACB_COMMAND_STATS	input_stats;
    ACL_ACB_COMMAND_STATS	console_info_stats;
    ACL_ACB_COMMAND_STATS	fft_stats;
    ACL_ACB_COMMAND_STATS	ftp_stats;
    ACL_ACB_COMMAND_STATS	timer_event_stats;
    ACL_ACB_COMMAND_STATS	step_motor_stats;
    ACL_ACB_COMMAND_STATS	event_info_stats;
    ACL_ACB_COMMAND_STATS	mdat_info_stats;
    ACL_ACB_COMMAND_STATS	call_proc_stats;
    ACL_ACB_COMMAND_STATS	search_device_stats;
    ACL_ACB_COMMAND_STATS	on_stats;
    ACL_ACB_COMMAND_STATS	off_stats;
    ACL_ACB_COMMAND_STATS	positive_stats;
    ACL_ACB_COMMAND_STATS	negative_stats;
    ACL_ACB_COMMAND_STATS	polarity_stats;
    ACL_ACB_COMMAND_STATS	dbset_stats;
    ACL_ACB_COMMAND_STATS	log_device_stats;
    ACL_ACB_COMMAND_STATS	event_log_stats;
    ACL_ACB_COMMAND_STATS	state_log_stats;
    ACL_ACB_COMMAND_STATS	delta_set_stats;
    ACL_ACB_COMMAND_STATS	logger_get_stats;
    ACL_ACB_COMMAND_STATS	acnet_request_stats;
    ACL_ACB_COMMAND_STATS	resize_stats;
    ACL_ACB_COMMAND_STATS	find_program_stats;
    ACL_ACB_COMMAND_STATS	set_field_stats;
    ACL_ACB_COMMAND_STATS	timer_stats;
    ACL_ACB_COMMAND_STATS	shot_log_stats;
    ACL_ACB_COMMAND_STATS	path_stats;
    ACL_ACB_COMMAND_STATS	device_list_stats;
    ACL_ACB_COMMAND_STATS	ftp_read_stats;
    ACL_ACB_COMMAND_STATS	snap_read_stats;
    ACL_ACB_COMMAND_STATS	web_log_stats;
    ACL_ACB_COMMAND_STATS	tcp_request_stats;
    ACL_ACB_COMMAND_STATS	delete_stats;
    ACL_ACB_COMMAND_STATS	read_struct_stats;
    ACL_ACB_COMMAND_STATS	read_field_stats;
    ACL_ACB_COMMAND_STATS	table_device_stats;
    ACL_ACB_COMMAND_STATS	sda_dir_stats;
    ACL_ACB_COMMAND_STATS	sr_dir_stats;
    ACL_ACB_COMMAND_STATS	str_format_stats;
    ACL_ACB_COMMAND_STATS	str_cat_stats;
    ACL_ACB_COMMAND_STATS	str_find_stats;
    ACL_ACB_COMMAND_STATS	str_compare_stats;
    ACL_ACB_COMMAND_STATS	substring_stats;
    ACL_ACB_COMMAND_STATS	clib_info_stats;
    ACL_ACB_COMMAND_STATS	str_case_stats;
    ACL_ACB_COMMAND_STATS	sda_config_stats;
    ACL_ACB_COMMAND_STATS	unescape_stats;
    ACL_ACB_COMMAND_STATS	str_tail_stats;
    ACL_ACB_COMMAND_STATS	str_replace_stats;
    ACL_ACB_COMMAND_STATS	str_copy_stats;
    ACL_ACB_COMMAND_STATS	str_length_stats;
    ACL_ACB_COMMAND_STATS	str_split_stats;
    ACL_ACB_COMMAND_STATS	sql_stats;
    ACL_ACB_COMMAND_STATS	str_convert_stats;
    ACL_ACB_COMMAND_STATS	fshare_info_stats;
    ACL_ACB_COMMAND_STATS	stats_stats;
    ACL_ACB_COMMAND_STATS	gas_stats;
    ACL_ACB_COMMAND_STATS	crate_stats;
    ACL_ACB_COMMAND_STATS	slot_stats;
    ACL_ACB_COMMAND_STATS	madc_stats;
    ACL_ACB_COMMAND_STATS	list_strings_stats;
    ACL_ACB_COMMAND_STATS	file_info_stats;
    ACL_ACB_COMMAND_STATS	cpld_log_stats;
    ACL_ACB_COMMAND_STATS	set_list_stats;
    ACL_ACB_COMMAND_STATS	check_status_stats;
    ACL_ACB_COMMAND_STATS	set_struct_stats;
    ACL_ACB_COMMAND_STATS	do_while_stats;
    ACL_ACB_COMMAND_STATS	end_do_while_stats;
    ACL_ACB_COMMAND_STATS	reset_list_stats;
    ACL_ACB_COMMAND_STATS	on_list_stats;
    ACL_ACB_COMMAND_STATS	off_list_stats;
    ACL_ACB_COMMAND_STATS	cns_message_stats;
    ACL_ACB_COMMAND_STATS	str_trim_stats;
    ACL_ACB_COMMAND_STATS	sr_set_stats;
    ACL_ACB_COMMAND_STATS	beam_switch_stats;
    ACL_ACB_COMMAND_STATS	change_device_stats;
    ACL_ACB_COMMAND_STATS	read_file_stats;
    ACL_ACB_COMMAND_STATS	sort_stats;
    ACL_ACB_COMMAND_STATS	read_dir_stats;
    ACL_ACB_COMMAND_STATS	copy_variable_stats;
    ACL_ACB_COMMAND_STATS	tlg_info_stats;
    ACL_ACB_COMMAND_STATS	comment_char_stats;
    ACL_ACB_COMMAND_STATS	host_request_stats;
    ACL_ACB_COMMAND_STATS	switch_info_stats;
    ACL_ACB_COMMAND_STATS	alarm_message_stats;
    ACL_ACB_COMMAND_STATS	digital_control_stats;
    ACL_ACB_COMMAND_STATS	program_status_stats;
    ACL_ACB_COMMAND_STATS	swap_stats;
    ACL_ACB_COMMAND_STATS	execute_stats;
    unsigned int	acl_cancel_requests;	/* # of calls to */
    unsigned int	acl_close;		/* # of calls to */
    unsigned int	acl_command_text;	/* # of calls to */
    unsigned int	acl_compile;		/* # of calls to */
    unsigned int	acl_default_data_source;	/* # of calls to */
    unsigned int	acl_default_script_path;	/* # of calls to */
    unsigned int	acl_delete_symbol;	/* # of calls to */
    unsigned int	acl_execute;		/* # of calls to */
    unsigned int	acl_file_execute;	/* # of calls to */
    unsigned int	acl_file_read;		/* # of calls to */
    unsigned int	acl_file_write;		/* # of calls to */
    unsigned int	acl_free;		/* # of calls to */
    unsigned int	acl_get_devices;	/* # of calls to */
    unsigned int	acl_info;		/* # of calls to */
    unsigned int	acl_log_file;		/* # of calls to */
    unsigned int	acl_read_symbol;	/* # of calls to */
    unsigned int	acl_read_symbol_info;	/* # of calls to */
    unsigned int	acl_read_symbol_names;	/* # of calls to */
    unsigned int	acl_register_host_request_func;	/* # of calls to */
    unsigned int	acl_script_is_executing;	/* # of calls to */
    unsigned int	acl_set_symbol;		/* # of calls to */
    unsigned int	acl_translate_command_string;	/* # of calls to */
    unsigned int	acl_unregister_host_request_func;	/* # of calls to */
    char 	unused[ACL_PARAM_REPLY_FILLER];	/* should maintain total structure size at 8000 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACL_ACB_REPLY;

#define	ACL_PARAM_MAX_SYMBOLS	100		/* maximum number of returned symbols */
#define	ACL_PARAM_MAX_VARIABLES	100		/* maximum number of returned variables */

#define	ACL_ACB_MAX_VALUE_STRING_LEN	10

typedef union ACL_ACB_VARIABLE_DATA
    {
    char	byte_value;
    unsigned char	ubyte_value;
    short	short_value;
    unsigned short	ushort_value;
    int		int_value;
    unsigned int	uint_value;
    long long	long_long_value;
    unsigned long long	ulong_long_value;
    float	float_value;
    double	double_value;
    char	string_value[ACL_ACB_MAX_VALUE_STRING_LEN];
    unsigned int	date;
    ARRAY_DEVICE_DATA	device;
    } ACL_ACB_VARIABLE_DATA;

typedef struct ACL_ACB_VARIABLE_LIST_ENTRY	/* variable list entry */
    {
    char	variable_name[ACL_SYMBOL_NAME_LEN+2];	/* variable name */
    int		value_type;		/* type of value */
    int		value_length;		/* value length */
    ACL_ACB_VARIABLE_DATA	value;	/* variable value */
    } __attribute__((packed)) ACL_ACB_VARIABLE_LIST_ENTRY;

typedef struct ACL_ACB_VARIABLE_LIST_REPLY	/* variable list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of variables returned */
    unsigned int	num_variables;		/* number of variables in existence */
    ACL_ACB_VARIABLE_LIST_ENTRY	variables[ACL_PARAM_MAX_VARIABLES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACL_ACB_VARIABLE_LIST_REPLY;

#define	ACL_PARAM_MAX_DEVICES	500		/* maximum number of returned devices */

typedef struct ACL_ACB_DEVICE_LIST_ENTRY	/* device list entry */
    {
    ARRAY_DEVICE_DATA	device_data;		/* device data */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACL_ACB_DEVICE_LIST_ENTRY;

typedef struct ACL_ACB_DEVICE_LIST_REPLY	/* device list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of devices returned */
    unsigned int	num_devices;		/* number of devices in existence */
    ACL_ACB_DEVICE_LIST_ENTRY	devices[ACL_PARAM_MAX_DEVICES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ ACL_ACB_DEVICE_LIST_REPLY;

typedef struct ACL_ACB_READ_VARIABLE_REPLY	/* read variable reply */
    {
    short	status;				/* returned status of request */
    char	variable_name[ACL_SYMBOL_NAME_LEN+2];	/* variable name */
    int		value_type;			/* type of value */
    int		value_length;			/* value length */
    int		num_elements;
    int		deleted;
    unsigned int	num_accesses;		/* number of times this value has been accessed */
    union
	{
	char	byte_value[0];
	unsigned char	ubyte_value[0];
	short	short_value[0];
	unsigned short	ushort_value[0];
	int	int_value[0];
	unsigned int	uint_value[0];
	long long	long_long_value[0];
	unsigned long long	ulong_long_value[0];
	float	float_value[0];
	double	double_value[0];
	char	string_value[0];
	unsigned int	date;
	ARRAY_DEVICE_DATA	device;
	} value;
    } __attribute__((packed)) ACL_ACB_READ_VARIABLE_REPLY;

typedef struct ACL_ACB_SCRIPT_NAME_REPLY	/* read script name reply */
    {
    short	status;				/* returned status of request */
    char	script_name[ACL_ACB_SCRIPT_NAME_LENGTH+2];
    } __attribute__((packed)) ACL_ACB_SCRIPT_NAME_REPLY;

#define	ACL_PARAM_MAX_COMMANDS	200		/* maximum number of returned commands */

typedef struct ACL_ACB_COMMAND_LIST_ENTRY	/* command list entry */
    {
    int		type;				/* command type */
    int		command_index;			/* command index */
    int		line_number;			/* source line number */
    unsigned int	num_calls;		/* number of calls to this command */
    unsigned int	num_executions;		/* number of times this command has been successfully executed */
    unsigned int	last_time;		/* last time this command was executed */
    unsigned int	longest_time;		/* longest time spent processing this command */
    unsigned int	total_time;		/* total time spent processing this command */
    } __attribute__((packed)) ACL_ACB_COMMAND_LIST_ENTRY;

typedef struct ACL_ACB_COMMAND_LIST_REPLY	/* command list data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of commands returned */
    unsigned int	num_commands;		/* number of commands in existence */
    ACL_ACB_COMMAND_LIST_ENTRY	commands[ACL_PARAM_MAX_COMMANDS];
    } __attribute__((packed)) ACL_ACB_COMMAND_LIST_REPLY;

#define	ACL_PARAM_MAX_SOURCE_LINES	31	/* maximum number of returned source lines */
#define	ACL_PARAM_MAX_SOURCE_LINE_LENGTH	255	/* maximum length of a returned source lines */

typedef struct ACL_ACB_SOURCE_CODE_ENTRY	/* source code line data */
    {
    unsigned int	line_number;		/* line number */
    char		text[ACL_PARAM_MAX_SOURCE_LINE_LENGTH+1];	/* source code */
    } __attribute__((packed)) ACL_ACB_SOURCE_CODE_ENTRY;

typedef struct ACL_ACB_SOURCE_CODE_REPLY	/* source code data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_source_lines;	/* number of source lines in existence */
    unsigned int	num_returned;		/* number of source lines returned */
    unsigned int	starting_line_number;	/* line number of first returned line */
    unsigned int	longest_line_length;	/* length of the longest returned line */
    ACL_ACB_SOURCE_CODE_ENTRY	source_lines[ACL_PARAM_MAX_SOURCE_LINES];
    } __attribute__((packed)) ACL_ACB_SOURCE_CODE_REPLY;

/* end of ACL */



/* Save/Restore routines */

#define	SR_ACB_TC_REQUEST_STATS		1	/* request Save/Restore statistics */
#define	SR_ACB_TC_DIAG_CLEAR		3	/* clear Save/Restore statistics */
#define	SR_ACB_TC_SET_PROC_PERIOD	4	/* set proc check period */
#define	SR_ACB_TC_READ_WA_HEADERS	5	/* read list of work area headers */
#define	SR_ACB_TC_READ_WORK_AREA	6	/* read work area */
#define	SR_ACB_TC_READ_WA_ENTRY		7	/* read work area entry */
#define	SR_ACB_TC_READ_WA_ENTRIES	8	/* read list of work area entries */

#define	SR_ACB_MIN_PROC_PERIOD		1	/* minimum proc check period */

typedef struct SR_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_DATABASE */
    short	type_code;			/* SR callback main type code */
    short	subtype;			/* SR callback secondary type code */
    int		request_data;			/* request specific data */
    int		request_data_2;			/* request specific data */
    char	*read_address;			/* address for work area read */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SR_ACB_REQUEST;

#define	SR_PARAM_REPLY_FILLER	3698		/* reply structure filler size */

typedef struct SR_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    int		source;				/* data source */
    unsigned int	num_errors;		/* total number of errors */
    short	last_error;			/* last error detected */
    char	last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected */
    int		last_error_di;			/* device index of last error */
    short	last_error_pi;			/* property index of last error */
    short 	last_error_filenumber;		/* file number of last error */
    int		last_request_di;		/* device index of last request */
    short	last_request_pi;		/* property index of last request */
    short 	last_request_filenumber;	/* file number of last request */
    char	last_usage[SDA_USAGE_NAME_LEN+2];	/* last SDA usage */
    unsigned short	num_work_areas;		/* number of work areas */
    unsigned int	periodic_proc_count;	/* number of srprocs in current period */
    unsigned int	max_periodic_proc_count;	/* max number of srprocs in a period */
    unsigned short	proc_check_period;	/* srproc measurement period */
    unsigned int	total_srproc_time;	/* total time spent in SRPROCs in 15 Hz ticks */
    unsigned int	longest_srproc;		/* longest SRPROC in 15 Hz ticks */
    char		*last_processed_wa;	/* last processed work area */
    unsigned int	total_srcnct_time;	/* total time spent in SRCNCTs in 15 Hz ticks */
    unsigned int	longest_srcnct;		/* longest SRCNCT in 15 Hz ticks */
    unsigned int	srcnct;			/* # of calls to */
    unsigned int	srcnct_fake;		/* # of calls to */
    unsigned int	srdcnt;			/* # of calls to */
    unsigned int	srderr;			/* # of calls to */
    unsigned int	srdir;			/* # of calls to */
    unsigned int	srdisk;			/* # of calls to */
    unsigned int	srget;			/* # of calls to */
    unsigned int	srgeti;			/* # of calls to */
    unsigned int	srmod;			/* # of calls to */
    unsigned int	srproc;			/* # of calls to */
    unsigned int	srreq;			/* # of calls to */
    unsigned int	srsetp;			/* # of calls to */
    unsigned int	srsize;			/* # of calls to */
    unsigned int	srsnapreq;		/* # of calls to */
    unsigned int	srston;			/* # of calls to */
    unsigned int	srwain;			/* # of calls to */
    unsigned int	db_open;		/* # of calls to */
    unsigned int	db_select;		/* # of calls to */
    unsigned int	db_modify;		/* # of calls to */
    char 	unused[SR_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SR_ACB_REPLY;
 
typedef struct SR_ACB_WA_HEADER		/* ACNET callback work area header structure */
    {
    char		*work_area;		/* pointer to work area */
    unsigned short	num_uses;		/* number of uses of this work area (0 -> no proc yet) */
    unsigned int	num_bytes;		/* size of work area in bytes (0 -> proc is pending) */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SR_ACB_WA_HEADER;

#define	SR_PARAM_MAX_WA_HEADERS	300	/* maximum number of work area headers to return */

typedef struct SR_ACB_WA_HEADERS_REPLY		/* ACNET callback work area headers structure */
    {
    short	status;				/* returned status of request */
    short	num_work_areas;			/* number of work areas returned */
    SR_ACB_WA_HEADER	headers[SR_PARAM_MAX_WA_HEADERS];	/* list of work area headers */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SR_ACB_WA_HEADERS_REPLY;

#define	SR_PARAM_MAX_READ_BYTES	3840	/* maximum number of bytes to read */

typedef struct SR_ACB_READ_WORK_AREA_REPLY	/* ACNET callback read work area reply structure */
    {
    short	status;				/* returned status of request */
    short	num_bytes;			/* number of bytes returned */
    char	work_area[SR_PARAM_MAX_READ_BYTES];	/* returned data */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SR_ACB_READ_WORK_AREA_REPLY;

typedef struct SR_ACB_WA_ENTRY			/* ACNET callback work area entry structure */
    {
    short	returned_length;		/* length of data or ACNET error code if negative */
    short	byte_offset;			/* offset in bytes from the end of the header to the returned data */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SR_ACB_WA_ENTRY;

#define	SR_PARAM_MAX_WA_ENTRIES	900	/* maximum number of work area entries to return */

typedef struct SR_ACB_WA_ENTRIES_REPLY		/* ACNET callback work area entries structure */
    {
    short		status;			/* returned status of request */
    unsigned short	num_entries;		/* number of data entries returned */
    unsigned short	num_bytes;		/* total size of work area in bytes */
    SR_ACB_WA_ENTRY	entries[SR_PARAM_MAX_WA_ENTRIES];	/* list of work area entries */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SR_ACB_WA_ENTRIES_REPLY;

/* end of save/restore */



/* Save/Restore Manager routines */

#define	SRMNGR_ACB_TC_REQUEST_STATS	1	/* request Save/Restore Manager statistics */
#define	SRMNGR_ACB_TC_DIAG_CLEAR	3	/* clear Save/Restore Manager statistics */
#define	SRMNGR_ACB_TC_SET_PROC_PERIOD	4	/* set proc check period */
#define	SRMNGR_ACB_TC_TOGGLE_LOG	7	/* toggle error logging */
#define	SRMNGR_ACB_TC_READ_DEVICES	11	/* retrieve device reading history */
#define	SRMNGR_ACB_TC_DEBUG_ENABLE	14	/* enable debug mode */
#define	SRMNGR_ACB_TC_DEBUG_DISABLE	15	/* disable debug mode */
#define	SRMNGR_ACB_TC_MAIL_ENABLE	16	/* enable error mail */
#define	SRMNGR_ACB_TC_MAIL_DISABLE	17	/* disable error mail */
#define	SRMNGR_ACB_TC_RESTORE_DEVICES	18	/* retrieve device restore history */

#define	SRMNGR_ACB_MIN_PROC_PERIOD	1	/* minimum proc check period */

typedef struct SRMNGR_ACB_REQUEST		/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_DATABASE */
    short	type_code;			/* SRMNGR callback main type code */
    short	subtype;			/* SRMNGR callback secondary type code */
    int		request_data;			/* request specific data */
    int		request_data_2;			/* request specific data */
    char	*read_address;			/* address for work area read */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SRMNGR_ACB_REQUEST;

#define	SRMNGR_PARAM_REPLY_FILLER	3458	/* reply structure filler size */

typedef struct SRMNGR_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    unsigned int	ret_count;		/* # of returned statistics messages */
    unsigned int	logit_state;		/* logging state */
    unsigned int	dynamic_memory;		/* # of bytes of dynamic memory */
    unsigned int	out_of_memory;		/* out of dynamic memory flag */
    int		source;				/* current data source */
    int		requested_source;		/* requested data source */
    int		supersystem;			/* S/R file supersystem */
    int		sda_file_type;			/* SDA file type */
    int		display_connect;		/* flag indicating whether or not to display a connect window */
    unsigned int	num_restore_requests;	/* number of device restore requests */
    unsigned int	num_restore_devices;	/* number of devices successfully restored */
    unsigned int	num_errors;		/* total number of errors */
    short	last_error;			/* last error detected */
    char	last_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last error was detected */
    int		last_error_di;			/* device index of last error */
    short	last_error_pi;			/* property index of last error */
    short 	last_error_file;		/* file number of last error */
    short 	last_error_case;		/* case number of last error */
    short 	last_error_subcase;		/* subcase number of last error */
    short 	last_error_usage;		/* usage number of last error */
    int		last_invarg_num;		/* last invalid argument number */
    char	last_invarg_func[ACB_FUNC_NAME_LEN+2];	/* function in which last invalid argument error was detected */
    unsigned int	num_restore_errors;	/* total number of restore errors */
    short	last_restore_error;		/* last restore error detected */
    char	last_restore_error_func[ACB_FUNC_NAME_LEN+2];	/* function in which last restore error was detected */
    int		last_restore_error_di;		/* device index of last restore error */
    short	last_restore_error_pi;		/* property index of last restore error */
    short 	last_restore_error_file;	/* file number of last restore error */
    short 	last_restore_error_case;	/* case number of last restore error */
    short 	last_restore_error_subcase;	/* subcase number of last restore error */
    short 	last_restore_error_usage;	/* usage number of last restore error */
    int		last_request_di;		/* device index of last request */
    short	last_request_pi;		/* property index of last request */
    short 	last_request_file;		/* file number of last request */
    short 	last_request_case;		/* case number of last request */
    short 	last_request_subcase;		/* subcase number of last request */
    short 	last_request_usage;		/* usage number of last request */
    char	last_usage[SDA_USAGE_NAME_LEN+2];	/* last SDA usage */
    int		last_restore_di;		/* last restore device index */
    short	last_restore_pi;		/* last restore property index */
    short 	last_restore_file;		/* last restore file number */
    short 	last_restore_case;		/* case number of last restore */
    short 	last_restore_subcase;		/* subcase number of last restore */
    short 	last_restore_usage_number;	/* usage number of last restore */
    char	last_restore_usage[SDA_USAGE_NAME_LEN+2];	/* last restore SDA usage */
    unsigned int	periodic_proc_count;	/* number of srprocs in current period */
    unsigned int	max_periodic_proc_count;	/* max number of srprocs in a period */
    unsigned short	proc_check_period;	/* srproc measurement period */
    unsigned int	total_srproc_time;	/* total time spent in SRPROCs in 15 Hz ticks */
    unsigned int	longest_srproc;		/* longest SRPROC in 15 Hz ticks */
    unsigned int	total_srcnct_time;	/* total time spent in SRCNCTs in 15 Hz ticks */
    unsigned int	longest_srcnct;		/* longest SRCNCT in 15 Hz ticks */
    unsigned int	total_open_time;	/* total time spent in db_open in 15 Hz ticks */
    unsigned int	longest_open;		/* longest db_open in 15 Hz ticks */
    unsigned int	total_select_time;	/* total time spent in db_select in 15 Hz ticks */
    unsigned int	longest_select;		/* longest db_select in 15 Hz ticks */
    unsigned int	sr_category_menu;	/* # of calls to */
    unsigned int	sr_directory_info;	/* # of calls to */
    unsigned int	sr_disconnect;		/* # of calls to */
    unsigned int	sr_file_devices;	/* # of calls to */
    unsigned int	sr_file_has_device;	/* # of calls to */
    unsigned int	sr_file_menu;		/* # of calls to */
    unsigned int	sr_get_array_device;	/* # of calls to */
    unsigned int	sr_get_device;		/* # of calls to */
    unsigned int	sr_get_device_raw;	/* # of calls to */
    unsigned int	sr_get_snapshot;	/* # of calls to */
    unsigned int	sr_is_on;		/* # of calls to */
    unsigned int	sr_is_positive;		/* # of calls to */
    unsigned int	sr_restore_device;	/* # of calls to */
    unsigned int	sr_sda_case_times;	/* # of calls to */
    unsigned int	sr_sda_file_number;	/* # of calls to */
    unsigned int	sr_sda_num_subcases;	/* # of calls to */
    unsigned int	sr_sda_select_directory;	/* # of calls to */
    unsigned int	sr_sda_set_directory;	/* # of calls to */
    unsigned int	sr_sda_store_number;	/* # of calls to */
    unsigned int	sr_sda_subcases_present;	/* # of calls to */
    unsigned int	sr_set_source;		/* # of calls to */
    unsigned int	sr_snapshot_info;	/* # of calls to */
    unsigned int	sr_status_text;		/* # of calls to */
    unsigned int	sr_status;		/* # of calls to */
    unsigned int	srcnct;			/* # of calls to */
    unsigned int	srproc;			/* # of calls to */
    unsigned int	db_open;		/* # of calls to */
    unsigned int	db_select;		/* # of calls to */
    unsigned int	db_modify;		/* # of calls to */
    char 	unused[SRMNGR_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SRMNGR_ACB_REPLY;
 
typedef struct SRMNGR_ACB_DEVICE_ENTRY		/* SRMNGR device entry data */
    {
    int		device_index;			/* device index */
    short	property;			/* property index */
    int		length;				/* data length in bytes */
    int		offset;				/* data offset in bytes */
    int		type;				/* type of access */
    int		file_number;			/* file number */
    short	sda_usage;			/* SDA usage */
    short	sda_case;			/* SDA case */
    short	sda_subcase;			/* SDA subcase */
    unsigned int	read_data;		/* up to first 4 bytes of raw reading data */
    short	error;				/* access status */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SRMNGR_ACB_DEVICE_ENTRY;

#define	SRMNGR_PARAM_MAX_DEVICES	100	/* maximum number of devices */

typedef struct SRMNGR_ACB_READ_DEVICES_REPLY	/* SRMNGR device data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of devices returned */
    unsigned int	num_devices;		/* number of devices in existence */
    SRMNGR_ACB_DEVICE_ENTRY	devices[SRMNGR_PARAM_MAX_DEVICES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SRMNGR_ACB_READ_DEVICES_REPLY;

typedef struct SRMNGR_ACB_RESTORE_DEVICE_ENTRY	/* SRMNGR restore device entry data */
    {
    int		device_index;			/* device index */
    short	property;			/* property index */
    int		length;				/* data length in bytes */
    int		offset;				/* data offset in bytes */
    int		type;				/* type of access */
    int		file_number;			/* file number */
    short	sda_usage;			/* SDA usage */
    short	sda_case;			/* SDA case */
    short	sda_subcase;			/* SDA subcase */
    unsigned int	restore_data;		/* up to first 4 bytes of raw setting data */
    short	error;				/* access status */
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SRMNGR_ACB_RESTORE_DEVICE_ENTRY;

#define	SRMNGR_PARAM_MAX_RESTORE_DEVICES	100	/* maximum number of restore devices */

typedef struct SRMNGR_ACB_RESTORE_DEVICES_REPLY	/* SRMNGR restore device data */
    {
    short		status;			/* returned status of request */
    unsigned int	num_returned;		/* number of devices returned */
    unsigned int	num_devices;		/* number of devices in existence */
    SRMNGR_ACB_RESTORE_DEVICE_ENTRY	devices[SRMNGR_PARAM_MAX_RESTORE_DEVICES];
    } __attribute__((packed)) /* Added by the PACKINATOR(tm) */ SRMNGR_ACB_RESTORE_DEVICES_REPLY;

/* end of Save/Restore Manager */




/* Utility functions */

#define	UTIL_ACB_TC_REQUEST_STATS	1	/* request general statistics */
#define	UTIL_ACB_TC_DIAG_CLEAR		3	/* clear general statistics */
#define	UTIL_ACB_TC_DEBUG_ENABLE	4	/* enable debug mode */
#define	UTIL_ACB_TC_DEBUG_DISABLE	5	/* disable debug mode */
#define	UTIL_ACB_TC_REQUEST_TERMINATE	20	/* request program termination */

typedef struct UTIL_ACB_REQUEST			/* ACNET callback request structure */
    {
    short	generic_type_code;		/* should always have a value of ACNET_CALLBACK_DATABASE */
    short	type_code;			/* utility callback main type code */
    short	subtype;			/* utility callback secondary type code */
    int		request_data;			/* request specific data */
    int		request_data_2;			/* request specific data */
    } __attribute__((packed)) UTIL_ACB_REQUEST;

#define	UTIL_PARAM_REPLY_FILLER		3898	/* reply structure filler size */

typedef struct UTIL_ACB_REPLY			/* ACNET callback reply structure */
    {
    short	status;				/* returned status of request */
    char 	unused[UTIL_PARAM_REPLY_FILLER];	/* should maintain total structure size at 3900 bytes */
    } __attribute__((packed)) UTIL_ACB_REPLY;

typedef int (*util_acb_function)(UTIL_ACB_REQUEST *request,
				 void *callback_data,
				 UTIL_ACB_REPLY *reply,
				 int *reply_length);	/* utility ACNET callback function */

int utility_acb_register_function(util_acb_function callback_func,
				  void *callback_data);
int utility_acb_send_terminate_request(int node, char *process_name,
				       int wait_for_reply);
int utility_acb_unregister_function(util_acb_function callback_func,
				    void *callback_data);

/* end of utility functions */



#endif




Security, Privacy, Legal