/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries 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. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:37:59 by OpenVMS SDL EV3-3 */ /* Source: 19-MAY-2009 09:52:52 $1$DGA7274:[LIB_H.SRC]UCBDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $UCBDEF ***/ #ifndef __UCBDEF_LOADED #define __UCBDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #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 #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif #include #include /* Define the TQE type; UCB contains a pointer */ #include #define UCB$K_V8_POWERED 1 /* Build for V8 feature set. */ #define UCB$K_50BIT_PA 1 /* 50BIT Physical addressing with V8.2 */ #define UCB$M_TIM 0x1 #define UCB$M_INT 0x2 #define UCB$M_ERLOGIP 0x4 #define UCB$M_CANCEL 0x8 #define UCB$M_ONLINE 0x10 #define UCB$M_POWER 0x20 #define UCB$M_TIMOUT 0x40 #define UCB$M_INTTYPE 0x80 #define UCB$M_BSY 0x100 #define UCB$M_MOUNTING 0x200 #define UCB$M_DEADMO 0x400 #define UCB$M_VALID 0x800 #define UCB$M_UNLOAD 0x1000 #define UCB$M_TEMPLATE 0x2000 #define UCB$M_MNTVERIP 0x4000 #define UCB$M_WRONGVOL 0x8000 #define UCB$M_DELETEUCB 0x10000 #define UCB$M_LCL_VALID 0x20000 #define UCB$M_SUPMVMSG 0x40000 #define UCB$M_MNTVERPND 0x80000 #define UCB$M_DISMOUNT 0x100000 #define UCB$M_CLUTRAN 0x200000 #define UCB$M_WRTLOCKMV 0x400000 #define UCB$M_SVPN_END 0x800000 #define UCB$M_ALTBSY 0x1000000 #define UCB$M_SNAPSHOT 0x2000000 #define UCB$M_NO_ASSIGN 0x4000000 #define UCB$M_EXFUNC_SUPP 0x8000000 #define UCB$M_FAST_PATH 0x10000000 #define UCB$M_PATHVERIP 0x20000000 #define UCB$M_FP_HWINT 0x40000000 #define UCB$M_IOPOST_LOCAL 0x80000000 #define UCB$M_JOB 0x1 #define UCB$M_TEMPL_BSY 0x40 #define UCB$M_PRMMBX 0x1 #define UCB$M_DELMBX 0x2 #define UCB$M_TT_TIMO 0x2 #define UCB$M_TT_NOTIF 0x4 #define UCB$M_TT_HANGUP 0x8 #define UCB$M_TT_NOLOGINS 0x8000 #define UCB$M_NT_BFROVF 0x4 #define UCB$M_NT_NAME 0x10 #define UCB$M_NT_BREAK 0x20 #define UCB$M_ECC 0x1 #define UCB$M_DIAGBUF 0x2 #define UCB$M_NOCNVRT 0x4 #define UCB$M_DX_WRITE 0x8 #define UCB$M_DATACACHE 0x10 #define UCB$M_MSCP_MNTVERIP 0x100 #define UCB$M_MSCP_INITING 0x200 #define UCB$M_MSCP_WAITBMP 0x400 #define UCB$M_MSCP_FLOVR 0x800 #define UCB$M_MSCP_PKACK 0x1000 #define UCB$M_MSCP_WRTP 0x2000 #define UCB$M_MSCP_IGNSRV 0x4000 #define UCB$M_MSCP_MVRESTART 0x8000 #define UCB$M_MSCP_LOCAL_DRAIN_WAITBMP 0x10000 #define UCB$M_DU_SHMV_STRTD 0x8 #define UCB$M_DU_0MNOTE 0x20 #define UCB$M_MVFKBBSY 0x40 #define UCB$M_GTUNMBSY 0x80 #define UCB$M_TU_OVRSQCHK 0x1 #define UCB$M_TU_TRACEACT 0x2 #define UCB$M_TU_SEQNOP 0x4 #define UCB$M_TU_1DENS 0x8 #define UCB$M_TU_DENS_DETERMINED 0x10 #define UCB$M_TU_MEDIA_LOADED 0x20 #define UCB$M_SHD_WLG_INV 0x80 #define UCB$M_SHD_SEQCMD_HERE 0x400 #define UCB$M_SHD_SEQCMD_THERE 0x800 #define UCB$M_SHD_PASSIVE_MV 0x1000 #define UCB$M_SHD_NODE_FAILURE 0x2000 #define UCB$M_SHD_WLGSTA_CHA 0x4000 #define UCB$M_SHD_VCB_DEQUEUE 0x8000 #define UCB$M_SHD_SEQCMD_PEND 0x10000 #define UCB$M_SHD_ST_DRAIN_IO 0x20000 #define UCB$M_SHD_MBRSHP_EVENT 0x40000 #define UCB$M_SHD_TGR_VALIDATE 0x80000 #define UCB$M_PORT_ONLINE 0x1 #define UCB$M_FKLOCK 0x2 #define UCB$M_MSGFKLOCK 0x4 #define UCB$M_INIFKLOCK 0x8 #define UCB$M_BAD_REV 0x10 #define UCB$M_PA_ERLOGIP 0x20 #define UCB$M_MFQEFKLOCK 0x40 #define UCB$M_MFQE_LOST 0x80 #define UCB$M_ADMIN_ONLINE 0x100 #define UCB$M_ADMIN_INIT 0x200 #define UCB$M_ADMIN_TEAR_DOWN 0x400 #define UCB$M_CHAN_ONLINE 0x10000 #define UCB$M_CHAN_INIT 0x20000 #define UCB$M_CHAN_TEAR_DOWN 0x40000 #define UCB$M_PB_TQE_BUSY 0x1000000 #define UCB$M_MBR_CALLBACK 0x2000000 #define UCB$M_SHUTDOWN_REQ 0x4000000 #define UCB$M_SHUTDOWN_IP 0x8000000 #define UCB$M_PB_LAST_GASP_EMULATED 0x10000000 #ifdef __cplusplus /* Define structure prototypes */ struct _acb; struct _spl; struct _orb; struct _cram; struct _crb; struct _ddb; struct _vcb; struct _irp; struct _cpu; struct _iocnt; struct _pdt; struct _ddt; struct _adp; struct _crctx; struct _dtn; struct _sud; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _ucb { __union { #pragma __nomember_alignment FKB ucb$r_ucb_fkb; __struct { __union { struct _fkb *ucb$l_fqfl; /*FORK QUEUE FORWARD LINK */ __union { unsigned int ucb$l_unit_seed; /* Longword Unit Seed */ unsigned short int ucb$w_unit_seed; /* UNIT NUMBER SEED */ unsigned short int ucb$w_mb_seed; /* MB -- UNIT NUMBER SEED (no longer used) */ } ucb$r_seed_overlay; void *ucb$l_rqfl; /* NET -- RCV QUEUE FORWARD LINK */ void *ucb$l_mb_msgqfl; /* MAILBOX MESSAGE QUEUE LISTHEAD */ } ucb$r_fqfl_overlay; __union { struct _fkb *ucb$l_fqbl; /*FORK QUEUE BACKWARD LINK */ void *ucb$l_rqbl; /* NET -- RCV QUEUE BACKWARD LINK */ void *ucb$l_mb_msgqbl; /* MAILBOX MESSAGE QUEUE LISTHEAD */ } ucb$r_fqbl_overlay; unsigned short int ucb$w_size; /*SIZE OF UCB IN BYTES */ unsigned char ucb$b_type; /*STRUCTURE TYPE FOR UCB */ unsigned char ucb$b_flck; /* Fork lock number index */ __union { void (*ucb$l_fpc)(); /*FORK PC */ int ucb$l_astqfl; /* MB -- AST QUEUE LISTHEAD FORWARD LINK */ struct _acb *ucb$l_mb_w_ast; /* MAILBOX WRITE ATTN AST LIST */ char ucb$t_partner; /* NET -- PARTNER'S NODENAME */ } ucb$r_fpc_overlay; __union { __int64 ucb$q_fr3; /*FORK R3 */ __struct { int ucb$l_fr3; /*FORK R3 longword overlay */ } ucb$r_fr3_q_block; struct _acb *ucb$l_astqbl; /* MB -- AST QUEUE LISTHEAD BACKWARD LINK */ struct _acb *ucb$l_mb_r_ast; /* MAILBOX READ ATTN AST LIST */ } ucb$r_fr3_overlay; __union { __int64 ucb$q_fr4; /*FORK R4 */ __struct { unsigned short int ucb$w_msgmax; /* MB -- MAXIMUM MESSAGES ALLOWED */ unsigned short int ucb$w_msgcnt; /* MB -- CURRENT NUMBER OF MESSAGES */ } ucb$r_mb_fr4_fields; int ucb$l_first; /* NET -- ADDR OF 1ST SEG OF CHAINED MSG */ } ucb$r_fr4_overlay; struct _spl *ucb$ps_spinlock; /* Pointer to a spinlock. */ } ucb$r_ucb_fkb_struct; } ucb$r_ucb_fkb_union; __union { unsigned short int ucb$w_bufquo; /* BUFFERED I/O QUOTA CHARGED FOR THIS UCB */ unsigned short int ucb$w_dstaddr; /* NET -- REMOTE CONNECT NO. */ } ucb$r_bufquo_overlay; __union { unsigned short int ucb$w_iniquo; /* INITIAL BUFFERED I/O QUOTA FOR THIS UCB */ unsigned short int ucb$w_srcaddr; /* NET -- LOCAL CONNECT NO. */ } ucb$r_iniquo_overlay; struct _orb *ucb$l_orb; /* OBJECT'S RIGHTS BLOCK ADDRESS */ __union { unsigned int ucb$l_lockid; /*DEVICE LOCK ID */ unsigned int ucb$l_cpid; /*PID CHARGED FOR BUFQUO BY UCBCREDEL */ } ucb$r_lockid_overlay; struct _cram *ucb$ps_cram; /*ADDRESS OF FIRST UNIT CRAM */ struct _crb *ucb$l_crb; /*ADDRESS OF PRIMARY CHANNEL REQUEST BLOCK */ struct _spl *ucb$l_dlck; /*ADDRESS OF DEVICE IPL SPINLOCK */ struct _ddb *ucb$l_ddb; /*BACKPOINTER TO DEVICE DATA BLOCK */ unsigned int ucb$l_pid; /*PROCESS ID OF OWNER PROCESS */ struct _ucb *ucb$l_link; /*ADDRESS OF NEXT UCB FOR RESPECTIVE DDB */ struct _ucb *ucb$l_blink; /*Backwards Link */ struct _vcb *ucb$l_vcb; /*ADDRESS OF VOLUME CONTROL BLOCK */ char ucb$b_fill_0_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { /*DEVICE CHARACTERISTIC BITS */ #pragma __nomember_alignment unsigned __int64 ucb$q_devchar; /* Device characteristic bits quadword */ __struct { unsigned int ucb$l_devchar; /* Original device characteristic bits */ unsigned int ucb$l_devchar2; /* Extended device characteristic bits */ } ucb$r_devchar_q_block; } ucb$r_devchar; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { #pragma __nomember_alignment CBB ucb$r_cbb_affinity; /* Embedded CBB block */ __struct { /* Compatability offset cells */ __int64 ucb$q_fill_1 [6]; __union { unsigned int ucb$l_affinity; /* Device affinity */ unsigned __int64 ucb$q_affinity; /* Device affinity */ } ucb$r_cbb_affinity_data_overlay; } ucb$r_cbb_affinity_compat_overlay; } ucb$r_cbb_affinity_overlay; __union { unsigned int ucb$l_xtra; /*EXTRA LONGWORD (FOR SMP) */ int ucb$l_altiowq; /*ALTERNATE STARTIO WAIT */ /*QUEUE */ } ucb$r_xtra_overlay; unsigned char ucb$b_devclass; /*DEVICE CLASS */ unsigned char ucb$b_devtype; /*DEVICE TYPE */ unsigned short int ucb$w_devbufsiz; /*DEVICE DEFAULT BUFFER SIZE */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { /*DEVICE DEPENDENT DATA */ #pragma __nomember_alignment unsigned __int64 ucb$q_devdepend; /*Device dependent quadword */ __struct { __union { unsigned int ucb$l_devdepend; /* First device dependent longword */ __struct { /* Disk fields */ unsigned char ucb$b_sectors; /* Sectors per track */ unsigned char ucb$b_tracks; /* Track per cylinder */ unsigned short int ucb$w_cylinders; /* Cylinders per disk */ } ucb$r_disk_devdepend; __struct { /* Terminal fields */ char ucbdef$$_term_devdepend_fill [3]; unsigned char ucb$b_vertsz; /* Vertical page size (lines per page) */ } ucb$r_term_devdepend; __struct { /* Network fields */ unsigned char ucb$b_locsrv; /* Local link services */ unsigned char ucb$b_remsrv; /* Remote link services */ unsigned short int ucb$w_bytestogo; /* No. of bytes left in rcv bfr */ } ucb$r_net_devdepend; } ucb$r_devdepend_overlay; __union { unsigned int ucb$l_devdepnd2; /* Second device dependent long word */ unsigned int ucb$l_tt_devdp1; /* Terminal -- Device dependent long word */ unsigned short int ucb$w_tu_formenu; /* TU/TMSCP -- Supported formats (returned by GETDVI). */ } ucb$r_devdepnd2_overlay; } ucb$r_devdepend_q_block; } ucb$r_devdepend_q_overlay; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { /*2nd QUADWORD DEVICE DEPENDENT DATA */ #pragma __nomember_alignment unsigned __int64 ucb$q_devdepend2; /*Device dependent quadword */ __struct { __union { unsigned int ucb$l_devdepnd3; /* 3rd device dependent longword */ } ucb$r_devdepnd3_overlay; __union { unsigned int ucb$l_devdepnd4; /* 4th device dependent long word */ } ucb$r_devdepnd4_overlay; } ucb$r_devdepend2_q_block; __struct { /* Tape Mount verification byte counts */ unsigned short int ucb$w_tmv_bcnt1; /* Byte count for 1st CRC */ unsigned short int ucb$w_tmv_bcnt2; /* ...2nd CRC */ unsigned short int ucb$w_tmv_bcnt3; /* ...3rd CRC */ unsigned short int ucb$w_tmv_bcnt4; /* ...4th CRC */ } ucb$r_tmv_bcnt; } ucb$r_devdepend2_q_overlay; struct _irp *ucb$l_ioqfl; /*I/O QUEUE LISTHEAD FORWARD LINK */ struct _irp *ucb$l_ioqbl; /*I/O QUEUE LISTHEAD BACKWARD LINK */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif __union { #pragma __nomember_alignment unsigned short int ucb$w_unit; /*PHYSICAL DEVICE UNIT NUMBER */ unsigned int ucb$l_unit; } ucb$r_unit_overlay; __union { unsigned short int ucb$w_charge; /*MAILBOX BYTE COUNT QUOTA CHARGE */ unsigned short int ucb$w_rwaitcnt; /* CLASS DRIVERS -- THREADS WAITING RESOURCES */ __struct { unsigned char ucb$b_cm1; /* LEVEL 1 CONTROLLER ALLOCATION MASK */ unsigned char ucb$b_cm2; /* LEVEL 2 CONTROLLER ALLOCATION MASK */ } ucb$r_ctrlr_alloc_fields; } ucb$r_charge_overlay; char ucb$b_fill_1_ [2]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif struct _irp *ucb$l_irp; /*CURRENT I/O REQUEST PACKET ADDRESS */ #pragma __nomember_alignment unsigned int ucb$l_refc; /*REFERENCE COUNT OF PROCESSES */ __union { unsigned char ucb$b_dipl; /*DEVICE INTERRUPT PRIORITY LEVEL */ unsigned char ucb$b_state; /* NET -- LINK STATE FOR NETWORK TRANSITIONS */ } ucb$r_dipl_overlay; unsigned char ucb$b_amod; /*ALLOCATION ACCESS MODE */ short int ucb$w_fill_0; struct _ucb *ucb$l_amb; /*ASSOCIATED UNIT CONTROL BLOCK POINTER */ __union { unsigned int ucb$l_sts; /*DEVICE UNIT STATUS */ __struct { unsigned ucb$v_tim : 1; /* TIME OUT ENABLED (1=YES) */ unsigned ucb$v_int : 1; /* INTERRUPT EXPECTED (1=YES) */ unsigned ucb$v_erlogip : 1; /* ERROR LOG IN PROGRESS ON UNIT (1=YES) */ unsigned ucb$v_cancel : 1; /* CANCEL I/O ON UNIT (1=YES) */ unsigned ucb$v_online : 1; /* UNIT ONLINE (1=YES) */ unsigned ucb$v_power : 1; /* POWER FAILED WHILE UNIT BUSY (1=YES) */ unsigned ucb$v_timout : 1; /* UNIT TIMED OUT (1=YES) */ unsigned ucb$v_inttype : 1; /* RECEIVER INTERRUPT IF SET */ unsigned ucb$v_bsy : 1; /* UNIT IS BUSY (1=YES) */ unsigned ucb$v_mounting : 1; /* DEVICE IS BEING MOUNTED */ unsigned ucb$v_deadmo : 1; /* DEALLOCATE AT DISMOUNT */ unsigned ucb$v_valid : 1; /* VOLUME IS SOFTWARE VALID */ unsigned ucb$v_unload : 1; /* UNLOAD VOLUME AT DISMOUNT */ unsigned ucb$v_template : 1; /* SET IF THIS IS TEMPLATE UCB */ unsigned ucb$v_mntverip : 1; /* MOUNT VERIFICATION IN PROGRESS */ unsigned ucb$v_wrongvol : 1; /* WRONG VOLUME DETECTED DURING MOUNT VERIFICATION */ unsigned ucb$v_deleteucb : 1; /* DELETE THIS UCB WHEN REFC REACHES ZERO */ unsigned ucb$v_lcl_valid : 1; /* VOLUME IS VALID ON THE LOCAL NODE */ unsigned ucb$v_supmvmsg : 1; /* IF SET, SUPPRESS SUCCESS TYPE MOUNT VER. MSGS. */ unsigned ucb$v_mntverpnd : 1; /* MOUNT VERIFICATION IS PENDING ON BUSY DEVICE. */ unsigned ucb$v_dismount : 1; /* DISMOUNT IN PROGRESS */ unsigned ucb$v_clutran : 1; /* VAXcluster STATE TRANSITION IN PROGRESS */ unsigned ucb$v_wrtlockmv : 1; /* Write-locked mount verification in progress */ unsigned ucb$v_svpn_end : 1; /* Last byte used from page mapped by SVPN */ unsigned ucb$v_altbsy : 1; /* Unit is busy via alternate startio path */ unsigned ucb$v_snapshot : 1; /* Restart validation is in progress */ unsigned ucb$v_no_assign : 1; /* Unit cannot have channels assigned to it. */ unsigned ucb$v_exfunc_supp : 1; /* Unit supports the EXFUNC bit */ unsigned ucb$v_fast_path : 1; /* Unit supports FASTPATH affinity */ unsigned ucb$v_pathverip : 1; /* Path verification in progress for this device */ unsigned ucb$v_fp_hwint : 1; /* Unit supports FASTPATH HW interrupt cpu affinity */ unsigned ucb$v_iopost_local : 1; /* Unit supports I/O post processing on the current CPU */ } ucb$r_sts_bits; } ucb$r_sts_overlay; __union { unsigned int ucb$l_devsts; /*DEVICE DEPENDENT STATUS */ __struct { /* Generally used bits */ unsigned ucb$v_job : 1; /* Job Controller notified */ unsigned ucb$v_devsts_gen_fill : 5; unsigned ucb$v_templ_bsy : 1; /* Template UCB is busy */ unsigned ucb$v_fill_2_ : 1; } ucb$r_devsts_general_bits; __struct { /* Mailbox status bits */ unsigned ucb$v_prmmbx : 1; /* Permanent mailbox */ unsigned ucb$v_delmbx : 1; /* Mailbox marked for delete */ unsigned ucb$v_fill_3_ : 6; } ucb$r_devsts_mailbx_bits; __struct { /* Terminal status bits */ unsigned ucb$v_devsts_tt_fill : 1; unsigned ucb$v_tt_timo : 1; /* Terminal read timeout in progress */ unsigned ucb$v_tt_notif : 1; /* Terminal user notified of unsolicted data */ unsigned ucb$v_tt_hangup : 1; /* Process hang up */ unsigned ucb$v_tt_devsts_fill : 11; /* fill to the end the word */ unsigned ucb$v_tt_nologins : 1; /* NOLOGINS ALLOWED */ } ucb$r_devsts_term_bits; __struct { /* Network status bits */ unsigned ucb$v_devsts_net_fill1 : 2; unsigned ucb$v_nt_bfrovf : 1; /* Too many bytes rcvd */ unsigned ucb$v_devsts_net_fill2 : 1; unsigned ucb$v_nt_name : 1; /* Link has declared a connect name */ unsigned ucb$v_nt_break : 1; /* Link is being broken */ unsigned ucb$v_fill_4_ : 2; } ucb$r_devsts_net_bits; __struct { /* Disk (all disks) status bits */ unsigned ucb$v_ecc : 1; /* ECC correction was made */ unsigned ucb$v_diagbuf : 1; /* Diagnostic buffer specified */ unsigned ucb$v_nocnvrt : 1; /* No LBN to media address conversion */ unsigned ucb$v_dx_write : 1; /* Console floppy write operation */ unsigned ucb$v_datacache : 1; /* Data blocks being cached */ unsigned ucb$v_fill_5_ : 3; } ucb$r_devsts_disks; __struct { /* MSCP class driver bits */ unsigned ucb$v_byte_fill_1 : 8; unsigned ucb$v_mscp_mntverip : 1; /* Mount verification in progress */ unsigned ucb$v_mscp_initing : 1; /* UCB is being initialized */ unsigned ucb$v_mscp_waitbmp : 1; /* RWAITCNT has been bumped */ unsigned ucb$v_mscp_flovr : 1; /* Bit toggled everytime a failover succeeds. */ unsigned ucb$v_mscp_pkack : 1; /* Set when a IO$_PACKACK is in progress. */ unsigned ucb$v_mscp_wrtp : 1; /* Unit MSCP write protected in some way. */ unsigned ucb$v_mscp_ignsrv : 1; /* Ignore served paths during connection failover. */ unsigned ucb$v_mscp_mvrestart : 1; /* Restart Mount Ver to pickup new path */ unsigned ucb$v_mscp_local_drain_waitbmp : 1; /* RWAIT bumped due to io$_local_drain processing */ unsigned ucb$v_fill_6_ : 7; } ucb$r_devsts_mscp_class_bits; __struct { /* Disk class driver bits */ unsigned ucb$v_unused_fill : 3; unsigned ucb$v_du_shmv_strtd : 1; /* Shadowing mount verification started */ unsigned ucb$v_skip_datacache : 1; unsigned ucb$v_du_0mnote : 1; /* Zero members message sent */ unsigned ucb$v_mvfkbbsy : 1; /* DUTU mount verify fork block busy */ unsigned ucb$v_gtunmbsy : 1; /* DUTU get unit name fork block busy */ } ucb$r_devsts_du_class_bits; __struct { /* Tape class driver bits */ unsigned ucb$v_tu_ovrsqchk : 1; /* Override sequence checking */ unsigned ucb$v_tu_traceact : 1; /* IRP trace table active */ unsigned ucb$v_tu_seqnop : 1; /* Sequential NOP tape operation in progress */ unsigned ucb$v_tu_1dens : 1; /* Single density device */ unsigned ucb$v_tu_dens_determined : 1; /* Density already determined. Basically a */ /* bit that says that a particular part of */ /* PACKACK processing has already been done */ /* once for this unit. */ unsigned ucb$v_tu_media_loaded : 1; /* Media loaded into drive and drive available. */ unsigned ucb$v_unused_fill_2 : 2; } ucb$r_devsts_tu_class_bits; __struct { /* Shadowing virtual driver bits */ unsigned ucb$v_byte_fill_7 : 7; unsigned ucb$v_shd_wlg_inv : 1; /* Status of write logging on this V.U. */ unsigned ucb$v_byte_fill_2 : 2; unsigned ucb$v_shd_seqcmd_here : 1; /* Sequential command in progress on this node */ unsigned ucb$v_shd_seqcmd_there : 1; /* Sequential command in progress on another node */ unsigned ucb$v_shd_passive_mv : 1; /* Passive MV in progress */ unsigned ucb$v_shd_node_failure : 1; /* Node failure in progress */ unsigned ucb$v_shd_wlgsta_cha : 1; /* Write log state change */ unsigned ucb$v_shd_vcb_dequeue : 1; /* Indicate DEQUE required on VCB */ unsigned ucb$v_shd_seqcmd_pend : 1; /* Sequential command has been requested by this system */ unsigned ucb$v_shd_st_drain_io : 1; /* Insure that all user I/O has been returned by the lower layers */ unsigned ucb$v_shd_mbrshp_event : 1; /* When creating membership event threads stall new I/O */ unsigned ucb$v_shd_tgr_validate : 1; /* SHLK$TRIGGER_VALIDATE when another system has finished changing VU membership\ */ unsigned ucb$v_fill_7_ : 4; } ucb$r_devsts_shd_bits; __struct { /* PADRIVER bits */ unsigned ucb$v_port_online : 1; /* Port is online. */ unsigned ucb$v_fklock : 1; /* Fork block interlock bit */ unsigned ucb$v_msgfklock : 1; /* Fork block interlock for */ /* printing operator msgs */ unsigned ucb$v_inifklock : 1; /* Fork block interlock for */ /* adapter errors */ unsigned ucb$v_bad_rev : 1; /* Bad Port Revision flag */ unsigned ucb$v_pa_erlogip : 1; /* Error log buffer in the */ /* extended UCB is in use */ unsigned ucb$v_mfqefklock : 1; /* Fork block interlock for */ /* emergency pool allocation */ unsigned ucb$v_mfqe_lost : 1; /* Lost MFQE interrupt because */ /* the fork block was in use */ } ucb$r_devsts_pa_bits; __struct { /* Shadowing virtual driver bits */ unsigned ucb$v_byte_fill_6 : 8; unsigned ucb$v_admin_online : 1; /* Admin unit is on-line */ unsigned ucb$v_admin_init : 1; /* Admin unit init in-progress */ unsigned ucb$v_admin_tear_down : 1; /* Admin unit tear down in-progress */ unsigned ucb$v_byte_fill_8 : 5; unsigned ucb$v_chan_online : 1; /* Channel is on-line */ unsigned ucb$v_chan_init : 1; /* Channel init in-progress */ unsigned ucb$v_chan_tear_down : 1; /* Channel tear down in-progress */ unsigned ucb$v_byte_fill_9 : 5; unsigned ucb$v_pb_tqe_busy : 1; /* PB_TQE is busy */ unsigned ucb$v_mbr_callback : 1; /* Galaxy Membership Callback has */ /* been registered */ unsigned ucb$v_shutdown_req : 1; /* Shutdown Requsted */ unsigned ucb$v_shutdown_ip : 1; /* Shutdown In Progress */ unsigned ucb$v_pb_last_gasp_emulated : 1; /* Last gasp emulation */ /* initiated */ unsigned ucb$v_fill_8_ : 3; } ucb$r_devsts_pb_bits; } ucb$r_devsts_overlay; int ucb$l_qlen; /* Device queue length */ /* */ /* UCB$PS_START_AFF_QFL is used by IOC$INITIATE, IOC$INITIATE_NEW_IO and */ /* IOC$INITIATE_PORT_CPU as follows, and any new use of this cell must */ /* conform to this logic; also note that all reads from and writes to */ /* this cell must be performed holding IOLOCK8. */ /* */ /* 1) If the field contains the UCB's address: */ /* */ /* - The UCB is not on any CPU's Start I/O Affinity queue */ /* - The UCB is being processed by IOC$INITIATE_PORT_CPU */ /* */ /* 1) If the field is zero: */ /* */ /* - The UCB is not on any CPU's Start I/O Affinity queue */ /* - The UCB is not being processed by IOC$INITIATE_PORT_CPU */ /* */ /* 3) The only other values this field should ever take are those which */ /* are written to it when it is used to queue the UCB to a CPU's */ /* Start I/O Affinity queue */ /* */ struct _ucb *ucb$ps_start_aff_qfl; /*CPUDB Affinity queue flink */ struct _ucb *ucb$ps_start_aff_qbl; /*CPUDB Affinity queue blink */ struct _cpu *ucb$l_port_cpudb; /*Device's CPUDB addr for FastPath */ struct _iocnt *ucb$ps_io_counters; /*IOCNT debug counters */ unsigned int ucb$l_duetim; /*DUE TIME FOR I/O COMPLETION */ unsigned int ucb$l_opcnt; /*COUNT OF OPERATIONS COMPLETED */ unsigned int ucb$l_svpn; /*SYSTEM VIRTUAL PAGE/MAP REGISTER NUMBER */ void *ucb$l_svapte; /*SYSTEM VIRTUAL ADDRESS OF PTE */ unsigned int ucb$l_bcnt; /*BYTE COUNT OF TRANSFER */ unsigned int ucb$l_boff; /*Byte offset in page */ unsigned int ucb$l_softerrcnt; /*SOFT ERROR COUNT */ unsigned int ucb$l_ertcnt; /*ERROR LOG DEVICE CURRENT ERROR RETRY COUNT */ unsigned int ucb$l_ertmax; /*ERROR LOG DEVICE MAXIMUM ERROR RETRY COUNT */ unsigned int ucb$l_errcnt; /*DEVICE ERROR COUNT */ struct _pdt *ucb$l_pdt; /*ADDR OF PORT DESCRIPTOR TABLE */ struct _ddt *ucb$l_ddt; /*ADDR OF DDT (OPTIONAL BUT PREFERRED) */ struct _adp *ucb$ps_adp; /*ADDR OF ADP */ struct _crctx *ucb$ps_crctx; /*ADDR OF COUNTED RESOURCE CONTEXT BLK */ __union { unsigned int ucb$l_media_id; /*BIT ENCODED MEDIA IDENTIFICATION */ __struct { unsigned ucb$v_media_id_nn : 7; /* MEDIA NAME NUMBER */ unsigned ucb$v_media_id_n2 : 5; /* MEDIA NAME CHAR 2 */ unsigned ucb$v_media_id_n1 : 5; /* MEDIA NAME CHAR 1 */ unsigned ucb$v_media_id_n0 : 5; /* MEDIA NAME CHAR 0 */ unsigned ucb$v_media_id_t1 : 5; /* MEDIA TYPE CHAR 1 */ unsigned ucb$v_media_id_t0 : 5; /* MEDIA TYPE CHAR 0 */ } ucb$r_media_id_subfields; } ucb$r_media_id_overlay; struct _dtn *ucb$ps_dtn; /*ADDR OF DEVICE TYPE NAME DTN STRUC */ struct _ucb *ucb$ps_dtn_link; /* ADDR OF NEXT UCB WITH THIS DEVICE TYPE */ void (*ucb$ps_toutrout)(); /*DEVICE TIMEOUT ROUTINE PROCEDURE VALUE */ struct _sud *ucb$ps_sud; /*ADDR OF SUD FOR THIS UCB */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif int ucb$l_spare_space [8]; /*Spare Space - Reserved for use by HP */ } UCB; #if !defined(__VAXC) #define ucb$r_ucb_fkb ucb$r_ucb_fkb_union.ucb$r_ucb_fkb #define ucb$l_fqfl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqfl_overlay.ucb$l_fqfl #define ucb$l_unit_seed ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqfl_overlay.ucb$r_seed_overlay.ucb$l_unit_seed #define ucb$w_unit_seed ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqfl_overlay.ucb$r_seed_overlay.ucb$w_unit_seed #define ucb$w_mb_seed ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqfl_overlay.ucb$r_seed_overlay.ucb$w_mb_seed #define ucb$l_rqfl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqfl_overlay.ucb$l_rqfl #define ucb$l_mb_msgqfl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqfl_overlay.ucb$l_mb_msgqfl #define ucb$l_fqbl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqbl_overlay.ucb$l_fqbl #define ucb$l_rqbl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqbl_overlay.ucb$l_rqbl #define ucb$l_mb_msgqbl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fqbl_overlay.ucb$l_mb_msgqbl #define ucb$w_size ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$w_size #define ucb$b_type ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$b_type #define ucb$b_flck ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$b_flck #define ucb$l_fpc ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fpc_overlay.ucb$l_fpc #define ucb$l_astqfl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fpc_overlay.ucb$l_astqfl #define ucb$l_mb_w_ast ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fpc_overlay.ucb$l_mb_w_ast #define ucb$t_partner ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fpc_overlay.ucb$t_partner #define ucb$q_fr3 ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr3_overlay.ucb$q_fr3 #define ucb$l_fr3 ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr3_overlay.ucb$r_fr3_q_block.ucb$l_fr3 #define ucb$l_astqbl ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr3_overlay.ucb$l_astqbl #define ucb$l_mb_r_ast ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr3_overlay.ucb$l_mb_r_ast #define ucb$q_fr4 ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr4_overlay.ucb$q_fr4 #define ucb$w_msgmax ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr4_overlay.ucb$r_mb_fr4_fields.ucb$w_msgmax #define ucb$w_msgcnt ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr4_overlay.ucb$r_mb_fr4_fields.ucb$w_msgcnt #define ucb$l_first ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$r_fr4_overlay.ucb$l_first #define ucb$ps_spinlock ucb$r_ucb_fkb_union.ucb$r_ucb_fkb_struct.ucb$ps_spinlock #define ucb$w_bufquo ucb$r_bufquo_overlay.ucb$w_bufquo #define ucb$w_dstaddr ucb$r_bufquo_overlay.ucb$w_dstaddr #define ucb$w_iniquo ucb$r_iniquo_overlay.ucb$w_iniquo #define ucb$w_srcaddr ucb$r_iniquo_overlay.ucb$w_srcaddr #define ucb$l_lockid ucb$r_lockid_overlay.ucb$l_lockid #define ucb$l_cpid ucb$r_lockid_overlay.ucb$l_cpid #define ucb$q_devchar ucb$r_devchar.ucb$q_devchar #define ucb$l_devchar ucb$r_devchar.ucb$r_devchar_q_block.ucb$l_devchar #define ucb$l_devchar2 ucb$r_devchar.ucb$r_devchar_q_block.ucb$l_devchar2 #define ucb$r_cbb_affinity ucb$r_cbb_affinity_overlay.ucb$r_cbb_affinity #define ucb$l_affinity ucb$r_cbb_affinity_overlay.ucb$r_cbb_affinity_compat_overlay.ucb$r_cbb_affinity_data_overlay.ucb$l_affinity #define ucb$q_affinity ucb$r_cbb_affinity_overlay.ucb$r_cbb_affinity_compat_overlay.ucb$r_cbb_affinity_data_overlay.ucb$q_affinity #define ucb$l_xtra ucb$r_xtra_overlay.ucb$l_xtra #define ucb$l_altiowq ucb$r_xtra_overlay.ucb$l_altiowq #define ucb$q_devdepend ucb$r_devdepend_q_overlay.ucb$q_devdepend #define ucb$r_devdepend_q_block ucb$r_devdepend_q_overlay.ucb$r_devdepend_q_block #define ucb$l_devdepend ucb$r_devdepend_q_block.ucb$r_devdepend_overlay.ucb$l_devdepend #define ucb$r_disk_devdepend ucb$r_devdepend_q_block.ucb$r_devdepend_overlay.ucb$r_disk_devdepend #define ucb$b_sectors ucb$r_disk_devdepend.ucb$b_sectors #define ucb$b_tracks ucb$r_disk_devdepend.ucb$b_tracks #define ucb$w_cylinders ucb$r_disk_devdepend.ucb$w_cylinders #define ucb$r_term_devdepend ucb$r_devdepend_q_block.ucb$r_devdepend_overlay.ucb$r_term_devdepend #define ucb$b_vertsz ucb$r_term_devdepend.ucb$b_vertsz #define ucb$r_net_devdepend ucb$r_devdepend_q_block.ucb$r_devdepend_overlay.ucb$r_net_devdepend #define ucb$b_locsrv ucb$r_net_devdepend.ucb$b_locsrv #define ucb$b_remsrv ucb$r_net_devdepend.ucb$b_remsrv #define ucb$w_bytestogo ucb$r_net_devdepend.ucb$w_bytestogo #define ucb$l_devdepnd2 ucb$r_devdepend_q_block.ucb$r_devdepnd2_overlay.ucb$l_devdepnd2 #define ucb$l_tt_devdp1 ucb$r_devdepend_q_block.ucb$r_devdepnd2_overlay.ucb$l_tt_devdp1 #define ucb$w_tu_formenu ucb$r_devdepend_q_block.ucb$r_devdepnd2_overlay.ucb$w_tu_formenu #define ucb$q_devdepend2 ucb$r_devdepend2_q_overlay.ucb$q_devdepend2 #define ucb$r_devdepend2_q_block ucb$r_devdepend2_q_overlay.ucb$r_devdepend2_q_block #define ucb$l_devdepnd3 ucb$r_devdepend2_q_block.ucb$r_devdepnd3_overlay.ucb$l_devdepnd3 #define ucb$l_devdepnd4 ucb$r_devdepend2_q_block.ucb$r_devdepnd4_overlay.ucb$l_devdepnd4 #define ucb$r_tmv_bcnt ucb$r_devdepend2_q_overlay.ucb$r_tmv_bcnt #define ucb$w_tmv_bcnt1 ucb$r_tmv_bcnt.ucb$w_tmv_bcnt1 #define ucb$w_tmv_bcnt2 ucb$r_tmv_bcnt.ucb$w_tmv_bcnt2 #define ucb$w_tmv_bcnt3 ucb$r_tmv_bcnt.ucb$w_tmv_bcnt3 #define ucb$w_tmv_bcnt4 ucb$r_tmv_bcnt.ucb$w_tmv_bcnt4 #define ucb$w_unit ucb$r_unit_overlay.ucb$w_unit #define ucb$l_unit ucb$r_unit_overlay.ucb$l_unit #define ucb$w_charge ucb$r_charge_overlay.ucb$w_charge #define ucb$w_rwaitcnt ucb$r_charge_overlay.ucb$w_rwaitcnt #define ucb$b_cm1 ucb$r_charge_overlay.ucb$r_ctrlr_alloc_fields.ucb$b_cm1 #define ucb$b_cm2 ucb$r_charge_overlay.ucb$r_ctrlr_alloc_fields.ucb$b_cm2 #define ucb$b_dipl ucb$r_dipl_overlay.ucb$b_dipl #define ucb$b_state ucb$r_dipl_overlay.ucb$b_state #define ucb$l_sts ucb$r_sts_overlay.ucb$l_sts #define ucb$v_tim ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_tim #define ucb$v_int ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_int #define ucb$v_erlogip ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_erlogip #define ucb$v_cancel ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_cancel #define ucb$v_online ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_online #define ucb$v_power ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_power #define ucb$v_timout ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_timout #define ucb$v_inttype ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_inttype #define ucb$v_bsy ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_bsy #define ucb$v_mounting ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_mounting #define ucb$v_deadmo ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_deadmo #define ucb$v_valid ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_valid #define ucb$v_unload ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_unload #define ucb$v_template ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_template #define ucb$v_mntverip ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_mntverip #define ucb$v_wrongvol ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_wrongvol #define ucb$v_deleteucb ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_deleteucb #define ucb$v_lcl_valid ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_lcl_valid #define ucb$v_supmvmsg ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_supmvmsg #define ucb$v_mntverpnd ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_mntverpnd #define ucb$v_dismount ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_dismount #define ucb$v_clutran ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_clutran #define ucb$v_wrtlockmv ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_wrtlockmv #define ucb$v_svpn_end ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_svpn_end #define ucb$v_altbsy ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_altbsy #define ucb$v_snapshot ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_snapshot #define ucb$v_no_assign ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_no_assign #define ucb$v_exfunc_supp ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_exfunc_supp #define ucb$v_fast_path ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_fast_path #define ucb$v_pathverip ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_pathverip #define ucb$v_fp_hwint ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_fp_hwint #define ucb$v_iopost_local ucb$r_sts_overlay.ucb$r_sts_bits.ucb$v_iopost_local #define ucb$l_devsts ucb$r_devsts_overlay.ucb$l_devsts #define ucb$v_job ucb$r_devsts_overlay.ucb$r_devsts_general_bits.ucb$v_job #define ucb$v_templ_bsy ucb$r_devsts_overlay.ucb$r_devsts_general_bits.ucb$v_templ_bsy #define ucb$v_prmmbx ucb$r_devsts_overlay.ucb$r_devsts_mailbx_bits.ucb$v_prmmbx #define ucb$v_delmbx ucb$r_devsts_overlay.ucb$r_devsts_mailbx_bits.ucb$v_delmbx #define ucb$v_tt_timo ucb$r_devsts_overlay.ucb$r_devsts_term_bits.ucb$v_tt_timo #define ucb$v_tt_notif ucb$r_devsts_overlay.ucb$r_devsts_term_bits.ucb$v_tt_notif #define ucb$v_tt_hangup ucb$r_devsts_overlay.ucb$r_devsts_term_bits.ucb$v_tt_hangup #define ucb$v_tt_devsts_fill ucb$r_devsts_overlay.ucb$r_devsts_term_bits.ucb$v_tt_devsts_fill #define ucb$v_tt_nologins ucb$r_devsts_overlay.ucb$r_devsts_term_bits.ucb$v_tt_nologins #define ucb$v_nt_bfrovf ucb$r_devsts_overlay.ucb$r_devsts_net_bits.ucb$v_nt_bfrovf #define ucb$v_nt_name ucb$r_devsts_overlay.ucb$r_devsts_net_bits.ucb$v_nt_name #define ucb$v_nt_break ucb$r_devsts_overlay.ucb$r_devsts_net_bits.ucb$v_nt_break #define ucb$v_ecc ucb$r_devsts_overlay.ucb$r_devsts_disks.ucb$v_ecc #define ucb$v_diagbuf ucb$r_devsts_overlay.ucb$r_devsts_disks.ucb$v_diagbuf #define ucb$v_nocnvrt ucb$r_devsts_overlay.ucb$r_devsts_disks.ucb$v_nocnvrt #define ucb$v_dx_write ucb$r_devsts_overlay.ucb$r_devsts_disks.ucb$v_dx_write #define ucb$v_datacache ucb$r_devsts_overlay.ucb$r_devsts_disks.ucb$v_datacache #define ucb$v_mscp_mntverip ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_mntverip #define ucb$v_mscp_initing ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_initing #define ucb$v_mscp_waitbmp ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_waitbmp #define ucb$v_mscp_flovr ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_flovr #define ucb$v_mscp_pkack ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_pkack #define ucb$v_mscp_wrtp ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_wrtp #define ucb$v_mscp_ignsrv ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_ignsrv #define ucb$v_mscp_mvrestart ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_mvrestart #define ucb$v_mscp_local_drain_waitbmp ucb$r_devsts_overlay.ucb$r_devsts_mscp_class_bits.ucb$v_mscp_local_drain_waitbmp #define ucb$v_du_shmv_strtd ucb$r_devsts_overlay.ucb$r_devsts_du_class_bits.ucb$v_du_shmv_strtd #define ucb$v_du_0mnote ucb$r_devsts_overlay.ucb$r_devsts_du_class_bits.ucb$v_du_0mnote #define ucb$v_mvfkbbsy ucb$r_devsts_overlay.ucb$r_devsts_du_class_bits.ucb$v_mvfkbbsy #define ucb$v_gtunmbsy ucb$r_devsts_overlay.ucb$r_devsts_du_class_bits.ucb$v_gtunmbsy #define ucb$v_tu_ovrsqchk ucb$r_devsts_overlay.ucb$r_devsts_tu_class_bits.ucb$v_tu_ovrsqchk #define ucb$v_tu_traceact ucb$r_devsts_overlay.ucb$r_devsts_tu_class_bits.ucb$v_tu_traceact #define ucb$v_tu_seqnop ucb$r_devsts_overlay.ucb$r_devsts_tu_class_bits.ucb$v_tu_seqnop #define ucb$v_tu_1dens ucb$r_devsts_overlay.ucb$r_devsts_tu_class_bits.ucb$v_tu_1dens #define ucb$v_tu_dens_determined ucb$r_devsts_overlay.ucb$r_devsts_tu_class_bits.ucb$v_tu_dens_determined #define ucb$v_tu_media_loaded ucb$r_devsts_overlay.ucb$r_devsts_tu_class_bits.ucb$v_tu_media_loaded #define ucb$v_shd_wlg_inv ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_wlg_inv #define ucb$v_shd_seqcmd_here ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_seqcmd_here #define ucb$v_shd_seqcmd_there ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_seqcmd_there #define ucb$v_shd_passive_mv ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_passive_mv #define ucb$v_shd_node_failure ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_node_failure #define ucb$v_shd_wlgsta_cha ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_wlgsta_cha #define ucb$v_shd_vcb_dequeue ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_vcb_dequeue #define ucb$v_shd_seqcmd_pend ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_seqcmd_pend #define ucb$v_shd_st_drain_io ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_st_drain_io #define ucb$v_shd_mbrshp_event ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_mbrshp_event #define ucb$v_shd_tgr_validate ucb$r_devsts_overlay.ucb$r_devsts_shd_bits.ucb$v_shd_tgr_validate #define ucb$v_port_online ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_port_online #define ucb$v_fklock ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_fklock #define ucb$v_msgfklock ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_msgfklock #define ucb$v_inifklock ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_inifklock #define ucb$v_bad_rev ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_bad_rev #define ucb$v_pa_erlogip ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_pa_erlogip #define ucb$v_mfqefklock ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_mfqefklock #define ucb$v_mfqe_lost ucb$r_devsts_overlay.ucb$r_devsts_pa_bits.ucb$v_mfqe_lost #define ucb$v_admin_online ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_admin_online #define ucb$v_admin_init ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_admin_init #define ucb$v_admin_tear_down ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_admin_tear_down #define ucb$v_chan_online ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_chan_online #define ucb$v_chan_init ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_chan_init #define ucb$v_chan_tear_down ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_chan_tear_down #define ucb$v_pb_tqe_busy ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_pb_tqe_busy #define ucb$v_mbr_callback ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_mbr_callback #define ucb$v_shutdown_req ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_shutdown_req #define ucb$v_shutdown_ip ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_shutdown_ip #define ucb$v_pb_last_gasp_emulated ucb$r_devsts_overlay.ucb$r_devsts_pb_bits.ucb$v_pb_last_gasp_emulated #define ucb$l_media_id ucb$r_media_id_overlay.ucb$l_media_id #define ucb$v_media_id_nn ucb$r_media_id_overlay.ucb$r_media_id_subfields.ucb$v_media_id_nn #define ucb$v_media_id_n2 ucb$r_media_id_overlay.ucb$r_media_id_subfields.ucb$v_media_id_n2 #define ucb$v_media_id_n1 ucb$r_media_id_overlay.ucb$r_media_id_subfields.ucb$v_media_id_n1 #define ucb$v_media_id_n0 ucb$r_media_id_overlay.ucb$r_media_id_subfields.ucb$v_media_id_n0 #define ucb$v_media_id_t1 ucb$r_media_id_overlay.ucb$r_media_id_subfields.ucb$v_media_id_t1 #define ucb$v_media_id_t0 ucb$r_media_id_overlay.ucb$r_media_id_subfields.ucb$v_media_id_t0 #endif /* #if !defined(__VAXC) */ #define UCB$K_LENGTH 352 /*LENGTH OF STANDARD UCB */ #define UCB$C_LENGTH 352 /*LENGTH OF STANDARD UCB */ #define UCB$S_UCBDEF 352 /*OLD UCBDEF SIZE NAME FOR COMPATIBILITY */ /* */ /* DEVICE DEPENDENT UCB EXTENSIONS */ /* */ /* MAILBOX */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _irp; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _mb_ucb { #pragma __nomember_alignment UCB ucb$r_ucb; unsigned int ucb$l_mb_readerrefc; /*REFERENCE COUNT OF READ ENABLED CHANNELS TO DEVICE */ unsigned int ucb$l_mb_writerrefc; /*REFERENCE COUNT OF WRITE ENABLED CHANNELS TO DEVICE */ struct _irp *ucb$l_mb_readqfl; /*MAILBOX READ IRP QUEUE LISTHEAD */ struct _irp *ucb$l_mb_readqbl; int ucb$l_mb_writerwaitqfl; /*MAILBOX WAIT FOR WRITE CHANNEL TO BE ASSIGNED QUEUE */ int ucb$l_mb_writerwaitqbl; int ucb$l_mb_readerwaitqfl; /*MAILBOX WAIT FOR READ CHANNEL TO BE ASSIGNED QUEUE */ int ucb$l_mb_readerwaitqbl; int ucb$l_mb_nowriterwaitqfl; /*MAILBOX WAIT FOR ALL WRITE CHANNELS TO BE DEASSIGNED QUEUE */ int ucb$l_mb_nowriterwaitqbl; int ucb$l_mb_noreaderwaitqfl; /*MAILBOX WAIT FOR ALL READ CHANNELS TO BE DEASSIGNED QUEUE */ int ucb$l_mb_noreaderwaitqbl; int ucb$l_mb_room_notify; /*ROOM NOTIFY AST LIST */ __union { void *ucb$l_logadr; /*LOGICAL NAME BLOCK ADDRESS */ __struct { void *ucb$l_mb_logadr; /* and a synonym to let SDA find the field */ } ucb$r_fill_10_; } ucb$r_fill_9_; void (*ucb$ps_mb_last_channel)(); /*Pointer to Last channel deassign routine */ char ucb$t_quad_fill1 [4]; /* Fill bytes for quadword alignment */ unsigned __int64 ucb$q_mb_context; /*64 bit context data passed back when last channel deassign rotuine is called. */ int ucb$l_mb_bufquo; /*MAILBOX Buffer Quota */ int ucb$l_mb_iniquo; /*MAILBOX Initial Buffer Quota */ } MB_UCB; #if !defined(__VAXC) #define ucb$l_logadr ucb$r_fill_9_.ucb$l_logadr #define ucb$l_mb_logadr ucb$r_fill_9_.ucb$r_fill_10_.ucb$l_mb_logadr #endif /* #if !defined(__VAXC) */ #define UCB$K_MB_UCBLENGTH 432 /*SIZE OF MAILBOX UCB */ #define UCB$C_MB_UCBLENGTH 432 /*SIZE OF MAILBOX UCB */ #define UCB$C_MB_LENGTH 432 /*SIZE OF MAILBOX UCB for SDA FORMAT */ #define UCB$S_MB_EXTENSION 432 /* Old step-1 size name for compatibility */ #define ucb$r_mb_ucb ucb$r_ucb /* */ /* ERROR LOG DEVICES (ALL) */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _erl_ucb { #pragma __nomember_alignment UCB ucb$r_ucb; /*COMMON UCB */ void *ucb$l_emb; /*ADDRESS OF ERROR MESSAGE BUFFER */ unsigned int ucb$l_func; /* I/O function modifiers */ void (*ucb$l_dpc)(); /*SAVED DRIVER SUBROUTINE RETURN ADDRESS */ unsigned short int ucb$w_mt3_density; /* Current Tape Density word. (For Tape Only) */ char ucb$b_fill_11_ [2]; } ERL_UCB; #define UCB$K_ERL_LENGTH 368 /*SIZE OF ERROR LOG UCB */ #define UCB$C_ERL_LENGTH 368 /*SIZE OF ERROR LOG UCB */ #define UCB$S_UCBDEF4 368 /* Old step-1 size name for compatibility */ #define ucb$r_erl_ucb ucb$r_ucb /* */ /* DUAL PORTED DEVICES (ALL DISKS AND MOST TAPES) */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _ddb; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _dp_ucb { #pragma __nomember_alignment ERL_UCB ucb$r_erlucb; /* Errlog UCB */ __union { __struct { struct _ddb *ucb$l_dp_ddb; /* Pointer to alternate DDB */ struct _ucb *ucb$l_dp_link; /* Address of next UCB for this DDB */ struct _ucb *ucb$l_dp_altucb; /* Addr of alternate UCB for this unit */ } ucb$r_old_dual_path; __struct { struct _ddb *ucb$l_2p_ddb; /* Pointer to alternate DDB */ struct _ucb *ucb$l_2p_link; /* Address of next UCB for this DDB */ struct _ucb *ucb$l_2p_altucb; /* Addr of alternate UCB for this unit */ } ucb$r_prefered_dual_path; } ucb$r_dual_path; char ucb$b_fill_12_ [4]; } DP_UCB; #if !defined(__VAXC) #define ucb$l_dp_ddb ucb$r_dual_path.ucb$r_old_dual_path.ucb$l_dp_ddb #define ucb$l_dp_link ucb$r_dual_path.ucb$r_old_dual_path.ucb$l_dp_link #define ucb$l_dp_altucb ucb$r_dual_path.ucb$r_old_dual_path.ucb$l_dp_altucb #define ucb$l_2p_ddb ucb$r_dual_path.ucb$r_prefered_dual_path.ucb$l_2p_ddb #define ucb$l_2p_link ucb$r_dual_path.ucb$r_prefered_dual_path.ucb$l_2p_link #define ucb$l_2p_altucb ucb$r_dual_path.ucb$r_prefered_dual_path.ucb$l_2p_altucb #endif /* #if !defined(__VAXC) */ #define UCB$K_DP_LENGTH 384 /*Size of dual path UCB */ #define UCB$C_DP_LENGTH 384 /* size of dual path UCB */ #define UCB$K_2P_LENGTH 384 /*Size of dual path UCB */ #define UCB$C_2P_LENGTH 384 /* size of dual path UCB */ #define UCB$S_DUALPATH_EXTENSION 384 /* Old step-1 size name for compatibility */ #define ucb$r_dp_ucb ucb$r_erlucb.ucb$r_ucb #define ucb$r_dp_erl ucb$r_erlucb /* */ /* ALL DISKS AND TAPES */ /* */ #define UCB$M_AST_ARMED 0x8000 #define UCB$K_LCL_DISK_LENGTH 428 /* Size of local disk UCB */ #define UCB$C_LCL_DISK_LENGTH 428 /* Size of local disk UCB */ #define UCB$K_LCL_TAPE_LENGTH 416 /* Size of local tape UCB */ #define UCB$C_LCL_TAPE_LENGTH 416 /* Size of local tape UCB */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _dt_ucb { #pragma __nomember_alignment DP_UCB ucb$r_dpucb; __union { unsigned short int ucb$w_dirseq; /* Directory sequence number */ __struct { unsigned ucb$v_filler : 15; unsigned ucb$v_ast_armed : 1; /* Blocking AST armed flag */ } ucb$r_fill_14_; } ucb$r_fill_13_; unsigned char ucb$b_onlcnt; /* Online count */ char ucb$b_fill_15_ [5]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { #pragma __nomember_alignment __struct { __union { unsigned __int64 ucb$q_maxblock_64; /* 64-bit highest block */ unsigned int ucb$l_maxblock; /* Random access device highest block */ } ucb$r_maxblock_overlay; unsigned int ucb$l_maxbcnt; /* Maximum transfer BCNT */ int ucb$l_dccb; /* Pointer to data cache control block */ unsigned int ucb$l_qlenacc; /* Queue length accumulator */ unsigned int ucb$l_usn; /* Reserved */ void *ucb$ps_mount_list; /* Reserved */ char ucb$t_mscp_dsply_path [8]; /* Displayable path buffer. */ } ucb$r_disk_fields; __struct { unsigned int ucb$l_record; /* Current tape position or frame counter */ __union { unsigned int ucb$l_prev_record_l; /* Tape position prior at start of last I/O (longword) */ unsigned char ucb$b_prev_record; /* Tape position prior at start of last I/O */ } ucb$r_prev_record_overlay; int ucb$l_reserved; unsigned int ucb$l_tmv_record; /* Position following last guaranteed successful I/O */ unsigned short int ucb$w_tmv_crc1; /* 1st CRC for Mount Ver's media validation */ unsigned short int ucb$w_tmv_crc2; /* 2nd CRC ... */ unsigned short int ucb$w_tmv_crc3; /* 3rd CRC ... */ unsigned short int ucb$w_tmv_crc4; /* 4th CRC ... */ } ucb$r_tape_fields; } ucb$r_disktape_overlay; unsigned int ucb$l_alloclass; /* Device allocation class */ } DT_UCB; #if !defined(__VAXC) #define ucb$w_dirseq ucb$r_fill_13_.ucb$w_dirseq #define ucb$v_ast_armed ucb$r_fill_13_.ucb$r_fill_14_.ucb$v_ast_armed #define ucb$q_maxblock_64 ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$r_maxblock_overlay.ucb$q_maxblock_64 #define ucb$l_maxblock ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$r_maxblock_overlay.ucb$l_maxblock #define ucb$l_maxbcnt ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$l_maxbcnt #define ucb$l_dccb ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$l_dccb #define ucb$l_qlenacc ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$l_qlenacc #define ucb$l_usn ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$l_usn #define ucb$ps_mount_list ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$ps_mount_list #define ucb$t_mscp_dsply_path ucb$r_disktape_overlay.ucb$r_disk_fields.ucb$t_mscp_dsply_path #define ucb$l_record ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$l_record #define ucb$l_prev_record_l ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$r_prev_record_overlay.ucb$l_prev_record_l #define ucb$b_prev_record ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$r_prev_record_overlay.ucb$b_prev_record #define ucb$l_tmv_record ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$l_tmv_record #define ucb$w_tmv_crc1 ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$w_tmv_crc1 #define ucb$w_tmv_crc2 ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$w_tmv_crc2 #define ucb$w_tmv_crc3 ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$w_tmv_crc3 #define ucb$w_tmv_crc4 ucb$r_disktape_overlay.ucb$r_tape_fields.ucb$w_tmv_crc4 #endif /* #if !defined(__VAXC) */ #define UCB$K_DT_LENGTH 432 /*Size of disk/tape UCB */ #define UCB$C_DT_LENGTH 432 /* size of disk/tape UCB */ #define UCB$S_DISKTAPE_UCB_EXTENSION 432 /* Old step-1 size name for compatibility */ #define ucb$r_dt_ucb ucb$r_dpucb.ucb$r_erlucb.ucb$r_ucb #define ucb$r_dt_erl ucb$r_dpucb.ucb$r_erlucb #define ucb$r_dt_dp ucb$r_dpucb /* */ /* MSCP DISKS AND TAPES UCB EXTENSION */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _cddb; struct _cdt; struct _shad; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _mscp_ucb { #pragma __nomember_alignment DT_UCB ucb$r_dtucb; struct _cddb *ucb$l_cddb; /* Pointer to active CDDB */ struct _cddb *ucb$l_2p_cddb; /* Pointer to alternate CDDB */ struct _ucb *ucb$l_cddb_link; /* Pointer to next UCB in CDDB chain */ struct _cdt *ucb$l_cdt; /* Pointer to active CDT */ struct _cddb *ucb$l_wait_cddb; /* Address of CDDB waiting for mnt. ver. to complete on this UCB */ struct _cddb *ucb$l_pref_cddb; /* CDDB address for preferred path */ unsigned __int64 ucb$q_unit_id; /* Unique MSCP unit identifier */ unsigned short int ucb$w_mscpunit; /* Primary path MSCP unit number */ unsigned short int ucb$w_unit_flags; /* MSCP unit flags */ unsigned short int ucb$w_lcl_mscpunit; /* MSCP unit number for local (non-emulated) controllers */ unsigned short int ucb$w_srv_mscpunit; /* MSCP unit number for served (emulated) controllers */ unsigned int ucb$l_mscpdevparam; /* MSCP device-dependent parameters */ unsigned char ucb$b_freecap; /* Free capacity */ unsigned char ucb$b_fail_mutex; /* MUTEX for device failover */ unsigned short int ucb$w_mscp_resvdw; /* Reserved for MSCP enhancements */ struct _shad *ucb$l_shad; /* Virtual Unit Pointer to HBS SHAD */ unsigned int ucb$l_dutufkblink; /* Link to permanent fork blocks */ } MSCP_UCB; #define UCB$K_MSCP_DISK_LENGTH 488 /*Size of MSCP disk UCB */ #define UCB$C_MSCP_DISK_LENGTH 488 /*Size of MSCP disk UCB (for SDA) */ #define UCB$K_MSCP_TAPE_LENGTH 488 /*Size of MSCP tape UCB */ #define UCB$C_MSCP_TAPE_LENGTH 488 /*Size of MSCP tape UCB (for SDA) */ #define UCB$S_MSCP_UCB_EXTENSION 488 /* Old step-1 size name for compatibility */ #define ucb$r_mscp_ucb ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb.ucb$r_ucb #define ucb$r_mscp_erl ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb #define ucb$r_mscp_dp ucb$r_dtucb.ucb$r_dpucb #define ucb$r_mscp_dt ucb$r_dtucb /* */ /* DISK CLASS DRIVER DEVICE DEPENDENT UNIT CONTROL BLOCK OFFSETS */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _du_ucb { #pragma __nomember_alignment MSCP_UCB ucb$r_mscpucb; unsigned int ucb$l_du_volser; /* Serial umber as returned */ /* in ONLINE end packet. */ unsigned int ucb$l_du_usize; /* Size of user visible area of */ /* unit in logical blocks */ unsigned int ucb$l_du_totsz; /* Size of unit including RCT */ /* area in logical blocks */ unsigned short int ucb$w_du_rctsize; /* Size of the RCT in blocks */ unsigned char ucb$b_du_rctcpys; /* Number of RCT copies on the unit */ unsigned char ucb$b_du_rbnptrk; /* RBNs per track */ unsigned short int ucb$w_du_lbnptrk; /* LBNs per track */ unsigned short int ucb$w_du_trkpgrp; /* Tracks per group */ unsigned short int ucb$w_du_grppcyl; /* Groups per cylinder */ unsigned short int ucb$w_du_muntc; /* Multi-unit code */ unsigned char ucb$b_du_usvr; /* Unit software version */ unsigned char ucb$b_du_uhvr; /* Unit hardware version */ char ucb$b_fill_16_ [6]; } DU_UCB; #define UCB$K_DU_LENGTH 520 /* Size of DISK CLASS DRIVER dependent UCB */ /* Old step-1 size name for compatibility */ #define UCB$S_DUDRIVER_EXTENSION 520 #define ucb$r_du_ucb ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb.ucb$r_ucb #define ucb$r_du_erl ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb #define ucb$r_du_dp ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb #define ucb$r_du_dt ucb$r_mscpucb.ucb$r_dtucb #define ucb$r_du_mscp ucb$r_mscpucb /* */ /* TAPE CLASS DRIVER DEVICE DEPENDENT UNIT CONTROL BLOCK OFFSETS */ /* */ #define UCB$M_TU_RPTREQ 0x1 #define UCB$M_TU_RPTPND 0x2 #define UCB$M_TU_DENSITY 0x4 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _tu_ucb { #pragma __nomember_alignment MSCP_UCB ucb$r_mscpucb; unsigned int ucb$l_tu_maxwrcnt; /* Largest size record likely to have reliability statistics. */ unsigned short int ucb$w_tu_format; /* Format (density). */ unsigned short int ucb$w_tu_speed; /* Current speed. */ unsigned short int ucb$w_tu_noise; /* Size of noise records ignored by controller. */ unsigned char ucb$b_tu_softerr; /* Media quality reporting counter. */ __union { unsigned char ucb$b_tu_softflags; /* Media quality reporting flags. */ __struct { /* Define soft error flags. */ unsigned ucb$v_tu_rptreq : 1; /* Report request. */ unsigned ucb$v_tu_rptpnd : 1; /* Report pending. */ unsigned ucb$v_tu_density : 1; /* Density check done if set. */ unsigned ucb$v_fill_17_ : 5; } ucb$r_tu_softflags_bits; } ucb$r_tu_softflags_overlay; int ucb$l_tracebeg; /* Pointer to beginning of trace ring. */ int ucb$l_traceptr; /* Pointer to next available slot. */ int ucb$l_tracend; /* Pointer to beyond trace ring. */ int ucb$l_trace_next_slot; /* Number of next trace slot to use. */ char ucb$b_fill_18_ [4]; } TU_UCB; #if !defined(__VAXC) #define ucb$b_tu_softflags ucb$r_tu_softflags_overlay.ucb$b_tu_softflags #define ucb$v_tu_rptreq ucb$r_tu_softflags_overlay.ucb$r_tu_softflags_bits.ucb$v_tu_rptreq #define ucb$v_tu_rptpnd ucb$r_tu_softflags_overlay.ucb$r_tu_softflags_bits.ucb$v_tu_rptpnd #define ucb$v_tu_density ucb$r_tu_softflags_overlay.ucb$r_tu_softflags_bits.ucb$v_tu_density #endif /* #if !defined(__VAXC) */ #define UCB$K_TU_LENGTH 520 /* Size of TAPE CLASS DRIVER dependent UCB */ /* Old step-1 size name for compatibility */ #define UCB$S_TUDRIVER_EXTENSION 520 #define ucb$r_tu_ucb ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb.ucb$r_ucb #define ucb$r_tu_erl ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb #define ucb$r_tu_dp ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb #define ucb$r_tu_dt ucb$r_mscpucb.ucb$r_dtucb #define ucb$r_tu_mscp ucb$r_mscpucb /* */ /* SCSI Port Driver Extensions */ /* */ #define UCB$M_PK_IFKB_LOCK 0x1 #ifdef __cplusplus /* Define structure prototypes */ struct _kpb; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _scsi_ucb { #pragma __nomember_alignment ERL_UCB ucb$r_erlucb; unsigned int ucb$il_pk_cur_data; /* Selection bus data snapshot */ unsigned int ucb$il_pk_resel_id; /* [RE]selection saved id */ __union { unsigned int ucb$il_pk_exflags; /* Port extended flags */ __struct { unsigned ucb$v_pk_ifkb_lock : 1; /* Init FKB locked */ unsigned ucb$v_fill_21_ : 7; } ucb$r_fill_20_; } ucb$r_fill_19_; __union { #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif char ucb$ib_pk_inifkblk [48]; /* Initialization fork block */ #pragma __nomember_alignment struct _kpb *ucb$ps_pk_inikpb; /* Initializtion KPB pointer */ } ucb$r_fill_pk_init; char ucb$b_fill_22_ [4]; } SCSI_UCB; #if !defined(__VAXC) #define ucb$il_pk_exflags ucb$r_fill_19_.ucb$il_pk_exflags #define ucb$v_pk_ifkb_lock ucb$r_fill_19_.ucb$r_fill_20_.ucb$v_pk_ifkb_lock #define ucb$ib_pk_inifkblk ucb$r_fill_pk_init.ucb$ib_pk_inifkblk #define ucb$ps_pk_inikpb ucb$r_fill_pk_init.ucb$ps_pk_inikpb #endif /* #if !defined(__VAXC) */ #define UCB$K_PK_LENGTH 432 /* Size of SCSI port UCB */ #define UCB$C_PK_LENGTH 432 /* Size of SCSI port UCB for SDA FORMAT */ #define UCB$S_SCSI_PORT_EXTENSION 432 /* Old step-1 size name for compatibility */ #define ucb$r_scsi_ucb ucb$r_erlucb.ucb$r_ucb #define ucb$r_scsi_erl ucb$r_erlucb /* */ /* NETWORK LOGICAL LINK (NETWORK MAILBOX) EXTENSION */ /* */ #define UCB$M_BACKP 0x20 #define UCB$C_LOGLNK 1 /* CONNECT IS FOR LOGICAL LINK (NOT SINGLE MSG) */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _net_ucb { #pragma __nomember_alignment UCB ucb$r_ucb; void *ucb$l_nt_datssb; /* ADDRESS OF DATA SUBCHANNEL STATUS BLOCK */ void *ucb$l_nt_intssb; /* ADDRESS OF INT/LS SSB */ unsigned short int ucb$w_nt_chan; /* DDCMP CHANNEL NO. */ __union { short int ucbdef$$_fill_3; /* DUMMY FIELD */ __struct { unsigned ucb$v_ltype : 2; /* LINK TYPE BITS */ unsigned ucb$v_segflo : 1; /* SEGMENT REQUEST COUNTS */ unsigned ucb$v_msgflo : 1; /* MESSAGE REQUEST COUNTS */ unsigned ucb$v_msgack : 1; /* MESSAGE ACK/NAK */ unsigned ucb$v_backp : 1; /* BACKPRESSURE (1=> NO FLOW) */ unsigned ucb$v_lnkpri : 2; /* LINK PRIORITY (IGNORED) */ } ucb$r_fill_3_bits; /* NETWORK CONSTANTS */ } ucb$r_fill_3_overlay; char ucb$b_fill_23_ [4]; } NET_UCB; #if !defined(__VAXC) #define ucb$v_ltype ucb$r_fill_3_overlay.ucb$r_fill_3_bits.ucb$v_ltype #define ucb$v_segflo ucb$r_fill_3_overlay.ucb$r_fill_3_bits.ucb$v_segflo #define ucb$v_msgflo ucb$r_fill_3_overlay.ucb$r_fill_3_bits.ucb$v_msgflo #define ucb$v_msgack ucb$r_fill_3_overlay.ucb$r_fill_3_bits.ucb$v_msgack #define ucb$v_backp ucb$r_fill_3_overlay.ucb$r_fill_3_bits.ucb$v_backp #define ucb$v_lnkpri ucb$r_fill_3_overlay.ucb$r_fill_3_bits.ucb$v_lnkpri #endif /* #if !defined(__VAXC) */ #define UCB$S_UCBDEF7 368 /* Old step-1 size name for compatibility */ #define ucb$r_net_ucb ucb$r_ucb /* */ /* NI DEVICE EXTENSION */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _ni_ucb { #pragma __nomember_alignment UCB ucb$r_ucb; void *ucb$l_ni_hwaptr; /*ADDRESS OF NI DEVICE HARDWARE ADDRESS */ void *ucb$l_ni_mltptr; /*ADDRESS OF PROTOCOL MULTICAST TABLE */ } NI_UCB; #define UCB$K_NI_LENGTH 360 /*SIZE OF NI DEVICE UCB */ #define UCB$C_NI_LENGTH 360 /*SIZE OF NI DEVICE UCB */ #define UCB$S_UCBDEF9 360 /* Old step-1 size name for compatibility */ #define ucb$r_ni_ucb ucb$r_ucb /* */ /* DAP DEVICE EXTENSION (FOR DEVICES THAT USE THE DAP INTERFACE WITHOUT */ /* UNDELYING DECNET, SUCH AS CERTAIN CONSOLE DISKS). */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _dap_ucb { #pragma __nomember_alignment UCB ucb$r_ucb; char ucb$t_dapdevnam [32]; /*EQUIVALENCE NAME STRING */ } DAP_UCB; #define UCB$K_DAPDEV_LENGTH 384 /*SIZE OF DAP DEVICE UCB */ #define UCB$C_DAPDEV_LENGTH 384 /*SIZE OF DAP DEVICE UCB */ #define UCB$S_UCBDEF10 384 /* Old step-1 size name for compatibility */ #define ucb$r_dap_ucb ucb$r_ucb #define UCB$K_BGN_ADPTAB 480 #define UCB$M_LBDG 0x1 #define UCB$M_POLL 0x2 #define UCB$M_LOCAL 0x4 #define UCB$M_SINGLE_PATH 0x8 #define UCB$M_STORAGE 0x10 #define UCB$K_BGN_ADPSUB 508 #define UCB$K_BGN_PDTSUB 572 #define UCB$K_END_ADPTAB 612 #define UCB$K_TAB_LEN 132 #define UCB$K_LMPKTBYTS 64 #define UCB$K_ERRDGBYTS 180 #define UCB$K_LMBUFSIZ 104 #define UCB$K_ERRDGSIZ 220 #define UCB$M_RSP_FKB_IN_USE 0x1 #ifdef __cplusplus /* Define structure prototypes */ struct _adp; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _pa_ucb { /* */ /* Skip the common UCB */ /* */ #pragma __nomember_alignment ERL_UCB ucb$r_erlucb; /* */ /* Define private PA fields */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif char ucb$l_inifkblk [48]; /* Error fork block for handling */ /* severe adapter errors */ char ucb$l_mfqefkblk [48]; /* Pool allocation fork block for */ /* handling message free queue */ /* interrupts */ #pragma __nomember_alignment unsigned short int ucb$w_incarn; /* Last BVP incarnation number */ short int ucb$w_fill1; struct _adp *ucb$l_adp; /* Address of the ADP */ unsigned int ucb$l_inireturn; /* Initialization thread return */ /* address */ int ucb$l_fill2; /* */ /* Fields used to link a port driver with the generic SCS port code. The port */ /* driver initializes these routines with pointers to hardware-dependent routines */ /* at unit initialization time. */ /* */ unsigned int ucb$l_ndt; /* Adapter hardware code */ unsigned char ucb$b_dt; /* Adapter device type */ __union { /* Initialization flags */ __struct { unsigned ucb$v_lbdg : 1; /* Loopback datagram */ unsigned ucb$v_poll : 1; /* Configuration polling */ unsigned ucb$v_local : 1; /* Local MSCP port (BVP ports) */ unsigned ucb$v_single_path : 1; /* Only one path available */ unsigned ucb$v_storage : 1; /* Port is for remote storage only */ unsigned ucb$v_fill_24_ : 3; } ucb$r_ini_flags_bits; unsigned char ucb$b_ini_flags; } ucb$r_ini_flags_overlay; short int ucb$w_fill3; unsigned char ucb$b_msg_typ; /* Error log message type */ unsigned char ucb$b_pdt_type; /* Type of PDT */ unsigned short int ucb$w_pdt_size; /* Size of PDT */ unsigned int ucb$l_ppd_size; /* Size of the PPD header */ void *ucb$l_lsindx; /* Local store dump start address */ unsigned int ucb$l_lslength; /* Dump size in longwords */ void *ucb$l_pmc; /* Address of the PMC register */ /* used to disable interrupts */ /* on port power-up */ unsigned int ucb$l_rev_table; /* Port version table */ int (*ucb$l_power_fail)(); /* Power failure recovery routine */ int (*ucb$l_init_pdt)(); /* PDT initialization routine */ int (*ucb$l_start_ucode)(); /* Microcode load and start routine */ int (*ucb$l_enb_int)(); /* Interrupt enable routine */ int (*ucb$l_format_rev)(); /* Verify port version routine */ int (*ucb$l_timer)(); /* Periodic wakeup routine */ int (*ucb$l_poke_port)(); /* Poke the port's sanity timer */ int (*ucb$l_interrupt)(); /* Adapter interrupt service routine */ int (*ucb$l_stop_ucode)(); /* Microcode shutdown routine */ int (*ucb$l_unmap_pdt)(); /* Unmap register pointers routine */ int (*ucb$l_reg_dump)(); /* Register dump routine */ int (*ucb$l_reg_disp)(); /* Error log register display routine */ int (*ucb$l_mem_dump)(); /* Memory dump routine */ int (*ucb$l_release_ps)(); /* Release port status register routine */ int ucb$l_fill4; unsigned int ucb$l_ins_comql; /* Notify port of non-empty CMDQ0 */ unsigned int ucb$l_ins_comqh; /* Notify port of non-empty CMDQ1 */ unsigned int ucb$l_ins_dfreq; /* Notify port of non-empty DFQ */ unsigned int ucb$l_ins_mfreq; /* Notify port of non-empty MFQ */ unsigned int ucb$l_ins_comqm; unsigned int ucb$l_init_ablk; unsigned int ucb$l_cmpl_int; unsigned int ucb$l_misc_int2; int ucb$l_fill5 [2]; char ucb$b_fill_25_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif char ucb$l_msgfkblk [48]; /* Fork block for starting */ /* error messages to operator */ #pragma __nomember_alignment unsigned int ucb$t_opa0_temp [6]; /* Field used to store optional */ /* OPA0: error logging information */ /* (access to this field is also */ /* protected by UCB$V_MSGFKLOCK) */ unsigned char ucb$b_lmest; /* Error subtype */ unsigned char ucb$b_lmet; /* Error type */ unsigned char ucb$b_lmertcnt; /* Error retry count */ unsigned char ucb$b_lmertmax; /* Maximum error retry count */ unsigned short int ucb$w_lmerrcnt; /* Accumulated errors */ short int ucb$w_fill6; unsigned char ucb$n_lsaddr [6]; /* Local station address */ unsigned char ucb$n_lsid [6]; /* Local station ID */ unsigned char ucb$n_rsaddr [6]; /* Remote station address */ unsigned char ucb$n_rsid [6]; /* Remote station ID */ unsigned int ucb$l_cicmd; /* CI packet command longword */ unsigned short int ucb$w_msgbytcnt; /* CI packet byte count */ unsigned short int ucb$w_msgppdtyp; /* CI packet PPD type */ unsigned char ucb$t_msgdata [64]; /* CI packet data */ char ucb$b_fill7 [116]; int ucb$l_fill8 [2]; char ucb$b_align_1 [44]; /* QUADWORD ALIGN */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif char ucb$l_rspfkblk [48]; /* Response Q fork block for thread */ /* that drains response Queue. */ #pragma __nomember_alignment __union { unsigned int ucb$l_rsp_sts; /* Resp Queue status mask */ __struct { /* Bit definitions for mask */ unsigned ucb$v_rsp_fkb_in_use : 1; /* Resp Q fork block in use */ unsigned ucb$v_fill_26_ : 7; } ucb$r_rsp_sts_bits; } ucb$r_rsp_sts_overlay; int ucb$l_reserved2 [7]; /* These longwords keep fork block in */ /* it's own cache block. Place only static */ /* data in these fields if necessary as this */ /* cache block is in high demand on SMP systems. */ } PA_UCB; #if !defined(__VAXC) #define ucb$v_lbdg ucb$r_ini_flags_overlay.ucb$r_ini_flags_bits.ucb$v_lbdg #define ucb$v_poll ucb$r_ini_flags_overlay.ucb$r_ini_flags_bits.ucb$v_poll #define ucb$v_local ucb$r_ini_flags_overlay.ucb$r_ini_flags_bits.ucb$v_local #define ucb$v_single_path ucb$r_ini_flags_overlay.ucb$r_ini_flags_bits.ucb$v_single_path #define ucb$v_storage ucb$r_ini_flags_overlay.ucb$r_ini_flags_bits.ucb$v_storage #define ucb$b_ini_flags ucb$r_ini_flags_overlay.ucb$b_ini_flags #define ucb$l_rsp_sts ucb$r_rsp_sts_overlay.ucb$l_rsp_sts #define ucb$v_rsp_fkb_in_use ucb$r_rsp_sts_overlay.ucb$r_rsp_sts_bits.ucb$v_rsp_fkb_in_use #endif /* #if !defined(__VAXC) */ #define UCB$C_PALENGTH 1040 #define UCB$C_PA_LENGTH 1040 /* For SDA FORMAT */ #define UCB$S_PAUCBDEF 1040 /* Old PAUCBDEF size name for compatibility */ #define ucb$r_pa_ucb ucb$r_erlucb.ucb$r_ucb #define ucb$r_pa_erl ucb$r_erlucb #define UCB$M_PI_ENABLE 0x1 #define UCB$M_PI_FKB_BUSY 0x2 #define UCB$M_PI_TQE_BUSY 0x4 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _pi_ucb { /* */ /* Skip the common UCB plus the PA extension */ /* */ #pragma __nomember_alignment PA_UCB ucb$r_paucb; /* */ /* Define private PI fields */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned char ucb$b_pi_fkb [48]; unsigned char ucb$b_pi_tqe [64]; #pragma __nomember_alignment __union { unsigned __int64 ucb$q_pi_tfq; __struct { void *ucb$l_pi_tfq_flink; void *ucb$l_pi_tfq_blink; } ucb$r_fill_28_; } ucb$r_fill_27_; __union { unsigned __int64 ucb$q_pi_tq; __struct { void *ucb$l_pi_tq_flink; void *ucb$l_pi_tq_blink; } ucb$r_fill_30_; } ucb$r_fill_29_; __union { unsigned __int64 ucb$q_pi_ifq; __struct { void *ucb$l_pi_ifq_flink; void *ucb$l_pi_ifq_blink; } ucb$r_fill_32_; } ucb$r_fill_31_; __union { unsigned __int64 ucb$q_pi_iq; __struct { void *ucb$l_pi_iq_flink; void *ucb$l_pi_iq_blink; } ucb$r_fill_34_; } ucb$r_fill_33_; unsigned int ucb$l_pi_sva; unsigned int ucb$l_pi_svpn; unsigned int ucb$l_pi_script; unsigned int ucb$l_pi_tgt_script; unsigned int ucb$l_pi_dat_script; unsigned int ucb$l_pi_ini_script; unsigned int ucb$l_pi_rl_stat; unsigned int ucb$l_pi_wl_dsp; unsigned int ucb$l_pi_tgt_c710d; unsigned int ucb$l_pi_ini_c710d; unsigned int ucb$l_pi_curr_script; unsigned int ucb$l_pi_dsa; unsigned int ucb$l_pi_dsps; unsigned int ucb$l_pi_scratch; unsigned int ucb$l_pi_exp_int; __union { __struct { unsigned ucb$v_pi_enable : 1; unsigned ucb$v_pi_fkb_busy : 1; unsigned ucb$v_pi_tqe_busy : 1; unsigned ucb$v_fill_35_ : 5; } ucb$r_pi_flags_bits; unsigned char ucb$b_pi_flags; } ucb$r_pi_flags_overlay; char ucb$b_fill_36_ [3]; } PI_UCB; #if !defined(__VAXC) #define ucb$q_pi_tfq ucb$r_fill_27_.ucb$q_pi_tfq #define ucb$l_pi_tfq_flink ucb$r_fill_27_.ucb$r_fill_28_.ucb$l_pi_tfq_flink #define ucb$l_pi_tfq_blink ucb$r_fill_27_.ucb$r_fill_28_.ucb$l_pi_tfq_blink #define ucb$q_pi_tq ucb$r_fill_29_.ucb$q_pi_tq #define ucb$l_pi_tq_flink ucb$r_fill_29_.ucb$r_fill_30_.ucb$l_pi_tq_flink #define ucb$l_pi_tq_blink ucb$r_fill_29_.ucb$r_fill_30_.ucb$l_pi_tq_blink #define ucb$q_pi_ifq ucb$r_fill_31_.ucb$q_pi_ifq #define ucb$l_pi_ifq_flink ucb$r_fill_31_.ucb$r_fill_32_.ucb$l_pi_ifq_flink #define ucb$l_pi_ifq_blink ucb$r_fill_31_.ucb$r_fill_32_.ucb$l_pi_ifq_blink #define ucb$q_pi_iq ucb$r_fill_33_.ucb$q_pi_iq #define ucb$l_pi_iq_flink ucb$r_fill_33_.ucb$r_fill_34_.ucb$l_pi_iq_flink #define ucb$l_pi_iq_blink ucb$r_fill_33_.ucb$r_fill_34_.ucb$l_pi_iq_blink #define ucb$v_pi_enable ucb$r_pi_flags_overlay.ucb$r_pi_flags_bits.ucb$v_pi_enable #define ucb$v_pi_fkb_busy ucb$r_pi_flags_overlay.ucb$r_pi_flags_bits.ucb$v_pi_fkb_busy #define ucb$v_pi_tqe_busy ucb$r_pi_flags_overlay.ucb$r_pi_flags_bits.ucb$v_pi_tqe_busy #define ucb$b_pi_flags ucb$r_pi_flags_overlay.ucb$b_pi_flags #endif /* #if !defined(__VAXC) */ #define UCB$C_PILENGTH 1248 #define UCB$C_PI_LENGTH 1248 /* For SDA FORMAT */ #define UCB$S_PIUCBDEF 1248 /* Old PIUCBDEF size name for compatibility */ #define ucb$r_pi_ucb ucb$r_paucb.ucb$r_erlucb.ucb$r_ucb #define ucb$r_pi_erl ucb$r_paucb.ucb$r_erlucb #define ucb$r_pi_pa ucb$r_paucb #include /* Define the SHM_ID type; SHM_REG contains embedded SHM_ID types */ #define UCB$M_PB_OPEN 0x1 #define UCB$M_PB_OPENING 0x2 #define UCB$M_PB_NIP 0x4 #define UCB$M_PB_START 0x8 #define UCB$M_PB_ABORTED 0x1 #define UCB$M_PB_TERMINATED 0x2 #define UCB$M_PB_RWF 0x4 #define UCB$M_PB_IWF 0x8 #define UCB$M_PB_SMSD 0x10 #define UCB$K_A_END 0 /* A_end node index */ #define UCB$K_B_END 1 /* B_end node index */ #define UCB$C_PB_LENGTH 1540 #ifdef __cplusplus /* Define structure prototypes */ struct _idb; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _pb_ucb { /* */ /* Skip the common UCB plus the PA extension */ /* */ #pragma __nomember_alignment PI_UCB ucb$r_piucb; /* */ /* Define private PB fields; */ /* */ /* */ /* The following fields are only associated with the Admin Units. */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _cbb *ucb$pq_pb_gnode_cbb; #else unsigned __int64 ucb$pq_pb_gnode_cbb; #endif #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *ucb$ps_pb_gnode_ucb_list; /* */ struct _ucb *ucb$ps_pb_template_ucb; /* pointer to the template UCB */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif SHM_ID ucb$r_pb_smci_section_id; /* SMCI Section region id */ #pragma __nomember_alignment unsigned int ucb$l_pb_status; struct _tqe *ucb$ps_pb_tqe; struct _idb *ucb$ps_pb_idb; struct _ucb *ucb$ps_pb_admin_ucb; struct _tqe *ucb$ps_pb_discovery_tqe; unsigned int ucb$l_pb_remote_gnode; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 ucb$q_pb_incarnation; #pragma __nomember_alignment __union { unsigned int ucb$l_pb_chansts; /* channel status longword */ __struct { __union { unsigned short int ucb$w_pb_chansts; /* channel status word */ __struct { unsigned ucb$v_pb_open : 1; /* channel local end open */ unsigned ucb$v_pb_opening : 1; /* ready to go to open state */ unsigned ucb$v_pb_nip : 1; /* negotiations in progress */ unsigned ucb$v_pb_start : 1; /* starting, negotiations */ unsigned ucb$v_fill_37_ : 4; } ucb$r_chan_sts_bits; } ucb$r_sts_flags; __union { unsigned short int ucb$w_pb_chanerr; /* channel status error word */ __struct { unsigned ucb$v_pb_aborted : 1; /* we were told to die */ unsigned ucb$v_pb_terminated : 1; /* we kill ourselves */ unsigned ucb$v_pb_rwf : 1; /* remque workq failure */ unsigned ucb$v_pb_iwf : 1; /* insque workq failure */ unsigned ucb$v_pb_smsd : 1; /* sh. mem. shutting down */ unsigned ucb$v_fill_38_ : 3; } ucb$r_chan_err_bits; } ucb$r_err_flags; } ucb$r_chan_sts_word; } ucb$r_chan_sts; unsigned int ucb$l_pb_lnode_idx; /* local end index A or B */ unsigned int ucb$l_pb_rnode_idx; /* remote end index A or B */ void *ucb$ps_pb_fkb; /* Pointer interrupt fork block */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_pb_nb; /* negotiation section pointer */ #else unsigned __int64 ucb$pq_pb_nb; #endif #pragma __nomember_alignment int ucb$l_pb_nb_len; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *ucb$ps_pb_smh; /* channel handle pointer */ void *ucb$ps_pb_smh_self; /* channel handle pointer self */ unsigned int ucb$l_pb_gnode [2]; /* gNode number A,B */ unsigned int ucb$l_pb_node_block [2]; /* gNode number A,B */ unsigned int ucb$l_pb_workq [4]; /* Other end work queue pointer */ unsigned int ucb$l_pb_freeq; /* Local-end Harter free head */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif SHM_ID ucb$r_pb_reg_id; /* Channel region id */ #pragma __nomember_alignment unsigned int ucb$l_pb_msg_nworkq; /* Number of work queues */ unsigned int ucb$l_pb_msg_buffers; /* Number of buffers */ unsigned int ucb$l_pb_msg_dg_size; /* buffer size */ unsigned int ucb$l_pb_msg_scshdr_size; /* scs/ppd header */ unsigned int ucb$l_pb_msg_smwe_size; /* SMWE header */ unsigned int ucb$l_pb_msg_smch_size; /* SMCH header */ unsigned int ucb$l_pb_msg_smnd_size; /* SMND header */ unsigned int ucb$l_pb_msg_netsize; /* decnet header size */ unsigned int ucb$l_pb_channel_add; /* number of channels for expansions */ unsigned int ucb$l_dbg [30]; char ucb$b_fill_39_ [4]; } PB_UCB; #if !defined(__VAXC) #define ucb$l_pb_chansts ucb$r_chan_sts.ucb$l_pb_chansts #define ucb$w_pb_chansts ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_sts_flags.ucb$w_pb_chansts #define ucb$v_pb_open ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_sts_flags.ucb$r_chan_sts_bits.ucb$v_pb_open #define ucb$v_pb_opening ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_sts_flags.ucb$r_chan_sts_bits.ucb$v_pb_opening #define ucb$v_pb_nip ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_sts_flags.ucb$r_chan_sts_bits.ucb$v_pb_nip #define ucb$v_pb_start ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_sts_flags.ucb$r_chan_sts_bits.ucb$v_pb_start #define ucb$w_pb_chanerr ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_err_flags.ucb$w_pb_chanerr #define ucb$v_pb_aborted ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_err_flags.ucb$r_chan_err_bits.ucb$v_pb_aborted #define ucb$v_pb_terminated ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_err_flags.ucb$r_chan_err_bits.ucb$v_pb_terminated #define ucb$v_pb_rwf ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_err_flags.ucb$r_chan_err_bits.ucb$v_pb_rwf #define ucb$v_pb_iwf ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_err_flags.ucb$r_chan_err_bits.ucb$v_pb_iwf #define ucb$v_pb_smsd ucb$r_chan_sts.ucb$r_chan_sts_word.ucb$r_err_flags.ucb$r_chan_err_bits.ucb$v_pb_smsd #endif /* #if !defined(__VAXC) */ /* */ /* SNAPSHOT SERVICES (aka SnappyDisk) UCB EXTENSION */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _sd_ucb { #pragma __nomember_alignment DT_UCB ucb$r_dtucb; unsigned __int64 ucb$q_sd_export_queue; /* Device queue link */ void *ucb$ps_sd_sdcb; /* snappy disk control block */ void *ucb$ps_sd_pool_config; /* Pointer to POOL_CONFIG lock */ unsigned int ucb$l_sd_family_number; /* Family number */ unsigned int ucb$l_sd_snap_number; /* Snap number */ unsigned int ucb$l_sd_dev_lockid; /* Device Lock Id */ unsigned int ucb$l_sd_uid_lockid; /* UID Lock Id */ unsigned int ucb$l_sd_spare1; /* Spare field */ unsigned int ucb$l_sd_spare2; /* Spare field */ unsigned int ucb$l_sd_spare3; /* Spare field */ unsigned int ucb$l_sd_spare4; /* Spare field */ } SD_UCB; #define UCB$C_SD_LENGTH 480 /* For SDA FORMAT */ #define UCB$S_SDUCBDEF 480 #define ucb$ps_sdmb ucb$l_dccb /* */ /* SCSI/FibreChannel Disk Class Driver UCB Extension */ /* */ #include #define UCB$M_REMOVABLE 0x1 #define UCB$M_FIRST_ATTN_SEEN 0x2 #define UCB$M_SPINUP_INPROG 0x4 #define UCB$M_DISCONNECT 0x8 #define UCB$M_SYNCHRONOUS 0x10 #define UCB$M_MODE_SENSE_PAG1 0x20 #define UCB$M_MODE_SENSE_PAG10 0x40 #define UCB$M_DISABL_ERRLOG 0x80 #define UCB$M_OUT_OF_REV 0x100 #define UCB$M_HWL 0x200 #define UCB$M_FLOPPY 0x400 #define UCB$M_FORMAT 0x800 #define UCB$M_NOREASSIGN 0x1000 #define UCB$M_DD_BYPASS 0x2000 #define UCB$M_HBS_CHECK 0x4000 #define UCB$M_FLOPPY_MEDIA 0x18000 #define UCB$M_CDROM 0x20000 #define UCB$M_CD_VALID 0x40000 #define UCB$M_RAID 0x80000 #define UCB$M_PORT_CMDQ 0x100000 #define UCB$M_CMDQ 0x200000 #define UCB$M_OPTICAL 0x400000 #define UCB$M_WORM 0x800000 #define UCB$M_DDR 0x1000000 #define UCB$M_PORT_AEN 0x2000000 #define UCB$M_PORT_AUTOSENSE 0x4000000 #define UCB$M_TENBYTE 0x8000000 #define UCB$M_CLUSQ 0x10000000 #define UCB$M_HFAILOV 0x20000000 #define UCB$M_NO_FUA 0x40000000 #define UCB$M_NO_10BYTE_RW 0x80000000 #define UCB$M_CB_NOCMDQ 0x1 #define UCB$M_CB_INIT 0x2 #define UCB$M_CB_BBR_IN_PROG 0x4 #define UCB$M_CB_MNTVERIP 0x8 #define UCB$M_CB_KP_STARTIO 0x10 #define UCB$M_CB_CHECK_CONDITION 0x20 #define UCB$M_CB_QUEUE_FULL_EVNT 0x40 #define UCB$M_CB_BUS_RESET 0x80 #define UCB$M_CB_NO_SEND_CREDITS 0x100 #define UCB$M_CB_NO_CMD_BITS 0x200 #define UCB$M_CB_SINGLE_RW 0x400 #define UCB$M_CB_SINGLE_DC 0x800 #define UCB$M_CB_SINGLE_DSE 0x1000 #define UCB$M_CB_FORCE_ERROR 0x2000 #define UCB$M_CB_NOP 0x4000 #define UCB$M_CB_AVAILABLE 0x8000 #define UCB$M_CB_UNLOAD 0x10000 #define UCB$M_CB_PACKACK 0x20000 #define UCB$M_CB_DIAGNOSE 0x40000 #define UCB$M_CB_FORMAT 0x80000 #define UCB$M_CB_AUDIO 0x100000 #define UCB$M_CB_BUSY 0x200000 #define UCB$M_CB_LOCAL_DRAIN 0x400000 #define UCB$M_CB_LINK 0x800000 #define UCB$M_CB_PATH_VERIFY 0x1000000 #define UCB$K_DK_NUM_LONGWORDS_DIAGNOSE 6 #define UCB$M_DTESET 0x1 #define UCB$M_XPLOOK 0x2 #define UCB$M_MULTIBUS_CAP 0x4 #define UCB$M_MULTIBUS_ENA 0x8 #define UCB$M_SECTORS_VIA_MS 0x10 #define UCB$M_TRK_CYL_VIA_MS 0x20 #define UCB$M_PR_PREEMPT 0x80 #define UCB$M_NOTREADY 0x100 #define UCB$M_CD_2K_BLOCKSIZE 0x200 #define UCB$M_DK_FIBRE 0x1 #define UCB$M_DK_HSG 0x2 #define UCB$M_DK_HSV 0x4 #define UCB$M_DK_XP 0x8 #define UCB$M_DK_ASYM_ACC_STATE 0xF0000 #define UCB$M_DK_TPG_NUM_VALID 0x100000 #define UCB$M_DK_RPT_TPG_SUPP 0x200000 #define UCB$M_DK_SET_TPG_SUPP 0x400000 #define UCB$M_DK_SAS 0x1 #define UCB$M_DK_SAS_DEV 0x2 #define UCB$M_DK_SAS_SATA_DEV 0x4 #define UCB$M_DK_SAS_IR_VOL 0x8 #define UCB$M_DK_SAS_RAID_VOL 0x10 #define UCB$C_DK_UCBLEN 1352 #define UCB$C_DK_LENGTH 1352 /* (For SDA) */ #ifdef __cplusplus /* Define structure prototypes */ struct _scdrp; struct _kpb; struct _scdt; struct _irp; struct _dklog_header; struct _spl; struct _pte; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _dk_ucb { #pragma __nomember_alignment MSCP_UCB ucb$r_mscpucb; __union { unsigned int ucb$l_dk_flags; __struct { unsigned ucb$v_removable : 1; /* Media is removeable */ unsigned ucb$v_first_attn_seen : 1; /* First UNIT ATTENTION CHECK CONDITION has been seen */ unsigned ucb$v_spinup_inprog : 1; /* Disk is spinning up if set */ unsigned ucb$v_disconnect : 1; /* Device supports (bus-level) disconnects */ unsigned ucb$v_synchronous : 1; /* Device supports synchronous data transfers */ unsigned ucb$v_mode_sense_pag1 : 1; /* */ unsigned ucb$v_mode_sense_pag10 : 1; /* */ unsigned ucb$v_disabl_errlog : 1; /* */ unsigned ucb$v_out_of_rev : 1; /* */ unsigned ucb$v_hwl : 1; /* Hardware Write Locked */ unsigned ucb$v_floppy : 1; /* This is a floppy disk */ unsigned ucb$v_format : 1; /* */ unsigned ucb$v_noreassign : 1; /* */ unsigned ucb$v_dd_bypass : 1; /* */ unsigned ucb$v_hbs_check : 1; /* */ unsigned ucb$v_floppy_media : 2; /* */ unsigned ucb$v_cdrom : 1; /* */ unsigned ucb$v_cd_valid : 1; /* */ unsigned ucb$v_raid : 1; /* */ unsigned ucb$v_port_cmdq : 1; /* */ unsigned ucb$v_cmdq : 1; /* Disk supports SCSI Command Queuing */ unsigned ucb$v_optical : 1; /* Optical disk */ unsigned ucb$v_worm : 1; /* Write-Once, Read-Many */ unsigned ucb$v_ddr : 1; /* */ unsigned ucb$v_port_aen : 1; /* Underlying port supports Asynchronous Event Notification */ unsigned ucb$v_port_autosense : 1; /* Underlying port performs REQUEST SENSE automatically */ unsigned ucb$v_tenbyte : 1; /* */ unsigned ucb$v_clusq : 1; /* */ unsigned ucb$v_hfailov : 1; /* */ unsigned ucb$v_no_fua : 1; /* Forced Unit Access not supported */ unsigned ucb$v_no_10byte_rw : 1; /* Device does not support 10-byte Reads or Writes */ } ucb$r_fill_41_; } ucb$r_fill_40_; __union { unsigned int ucb$l_dk_class_busy; /* Class Busy bits show details about why UCB$V_BSY is set */ __struct { unsigned ucb$v_cb_nocmdq : 1; /* */ unsigned ucb$v_cb_init : 1; /* */ unsigned ucb$v_cb_bbr_in_prog : 1; /* */ unsigned ucb$v_cb_mntverip : 1; /* */ unsigned ucb$v_cb_kp_startio : 1; /* */ unsigned ucb$v_cb_check_condition : 1; /* */ unsigned ucb$v_cb_queue_full_evnt : 1; /* */ unsigned ucb$v_cb_bus_reset : 1; /* */ unsigned ucb$v_cb_no_send_credits : 1; /* */ unsigned ucb$v_cb_no_cmd_bits : 1; /* */ unsigned ucb$v_cb_single_rw : 1; /* */ unsigned ucb$v_cb_single_dc : 1; /* */ unsigned ucb$v_cb_single_dse : 1; /* */ unsigned ucb$v_cb_force_error : 1; /* */ unsigned ucb$v_cb_nop : 1; /* */ unsigned ucb$v_cb_available : 1; /* */ unsigned ucb$v_cb_unload : 1; /* */ unsigned ucb$v_cb_packack : 1; /* */ unsigned ucb$v_cb_diagnose : 1; /* */ unsigned ucb$v_cb_format : 1; /* */ unsigned ucb$v_cb_audio : 1; /* */ unsigned ucb$v_cb_busy : 1; /* */ unsigned ucb$v_cb_local_drain : 1; /* */ unsigned ucb$v_cb_link : 1; /* */ unsigned ucb$v_cb_path_verify : 1; /* */ unsigned ucb$v_fill_52_ : 7; } ucb$r_fill_43_; } ucb$r_fill_42_; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif __union { /* NormalPath Active-IRP list */ #pragma __nomember_alignment unsigned __int64 ucb$q_dk_irp_list; /* */ __struct { /* */ void *ucb$ps_dk_active_irp_qfl; /* */ void *ucb$ps_dk_active_irp_qbl; /* */ } ucb$r_dk_active_irp_queue; /* */ } ucb$r_dk_irp_list_union; /* */ void *ucb$l_dk_flush_ioqfl; /* */ void *ucb$l_dk_flush_ioqbl; /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif __union { /* DataCheck Wait Queue */ #pragma __nomember_alignment unsigned __int64 ucb$q_dk_dc_wait_list; /* */ __struct { /* */ void *ucb$ps_dk_dc_wait_qfl; /* */ void *ucb$ps_dk_dc_wait_qbl; /* */ } ucb$r_dk_dc_wait_queue; /* */ } ucb$r_dk_dc_wait_union; /* */ __union { /* Queue of SCDRPs waiting for all I/O in front of them to drain */ unsigned __int64 ucb$q_dk_drain_list; /* */ __struct { /* */ void *ucb$ps_dk_drain_qfl; /* */ void *ucb$ps_dk_drain_qbl; /* */ } ucb$r_dk_drain_queue; /* */ } ucb$r_dk_drain_union; /* */ int ucb$is_dk_drain_count; /* Number of SCDRPs on the Drain Queue */ int ucb$l_dk_queued_io_count; /* Number of IRPs on the Active IRP list */ struct _scdrp *ucb$ps_dk_scdrp; /* */ struct _kpb *ucb$ps_dk_unitinit_kpb; /* */ struct _scdt *ucb$ps_dk_scdt; /* SCSI Connection Descriptor Table address */ char ucb$b_fill_53_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { #pragma __nomember_alignment unsigned __int64 ucb$q_dk_cur_lbn_64; /* Current LBN (64-bit) */ unsigned int ucb$l_dk_cur_lbn; /* (32-bit) */ } ucb$r_dk_cur_lbn_overlay; int ucb$l_dk_fairness_cnt; /* */ unsigned int ucb$l_dk_hw_rev; /* */ unsigned int ucb$l_dk_error_type; /* */ unsigned int ucb$l_dk_err_mask; /* */ unsigned int ucb$l_dk_vms_status; /* */ unsigned int ucb$l_dk_disable_ddr; unsigned int ucb$l_dk_initmo; /* */ void *ucb$ps_dk_aucb_addr; /* */ void *ucb$ps_dk_format_param; /* */ void *ucb$ps_dk_save_conn_char; /* */ unsigned int ucb$r_dk_diagnose [6]; short int ucb$w_dk_readl_len; /* */ short int ucb$w_dk_phase_tmo; /* Phase-Change Timeout in seconds */ short int ucb$w_dk_disc_tmo; /* Disconnect Timeout in seconds */ short int ucb$w_dk_block_size; /* Block size in bytes */ char ucb$b_dk_lun; /* Logical Unit Number */ char ucb$b_dk_seek_dir; /* */ char ucb$b_dk_scsi_version; /* */ char ucb$b_dk_rw_retry; /* */ char ucb$b_dk_reassign_retry; /* */ char ucb$b_dk_rewrite_retry; /* */ char ucb$b_dk_ready_retry; /* */ /* For CD-ROMS, Sub-Channel Q - Media Catalog Data (UPC) */ char ucb$b_dk_mcn_scdata [32]; char ucb$b_fill_54_; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif char ucb$r_dk_sense_info [10]; #pragma __nomember_alignment char ucb$b_dk_sense_len [2]; /* Error Recovery parameters */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif char ucb$r_dk_recov_par [16]; /* Error Recovery changeable parameters */ char ucb$r_dk_recov_cpar [16]; /* Control Mode parameters */ char ucb$r_dk_ctrl_mode [8]; /* Control Mode changeable parameters */ char ucb$r_dk_ctrl_mode_cpar [8]; #pragma __nomember_alignment int ucb$l_dk_qdepth; /* Current maximum queue depth for this device (NormalPath) */ int ucb$l_dk_qdepth_turns; /* How many times queue depth has been changed */ int ucb$l_dk_read_count; /* Number of NormalPath reads done */ int ucb$l_dk_write_count; /* Number of NormalPath writes done */ int ucb$l_dk_other_count; /* Number of non-Read & non-Write I/O functions */ int ucb$l_dk_fp_rw_count; /* Number of FastPath I/Os (R/W implied) */ int ucb$l_dk_fp_err_count; /* Number of other-than SS$_CLASSUPER FastPath completions */ int ucb$l_dk_read_xlen_hist; /* Pointer to Read histogram pool */ int ucb$l_dk_write_xlen_hist; /* Pointer to Write histogram pool */ int ucb$l_dk_xlen_hist; /* Pointer to total histogram pool */ int ucb$l_dk_xlen_hist_cycle; /* # I/Os per histogram turnover */ struct _irp *ucb$ps_dk_busy_bit_irp; /* Also referred to as the Golden IRP */ struct _dklog_header *ucb$l_dk_top_of_ring; /* Pointer to first byte of ring buffer */ struct _dklog_header *ucb$l_dk_ring_pointer; /* Pointer to next ring buffer entry */ int ucb$l_dk_ring_counter; /* Number of ring buffer entries left before wrapping is required */ /* These fields count reasons for our returning SS$_MEDOFL to help us diagnose excessive Mount Verifies */ int ucb$l_dk_timeout; /* I/O Timed Out */ int ucb$l_dk_drverr; /* SS$_DRVERR returned from port */ int ucb$l_dk_ctrlerr; /* SS$_CTRLERR ... */ int ucb$l_dk_devoffline; /* SS$_DEVOFFLINE ... */ int ucb$l_dk_unit_attention; /* Unit Attention CHECK CONDITION */ int ucb$l_dk_vendor_specific; /* */ int ucb$l_dk_copy_aborted; /* */ int ucb$l_dk_not_ready; /* */ int ucb$l_dk_reserved; /* */ int ucb$l_dk_medofl; /* */ int ucb$l_dk_unexplained; /* */ int ucb$l_dk_inquiry_data [9]; /* Overflow from DK_FLAGS */ __union { unsigned int ucb$l_dk_flags2; __struct { unsigned ucb$v_dteset : 1; /* */ unsigned ucb$v_xplook : 1; /* */ unsigned ucb$v_multibus_cap : 1; /* */ unsigned ucb$v_multibus_ena : 1; /* */ unsigned ucb$v_sectors_via_ms : 1; /* */ unsigned ucb$v_trk_cyl_via_ms : 1; /* */ unsigned ucb$v_not_used : 1; /* nothing uses this */ unsigned ucb$v_pr_preempt : 1; /* Persistent Reservation Preemption in Progress */ unsigned ucb$v_notready : 1; /* Last command returned NOT_READY key */ unsigned ucb$v_cd_2k_blocksize : 1; /* CD/DVD using 2K block mode */ unsigned ucb$v_fill_55_ : 6; } ucb$r_fill_45_; } ucb$r_fill_44_; /* SCSIPATH structure */ char ucb$b_fill_56_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif char ucb$r_dk_path_info [24]; /* Obsolete (X-116) */ #pragma __nomember_alignment char ucb$r_dk_old_dsplypath_id [28]; /* Obsolete (X-116) */ int ucb$l_dk_get_path_info_retries; /* */ /* FastPath Attention flag - set by NormalPath code (while holding */ /* the portlock) to get the FastPath code's attention */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 ucb$q_dk_fp_attn; /* FibreChannel-disk boolean */ __union { #pragma __nomember_alignment unsigned __int64 ucb$q_dk_fibre; __struct { unsigned ucb$v_dk_fibre : 1; unsigned ucb$v_dk_hsg : 1; unsigned ucb$v_dk_hsv : 1; unsigned ucb$v_dk_xp : 1; unsigned ucb$v_fill_57_ : 4; } ucb$r_fill_47_; } ucb$r_fill_46_; /* Queue of active FastPath IRPs, synchronized with port spinlock */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { /* */ #pragma __nomember_alignment unsigned __int64 ucb$q_dk_fp_irp_list; /* */ __struct { /* */ void *ucb$ps_dk_fp_irp_qfl; /* */ void *ucb$ps_dk_fp_irp_qbl; /* */ } ucb$r_dk_fp_irp_queue; /* */ } ucb$r_dk_fp_irp_list_union; /* */ /* Count of active FastPath IRPs, synchronized with port spinlock */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 ucb$q_dk_fp_irp_count; /* */ /* FastPath Start I/O flag, synchronized with fork spinlock, used to avoid excesssive stack depth and avoid FORKs */ unsigned __int64 ucb$q_dk_fp_start_io; /* UCB$L_DISC_TMO + UCB$L_PHASE_TMO summed in this field to avoid unnecessary per-I/O operation */ #pragma __nomember_alignment struct _spl *ucb$ps_dk_spl_fork; unsigned int ucb$l_dk_fp_timeout; struct _spl *ucb$ps_dk_spl_port; unsigned int ucb$l_dk_log_flag; /* Logging flags/controls */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pte *ucb$pq_dk_datacheck_spte; /* per-ucb S2 space spte */ #else unsigned __int64 ucb$pq_dk_datacheck_spte; #endif #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_dk_datacheck_sva; /* and her address */ #else unsigned __int64 ucb$pq_dk_datacheck_sva; #endif int ucb$l_dk_irp_wait_4_kpb; /* If nonzero, IRP in "fork wait" for a KPB */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *ucb$ps_dk_qdepth_table; /* Pointer to optional Size vs. Maximum queue depth table */ struct _irp *ucb$ps_dk_quorum_irp; /* Pointer to pending Quorum IRP */ char ucb$b_fill_58_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ struct _pte *ucb$pq_dk_buffio_spte; /* Pointer to temp DMA Buffer PTE */ #else unsigned __int64 ucb$pq_dk_buffio_spte; #endif #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_dk_buffio_sva; /* Pointer to temp DMA Buffer */ #else unsigned __int64 ucb$pq_dk_buffio_sva; #endif __union { unsigned int ucb$l_dk_tpg_info; /* Target port group info for Active-Active */ __struct { short int ucb$w_dk_tpg_num; /* Target port group number */ unsigned ucb$v_dk_asym_acc_state : 4; /* Asymmetric access state */ unsigned ucb$v_dk_tpg_num_valid : 1; /* TPG num is valid */ unsigned ucb$v_dk_rpt_tpg_supp : 1; /* RPT TARG PORT GRPS cmd supported */ unsigned ucb$v_dk_set_tpg_supp : 1; /* SET TARG PORT GRPS cmd supported */ unsigned ucb$v_fill_59_ : 1; } ucb$r_fill_49_; } ucb$r_fill_48_; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif struct _dklog_header *ucb$l_dk_ua_ring_pointer; /* Used by SDA's MKLOG */ /* Display path size for DK, MK, and GK devices (X-116) */ char ucb$r_dk_dsplypath_id [292]; /* Moved here in X-116 */ /* SAS device boolean */ char ucb$b_fill_60_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { #pragma __nomember_alignment unsigned __int64 ucb$q_dk_sas; __struct { unsigned ucb$v_dk_sas : 1; unsigned ucb$v_dk_sas_dev : 1; unsigned ucb$v_dk_sas_sata_dev : 1; unsigned ucb$v_dk_sas_ir_vol : 1; unsigned ucb$v_dk_sas_raid_vol : 1; unsigned ucb$v_fill_61_ : 3; } ucb$r_fill_51_; } ucb$r_fill_50_; } DK_UCB; #if !defined(__VAXC) #define ucb$l_dk_flags ucb$r_fill_40_.ucb$l_dk_flags #define ucb$v_removable ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_removable #define ucb$v_first_attn_seen ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_first_attn_seen #define ucb$v_spinup_inprog ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_spinup_inprog #define ucb$v_disconnect ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_disconnect #define ucb$v_synchronous ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_synchronous #define ucb$v_mode_sense_pag1 ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_mode_sense_pag1 #define ucb$v_mode_sense_pag10 ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_mode_sense_pag10 #define ucb$v_disabl_errlog ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_disabl_errlog #define ucb$v_out_of_rev ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_out_of_rev #define ucb$v_hwl ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_hwl #define ucb$v_floppy ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_floppy #define ucb$v_format ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_format #define ucb$v_noreassign ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_noreassign #define ucb$v_dd_bypass ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_dd_bypass #define ucb$v_hbs_check ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_hbs_check #define ucb$v_floppy_media ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_floppy_media #define ucb$v_cdrom ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_cdrom #define ucb$v_cd_valid ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_cd_valid #define ucb$v_raid ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_raid #define ucb$v_port_cmdq ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_port_cmdq #define ucb$v_cmdq ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_cmdq #define ucb$v_optical ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_optical #define ucb$v_worm ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_worm #define ucb$v_ddr ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_ddr #define ucb$v_port_aen ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_port_aen #define ucb$v_port_autosense ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_port_autosense #define ucb$v_tenbyte ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_tenbyte #define ucb$v_clusq ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_clusq #define ucb$v_hfailov ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_hfailov #define ucb$v_no_fua ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_no_fua #define ucb$v_no_10byte_rw ucb$r_fill_40_.ucb$r_fill_41_.ucb$v_no_10byte_rw #define ucb$l_dk_class_busy ucb$r_fill_42_.ucb$l_dk_class_busy #define ucb$v_cb_nocmdq ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_nocmdq #define ucb$v_cb_init ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_init #define ucb$v_cb_bbr_in_prog ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_bbr_in_prog #define ucb$v_cb_mntverip ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_mntverip #define ucb$v_cb_kp_startio ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_kp_startio #define ucb$v_cb_check_condition ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_check_condition #define ucb$v_cb_queue_full_evnt ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_queue_full_evnt #define ucb$v_cb_bus_reset ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_bus_reset #define ucb$v_cb_no_send_credits ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_no_send_credits #define ucb$v_cb_no_cmd_bits ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_no_cmd_bits #define ucb$v_cb_single_rw ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_single_rw #define ucb$v_cb_single_dc ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_single_dc #define ucb$v_cb_single_dse ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_single_dse #define ucb$v_cb_force_error ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_force_error #define ucb$v_cb_nop ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_nop #define ucb$v_cb_available ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_available #define ucb$v_cb_unload ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_unload #define ucb$v_cb_packack ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_packack #define ucb$v_cb_diagnose ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_diagnose #define ucb$v_cb_format ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_format #define ucb$v_cb_audio ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_audio #define ucb$v_cb_busy ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_busy #define ucb$v_cb_local_drain ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_local_drain #define ucb$v_cb_link ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_link #define ucb$v_cb_path_verify ucb$r_fill_42_.ucb$r_fill_43_.ucb$v_cb_path_verify #define ucb$q_dk_irp_list ucb$r_dk_irp_list_union.ucb$q_dk_irp_list #define ucb$r_dk_active_irp_queue ucb$r_dk_irp_list_union.ucb$r_dk_active_irp_queue #define ucb$ps_dk_active_irp_qfl ucb$r_dk_active_irp_queue.ucb$ps_dk_active_irp_qfl #define ucb$ps_dk_active_irp_qbl ucb$r_dk_active_irp_queue.ucb$ps_dk_active_irp_qbl #define ucb$q_dk_dc_wait_list ucb$r_dk_dc_wait_union.ucb$q_dk_dc_wait_list #define ucb$r_dk_dc_wait_queue ucb$r_dk_dc_wait_union.ucb$r_dk_dc_wait_queue #define ucb$ps_dk_dc_wait_qfl ucb$r_dk_dc_wait_queue.ucb$ps_dk_dc_wait_qfl #define ucb$ps_dk_dc_wait_qbl ucb$r_dk_dc_wait_queue.ucb$ps_dk_dc_wait_qbl #define ucb$q_dk_drain_list ucb$r_dk_drain_union.ucb$q_dk_drain_list #define ucb$r_dk_drain_queue ucb$r_dk_drain_union.ucb$r_dk_drain_queue #define ucb$ps_dk_drain_qfl ucb$r_dk_drain_queue.ucb$ps_dk_drain_qfl #define ucb$ps_dk_drain_qbl ucb$r_dk_drain_queue.ucb$ps_dk_drain_qbl #define ucb$q_dk_cur_lbn_64 ucb$r_dk_cur_lbn_overlay.ucb$q_dk_cur_lbn_64 #define ucb$l_dk_cur_lbn ucb$r_dk_cur_lbn_overlay.ucb$l_dk_cur_lbn #define ucb$l_dk_flags2 ucb$r_fill_44_.ucb$l_dk_flags2 #define ucb$v_dteset ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_dteset #define ucb$v_xplook ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_xplook #define ucb$v_multibus_cap ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_multibus_cap #define ucb$v_multibus_ena ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_multibus_ena #define ucb$v_sectors_via_ms ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_sectors_via_ms #define ucb$v_trk_cyl_via_ms ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_trk_cyl_via_ms #define ucb$v_pr_preempt ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_pr_preempt #define ucb$v_notready ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_notready #define ucb$v_cd_2k_blocksize ucb$r_fill_44_.ucb$r_fill_45_.ucb$v_cd_2k_blocksize #define ucb$q_dk_fibre ucb$r_fill_46_.ucb$q_dk_fibre #define ucb$v_dk_fibre ucb$r_fill_46_.ucb$r_fill_47_.ucb$v_dk_fibre #define ucb$v_dk_hsg ucb$r_fill_46_.ucb$r_fill_47_.ucb$v_dk_hsg #define ucb$v_dk_hsv ucb$r_fill_46_.ucb$r_fill_47_.ucb$v_dk_hsv #define ucb$v_dk_xp ucb$r_fill_46_.ucb$r_fill_47_.ucb$v_dk_xp #define ucb$q_dk_fp_irp_list ucb$r_dk_fp_irp_list_union.ucb$q_dk_fp_irp_list #define ucb$r_dk_fp_irp_queue ucb$r_dk_fp_irp_list_union.ucb$r_dk_fp_irp_queue #define ucb$ps_dk_fp_irp_qfl ucb$r_dk_fp_irp_queue.ucb$ps_dk_fp_irp_qfl #define ucb$ps_dk_fp_irp_qbl ucb$r_dk_fp_irp_queue.ucb$ps_dk_fp_irp_qbl #define ucb$l_dk_tpg_info ucb$r_fill_48_.ucb$l_dk_tpg_info #define ucb$w_dk_tpg_num ucb$r_fill_48_.ucb$r_fill_49_.ucb$w_dk_tpg_num #define ucb$v_dk_asym_acc_state ucb$r_fill_48_.ucb$r_fill_49_.ucb$v_dk_asym_acc_state #define ucb$v_dk_tpg_num_valid ucb$r_fill_48_.ucb$r_fill_49_.ucb$v_dk_tpg_num_valid #define ucb$v_dk_rpt_tpg_supp ucb$r_fill_48_.ucb$r_fill_49_.ucb$v_dk_rpt_tpg_supp #define ucb$v_dk_set_tpg_supp ucb$r_fill_48_.ucb$r_fill_49_.ucb$v_dk_set_tpg_supp #define ucb$q_dk_sas ucb$r_fill_50_.ucb$q_dk_sas #define ucb$v_dk_sas ucb$r_fill_50_.ucb$r_fill_51_.ucb$v_dk_sas #define ucb$v_dk_sas_dev ucb$r_fill_50_.ucb$r_fill_51_.ucb$v_dk_sas_dev #define ucb$v_dk_sas_sata_dev ucb$r_fill_50_.ucb$r_fill_51_.ucb$v_dk_sas_sata_dev #define ucb$v_dk_sas_ir_vol ucb$r_fill_50_.ucb$r_fill_51_.ucb$v_dk_sas_ir_vol #define ucb$v_dk_sas_raid_vol ucb$r_fill_50_.ucb$r_fill_51_.ucb$v_dk_sas_raid_vol #endif /* #if !defined(__VAXC) */ /* */ /* SCSI Tape Class Driver UCB Extension */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _dklog_header; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _mk_ucb { #pragma __nomember_alignment char ucb$b_mk_lcl_tape [416]; /* Standard tape UCB fields */ int ucb$l_mk_local_fields1 [110]; /* Legacy Mkdriver extensions */ char ucb$r_mk_old_dsplypath_id [28]; /* Obsolete (X-116) */ int ucb$l_mk_local_fields2 [2]; /* More local Mkdriver extensions */ struct _dklog_header *ucb$l_mk_ring_pointer; /* Used by SDA's MKLOG */ unsigned int ucb$l_mk_log_flag; /* Used by SDA's MKLOG */ struct _dklog_header *ucb$l_mk_ua_ring_pointer; /* Used by SDA's MKLOG */ char ucb$r_mk_dsplypath_id [292]; /* Pathname, used by SDA's MKLOG (moved in X-116) */ char ucb$b_fill_62_ [4]; } MK_UCB; /* */ /* SCSI Generic Class Driver UCB Extension */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _dklog_header; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _gk_ucb { #pragma __nomember_alignment MSCP_UCB ucb$r_mscpucb; /* Standard generic SCSI UCB fields */ int ucb$l_gk_local_fields1 [18]; /* Legacy Gkdriver extensions */ char ucb$r_gk_old_dsplypath_id [28]; /* Obsolete (X-116) */ struct _dklog_header *ucb$l_gk_ring_pointer; /* Used by SDA's GKLOG */ unsigned int ucb$l_gk_log_flag; /* Used by SDA's GKLOG */ char ucb$r_gk_dsplypath_id [292]; /* Pathname, used by SDA's GKLOG (moved in X-116) */ } GK_UCB; /* */ /* DECram (MD) Disk Class Driver UCB Extension */ /* */ #define UCB$M_MD_MEMORY 0x1 #define UCB$M_MD_UCB_FIP 0x2 #define UCB$M_MD_UPDATINGFILE 0x4 #define UCB$M_MD_INTIO 0x8 #define UCB$M_MD_DTREGION 0x10 #define UCB$M_MD_DTENTRY_CRE 0x20 #define UCB$M_MD_DTENTRY_MOD 0x40 #define UCB$M_MD_UPDATINGHOME 0x80 #define UCB$M_MD_UPDATINGFMT 0x100 #define UCB$M_MD_RSVD1 0x200 #define UCB$K_MD_LENGTH 844 #define UCB$C_MD_LENGTH 844 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _md_ucb { #pragma __nomember_alignment MSCP_UCB ucb$r_mscpucb; __union { __struct { unsigned ucb$v_md_memory : 1; /* memory region allocated */ unsigned ucb$v_md_ucb_fip : 1; /* io$_format in progress */ unsigned ucb$v_md_updatingfile : 1; /* mdrecover.dat update in progress */ unsigned ucb$v_md_intio : 1; /* internal IO to create new disk */ unsigned ucb$v_md_dtregion : 1; /* disktab region created */ unsigned ucb$v_md_dtentry_cre : 1; /* disktab entry created */ unsigned ucb$v_md_dtentry_mod : 1; /* disktab entry modified */ unsigned ucb$v_md_updatinghome : 1; /* homeblock update in progress */ unsigned ucb$v_md_updatingfmt : 1; /* format update in progress */ unsigned ucb$v_md_rsvd1 : 1; /* */ unsigned ucb$v_fill_63_ : 6; } ucb$r_status_bits; unsigned int ucb$l_md_status; } ucb$r_md_status_overlay; unsigned int ucb$l_md_lbn; /* irp$l_media */ unsigned int ucb$l_md_homelbn; /* homeblock LBN */ unsigned int ucb$l_md_ramfunction; /* irp$l_func */ unsigned int ucb$l_md_ramcontrol; /* irp$q_qio_p2 (bits 0-31) */ unsigned int ucb$l_md_ramrad; /* irp$l_qio_p6 */ unsigned __int64 ucb$q_md_ramcapacity; /* irp$q_qio_p1 */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_disktab_sva; /* disktab section address */ #else unsigned __int64 ucb$pq_md_disktab_sva; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_disktab_pte; /* debug */ #else unsigned __int64 ucb$pq_md_disktab_pte; #endif #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif SHM_ID ucb$r_md_disktab_shm_reg_id; /* disktab gsection region id */ #pragma __nomember_alignment unsigned int ucb$l_md_disktab_len; /* disktab gsection length */ unsigned int ucb$l_md_frsterr_status; /* last error status */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_disk_sva; /* disk section address */ #else unsigned __int64 ucb$pq_md_disk_sva; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_disk_pte; /* disk section address */ #else unsigned __int64 ucb$pq_md_disk_pte; #endif #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif SHM_ID ucb$r_md_disk_reg_id; /* disk gsection region id */ #pragma __nomember_alignment unsigned int ucb$l_md_disk_len; /* disk length in pages */ unsigned int ucb$l_md_lasterr_status; /* last error status */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_user_buffer_sva; /* user buffer VA */ #else unsigned __int64 ucb$pq_md_user_buffer_sva; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_user_buffer_pte; /* user buffer pte */ #else unsigned __int64 ucb$pq_md_user_buffer_pte; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_gnodes_cbb; /* gnode CBB bitmap pointer */ #else unsigned __int64 ucb$pq_md_gnodes_cbb; #endif unsigned int ucb$l_md_pfns; /* number of pfns allocated */ #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif void *ucb$l_md_create_disk_link; /* link to next disk to create */ __struct { /* embebed Lock LKSB */ unsigned short int ucb$w_md_lock_status; /* lock status */ unsigned short int ucb$w_md_lock_rsvd; unsigned int ucb$l_md_lock_lockid; /* lock lock ID */ char ucb$t_md_lock_valblk [12]; /* lock value block */ } ucb$r_md_lksb_lock; char ucb$t_md_volname [12]; /* disk label */ __struct { /* embebed Perm LKSB */ unsigned short int ucb$w_md_perm_status; /* perm status */ unsigned short int ucb$w_md_perm_rsvd; unsigned int ucb$l_md_perm_lockid; /* perm lock ID */ char ucb$t_md_perm_valblk [12]; /* perm value block */ } ucb$r_md_lksb_perm; unsigned char ucb$b_md_nomem_retrycnt; /* no memory retry count */ unsigned char ucb$b_md_nofork_retrycnt; /* no fork retry count */ unsigned char ucb$b_md_noastcln_retrycnt; /* no AST clean retry count */ unsigned char ucb$b_md_rsvd_retrycnt; /* rsvd retry count */ unsigned __int64 ucb$q_md_reserved1; /* reserved quadword */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { unsigned char ucb$r_fkb [48]; /* Embedded FKB$ */ #pragma __nomember_alignment __struct { __union { unsigned int ucb$l_md_dtlockfqfkb; /* FORK QUEUE FORWARD LINK lw */ struct _fkb *ucb$l_md_pdtlockfqfkb; /* FORK QUEUE FORWARD LINK ptr */ } ucb$r_md_fqfl_overlay1; struct _fkb *ucb$l_md_pdtlockbqfkb; /*FORK QUEUE BACKWARD LINK */ unsigned short int ucb$w_md_dtlckfkbsize; /*SIZE OF UCB IN BYTES */ unsigned char ucb$b_md_dtlckfkbtype; /*STRUCTURE TYPE FOR UCB */ unsigned char ucb$b_md_dtlckfkbflck; /* Fork lock number index */ void (*ucb$l_md_pdtlckfkbfpc)(); /*FORK PC */ __int64 ucb$q_md_dtlckfkbfr3; /*FORK R3 */ __int64 ucb$q_md_dtlckfkbfr4; /*FORK R4 */ } ucb$r_fkb_overlay; } ucb$r_md_fkb; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif __union { unsigned char ucb$r_fkb2 [48]; /* Embedded FKB$ */ #pragma __nomember_alignment __struct { __union { unsigned int ucb$l_md_updatefilefqfkb; /* FORK QUEUE FORWARD LINK lw */ struct _fkb *ucb$l_md_pupdatefilefqfkb; /* FORK QUEUE FORWARD LINK ptr */ } ucb$r_md_fqfl_overlay2; struct _fkb *ucb$l_md_pupdatefilebqfkb; /*FORK QUEUE BACKWARD LINK */ unsigned short int ucb$w_md_updtflfkbsize; /*SIZE OF UCB IN BYTES */ unsigned char ucb$b_md_updtflfkbtype; /*STRUCTURE TYPE FOR UCB */ unsigned char ucb$b_md_updtflfkbflck; /* Fork lock number index */ void (*ucb$l_md_pupdtflfkbfpc)(); /*FORK PC */ __int64 ucb$q_md_updtflfkbfr3; /*FORK R3 */ __int64 ucb$q_md_updtflfkbfr4; /*FORK R4 */ } ucb$r_fkb_overlay2; } ucb$r_md_fkb2; __union { unsigned int ucb$l_md_dbg [10]; /* debug */ unsigned __int64 ucb$q_md_qdbg [5]; /* debug */ } ucb$r_md_dbg_overlay; #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_src; /* debug */ #else unsigned __int64 ucb$pq_md_src; #endif #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __long /* And set ptr size default to 64-bit pointers */ void *ucb$pq_md_dst; /* debug */ #else unsigned __int64 ucb$pq_md_dst; #endif unsigned int ucb$l_md_debuglevel; /* debug */ unsigned int ucb$l_md_version; /* reserved longword */ unsigned int ucb$l_md_reserved2; /* reserved longword */ char ucb$b_fill_64_ [4]; } MD_UCB; #if !defined(__VAXC) #define ucb$v_md_memory ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_memory #define ucb$v_md_ucb_fip ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_ucb_fip #define ucb$v_md_updatingfile ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_updatingfile #define ucb$v_md_intio ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_intio #define ucb$v_md_dtregion ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_dtregion #define ucb$v_md_dtentry_cre ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_dtentry_cre #define ucb$v_md_dtentry_mod ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_dtentry_mod #define ucb$v_md_updatinghome ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_updatinghome #define ucb$v_md_updatingfmt ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_updatingfmt #define ucb$v_md_rsvd1 ucb$r_md_status_overlay.ucb$r_status_bits.ucb$v_md_rsvd1 #define ucb$l_md_status ucb$r_md_status_overlay.ucb$l_md_status #define ucb$w_md_lock_status ucb$r_md_lksb_lock.ucb$w_md_lock_status #define ucb$w_md_lock_rsvd ucb$r_md_lksb_lock.ucb$w_md_lock_rsvd #define ucb$l_md_lock_lockid ucb$r_md_lksb_lock.ucb$l_md_lock_lockid #define ucb$t_md_lock_valblk ucb$r_md_lksb_lock.ucb$t_md_lock_valblk #define ucb$w_md_perm_status ucb$r_md_lksb_perm.ucb$w_md_perm_status #define ucb$w_md_perm_rsvd ucb$r_md_lksb_perm.ucb$w_md_perm_rsvd #define ucb$l_md_perm_lockid ucb$r_md_lksb_perm.ucb$l_md_perm_lockid #define ucb$t_md_perm_valblk ucb$r_md_lksb_perm.ucb$t_md_perm_valblk #define ucb$r_fkb ucb$r_md_fkb.ucb$r_fkb #define ucb$l_md_dtlockfqfkb ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$r_md_fqfl_overlay1.ucb$l_md_dtlockfqfkb #define ucb$l_md_pdtlockfqfkb ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$r_md_fqfl_overlay1.ucb$l_md_pdtlockfqfkb #define ucb$l_md_pdtlockbqfkb ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$l_md_pdtlockbqfkb #define ucb$w_md_dtlckfkbsize ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$w_md_dtlckfkbsize #define ucb$b_md_dtlckfkbtype ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$b_md_dtlckfkbtype #define ucb$b_md_dtlckfkbflck ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$b_md_dtlckfkbflck #define ucb$l_md_pdtlckfkbfpc ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$l_md_pdtlckfkbfpc #define ucb$q_md_dtlckfkbfr3 ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$q_md_dtlckfkbfr3 #define ucb$q_md_dtlckfkbfr4 ucb$r_md_fkb.ucb$r_fkb_overlay.ucb$q_md_dtlckfkbfr4 #define ucb$r_fkb2 ucb$r_md_fkb2.ucb$r_fkb2 #define ucb$l_md_updatefilefqfkb ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$r_md_fqfl_overlay2.ucb$l_md_updatefilefqfkb #define ucb$l_md_pupdatefilefqfkb ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$r_md_fqfl_overlay2.ucb$l_md_pupdatefilefqfkb #define ucb$l_md_pupdatefilebqfkb ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$l_md_pupdatefilebqfkb #define ucb$w_md_updtflfkbsize ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$w_md_updtflfkbsize #define ucb$b_md_updtflfkbtype ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$b_md_updtflfkbtype #define ucb$b_md_updtflfkbflck ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$b_md_updtflfkbflck #define ucb$l_md_pupdtflfkbfpc ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$l_md_pupdtflfkbfpc #define ucb$q_md_updtflfkbfr3 ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$q_md_updtflfkbfr3 #define ucb$q_md_updtflfkbfr4 ucb$r_md_fkb2.ucb$r_fkb_overlay2.ucb$q_md_updtflfkbfr4 #define ucb$l_md_dbg ucb$r_md_dbg_overlay.ucb$l_md_dbg #define ucb$q_md_qdbg ucb$r_md_dbg_overlay.ucb$q_md_qdbg #endif /* #if !defined(__VAXC) */ #define ucb$r_md_ucb ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb.ucb$r_ucb #define ucb$r_md_erl ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb.ucb$r_erlucb #define ucb$r_md_dp ucb$r_mscpucb.ucb$r_dtucb.ucb$r_dpucb #define ucb$r_md_dt ucb$r_mscpucb.ucb$r_dtucb #define ucb$r_md_mscp ucb$r_mscpucb /* *** Add new extensions immediately before this line!!!!! *** */ /* *** All symbols in the UCB extension for device XX should *** */ /* *** have names that begin XX_, including the length symbol *** */ /* *** UCB$C_XX_LENGTH. (Note the need for "tag C" when creating *** */ /* *** this symbol, otherwise you'll get UCB$K_XX_LENGTH.) *** */ /* *** Contact the SDA maintainer so that SDA can be taught how *** */ /* *** to format the XX extension to the UCB. *** */ /* */ /* SUPPLEMENTAL UCB DATA definition */ /* This structure is intended to contain information which should belong */ /* in the UCB but can't because we cannot change the size of the UCB */ /* without impacting customers. */ /* */ #define SUD$M_AUX_SUD_ALLOC 0x1 #define SUD$M_PATH_AVAILABLE 0x1 #define SUD$M_OK2UINIT 0x2 #define SUD$M_PV_TRIED 0x4 #define SUD$M_PACKACK_TRIED 0x8 #define SUD$M_SWITCH_TRIED 0x10 #define SUD$M_PATH_USER_DISABLED 0x20 #define SUD$M_NOTCURPATH_IOIP 0x40 #define SUD$M_POLL_ENABLED 0x80 #define SUD$M_NOT_RESPONDING 0x100 #define SUD$M_NO_PR_SUPP 0x200 #define SUD$M_MV_MSG_SUPPRESSED 0x400 #define SUD$M_CFGCBK_PND 0x800 #define SUD$M_MVSUPMSG_OVERRIDE 0x1000 #define SUD$M_SHUNNED_ON_LAST_PV 0x2000 #define SUD$M_WWID_PRESENT 0x1 #define SUD$M_FC_PORT_NAME_PRESENT 0x2 #define SUD$M_FC_NODE_NAME_PRESENT 0x4 #define SUD$M_PR_DISABLED 0x8 #define SUD$M_CLONED_UCB 0x10 #define SUD$M_NOSYNCH_CANCEL 0x20 #define SUD$M_SAS_ADDRESS_PRESENT 0x40 #define SUD$M_SATA_END_DEVICE 0x80 #define SUD$M_IR_VOLUME 0x100 #define SUD$M_CISS_EXT_LUN 0x200 #define SUD$M_FP_ON_PORT_QUEUE 0x1 #define SUD$M_FP_USER_PREF_CPU 0x2 #define SUD$M_FP_ON_HWINT_PORT_QUEUE 0x4 #define SUD$M_FP_USRPRF_HWINT_CPU 0x8 #define SUD$M_FP_INIT_FAILED 0x10 #ifdef __cplusplus /* Define structure prototypes */ struct _mpdev; struct _mpdev_ppb; struct _cpu; struct _irp; #endif /* #ifdef __cplusplus */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _sud { #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif struct _ucb *sud$ps_ucblink; /* Pointer to UCB for this SUD */ void *sud$ps_aux_sud; /* Pointer to Driver UCB extension area. */ unsigned short int sud$w_size; /* Size of SUD, in bytes. */ unsigned char sud$b_type; /* Nonpaged pool packet type, DYN$C_MISC */ unsigned char sud$b_subtype; /* Nonpaged pool packet subtype, DYN$C_SUD */ /* Flag bits */ __union { unsigned int sud$l_flags; __struct { unsigned sud$v_aux_sud_alloc : 1; /* Area pointed to by SUD$PS_AUX_SUD has been allocated */ unsigned sud$v_fill_71_ : 7; } sud$r_fill_66_; } sud$r_fill_65_; __union { unsigned int sud$l_sts; __struct { unsigned sud$v_path_available : 1; /* Set by driver once unit init is complete. */ unsigned sud$v_ok2uinit : 1; /* Set by driver if unit init failed. It states that */ /* this UCB can be reused. */ unsigned sud$v_pv_tried : 1; /* Set if path verification I/O has been issued to */ /* this path while path verification is in progress */ unsigned sud$v_packack_tried : 1; /* Set if packack I/O has been issued to */ /* this path while path verification is in progress */ unsigned sud$v_switch_tried : 1; /* Set if path switch has been switched to */ /* while path verification is in progress */ unsigned sud$v_path_user_disabled : 1; /* Set if access denied via user request */ unsigned sud$v_notcurpath_ioip : 1; /* Set if this path is not the current path but it */ /* has I/O in progress */ unsigned sud$v_poll_enabled : 1; /* Poll enabled on this path */ unsigned sud$v_not_responding : 1; /* Device is not responding via this path */ unsigned sud$v_no_pr_supp : 1; /* No Persistent Reservation Support */ unsigned sud$v_mv_msg_suppressed : 1; /* MV start msg has been automatically suppressed, for now */ unsigned sud$v_cfgcbk_pnd : 1; /* Device configuration call back pending */ unsigned sud$v_mvsupmsg_override : 1; /* Override message suppression for this MV event */ unsigned sud$v_shunned_on_last_pv : 1; /* Path was shunned on the most recent path verification attempt */ unsigned sud$v_fill_72_ : 2; } sud$r_fill_68_; } sud$r_fill_67_; __union { unsigned int sud$l_devchar3; __struct { unsigned sud$v_wwid_present : 1; /* this SUD contains WWID */ unsigned sud$v_fc_port_name_present : 1; /* this SUD contains a fibre channel port name */ unsigned sud$v_fc_node_name_present : 1; /* this SUD contains a fibre channel node name */ unsigned sud$v_pr_disabled : 1; /* Persistent Reservations are disabled */ unsigned sud$v_cloned_ucb : 1; /* indicates, if this UCB is a cloned UCB */ unsigned sud$v_nosynch_cancel : 1; /* driver cancel routine will be called without forklock */ unsigned sud$v_sas_address_present : 1; /* this SUD contains a SAS Port Address */ unsigned sud$v_sata_end_device : 1; /* this SUD contains a SATA WWID */ unsigned sud$v_ir_volume : 1; /* this SUD contains an Integrated RAID WWID */ unsigned sud$v_ciss_ext_lun : 1; /* this SUD contains a CISS external Lun */ unsigned sud$v_fill_73_ : 6; } sud$r_fill_70_; } sud$r_fill_69_; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 sud$q_scssystemid; /* SCS system ID */ #pragma __nomember_alignment unsigned int sud$l_spare_1; /* */ unsigned int sud$l_spare_2; /* */ unsigned int sud$l_spare_3; /* */ unsigned int sud$l_spare_4; /* */ unsigned int sud$l_wwid_offset; /* WWID ofset */ unsigned int sud$l_wwid_length; /* WWID length */ struct _mpdev *sud$ps_mpdev; /* Pointer to the multipath structure */ struct _ucb *sud$ps_mpdev_primary_ucb; /* Pointer to the primary paths UCB */ struct _ucb *sud$ps_mpdev_next_ucb; /* Pointer to the next UCB in a multipath set. */ char sud$b_fill_74_ [4]; #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif unsigned __int64 sud$q_mpdev_switch_to_time; /* last time this path was switched to */ unsigned __int64 sud$q_mpdev_switch_from_time; /* last time this path was switched from */ #pragma __nomember_alignment struct _mpdev_ppb *sud$ps_mpdev_ppb; /* Pointer to Path Poller Block for this path */ __union { __struct { unsigned int sud$l_fp_flags; /* Fastpath flags */ } sud$r_flags_fields; __struct { unsigned sud$v_fp_on_port_queue : 1; /* set if port already on port queue */ unsigned sud$v_fp_user_pref_cpu : 1; /* set if user has assigned this port */ unsigned sud$v_fp_on_hwint_port_queue : 1; /* set if port already on FASTPATH HW interrupt ports queue */ unsigned sud$v_fp_usrprf_hwint_cpu : 1; /* set if user has assigned this port to a HW interrupt CPU. */ unsigned sud$v_fp_init_failed : 1; /* exe$fp_port_init() failed to init this port */ unsigned sud$v_fill_75_ : 3; } sud$r_flags_bits; } sud$r_flags_overlay; /* Fastpath preferred CPU state */ struct _cpu *sud$l_fp_usrprf_cpudb; /* CPU db addr of user-preferred port */ struct _sud *sud$l_fp_ports_link; /* single-link queue of ports. */ void *sud$l_fp_asgn_ports_fl; /* queue links into per-CPU assigned */ void *sud$l_fp_asgn_ports_bl; /* ports queue. */ /* Fastpath HW interrupt CPU state */ struct _cpu *sud$l_fp_hwint_cpu; /* CPU db addr of current HW interrupt CPU. */ struct _cpu *sud$l_fp_usrprf_hwint_cpu; /* CPU db addr of user-preferred HW interrupt CPU. */ struct _sud *sud$l_fp_hwint_ports_link; /* single-link queue of all HW interrupt ports. */ void *sud$l_fp_asgn_hwint_ports_fl; /* queue links into the current HW interrupt */ void *sud$l_fp_asgn_hwint_ports_bl; /* CPU's list of HW interrupt ports assigned to it.. */ /* Fastpath contingency cells */ int sud$l_fp_spare1; int sud$l_fp_spare2; int sud$l_fp_spare3; int sud$l_fp_spare4; unsigned int sud$l_mpdev_pv_iost1; /* Last PV I/O status on path */ unsigned int sud$l_mpdev_pv_abstim; /* Last PV time (abstim) */ unsigned int sud$l_mpdev_tracking_end; /* Current tracking interval end (abstim) */ unsigned int sud$l_mpdev_tracking_count; /* PV incursions during interval */ unsigned int sud$l_mpdev_pv_duration; /* Last PV I/O duration (seconds) */ struct _sud *sud$ps_mpdev_path_link; /* Pointer to next SUD on same MPDEV_PPB (null terminated) */ unsigned int sud$l_mpdev_shunned_count; /* Total number of times path has been shunned */ int sud$l_mpdev_spare_6; /* Reserved for multipath */ int sud$l_mpdev_path_id; /* Path id for multipath */ struct _fc_wwid_64b *sud$ps_fc_port_name; /* Pointer to fibre channel port name */ struct _fc_wwid_64b *sud$ps_fc_node_name; /* Pointer to fibre channel node name */ struct _irp *sud$l_busy_bit_irp_p; /* Pointer to ucb$r_busy_bit_irp */ int sud$l_mpdev_spare_7; /* Reserved for multipath */ int sud$l_mpdev_spare_8; /* Reserved for multipath */ int sud$l_mpdev_spare_9; /* Reserved for multipath */ int sud$l_mpdev_spare_10; /* Reserved for multipath */ int sud$l_hbvs_spare_1; /* Reserved for HBVS */ int sud$l_hbvs_spare_2; /* Reserved for HBVS */ unsigned int sud$l_mvsupmsg_intvl_end; /* End of current quiet MV interval in ABSTIM seconds */ unsigned int sud$l_mvsupmsg_intvl_num; /* Count of suppressed MV messages so far in current interval */ unsigned int sud$l_mvsupmsg_total_num; /* Total count of suppressed MV messages since boot for this device */ unsigned int sud$l_mvsupmsg_intvl; /* MV msg suppression interval in seconds for this device */ /* Changed by SET DEVICE/MV_INTERVAL=n, 0 means use system-wide value */ unsigned int sud$l_mvsupmsg_num; /* MV msg suppression threshold count */ /* Changed by SET DEVICE/MV_NUMBER=n, 0 means use system-wide value */ unsigned __int64 sud$q_last_errrst; /* Last time the error count of was reset */ unsigned int sud$l_mpdev_path_switch_count; /* count of successful path switches to this path */ char sud$b_fill_76_ [4]; } SUD; #if !defined(__VAXC) #define sud$l_flags sud$r_fill_65_.sud$l_flags #define sud$v_aux_sud_alloc sud$r_fill_65_.sud$r_fill_66_.sud$v_aux_sud_alloc #define sud$l_sts sud$r_fill_67_.sud$l_sts #define sud$v_path_available sud$r_fill_67_.sud$r_fill_68_.sud$v_path_available #define sud$v_ok2uinit sud$r_fill_67_.sud$r_fill_68_.sud$v_ok2uinit #define sud$v_pv_tried sud$r_fill_67_.sud$r_fill_68_.sud$v_pv_tried #define sud$v_packack_tried sud$r_fill_67_.sud$r_fill_68_.sud$v_packack_tried #define sud$v_switch_tried sud$r_fill_67_.sud$r_fill_68_.sud$v_switch_tried #define sud$v_path_user_disabled sud$r_fill_67_.sud$r_fill_68_.sud$v_path_user_disabled #define sud$v_notcurpath_ioip sud$r_fill_67_.sud$r_fill_68_.sud$v_notcurpath_ioip #define sud$v_poll_enabled sud$r_fill_67_.sud$r_fill_68_.sud$v_poll_enabled #define sud$v_not_responding sud$r_fill_67_.sud$r_fill_68_.sud$v_not_responding #define sud$v_no_pr_supp sud$r_fill_67_.sud$r_fill_68_.sud$v_no_pr_supp #define sud$v_mv_msg_suppressed sud$r_fill_67_.sud$r_fill_68_.sud$v_mv_msg_suppressed #define sud$v_cfgcbk_pnd sud$r_fill_67_.sud$r_fill_68_.sud$v_cfgcbk_pnd #define sud$v_mvsupmsg_override sud$r_fill_67_.sud$r_fill_68_.sud$v_mvsupmsg_override #define sud$v_shunned_on_last_pv sud$r_fill_67_.sud$r_fill_68_.sud$v_shunned_on_last_pv #define sud$l_devchar3 sud$r_fill_69_.sud$l_devchar3 #define sud$v_wwid_present sud$r_fill_69_.sud$r_fill_70_.sud$v_wwid_present #define sud$v_fc_port_name_present sud$r_fill_69_.sud$r_fill_70_.sud$v_fc_port_name_present #define sud$v_fc_node_name_present sud$r_fill_69_.sud$r_fill_70_.sud$v_fc_node_name_present #define sud$v_pr_disabled sud$r_fill_69_.sud$r_fill_70_.sud$v_pr_disabled #define sud$v_cloned_ucb sud$r_fill_69_.sud$r_fill_70_.sud$v_cloned_ucb #define sud$v_nosynch_cancel sud$r_fill_69_.sud$r_fill_70_.sud$v_nosynch_cancel #define sud$v_sas_address_present sud$r_fill_69_.sud$r_fill_70_.sud$v_sas_address_present #define sud$v_sata_end_device sud$r_fill_69_.sud$r_fill_70_.sud$v_sata_end_device #define sud$v_ir_volume sud$r_fill_69_.sud$r_fill_70_.sud$v_ir_volume #define sud$v_ciss_ext_lun sud$r_fill_69_.sud$r_fill_70_.sud$v_ciss_ext_lun #define sud$l_fp_flags sud$r_flags_overlay.sud$r_flags_fields.sud$l_fp_flags #define sud$v_fp_on_port_queue sud$r_flags_overlay.sud$r_flags_bits.sud$v_fp_on_port_queue #define sud$v_fp_user_pref_cpu sud$r_flags_overlay.sud$r_flags_bits.sud$v_fp_user_pref_cpu #define sud$v_fp_on_hwint_port_queue sud$r_flags_overlay.sud$r_flags_bits.sud$v_fp_on_hwint_port_queue #define sud$v_fp_usrprf_hwint_cpu sud$r_flags_overlay.sud$r_flags_bits.sud$v_fp_usrprf_hwint_cpu #define sud$v_fp_init_failed sud$r_flags_overlay.sud$r_flags_bits.sud$v_fp_init_failed #endif /* #if !defined(__VAXC) */ #define SUD$C_LENGTH 256 /* Length of a SUD */ #define SUD$K_LENGTH 256 /* Length of a SUD */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __UCBDEF_LOADED */