/********************************************************************************************************************************/ /* Created: 15-MAR-2001 23:37:59 by OpenVMS SDL EV1-33 */ /* Source: 15-MAR-2001 23:34:09 _$11$DUA933:[BUILD.SDL]STARDEFFL.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE $IOSADEF ***/ #ifndef __IOSADEF_LOADED #define __IOSADEF_LOADED 1 #pragma nostandard #ifdef __cplusplus extern "C" { #define __unknown_params ... #else #define __unknown_params #endif #if !defined(__VAXC) && !defined(VAXC) #define __struct struct #define __union union #else #define __struct variant_struct #define __union variant_union #endif /*+ */ /* NOTE: */ /* The tags used in the data structures defined by this file reflect */ /* the size of the field in the OpenVMS V7.0 ALPHA release. The */ /* field names have been ported to the VAX release for compatability */ /* reasons and it is recognized that some of the fields are shorter */ /* than their tags indicated. If the tags were to be corrected for */ /* their proper size on VAX it would break our goal of application */ /* source code compatability for Fast IO. */ /*- */ /*+ */ /* Define I/O Status Area */ /*- */ #define IOSA$K_LENGTH 32 /* Length of IOSA */ #define IOSA$C_LENGTH 32 /* Length of IOSA */ #define IOSA$S_IOSADEF 32 /* Size of IOSA */ typedef struct _iosa { unsigned int iosa$l_status; /* Status */ unsigned int iosa$l_resd; /* Reserved (driver) */ __union { int iosa$q_count_q [2]; /* Force size */ int iosa$ih_count; /* Number of bytes */ } iosa$r_bytecount; __union { int iosa$q_context_q [2]; /* Force size */ int iosa$ph_context_p; /* User context area */ int iosa$ih_context; /* User context area */ } iosa$r_ctx; __union { /* Just in case we need */ unsigned int iosa$l_resl [2]; /* in the future some */ int iosa$q_resq; /* additional space */ } iosa$r_reserved; } iosa; #if !defined(__VAXC) && !defined(VAXC) #define iosa$q_count_q iosa$r_bytecount.iosa$q_count_q #define iosa$ih_count iosa$r_bytecount.iosa$ih_count #define iosa$q_context_q iosa$r_ctx.iosa$q_context_q #define iosa$ph_context_p iosa$r_ctx.iosa$ph_context_p #define iosa$ih_context iosa$r_ctx.iosa$ih_context #define iosa$l_resl iosa$r_reserved.iosa$l_resl #define iosa$q_resq iosa$r_reserved.iosa$q_resq #endif /* #if !defined(__VAXC) && !defined(VAXC) */ typedef int fandle; #if !defined(__VAXC) #define iosa$q_count_q iosa$r_bytecount.iosa$q_count_q #define iosa$ih_count iosa$r_bytecount.iosa$ih_count #define iosa$q_context_q iosa$r_ctx.iosa$q_context_q #define iosa$ph_context_p iosa$r_ctx.iosa$ph_context_p #define iosa$ih_context iosa$r_ctx.iosa$ih_context #define iosa$l_resl iosa$r_reserved.iosa$l_resl #define iosa$q_resq iosa$r_reserved.iosa$q_resq #endif /* #if !defined(__VAXC) */ typedef struct _iosa * IOSA_PQ; /* Pointer to an IOSA */ typedef struct _iosa ** IOSA_PPQ; /* Pointer to a pointer to an IOSA */ typedef fandle * FANDLE_PQ; /* Pointer to FANDLE */ typedef fandle ** FANDLE_PPQ; /* Pointer to pointer to FANDLE */ /*+ */ /* $IO_SETUP flag bits */ /*- */ #define FIO$M_EXPEDITE 0x1 #define FIO$M_AST_NOFLOAT 0x2 union setup_flags { int fio$l_flags_longword; __struct { unsigned fio$v_expedite : 1; /* Make this a high-priority I/O */ unsigned fio$v_ast_nofloat : 1; /* The AST routine does not use f.p. regs */ unsigned fio$v_fill_44 : 6; } fio$r_flag_bits; } ; #if !defined(__VAXC) && !defined(VAXC) #define fio$v_expedite fio$r_flag_bits.fio$v_expedite #define fio$v_ast_nofloat fio$r_flag_bits.fio$v_ast_nofloat #endif /* #if !defined(__VAXC) && !defined(VAXC) */ /* */ /* These entry point definitions were ported from Alpha STARLET.SDL. */ /* They are applicable only when the IOSA structure definitions are */ /* present and are not actual system services on VAX. Therefore, they */ /* will remain in this file (IOSADEF.SDL) for the VAX */ /* */ /* $IO_CLEANUP */ /* */ /* Cleanup a previously set-up I/O */ /* */ /* $IO_CLEANUP fandle */ /* */ /* fandle = fandle to clean up */ /* */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __long #endif int sys$io_cleanup(__unknown_params); /* $IO_PERFORM */ /* */ /* Transfer data between device and buffer */ /* */ /* $IO_PERFORM fandle, chan, iosadr, bufadr, buflen, devdata */ /* ($IO_PERFORMW) */ /* */ /* fandle = fandle from previous $IO_SETUP */ /* */ /* chan = standard I/O channel */ /* */ /* iosadr = IOSA address */ /* */ /* bufadr = address of data buffer (64 bits) */ /* */ /* buflen = length of data buffer (64 bits) */ /* */ /* devdata= data passed to driver, e.g., media address */ /* */ /* */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __long #endif int sys$io_perform(__unknown_params); int sys$io_performw(__unknown_params); #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __short #endif /* $IO_SETUP */ /* */ /* Set up a fast I/O */ /* */ /* $IO_SETUP func, bufobj, iosobj, astadr, flags, return_fandle */ /* */ /* func = function code */ /* */ /* bufobj = data buffer object (address of (vector of 2 ints)) */ /* */ /* iosobj = IOSA buffer object (address of (vector of 2 ints)) */ /* */ /* astadr = completion AST address (address of entry) */ /* */ /* flags = flags */ /* */ /* return_fandle = address of returned fandle */ /* */ #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __long #endif int sys$io_setup(__unknown_params); #ifdef __INITIAL_POINTER_SIZE #pragma __required_pointer_size __short #endif #ifdef __cplusplus } #endif #pragma standard #endif /* __IOSADEF_LOADED */