/* * MODULE: IOC_ROUTINES.H * * VERSION: X-32 * * * Copyright 2003 Compaq Computer Corporation * * Compaq and the Compaq logo Registered in U.S. Patent and Trademark Office. * * Confidential computer software. Valid license from Compaq required for * possession, use or copying. Consistent with FAR 12.211 and 12.212, * Commercial Computer Software, Computer Software Documentation, and * Technical Data for Commercial Items are licensed to the U.S. Government * under vendor's standard commercial license. * *++ * * FACILITY: * * VMS Executive (LIB_H) * * ABSTRACT: * * This module contains the C function prototypes for the VMS system * routines that begin with the IOC$ and IOC_STD$ prefixes and have * a standard call interface. * * NOTE: * * The conventions used in these function prototypes are: * * 1. Case * This header file supports invoking the routines by either using all * lowercase or all uppercase names for the system routines. Either * naming convention works even in the presence of the /NAME=AS_IS * compiler switch. * * 2. Integer size * The generic "int" type is used where it doesn't matter whether the * integer is 32 or 64 bits wide. Thus "int" is the returned value of * most functions and is the type for most integers passed by value. * However, an unambiguous integer type, e.g. int32, is used for any * integer that is passed by reference. Also, int64 is used for any * integer that is expected to be 64 bits wide even if it is passed by * value. * * 3. Types * The function prototypes use the types defined in [SYSLIB]SYS$LIB_C.TLB. * The definitions of all types used are included below. * * 4. Parameter names * Parameter names are used in the prototypes. Although they are ignored * by the compiler they do provide useful documentation. For example: * * void ioc_std$reqcom (int iost1, int iost2, UCB *ucb); * * is used instead of the functionally equivalent: * * void ioc_std$reqcom (int, int, UCB *); * * 5. Parameters passed by reference * The parameter name includes the "_p" suffix if the parameter is passed * by reference unless the parameter type implies that it is always passed * by reference. For example, there is no "_p" suffix in: * * UCB *ucb; * int32 iosb[2]; * * since structures and arrays are always passed by reference. However: * * int32 *outlen_p; * UCB **new_ucb_p; * * include the suffix to denote that outlen_p is a pointer to a 32 bit * integer, and to denote that new_ucb_p is a pointer to a pointer to a * UCB structure. * * 6. Mixed pointer sizes within one argument * If a 64-bit pointer is being passed by reference, the reference to * the pointer should also be 64 bits wide to avoid confusion. * For example: * * PTE_PPQ va_pte_p; * VOID_PPQ start_va_p; * * should be used instead of: * * PTE_PQ *va_pte_p; * VOID_PQ *start_va_p; * * * AUTHOR: * * Leonard S. Szubowicz * * CREATION DATE: 28-May-1993 * * MODIFICATION HISTORY: * * X-32 JJF0379 J. Jeffery Friedrichs 20-Jun-2008 * Back out X-31 * * X-31 JJF0361 J. Jeffery Friedrichs 30-Nov-2007 * Change the parameter for are_bitmaps_active_ipl0 * * X-30 GHJ Gregory H. Jordan 3-Jan-2007 * Remove the temporary definition of VMS$PFNBITS_32 and * uncomment the include of VMS$DEFS where the symbol is really * defined. * * X-29 TLC Tony Camuso 22-Jun-2006 * ioc$nod_data(), changed to variable argument list. * * X-28 SCS Sue Sommer 23-Sept-2005 * Add 3 new routines in support of Active-Active controllers: * ioc$get_targ_port_grp_num, ioc$get_asym_access_state and * ioc$reverse_endian. * * X-27 DP Dave Prizer 14-Oct-2004 * Rename ioc_std$fibre_channel_connect to * ioc_std$fc_global_connect. This was necessary to * allow older versions (pre-WTID) of the FibreChannel * drivers to co-exist with newer versions (post-WTID) * of the SYS facility. * * X-26 JHS0034 John H. Shortt 04-May-2004 * Add ioc_std$ignore_local_bitmaps * * X-25 RAB089 Robert A. Brooks 02-Mar-2004 * Folds from V73-1R-HBMM . . . * * X-14A30A2 LSS0459 Leonard S. Szubowicz 29-Sep-2003 * HBMM: Avoid including WBMDEF.H and the resultant Catch-22. * WBMDEF.H requires the __NEW_STARLET versions of LKSBDEF.H * and ILEDEF.H. But some modules that include IOC_ROUTINES.H * are written to the "old starlet" versions of LKSBDEF.H or * ILEDEF.H. * * X-14A30A1 JHS0009 John H. Shortt 24-Sep-2003 * Add the following prototypes from HBMM: * ioc_std$are_bitmaps_active * ioc_std$are_bitmaps_active_ipl0 * ioc_std$zero_local_bitmap * Remove include for iledef.h since it has been added wbmdef.h * and wbmdef.h is in here. The issue is that new_starlet * needs to be done for lksbdef and iledef. * * * X-24 Clair Grant 19-Feb-2004 * Add vms$defs.h but with a temporary definition here * until the build mechanism is in place. * * X-23 Clair Grant Valentine's Day-Feb-2004 * Conditionalize ioc_std$ptetopfn for 32-bit PFNs * * X-22 DEE0871 David E. Eiche 10-Feb-2004 * Add ioc$pte_to_pfn_64 prototype. * * X-21 DEE0833 David E. Eiche 26-Aug-2003 * Add ioc$unload_map prototype. * * X-20 ABP Anu Pant 06-May-2003 * Change user_param of ioc_std$devconfig_register * from int to int64. * * X-19 ABP Anu Pant 29-Apr-2003 * Add prototye for ioc_std$devconfig_cbk_iodb * * X-18 ABP Anu Pant 27-Mar-2003 * Add prototype for ioc_std$devconfig_register and * ioc_std$devconfig_deregister. * * X-17 ABP Anu Pant 24-Jan-2003 * Add prototype for quiet mount verification related * routine, ioc_std$sndopc_mvsupmsg. * * X-16 ABP Anu Pant 09-Jan-2003 * Add prototype for ioc_std$establish_ddt_altstart, * ioc_std$establish_ddt_cancel, ioc_std$establish_ddt_mntver, * ioc_std$establish_ddt_start, ioc_std$ddt_start_intercept, * ioc_std$ddt_mntver_intercept and * ioc_std$ddt_altstart_intercept. * * X-14A32 OH0033 Oliver Hellwig 3-May-2002 * The prototype for ioc_std$fibre_channel_connect * needs a forward reference for PCTX since this * def module has not yet been checked into LIB. * * X-14A31 OH0031 Oliver Hellwig 26-Apr-2002 * Add proto for ioc_std$fibre_channel_connect * * X-14A30 JEM003 John E. Malmberg 09-Oct-2001 * Added prototype for ioc$get_rpt_dev_udid. Parses * SCSI Report Device Identifier buffer for a UDID. * * X-14A29 LSS0413 Leonard S. Szubowicz 23-Jan-2001 * Fold in X-14A22A2. * Part of the fix for CLD 70-3-4160: Provide a method that * allows both Multipath and HSM to intercept the DDT$PS_CANCEL_2 * driver entry point in a compatible fashion. Add prototype * for the IOC_STD$DDT_CANCEL_INTERCEPT routine. * * X-14A28 OH Oliver Hellwig 22-Aug-2000 * Add Prototype for ioc_std$binwwid_to_ascwwid. * * X-14A27 TJP Tom Provost 13-Jul-2000 * Add prototypes for ioc_std$initiate_lck_rel * * X-14A26 LSS0406 Leonard S. Szubowicz 10-Feb-2000 * Part of the fix for CLDs 70-3-2729 and 70-3-2599: Multipath * internal I/O that was sent to a UCB by calling EXE_STD$INSIOQC * would increment UCB$L_QLEN but never decrement it on completion. * Add prototype for routine IOC_STD$INITIATE_NEW_IO. * * X-14A25 SCS Sue Sommer 09-Feb-2000 * Add prototypes for ioc_std$update_dev_wwid_list and * ioc_std$ascwwid_to_binwwid. Update copyright. * * X-14A24 TGS Tom Speer 05-Aug-1999 * Add prototype for IOC_STD$HWM_END. * * X-14A23 SSL Steven S. Lim 13-May-1999 * Add prototype for IOC_STD$REQCOM_LOCAL. * * X-14A22 JMB057 James M. Blue 01-Oct-1998 * Add interface to ioc_std$errcnt_value and * ioc_std$opcnt_value. * * X-14A21 GP Genady Perchenko 29-Jul-1998 * Add interface to ioc_std$q_internal_irp. * * X-14A20 JMB027 James M. Blue 17-Jul-1998 * Correct ioc$sndopcfao definition error. * * X-14A19 JMB James M. Blue 14-Jul-1998 * Add interface routines to generate a dynamic FAO message and * send it to OPCOM. * * X-14A18 KLN2082 Karen L. Noel 04-Jun-1998 * Surround this file with short pointer pragmas in case someone * wants to compile with long pointers from the command line. * * X-14A17 SCS Sue Sommer 2-Jun-1998 * Fix prototype for ioc$get_udid. * * X-14A16 RTS092 Bob Silver 21-May-1998 * Fix WWID, SN_WWID references that only worked for __NEW_STARLET. * * X-14A15 RTS080 Bob Silver 21-May-1998 * Add prototypes for ioc$get_udid, ioc$get_page80_wwid, and * ioc$get_page83_wwid routines for fibre channel. * * X-14A14 SCS Sue Sommer 6-Jan-1998 * Add prototype for SCSI class/port driver connect routine * ioc$scsipath_connect. * * X-14A13 RTS030 Bob Silver 02-Dec-1997 * - Move macros to lowercase names of routines in READ_CONFIG.H * from this module into READ_CONFIG.H. This was done as part * of changes to implement fibre channel configuration. * * X-14A12 LSS0371 Leonard S. Szubowicz 3-Apr-1997 * Fix prototype for ioc$allocate_ccb. * * X-14A11 PAJ0918 Paul A. Jacobi 16-Jan-1997 * Define IOC_STD$GETSYI_CPU_SPECIFIC routine to fetch GETSYI * item codes from system specific routine. * * X-14A10 FGK Fred Kleinsorge 17-Oct-1996 * Back out the routines for foreign_boot and read_config. * They are not in the base image. * * X-14A9 FGK Fred Kleinsorge 30-Jul-1996 * Fix informational by removing reference to private * routine in foreign_boot_support. * * X-14A8 FGK Fred Kleinsorge 25-Jul-1996 * Add FOREIGN_BOOT_SUPPORT prototypes. * * X-14A7 Susan Lewis 06-Jun-1996 * Modify interface to ioc$node_function to allow * an optional cpu mask argument. Adjust edit number * to match VDE. * * X-14A5 FGK Fred Kleinsorge 02-Apr-1996 * Add read_config prototypes. Fix broken edit by * adding BUSARRAYDEF * * X-14A3 NYK619 Nitin Y. Karkhanis 22-Mar-1996 * Declare descriptor as a long pointer to void (VOID_PQ) * for IOC_STD$SEARCH, IOC_STD$SEARCHALL, IOC_STD$SEARCHDEV, * and IOC_STD$TRANDEVNAM. * * X-14A2 DEE0219 David E. Eiche 1-Feb-1996 * Add an optional argument to the IOC_STD$LINK_UCB routine * so that when an existing UCB is found with the same unit * number as the formative UCB we're trying to link in, we * can return its address to the caller. * * X-14A1 JPJ James P. Janetos 07-Aug-1995 * Add prototypes for PCI configuration space access * routines IOC$READ_PCI_CONFIG and IOC$WRITE_PCI_CONFIG. * * X-14 LSS0348 Leonard S. Szubowicz 13-Jun-1995 * 64-bits: Add resource wait flag parameter to IOC_STD$FILL_DIOBM * and IOC_STD$CREATE_DIOBM. * * X-13 LSS0320 Leonard S. Szubowicz 15-Feb-1995 * 64-Bit Virtual Addressing: Revise edit X-10 to stick to 32-bit * pointers if using a compiler that doesn't support 64-bit ones. * * X-11 WDB64B3 Walter D. Blaschuk, Jr. 9-Feb-1995 * 64-Bit Virtual Addressing/VA2PA changes: Add * IOC_STD$SVAPTE_IN_BUF * * X-10 LSS0319 Leonard S. Szubowicz 7-Feb-1995 * 64-Bit Virtual Addressing: Add IOC_STD$VA_TO_PA, 64-bit * pointers on IOC_STD$PTETOPFN and IOC_STD$SIMREQCOM. * * X-9 LSS0314 Leonard S. Szubowicz 12-Jan-1995 * Add function prototypes for DIOBM routines. See "Chapter 20: * QIO and Device Drivers" in DOCD$:[EVMS.CMS_64B]DS-64BITS.PS. * * X-8 JCH703 John C. Hallyburton, Jr. 5-Dec-1994 * Add function prototype for IOC_STD$CHECK_HWM. * Change IOC_STD$MAPVBLK to use unsigned VBN/LBN/bytecounts. * * X-7 LSS0313 Leonard S. Szubowicz 2-Nov-1994 * Add function prototype for new IOC$SETUP_UCB_DIPL routine. * See STAR::EVMS_IO note 378.13 for details. * * X-6 JPJ James P. Janetos 19-Jan-1994 * Change iohandle to pointer to uint64 in ioc$map_io, * ioc$unmap_io, ioc$read_io, ioc$write_io, and * ioc$cram_cmd. Change read and write data to pointer * to void in both ioc$read_io and ioc$write_io. * * X-5 JPJ James P. Janetos 22-Dec-1993 * Include ptedef. Add ioc$read_io, ioc$write_io, * ioc$map_io, ioc$unmap_io, ioc$alloc_cnt_res, * ioc$init_crctx, ioc$init_cram, ioc$alloc_adp, and * ioc$add_adp. Fix prototypes for ioc_std$ptetopfn, * ioc$cram_cmd, ioc$load_map, and ioc$alloc_crctx. * * X-4 DEE0203 David E. Eiche 01-Nov-1993 * Move the driver table initialization prototypes to * vms_drivers.h. * * X-3 LSS0286 Leonard S. Szubowicz 30-Aug-1993 * Add the definition of DDT, DPT, and FDT types which are used * by the driver table initialization prototypes added by X-2. * * X-2 DEE0188 David E. Eiche 19-Aug-1993 * Correct CCB parameter in ioc$alloc_ccb prototype. Add * prototypes for driver table initialization. * * X-1 LSS0279 Leonard S. Szubowicz 28-May-1993 * Initial version. * *-- */ #ifndef __IOC_ROUTINES_LOADED #define __IOC_ROUTINES_LOADED 1 #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif /* * Define all types that are used in the following function prototypes. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include struct _wbmh; /* Write BitMap Handle */ struct _wbmb; /* Write Bitmap Block */ /* * When pctxdef is checked in and included above, this forward * declaration will no longer be necessary. */ typedef struct _pctx PCTX; /* VMS system routine entry points are defined externally using uppercase names. The following macros allow the usage of the lowercase versions of these names even in the presence of the /NAME=AS_IS compiler switch. */ #define ioc$add_adp IOC$ADD_ADP #define ioc$add_device_type IOC$ADD_DEVICE_TYPE #define ioc$allocate_ccb IOC$ALLOCATE_CCB #define ioc$allocate_cram IOC$ALLOCATE_CRAM #define ioc$alloc_adp IOC$ALLOC_ADP #define ioc$alloc_cnt_res IOC$ALLOC_CNT_RES #define ioc$alloc_crab IOC$ALLOC_CRAB #define ioc$alloc_crctx IOC$ALLOC_CRCTX #define ioc_std$altreqcom IOC_STD$ALTREQCOM #define ioc_std$are_bitmaps_active IOC_STD$ARE_BITMAPS_ACTIVE #define ioc_std$are_bitmaps_active_ipl0 IOC_STD$ARE_BITMAPS_ACTIVE_IPL0 #define ioc_std$ignore_local_bitmaps IOC_STD$IGNORE_LOCAL_BITMAPS #define ioc_std$ascwwid_to_binwwid IOC_STD$ASCWWID_TO_BINWWID #define ioc_std$binwwid_to_ascwwid IOC_STD$BINWWID_TO_ASCWWID #define ioc_std$fc_global_connect IOC_STD$FC_GLOBAL_CONNECT #define ioc_std$broadcast IOC_STD$BROADCAST #define ioc_std$bufpost IOC_STD$BUFPOST #define ioc_std$cancelio IOC_STD$CANCELIO #define ioc$cancel_cnt_res IOC$CANCEL_CNT_RES #define ioc$cancel_cnt_res_nosync IOC$CANCEL_CNT_RES_NOSYNC #define ioc$change_device_type IOC$CHANGE_DEVICE_TYPE #define ioc$chan_to_ccb IOC$CHAN_TO_CCB #define ioc_std$check_hwm IOC_STD$CHECK_HWM #define ioc_std$chkmbxquota IOC_STD$CHKMBXQUOTA #define ioc_std$chkucbquota IOC_STD$CHKUCBQUOTA #define ioc_std$clone_ucb IOC_STD$CLONE_UCB #define ioc_std$closebufwind IOC_STD$CLOSEBUFWIND #define ioc_std$conbrdcst IOC_STD$CONBRDCST #define ioc_std$copy_ucb IOC_STD$COPY_UCB #define ioc$cram_cmd IOC$CRAM_CMD #define ioc$cram_io IOC$CRAM_IO #define ioc$cram_queue IOC$CRAM_QUEUE #define ioc$cram_wait IOC$CRAM_WAIT #define ioc$create_ccb_table IOC$CREATE_CCB_TABLE #define ioc_std$create_ucb IOC_STD$CREATE_UCB #define ioc_std$create_diobm IOC_STD$CREATE_DIOBM #define ioc_std$credit_ucb IOC_STD$CREDIT_UCB #define ioc$ctrl_init IOC$CTRL_INIT #define ioc_std$cvtlogphy IOC_STD$CVTLOGPHY #define ioc_std$cvt_devnam IOC_STD$CVT_DEVNAM #define ioc_std$dalloc_dev IOC_STD$DALLOC_DEV #define ioc_std$dalloc_dmt IOC_STD$DALLOC_DMT #define ioc_std$ddt_altstart_intercept IOC_STD$DDT_ALTSTART_INTERCEPT #define ioc_std$ddt_cancel_intercept IOC_STD$DDT_CANCEL_INTERCEPT #define ioc_std$ddt_mntver_intercept IOC_STD$DDT_MNTVER_INTERCEPT #define ioc_std$ddt_start_intercept IOC_STD$DDT_START_INTERCEPT #define ioc$deallocate_ccb IOC$DEALLOCATE_CCB #define ioc$deallocate_cram IOC$DEALLOCATE_CRAM #define ioc$dealloc_cnt_res IOC$DEALLOC_CNT_RES #define ioc$dealloc_cnt_res_nosync IOC$DEALLOC_CNT_RES_NOSYNC #define ioc$dealloc_crab IOC$DEALLOC_CRAB #define ioc$dealloc_crctx IOC$DEALLOC_CRCTX #define ioc_std$debit_ucb IOC_STD$DEBIT_UCB #define ioc_std$delete_ucb IOC_STD$DELETE_UCB #define ioc_std$devconfig_cbk_iodb IOC_STD$DEVCONFIG_CBK_IODB #define ioc_std$devconfig_register IOC_STD$DEVCONFIG_REGISTER #define ioc_std$devconfig_deregister IOC_STD$DEVCONFIG_DEREGISTER #define ioc_std$diagbufill IOC_STD$DIAGBUFILL #define ioc_std$dismount IOC_STD$DISMOUNT #define ioc_std$errcnt_value IOC_STD$ERRCNT_VALUE #define ioc_std$establish_ddt_altstart IOC_STD$ESTABLISH_DDT_ALTSTART #define ioc_std$establish_ddt_cancel IOC_STD$ESTABLISH_DDT_CANCEL #define ioc_std$establish_ddt_mntver IOC_STD$ESTABLISH_DDT_MNTVER #define ioc_std$establish_ddt_start IOC_STD$ESTABLISH_DDT_START #define ioc_std$fill_diobm IOC_STD$FILL_DIOBM #define ioc_std$filspt IOC_STD$FILSPT #define ioc_std$free_ucb IOC_STD$FREE_UCB #define ioc_std$getbyte IOC_STD$GETBYTE #define ioc$get_asym_access_state IOC$GET_ASYM_ACCESS_STATE #define ioc$get_device_type IOC$GET_DEVICE_TYPE #define ioc$get_page80_wwid IOC$GET_PAGE80_WWID #define ioc$get_page83_wwid IOC$GET_PAGE83_WWID #define ioc$get_rpt_dev_udid IOC$GET_RPT_DEV_UDID #define ioc$get_targ_port_grp_num IOC$GET_TARG_PORT_GRP_NUM #define ioc$get_udid IOC$GET_UDID #define ioc_std$hwm_end IOC_STD$HWM_END #define ioc$init_cram IOC$INIT_CRAM #define ioc$init_crctx IOC$INIT_CRCTX #define ioc_std$initbufwind IOC_STD$INITBUFWIND #define ioc_std$initiate IOC_STD$INITIATE #define ioc_std$initiate_lck_rel IOC_STD$INITIATE_LCK_REL #define ioc_std$initiate_new_io IOC_STD$INITIATE_NEW_IO #define ioc$kp_reqchan IOC$KP_REQCHAN #define ioc$kp_wfikpch IOC$KP_WFIKPCH #define ioc$kp_wfirlch IOC$KP_WFIRLCH #define ioc_std$last_chan IOC_STD$LAST_CHAN #define ioc_std$last_chan_ambx IOC_STD$LAST_CHAN_AMBX #define ioc_std$link_ucb IOC_STD$LINK_UCB #define ioc$load_map IOC$LOAD_MAP #define ioc$unload_map IOC$UNLOAD_MAP #define ioc_std$lock_dev IOC_STD$LOCK_DEV #define ioc$map_io IOC$MAP_IO #define ioc_std$mapvblk IOC_STD$MAPVBLK #define ioc_std$mntver IOC_STD$MNTVER #define ioc_std$movfruser IOC_STD$MOVFRUSER #define ioc_std$movfruser1 IOC_STD$MOVFRUSER1 #define ioc_std$movfruser2 IOC_STD$MOVFRUSER2 #define ioc_std$movtouser IOC_STD$MOVTOUSER #define ioc_std$movtouser1 IOC_STD$MOVTOUSER1 #define ioc_std$movtouser2 IOC_STD$MOVTOUSER2 #define ioc$node_data IOC$NODE_DATA #define ioc$node_function IOC$NODE_FUNCTION #define ioc_std$opcnt_value IOC_STD$OPCNT_VALUE #define ioc_std$parsdevnam IOC_STD$PARSDEVNAM #define ioc_std$post_irp IOC_STD$POST_IRP #define ioc_std$pre_simreqcom IOC_STD$PRE_SIMREQCOM #define ioc_std$primitive_reqchanh IOC_STD$PRIMITIVE_REQCHANH #define ioc_std$primitive_reqchanl IOC_STD$PRIMITIVE_REQCHANL #define ioc_std$primitive_wfikpch IOC_STD$PRIMITIVE_WFIKPCH #define ioc_std$primitive_wfirlch IOC_STD$PRIMITIVE_WFIRLCH #define ioc_std$ptetopfn IOC_STD$PTETOPFN #define ioc$ptetopfn_64 IOC$PTETOPFN_64 #define ioc_std$putbyte IOC_STD$PUTBYTE #define ioc_std$q_internal_irp IOC_STD$Q_INTERNAL_IRP #define ioc_std$qnxtseg IOC_STD$QNXTSEG #define ioc_std$qnxtseg1 IOC_STD$QNXTSEG1 #define ioc$read_io IOC$READ_IO #define ioc$read_pci_config IOC$READ_PCI_CONFIG #define ioc$reallocate_ccb IOC$REALLOCATE_CCB #define ioc_std$relchan IOC_STD$RELCHAN #define ioc_std$release_diobm IOC_STD$RELEASE_DIOBM #define ioc$remove_device_type IOC$REMOVE_DEVICE_TYPE #define ioc_std$reqcom IOC_STD$REQCOM #define ioc_std$reqcom_local IOC_STD$REQCOM_LOCAL #define ioc$reserve_scb IOC$RESERVE_SCB #define ioc$return IOC$RETURN #define ioc$return_success IOC$RETURN_SUCCESS #define ioc$return_unsupported IOC$RETURN_UNSUPPORTED #define ioc$reverse_endian IOC$REVERSE_ENDIAN #define ioc$scan_ccb IOC$SCAN_CCB #define ioc_std$scan_iodb IOC_STD$SCAN_IODB #define ioc_std$scan_iodb_2p IOC_STD$SCAN_IODB_2P #define ioc_std$scan_iodb_usrctx IOC_STD$SCAN_IODB_USRCTX #define ioc$scsipath_connect IOC$SCSIPATH_CONNECT #define ioc_std$search IOC_STD$SEARCH #define ioc_std$searchall IOC_STD$SEARCHALL #define ioc_std$searchcont IOC_STD$SEARCHCONT #define ioc_std$searchdev IOC_STD$SEARCHDEV #define ioc_std$searchint IOC_STD$SEARCHINT #define ioc$search_device_type IOC$SEARCH_DEVICE_TYPE #define ioc_std$sensedisk IOC_STD$SENSEDISK #define ioc$setup_ucb_dipl IOC$SETUP_UCB_DIPL #define ioc_std$sever_ucb IOC_STD$SEVER_UCB #define ioc_std$simreqcom IOC_STD$SIMREQCOM #define ioc$sndopcfao IOC$SNDOPCFAO #define ioc_std$sndopc_mvsupmsg IOC_STD$SNDOPC_MVSUPMSG #define ioc$sva_to_pa IOC$SVA_TO_PA #define ioc_std$svapte_in_buf IOC_STD$SVAPTE_IN_BUF #define ioc$svapte_to_pa IOC$SVAPTE_TO_PA #define ioc_std$testunit IOC_STD$TESTUNIT #define ioc_std$threadcrb IOC_STD$THREADCRB #define ioc_std$trandevnam IOC_STD$TRANDEVNAM #define ioc$tr_to_adp IOC$TR_TO_ADP #define ioc$unit_init IOC$UNIT_INIT #define ioc_std$unlock_dev IOC_STD$UNLOCK_DEV #define ioc$unmap_io IOC$UNMAP_IO #define ioc$unreserve_scb IOC$UNRESERVE_SCB #define ioc_std$update_dev_wwid_list IOC_STD$UPDATE_DEV_WWID_LIST #define ioc_std$va_to_pa IOC_STD$VA_TO_PA #define ioc$verify_chan IOC$VERIFY_CHAN #define ioc_std$wakacp IOC_STD$WAKACP #define ioc$write_io IOC$WRITE_IO #define ioc$write_pci_config IOC$WRITE_PCI_CONFIG #define ioc_std$getsyi_cpu_specific IOC_STD$GETSYI_CPU_SPECIFIC #define ioc_std$zero_local_bitmap IOC_STD$ZERO_LOCAL_BITMAP /* Function prototypes for system routines with the IOC$ and IOC_STD$ prefix. */ int ioc$add_adp (ADP *parent_adp, ADP *new_adp, int ba_index); int ioc$add_device_type (const char *, const int32, UCB *, DTN **); int ioc$allocate_ccb (int16 *chan_p, CCB **ccb_p); int ioc$allocate_cram (CRAM **cram_p, IDB *idb, UCB *ucb, ADP *adp); int ioc$alloc_adp (int64 *adp, int adptype, int hose, int bustype, int nodecount); int ioc$alloc_cnt_res (CRAB *crab, CRCTX *crctx, int64 cntxt1, int64 cntxt2, int64 cntxt3); int ioc$alloc_crab (int itemcnt, int gran, CRAB **crab_p); int ioc$alloc_crctx (CRAB *crab, CRCTX **crctx_p, int flck); void ioc_std$altreqcom (int iost1, int iost2, CDRP *cdrp, IRP **irp_p, UCB **ucb_p); int ioc_std$are_bitmaps_active(MSCP_UCB *vu_ucb, unsigned int flags); int ioc_std$are_bitmaps_active_ipl0(unsigned int vu_unit_num, unsigned int flags); int ioc_std$ignore_local_bitmaps(struct _wbmb *wbmb_p, unsigned int group, unsigned int state); int ioc_std$ascwwid_to_binwwid(char *strptr, int len, char *result, int *reslen); int ioc_std$binwwid_to_ascwwid(WWID *wwid_ptr, char *wwid_string, int inlen, int *retlen); int ioc_std$fc_global_connect(int unit, PCTX *pctx, int protocol_id, void(*cmprtn)()); int ioc_std$broadcast (int msglen, void *msg_p, UCB *ucb); void ioc_std$bufpost (PCB *pcb, IRP *irp); void ioc_std$cancelio (int chan, IRP *irp, PCB *pcb, UCB *ucb); int ioc$cancel_cnt_res (CRAB *crab, CRCTX *crctx, int resume); int ioc$cancel_cnt_res_nosync (CRAB *crab, CRCTX *crctx, int resume); int ioc$change_device_type (const char *, const int32, UCB *, DTN **); int ioc$chan_to_ccb (int16 chan, CCB **ccb_p); int ioc_std$check_hwm (IRP *irp); int ioc_std$chkmbxquota (PCB *pcb, UCB *ucb, int quo); int ioc_std$chkucbquota (PCB *pcb, UCB *ucb); int ioc_std$clone_ucb (UCB *tmpl_ucb, UCB **new_ucb); void ioc_std$closebufwind (UCB *ucb); int ioc_std$conbrdcst (int msglen, void *msg_p); int ioc_std$copy_ucb (UCB *src_ucb, UCB **new_ucb); int ioc$cram_cmd (int cmdidx, int byteoffset, ADP *adp, CRAM *cram, uint64 *iohandle); int ioc$cram_io (CRAM *cram); int ioc$cram_queue (CRAM *cram); int ioc$cram_wait (CRAM *cram); int ioc$create_ccb_table (int num_chan); int ioc_std$create_diobm (const PTE_PQ va_pte, const uint32 pte_count, const uint32 flags, PTE **svapte_p, DIOBM **diobm_p); int ioc_std$create_ucb (PCB *pcb, UCB *ucb, UCB **new_ucb_p); void ioc_std$credit_ucb (UCB *ucb); int ioc$ctrl_init (CRB *crb, DDB *ddb); void ioc_std$cvtlogphy (int lbn, IRP *irp, UCB *ucb); int ioc_std$cvt_devnam (int buflen, char *buf, int form, UCB *ucb, int32 *outlen_p ); int ioc_std$dalloc_dev (PCB *pcb, UCB *ucb); int ioc_std$dalloc_dmt (PCB *pcb, UCB *ucb); void ioc_std$ddt_altstart_intercept(IRP *irp, UCB *ucb); void ioc_std$ddt_cancel_intercept (int chan, IRP *irp, PCB *pcb, UCB *ucb, int reason); void ioc_std$ddt_mntver_intercept(IRP *irp, UCB *ucb); void ioc_std$ddt_start_intercept(IRP *irp, UCB *ucb); int ioc$deallocate_ccb (CCB *ccb); int ioc$deallocate_cram (CRAM *cram); int ioc$dealloc_cnt_res (CRAB *crab, CRCTX *crctx); int ioc$dealloc_cnt_res_nosync (CRAB *crab, CRCTX *crctx); int ioc$dealloc_crab (CRAB *crab); int ioc$dealloc_crctx (CRCTX *crctx); void ioc_std$debit_ucb (UCB *ucb, PCB *pcb); void ioc_std$delete_ucb (UCB *ucb); int ioc_std$devconfig_cbk_iodb (void); int ioc_std$devconfig_register (int flags, int devclass, void (*devconfigured) (UCB *ucb, int64 user_param), int64 user_param, int64 * ret_handle); int ioc_std$devconfig_deregister(int64 handle); void ioc_std$diagbufill (int driver_param, UCB *ucb); int ioc_std$dismount (int flags, PCB *pcb, MTL *mtl); int ioc_std$errcnt_value (UCB *ucb); int ioc_std$establish_ddt_altstart (UCB*, int (*altstart_routine) (IRP *irp, UCB *ucb), int level, int flag); int ioc_std$establish_ddt_cancel (UCB *, int (*cancel_routine) (int chan, IRP *irp, PCB *pcb, UCB *ucb, int reason), int level, int flag); int ioc_std$establish_ddt_mntver (UCB*, int (*mntver_routine) ( IRP *irp, UCB *ucb), int level, int flag); int ioc_std$establish_ddt_start (UCB*, int (*start_routine) (IRP *irp, UCB *ucb), int level, int flag); int ioc_std$fill_diobm (DIOBM *const diobm, const PTE_PQ va_pte, const uint32 pte_count, const uint32 flags, PTE **svapte_p); void *ioc_std$filspt (UCB *ucb); void ioc_std$free_ucb (UCB *ucb); int ioc_std$getbyte (void *sva, UCB *ucb, void **sva_p); int ioc$get_asym_access_state (RPT_TPG_DAT *tpg_dat, short requested_grpnum, int *state); int ioc$get_device_type (UCB *, DTN **); int ioc$get_page80_wwid (INQUIRY_DATA *inq_data, PAGE80 *pg80_data, struct _sn_wwid *wwid); int ioc$get_page83_wwid (PAGE83 *pg83_data, struct _wwid *wwid); int ioc$get_rpt_dev_udid(const unsigned int *dev_data, int data_len, int *udid_p); int ioc$get_targ_port_grp_num (PAGE83 *pg83_data, short *tpg_num); int ioc$get_udid (DEVID *devid_data, int *udid_p); void ioc_std$hwm_end (PCB *pcb, IRP *irp); void *ioc_std$initbufwind (UCB *ucb); int ioc$init_cram (ADP *adp, CRAM *cram); int ioc$init_crctx (CRAB *crab, CRCTX *crctx, int flck); void ioc_std$initiate (IRP *irp, UCB *ucb); void ioc_std$initiate_lck_rel (IRP *irp, UCB *ucb); void ioc_std$initiate_new_io (IRP *irp, UCB *ucb); int ioc$kp_reqchan (KPB *kpb, int pri); int ioc$kp_wfikpch (KPB *kpb, int tmo, int newipl); int ioc$kp_wfirlch (KPB *kpb, int tmo, int newipl); void ioc_std$last_chan (int chan, PCB *pcb, UCB *ucb); void ioc_std$last_chan_ambx (PCB *pcb, UCB *ucb); int ioc_std$link_ucb (UCB *ucb, ... ); /* [ UCB **outucb_p ] */ int ioc$load_map (ADP *adp, CRCTX *crctx, PTE *svapte, int boff, void **dma_addr_p); int ioc$unload_map (ADP *adp, CRCTX *crctx); int ioc_std$lock_dev (int lockmode, void *lock_val_p, PCB *pcb, UCB *ucb, int32 *lockid_p); int ioc$map_io (ADP *adp, int node, uint64 *phys_offset, int num_bytes, int attr, uint64 *iohandle); int ioc_std$mapvblk (unsigned int vbn, unsigned int numbytes, WCB *wcb, IRP *irp, UCB *ucb, uint32 *lbn_p, uint32 *notmapped_p, UCB **new_ucb_p); void ioc_std$mntver (IRP *irp, UCB *ucb); void *ioc_std$movfruser (void *sysbuf, int numbytes, UCB *ucb, void **sysbuf_p); void *ioc_std$movfruser1 (void *sysbuf, int numbytes, UCB *ucb, void *sva, void **sysbuf_p); void *ioc_std$movfruser2 (void *sysbuf, int numbytes, UCB *ucb, void *sva, void **sysbuf_p); void *ioc_std$movtouser (void *sysbuf, int numbytes, UCB *ucb, void **sysbuf_p); void *ioc_std$movtouser1 (void *sysbuf, int numbytes, UCB *ucb, void *sva, void **sysbuf_p); void *ioc_std$movtouser2 (void *sysbuf, int numbytes, UCB *ucb, void *sva, void **sysbuf_p); int ioc$node_data (CRB *crb, int func, void *buf_p, ...); int ioc$node_function (CRB *crb, int func, ...); int ioc_std$opcnt_value (UCB *ucb); int ioc_std$parsdevnam (int devnamlen, char *devnam, int flags, int32 *unit_p, int32 *scslen_p, int32 *devnamlen_p, char **devnam_p, int32 *flags_p); void ioc_std$post_irp (IRP *irp); int ioc_std$pre_simreqcom (int pri, int efn, ACB *acb); int ioc_std$primitive_reqchanh (IRP *irp, UCB *ucb, IDB **idb_p); int ioc_std$primitive_reqchanl (IRP *irp, UCB *ucb, IDB **idb_p); void ioc_std$primitive_wfikpch (IRP *irp, int64 fr4, UCB *ucb, int tmo, int restore_ipl); void ioc_std$primitive_wfirlch (IRP *irp, int64 fr4, UCB *ucb, int tmo, int restore_ipl); #ifdef __INITIAL_POINTER_SIZE /* Defined if support for 64-bit pointers */ #ifdef VMS$PFNBITS_32 int ioc_std$ptetopfn (PTE_PQ pte); #endif PFN_T ioc$ptetopfn_64 (PTE_PQ pte); #else int ioc_std$ptetopfn (PTE *pte); #endif /* __INITIAL_POINTER_SIZE */ void *ioc_std$putbyte (void *sva, char data, UCB *ucb); int ioc_std$q_internal_irp(IRP *irp, UCB *ucb, IOSB_PQ iosb, VOID_PQ mbz); void ioc_std$qnxtseg (IRP *irp, PCB *pcb, UCB *ucb, UCB **ucb_p); void ioc_std$qnxtseg1 (int vbn, int bcnt, WCB *wcb, IRP *irp, PCB *pcb, UCB *ucb, UCB **ucb_p); int ioc$read_io (ADP *adp, uint64 *iohandle, int offset, int length, void *data_p); int ioc$read_pci_config (ADP *adp, int pci_node, int offset, int length, int *data_p); int ioc$reallocate_ccb (int16 chan, CCB **ccb_p); void ioc_std$relchan (UCB *ucb); int ioc_std$release_diobm (DIOBM *const diobm); int ioc$remove_device_type (UCB *ucb); void ioc_std$reqcom (int iost1, int iost2, UCB *ucb); void ioc_std$reqcom_local (CDRP *cdrp); int ioc$reserve_scb (int count, int min_vec, int max_vec, int align, int32 *resvec_p); void ioc$return (void); int ioc$return_success (void); int ioc$return_unsupported (void); void ioc$reverse_endian(char *buffer, int byte_count); int ioc$scan_ccb (int32 **context_p, CCB **ccb_p); int ioc_std$scan_iodb (UCB *ucb, DDB *ddb, UCB **ucb_p, DDB **ddb_p); int ioc_std$scan_iodb_2p (int path, UCB *ucb, DDB *ddb, int32 *path_p, UCB **ucb_p, DDB **ddb_p); int ioc_std$scan_iodb_usrctx (int ctx, int unit, UCB *ucb, DDB *ddb, int32 *ctx_p, int32 *unit_p, UCB **ucb_p, DDB **ddb_p); int ioc$scsipath_connect (SCQ *scq); int ioc_std$search (VOID_PQ descr_p, int flags, void *lock_val_p, UCB **ucb_p, DDB **ddb_p, SB **sb_p); int ioc_std$searchall (VOID_PQ descr_p, UCB **ucb_p, DDB **ddb_p, SB **sb_p); int ioc_std$searchcont (int unit, int scslen, UCB *ucb, DDB *ddb, SB *sb, int devnamlen, char *devnam, int flags, UCB **ucb_p, DDB **ddb_p, SB **sb_p, void **lock_val_p); int ioc_std$searchdev (VOID_PQ descr_p, UCB **ucb_p, DDB **ddb_p, SB **sb_p); int ioc_std$searchint (int unit, int scslen, int devnamlen, char *devnam, int flags, UCB **ucb_p, DDB **ddb_p, SB **sb_p, void **lock_val_p); int ioc$search_device_type (const char *, const int32, DTN **); int ioc_std$sensedisk (IRP *irp, PCB *pcb, UCB *ucb, CCB *ccb); void ioc$setup_ucb_dipl (UCB *ucb); void ioc_std$sever_ucb (UCB *ucb); int ioc_std$simreqcom (VOID_PQ iosb, int pri, int efn, int32 iost[2], ACB *acb, int acmode); int ioc$sndopcfao (unsigned int opc_msg_code, unsigned int opc_class_mask, ... ); void ioc_std$sndopc_mvsupmsg (UCB *ucb); int64 ioc$sva_to_pa (void *svapte, int64 *pa, int buflen, int32 *retlen_p); int ioc_std$svapte_in_buf (IRP *irp, VOID_PQ va, PTE **svapte_p); int64 ioc$svapte_to_pa (void *svapte, int boff, int64 *pa, int buflen, int32 *retlen_p, void **nxtsvapte_p); int ioc_std$testunit (int unit, int devtype, UCB *ucb, int flags, void *lock_val_p, UCB **ucb_p, int32 *flags_p); void ioc_std$threadcrb (CRB *crb); int ioc_std$trandevnam (VOID_PQ descr_p, int flags, char *buf, int32 *outlen, void **out_p); ADP *ioc$tr_to_adp (int tr); int ioc$unit_init (UCB *ucb); int ioc_std$unlock_dev (UCB *ucb); int ioc$unmap_io (ADP *adp, uint64 *iohandle); int ioc$unreserve_scb (int count, int32 vector_list[]); int ioc_std$update_dev_wwid_list (WWID *wwid_ptr, char *devnam); VOID_PQ ioc_std$va_to_pa (VOID_PQ va, VOID_PPQ pa_p); int ioc$verify_chan (int16 chan, CCB **ccb_p); void ioc_std$wakacp (UCB *ucb, IRP *irp); int ioc$write_io (ADP *adp, uint64 *iohandle, int offset, int length, void *data_p); int ioc$write_pci_config (ADP *adp, int pci_node, int offset, int length, int wdata); int ioc_std$getsyi_cpu_specific (int getsyi_code, unsigned char *buffer, int *buffer_length); int ioc_std$zero_local_bitmap(struct _wbmh handle); #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #endif /* __IOC_ROUTINES_LOADED */