home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / vxvm / root.2 / usr / include / volscnprnt.h / volscnprnt
Text File  |  1998-08-19  |  23KB  |  630 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. /* @(#)lib.vxvm:libvxvm/common/libvxvm/volscnprnt.h    1.1 1/24/97 21:50:17 - lib.vxvm:libvxvm/common/libvxvm/volscnprnt.h */
  12. #ident    "@(#)lib.vxvm:libvxvm/common/libvxvm/volscnprnt.h    1.1"
  13.  
  14. /*
  15.  * Copyright(C)1996 VERITAS Software Corporation.  ALL RIGHTS RESERVED.
  16.  * UNPUBLISHED -- RIGHTS RESERVED UNDER THE COPYRIGHT
  17.  * LAWS OF THE UNITED STATES.  USE OF A COPYRIGHT NOTICE
  18.  * IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
  19.  * OR DISCLOSURE.
  20.  * 
  21.  * THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND
  22.  * TRADE SECRETS OF VERITAS SOFTWARE.  USE, DISCLOSURE,
  23.  * OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR
  24.  * EXPRESS WRITTEN PERMISSION OF VERITAS SOFTWARE.
  25.  * 
  26.  *               RESTRICTED RIGHTS LEGEND
  27.  * USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS
  28.  * SUBJECT TO RESTRICTIONS AS SET FORTH IN SUBPARAGRAPH
  29.  * (C) (1) (ii) OF THE RIGHTS IN TECHNICAL DATA AND
  30.  * COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013.
  31.  *               VERITAS SOFTWARE
  32.  * 1600 PLYMOUTH STREET, MOUNTAIN VIEW, CA 94043
  33.  */
  34.  
  35. #ifndef _VOLSCNPRNT_H
  36. #define _VOLSCNPRNT_H
  37.  
  38. /*
  39.  * Interface file for volmake field and record scanning and printing
  40.  * functions
  41.  */
  42.  
  43. /* names for parts of a volume structure */
  44. enum volrec_tag {
  45.     MIN_VOLREC_TAG,        /* sentinal value, must be first */
  46.     VR_EXISTS,        /* pseudo variable, volume already exists */
  47.     VR_IMPLICIT,        /* pseudo variable, implicit volume */
  48.     VR_CHANGED,        /* pseudo variable, changed volume */
  49.     VR_TUTIL0,        /* v_tutil[0] */
  50.     VR_TUTIL1,        /* v_tutil[1] */
  51.     VR_TUTIL2,        /* v_tutil[2] */
  52.     VR_REC_LOCK,        /* v_rec_lock */
  53.     VR_DATA_LOCK,        /* v_data_lock */
  54.     VR_KSTATE,        /* v_kstate */
  55.     VR_R_ALL,        /* v_r_all */
  56.     VR_R_SOME,        /* v_r_some */
  57.     VR_W_ALL,        /* v_w_all */
  58.     VR_W_SOME,        /* v_w_some */
  59.     VR_LASTERR,        /* v_lasterr */
  60.     VR_NAME,        /* v_name */
  61.     VR_CONFIG_ID,        /* v_config_id */
  62.     VR_CONFIG_EPOCH,    /* v_config_epoch */
  63.     VR_USE_TYPE,        /* v_use_type */
  64.     VR_FSTYPE,        /* v_fstype */
  65.     VR_COMMENT,        /* v_comment */
  66.     VR_PUTIL0,        /* v_putil[0] */
  67.     VR_PUTIL1,        /* v_putil[1] */
  68.     VR_PUTIL2,        /* v_putil[2] */
  69.     VR_STATE,        /* v_state */
  70.     VR_WRITEBACK,        /* v_pflag & V_PFLAG_WRITEBACK */
  71.     VR_PL_NUM,        /* v_pl_num */
  72.     VR_PLEXLIST,        /* pseudo variable for plex associations */
  73.     VR_PREF_NAME,        /* v_pref_name */
  74.     VR_READ_POL,        /* v_read_pol */
  75.     VR_CURRENT_READ_POL,    /* v_current_read_pol */
  76.     VR_MINOR,        /* v_minor */
  77.     VR_UID,            /* v_uid */
  78.     VR_GID,            /* v_gid */
  79.     VR_MODE,        /* v_mode */
  80.     VR_LEN,            /* v_len */
  81.     VR_DEVOPEN,        /* v_tflag & V_TFLAG_DEVOPEN */
  82.     VR_LOG_LEN,        /* v_log_len */
  83.     VR_LOG_TYPE,        /* v_pflag & V_TFLAG_LOGTYPE */
  84.     VR_LOGGING,        /* v_pflag & V_TFLAG_LOGGING */
  85.     VR_LOG_SERIAL_LO,    /* v_log_serial_lo */
  86.     VR_LOG_SERIAL_HI,    /* v_log_serial_hi */
  87.     VR_START_OPTS,        /* v_start_opts */
  88.     VR_WRITECOPY,        /* v_pflag & V_PFLAG_WRITECOPY */
  89.     VR_NODE_BDEV,        /* v_node_bdev */
  90.     VR_NODE_CDEV,        /* v_node_cdev */
  91.     VR_IOSIZE,        /* v_iosize */
  92.     VR_UPDATE_TID,        /* v_update_tid */
  93.     VR_RID,            /* v_rid */
  94.     VR_PREF_PLEX_RID,    /* v_pref_plex_rid */
  95.     VR_DETACH_TID,        /* v_detach_tid */
  96.     VR_ACTIVE,        /* v_pflag & V_PFLAG_ACTIVE */
  97.     VR_RECOVER,        /* v_tflag & V_TFLAG_RECOVER */
  98.     VR_KRECOVER,        /* v_tflag & V_TFLAG_KRECOVER */
  99.     VR_INVALID,        /* v_tflag & V_TFLAG_INVALID */
  100.     VR_RECOVER_OFFSET,    /* v_recover_offset */
  101.     VR_FORCEMINOR,        /* v_pflag & V_PFLAG_FORCEMINOR */
  102.     VR_BADLOG,        /* v_pflag & V_PFLAG_BADLOG */
  103.     VR_SPECIFY_WRITECOPY,    /* v_pflag & V_PFLAG_SPECIFY_WRITECOPY */
  104.     VR_LASTERR_TID,        /* v_lasterr_tid */
  105.     VR_RECOVER_CHECKPOINT,    /* v_recover_checkpoint */
  106.     VR_DIRTY,        /* v_tflag & V_TFLAG_DIRTY */
  107.     VR_BUSY,        /* v_tflag & V_TFLAG_BUSY */
  108.     VR_KDETACH,        /* v_pflag & V_PFLAG_KDETACH */
  109.     VR_STORAGE,        /* v_pflag & V_PFLAG_STORAGE */
  110.     VR_SD_NUM,        /* v_sd_num */
  111.     VR_DEGRADED,        /* v_tflag & V_TFLAG_DEGRADED */
  112.     VR_UNUSABLE,        /* v_tflag & V_TFLAG_UNUSABLE */
  113.     VR_HAS_LOGS,        /* v_tflag & V_TFLAG_HAS_LOGS */
  114.     VR_LOG_RID,        /* v_log_rid */
  115.     VR_APP_RECOVER,        /* v_pflag & V_PFLAG_APP_RECOVER */
  116.     VR_RECOV_SEQNO,        /* v_recov_seqno */
  117.     VR_APP_DIRTY,        /* v_tflag & V_TFLAG_APP_DIRTY */
  118.     MAX_VOLREC_TAG,        /* sentinel value, must be last */
  119.     VR_FAIL = -1,        /* failure from vol_sscan_field */
  120.     VR_EOF = 0        /* EOF from vol_sscan_field */
  121. };
  122. typedef enum volrec_tag volrec_tag_t;
  123.  
  124. /* source compatibility with VxVM 1.2 */
  125. #define VR_BDEV        VR_NODE_BDEV
  126. #define VR_CDEV        VR_NODE_CDEV
  127. #define VR_K_OPEN    VR_DEVOPEN
  128.  
  129. /* names for parts of a plex structure */
  130. enum plexrec_tag {
  131.     MIN_PLEXREC_TAG,    /* sentinal value, must be last */
  132.     PR_EXISTS,        /* pseudo variable, plex already exists */
  133.     PR_IMPLICIT,        /* pseudo variable, implicit plex */
  134.     PR_CHANGED,        /* pseudo variable, changed plex */
  135.     PR_TUTIL0,        /* pl_tutil[0] */
  136.     PR_TUTIL1,        /* pl_tutil[1] */
  137.     PR_TUTIL2,        /* pl_tutil[2] */
  138.     PR_LOCK,        /* pl_lock */
  139.     PR_COMPACT,        /* pl_compact */
  140.     PR_IOMODE,        /* pl_tflag & (PL_TFLAG_READ|PL_TFLAG_WRITE) */
  141.     PR_VOLATILE,        /* pl_tflag & PL_TFLAG_VOLATILE */
  142.     PR_KSTATE,        /* pl_kstate */
  143.     PR_LASTERR,        /* pl_lasterr */
  144.     PR_LEN,            /* pl_len */
  145.     PR_MINOR,        /* pl_minor */
  146.     PR_NAME,        /* pl_name */
  147.     PR_CONFIG_ID,        /* pl_config_id */
  148.     PR_CONFIG_EPOCH,    /* pl_config_epoch */
  149.     PR_COMMENT,        /* pl_comment */
  150.     PR_PUTIL0,        /* pl_putil[0] */
  151.     PR_PUTIL1,        /* pl_putil[1] */
  152.     PR_PUTIL2,        /* pl_putil[2] */
  153.     PR_NOERROR,        /* pl_pflag & PL_PFLAG_NOERROR */
  154.     PR_V_NAME,        /* pl_v_name */
  155.     PR_SD_NUM,        /* pl_sd_num */
  156.     PR_SD_LIST,        /* psuedo variable for subdisk associations */
  157.     PR_STATE,        /* pl_state */
  158.     PR_LAYOUT,        /* pl_layout */
  159.     PR_ST_WIDTH,        /* pl_st_width */
  160.     PR_DEVOPEN,        /* pl_tflag & PL_TFLAG_DEVOPEN */
  161.     PR_LOG_SD,        /* pl_log_sd */
  162.     PR_LOG,            /* pl_tflag & PL_TFLAG_LOG */
  163.     PR_COMPLETE,        /* pl_tflag & PL_TFLAG_COMPLETE */
  164.     PR_CONTIG_LEN,        /* pl_contig_len */
  165.     PR_DEV,            /* pl_dev */
  166.     PR_UPDATE_TID,        /* pl_update_tid */
  167.     PR_RID,            /* pl_rid */
  168.     PR_VOL_RID,        /* pl_vol_rid */
  169.     PR_DETACH_TID,        /* pl_detach_tid */
  170.     PR_LOG_SD_RID,        /* pl_log_sd_rid */
  171.     PR_REMOVED,        /* pl_tflag & PL_TFLAG_REMOVED */
  172.     PR_NODAREC,        /* pl_tflag & PL_TFLAG_NODAREC */
  173.     PR_STALE,        /* pl_pflag & PL_PFLAG_STALE */
  174.     PR_KDETACH,        /* pl_pflag & PL_PFLAG_KDETACH */
  175.     PR_LASTERR_TID,        /* pl_lasterr_tid */
  176.     PR_NCOLUMN,        /* pl_ncolumn */
  177.     PR_DIRTY,        /* pl_tflag & PL_TFLAG_DIRTY */
  178.     PR_BUSY,        /* pl_tflag & PL_TFLAG_BUSY */
  179.     PR_RAIDLOG,        /* pl_tflag & PL_TFLAG_RAIDLOG */
  180.     MAX_PLEXREC_TAG,    /* sentinal value, must be last */
  181.     PR_FAIL = -1,        /* failure from plex_sscan_field */
  182.     PR_EOF = 0        /* EOF from plex_sscan_field */
  183. };
  184. typedef enum plexrec_tag plexrec_tag_t;
  185.  
  186. /* source compatibility with VxVM 1.2 */
  187. #define PR_K_OPEN    PR_DEVOPEN
  188.  
  189. /* names for parts of a subdisk structure */
  190. enum sdrec_tag {
  191.     MIN_SDREC_TAG,        /* sentinel value, must be first */
  192.     SR_EXISTS,        /* pseudo variable, subdisk already exists */
  193.     SR_IMPLICIT,        /* pseudo variable, implicit subdisk */
  194.     SR_CHANGED,        /* pseudo variable, changed subdisk */
  195.     SR_TUTIL0,        /* sd_tutil[0] */
  196.     SR_TUTIL1,        /* sd_tutil[1] */
  197.     SR_TUTIL2,        /* sd_tutil[2] */
  198.     SR_LOCK,        /* sd_lock */
  199.     SR_DEV,            /* sd_dev */
  200.     SR_NAME,        /* sd_name */
  201.     SR_CONFIG_ID,        /* sd_config_id */
  202.     SR_CONFIG_EPOCH,    /* sd_config_epoch */
  203.     SR_PATH,        /* sd_path */
  204.     SR_PL_NAME,        /* sd_pl_name */
  205.     SR_COMMENT,        /* sd_comment */
  206.     SR_PUTIL0,        /* sd_putil[0] */
  207.     SR_PUTIL1,        /* sd_putil[1] */
  208.     SR_PUTIL2,        /* sd_putil[2] */
  209.     SR_VOLATILE,        /* sd_pflag & SD_PFLAG_VOLATILE */
  210.     SR_DM_OFFSET,        /* sd_offset */
  211.     SR_PL_OFFSET,        /* sd_pl_offset */
  212.     SR_LEN,            /* sd_len */
  213.     SR_BUSY,        /* sd_tflag & SD_TFLAG_BUSY */
  214.     SR_IS_LOG,        /* sd_tflag & SD_TFLAG_IS_LOG */
  215.     SR_DEV_OFFSET,        /* sd_offset */
  216.     SR_DA_NAME,        /* sd_da_name */
  217.     SR_DM_NAME,        /* sd_dm_name */
  218.     SR_UPDATE_TID,        /* sd_update_tid */
  219.     SR_RID,            /* sd_rid */
  220.     SR_PLEX_RID,        /* sd_plex_rid */
  221.     SR_DM_RID,        /* sd_dm_rid */
  222.     SR_LASTERR_TID,        /* sd_lasterr_tid */
  223.     SR_NODE_BDEV,        /* sd_node_bdev */
  224.     SR_NODE_CDEV,        /* sd_node_cdev */
  225.     SR_MINOR,        /* sd_minor */
  226.     SR_DETACH_TID,        /* sd_detach_tid */
  227.     SR_COLUMN,        /* sd_column */
  228.     SR_DIRTY,        /* sd_tflag & SD_TFLAG_DIRTY */
  229.     SR_DEVOPEN,        /* sd_tflag & SD_TFLAG_DEVOPEN */
  230.     SR_ENABLED,        /* sd_tflag & SD_TFLAG_ENABLED */
  231.     SR_DETACH,        /* sd_tflag & SD_TFLAG_DETACH */
  232.     SR_NODAREC,        /* sd_tflag & SD_TFLAG_NODAREC */
  233.     SR_REMOVED,        /* sd_tflag & SD_TFLAG_REMOVED */
  234.     SR_MKDEVICE,        /* sd_pflag & SD_PFLAG_MKDEVICE */
  235.     SR_SUBVOLUME,        /* sd_pflag & SD_PFLAG_SUBVOLUME */
  236.     SR_STALE,        /* sd_pflag & SD_PFLAG_STALE */
  237.     SR_KDETACH,        /* sd_pflag & SD_PFLAG_KDETACH */
  238.     SR_WRITEONLY,        /* sd_tflag & SD_TFLAG_WRITEONLY */
  239.     SR_DEVICE_TAG,        /* sd_device_tag */
  240.     MAX_SDREC_TAG,        /* sentinel value, must be last */
  241.     SR_FAIL = -1,        /* failure from sd_sscan_field */
  242.     SR_EOF = 0,        /* EOF from sd_sscan_field */
  243.     SR_RELOCATE        /* sd_pflag & SD_PFLAG_RELOCATE */
  244. };
  245. typedef enum sdrec_tag sdrec_tag_t;
  246.  
  247. /* source compatibility with VxVM 1.1 and 1.2 */
  248. #define SR_OFFSET     SR_DM_OFFSET
  249. #define SR_K_OPEN    SR_BUSY
  250.  
  251. /* names for parts of a disk media structure */
  252. enum dmrec_tag {
  253.     MIN_DISKREC_TAG,    /* sentinel value, must be first */
  254.     MR_EXISTS,        /* pseudo variable, disk already exists */
  255.     MR_IMPLICIT,        /* pseudo variable, implicit disk */
  256.     MR_CHANGED,        /* pseudo variable, changed disk */
  257.     MR_TUTIL0,        /* dm_tutil[0] */
  258.     MR_TUTIL1,        /* dm_tutil[1] */
  259.     MR_TUTIL2,        /* dm_tutil[2] */
  260.     MR_DA_NAME,        /* dm_da_name */
  261.     MR_DEVICE_TAG,        /* dm_device_tag */
  262.     MR_DA_TYPE,        /* dm_da_type */
  263.     MR_PUB_BPATH,        /* dm_pub_bpath */
  264.     MR_PRIV_BPATH,        /* dm_priv_bpath */
  265.     MR_PUB_CPATH,        /* dm_pub_cpath */
  266.     MR_PRIV_CPATH,        /* dm_priv_cpath */
  267.     MR_PUB_BDEV,        /* dm_pub_bdev */
  268.     MR_PRIV_BDEV,        /* dm_priv_bdev */
  269.     MR_PUB_OFFSET,        /* dm_pub_offset */
  270.     MR_PRIV_OFFSET,        /* dm_priv_offset */
  271.     MR_PUB_LEN,        /* dm_pub_len */
  272.     MR_PRIV_LEN,        /* dm_priv_len */
  273.     MR_ATOMIC_IOSIZE,    /* dm_atomic_iosize */
  274.     MR_PRIVATE,        /* dm_tflag & DM_TFLAG_PRIVATE */
  275.     MR_COMPONENT,        /* dm_tflag & DM_TFLAG_COMPONENT */
  276.     MR_VOLATILE,        /* dm_tflag & DM_TFLAG_VOLATILE */
  277.     MR_NODAREC,        /* dm_tflag & DM_TFLAG_NODAREC */
  278.     MR_AUTOCONFIG,        /* dm_tflag & DM_TFLAG_AUTOCONFIG */
  279.     MR_LOCK,        /* dm_lock */
  280.     MR_NAME,        /* dm_name */
  281.     MR_COMMENT,        /* dm_comment */
  282.     MR_PUTIL0,        /* dm_putil[0] */
  283.     MR_PUTIL1,        /* dm_putil[1] */
  284.     MR_PUTIL2,        /* dm_putil[2] */
  285.     MR_DISKID,        /* dm_diskid */
  286.     MR_LAST_DA_NAME,    /* dm_last_da_name */
  287.     MR_RID,            /* dm_rid */
  288.     MR_RESERVE,        /* dm_pflag & DM_PFLAG_RESERVE */
  289.     MR_REMOVED,        /* dm_pflag & DM_PFLAG_REMOVED */
  290.     MR_UPDATE_TID,        /* dm_update_tid */
  291.     MR_SD_NUM,        /* dm_sd_num */
  292.     MR_BUSY,        /* dm_tflag & DM_TFLAG_DEVOPEN */
  293.     MR_SPARE,        /* dm_pflag & DM_PFLAG_SPARE */
  294.     MR_FAILING,        /* dm_pflag & DM_PFLAG_FAILING */
  295.     MAX_DISKREC_TAG,    /* sentinel value, must be last */
  296.     MR_FAIL = -1,        /* failure from disk_sscan_field */
  297.     MR_EOF = 0        /* EOF from disk_sscan_field */
  298. };
  299. typedef enum dmrec_tag dmrec_tag_t;
  300.  
  301. /* names for parts of a disk group structure */
  302. enum dgrec_tag {
  303.     MIN_DGREC_TAG,        /* sentinel value, must be first */
  304.     GR_EXISTS,        /* pseudo variable, disk group already exists */
  305.     GR_IMPLICIT,        /* pseudo variable, implicit disk group */
  306.     GR_CHANGED,        /* pseudo variable, changed disk group */
  307.     GR_TUTIL0,        /* dg_tutil[0] */
  308.     GR_TUTIL1,        /* dg_tutil[1] */
  309.     GR_TUTIL2,        /* dg_tutil[2] */
  310.     GR_LOCK,        /* dg_lock */
  311.     GR_IMPORT_ID,        /* dg_import_id */
  312.     GR_NAME,        /* dg_name */
  313.     GR_REAL_NAME,        /* dg_real_name */
  314.     GR_COMMENT,        /* dg_comment */
  315.     GR_PUTIL0,        /* dg_putil[0] */
  316.     GR_PUTIL1,        /* dg_putil[1] */
  317.     GR_PUTIL2,        /* dg_putil[2] */
  318.     GR_DGID,        /* dg_dgid */
  319.     GR_RID,            /* dg_rid */
  320.     GR_UPDATE_TID,        /* dg_update_tid */
  321.     GR_DISABLED,        /* dg_tflag & DG_TFLAG_DISABLED */
  322.     GR_NCONFIG,        /* dg_nconfig */
  323.     GR_NLOG,        /* dg_nlog */
  324.     GR_BASE_MINOR,        /* dg_base_minor */
  325.     GR_NO_AUTOIMPORT,    /* dg_tflag & DG_TFLAG_NO_AUTOIMPORT */
  326.     MAX_DGREC_TAG,        /* sentinel value, must be last */
  327.     GR_FAIL = -1,        /* failure from dg_sscan_field */
  328.     GR_EOF = 0        /* EOF from dg_sscan_field */
  329. };
  330. typedef enum dgrec_tag dgrec_tag_t;
  331.  
  332. /* names for parts of a disk device structure */
  333. enum darec_tag {
  334.     MIN_DAREC_TAG,        /* sentinel value, must be first */
  335.     AR_EXISTS,        /* pseudo variable, darec already exists */
  336.     AR_IMPLICIT,        /* pseudo variable, implicit disk device */
  337.     AR_CHANGED,        /* pseudo variable, changed disk device */
  338.     AR_DM_NAME,        /* da_dm_name */
  339.     AR_DG_NAME,        /* da_dg_name */
  340.     AR_DEVICE_TAG,        /* da_device_tag */
  341.     AR_PUB_BPATH,        /* da_pub_bpath */
  342.     AR_PRIV_BPATH,        /* da_priv_bpath */
  343.     AR_PUB_CPATH,        /* da_pub_cpath */
  344.     AR_PRIV_CPATH,        /* da_priv_cpath */
  345.     AR_DG_IMPORT_ID,    /* da_dg_import_id */
  346.     AR_DM_RID,        /* da_dm_rid */
  347.     AR_PUB_BDEV,        /* da_pub_bdev */
  348.     AR_PRIV_BDEV,        /* da_priv_bdev */
  349.     AR_FAIL_CODE,        /* da_fail_code */
  350.     AR_FAIL_ERRNO,        /* da_fail_errno */
  351.     AR_PRIVATE,        /* da_tflag & DA_TFLAG_PRIVATE */
  352.     AR_COMPONENT,        /* da_tflag & DA_TFLAG_COMPONENT */
  353.     AR_VOLATILE,        /* da_tflag & DA_TFLAG_VOLATILE */
  354.     AR_BADTYPE,        /* da_tflag & DA_TFLAG_BADTYPE */
  355.     AR_READY,        /* da_tflag & DA_TFLAG_READY */
  356.     AR_INVALID,        /* da_tflag & DA_TFLAG_INVALID */
  357.     AR_AUTOCONFIG,        /* da_tflag & DA_TFLAG_AUTOCONFIG */
  358.     AR_MPTH_DISABLE,        /* da_tflag & DA_TFLAG_MPTH_DISABLE */
  359.     AR_RESERVE,        /* da_tflag & DA_TFLAG_RESERVE */
  360.     AR_LOCK,        /* da_lock */
  361.     AR_NAME,        /* da_name */
  362.     AR_COMMENT,        /* da_comment */
  363.     AR_TYPE,        /* da_type */
  364.     AR_INFO,        /* da_info */
  365.     AR_RID,            /* da_rid */
  366.     AR_ONLINE,        /* da_pflag & DA_PFLAG_ONLINE */
  367.     AR_UPDATE_TID,        /* da_update_tid */
  368.     AR_SPARE,        /* da_tflag & DA_TFLAG_SPARE */
  369.     AR_FAILING,        /* da_tflag & DA_TFLAG_FAILING */
  370.     AR_MAXIOSIZE,        /* da_maxiosize */
  371.     MAX_DAREC_TAG,        /* sentinel value, must be last */
  372.     AR_FAIL = -1,        /* failure from da_sscan_field */
  373.     AR_EOF = 0        /* EOF from da_sscan_field */
  374. };
  375. typedef enum darec_tag darec_tag_t;
  376.  
  377. /*
  378.  * plexvec - a vector of plex names
  379.  *
  380.  * This is used with vol_sscan_field() to represent one of the plexes
  381.  * defined by the "plex" variable.  An array of these structures can be
  382.  * returned.
  383.  */
  384. struct plexvec {
  385.     char pv_name[NAME_SZ];        /* plex association */
  386. };
  387.  
  388. /*
  389.  * sdvec - a vector of subdisk names and plex offsets
  390.  *
  391.  * This is used with plex_sscan_field() to represent one of the subdisks
  392.  * defined by the "sd" variable.  An array of these structures can be
  393.  * returned.  A subdisk whose offset is not specified explicitly will
  394.  * have an sv_offset of (voff_t)(-1). A subdisk whose column is not
  395.  * specified will have an sv_column of (long)(-1).
  396.  */
  397. struct sdvec {
  398.     char sv_name[NAME_SZ];        /* subdisk association */
  399.     voff_t sv_offset;        /* offset of subdisk within plex */
  400.     long sv_column;            /* column number */
  401. };
  402.  
  403. /*
  404.  * types of variables that can occur in sdrec, plexrec and volrec structures
  405.  */
  406. enum vxvm_tagtype {
  407.     TAG_NAME,            /* string of length NAME_LEN */
  408.     TAG_COMMNT,            /* string of length COMMENT_LEN */
  409.     TAG_LONG,            /* long */
  410.     TAG_EPOCH,            /* time_t */
  411.     TAG_FLAG,            /* flag within a char field */
  412.     TAG_LEN,            /* voff_t used for length */
  413.     TAG_OFFSET,            /* voff_t used for offset */
  414.     TAG_VKSTATE,            /* enum vol_kstate */
  415.     TAG_EXCEPT,            /* enum vol_except */
  416.     TAG_PREF,            /* preferred plex, length NAME_LEN */
  417.     TAG_R_POL,            /* enum vol_r_pol */
  418.     TAG_MINOR,            /* minor_t */
  419.     TAG_MODE,            /* mode_t, can be given symbolically */
  420.     TAG_UID,            /* uid_t, can be given as user name */
  421.     TAG_GID,            /* gid_t, can be given as group name */
  422.     TAG_PKSTATE,            /* enum plex_kstate */
  423.     TAG_PIOMODE,            /* plex I/O mode through char field */
  424.     TAG_LAYOUT,            /* plex_layout */
  425.     TAG_STWIDTH,            /* stripe width, conditional voff_t */
  426.     TAG_DEV,            /* dev_t */
  427.     TAG_PLEXLST,            /* list of associated plexes */
  428.     TAG_SDLST,            /* list of associated subdisks */
  429.     TAG_NOOP,            /* field value is not used */
  430.     TAG_LOG_TYPE,            /* volume log_type field */
  431.     TAG_ULONG,            /* unsigned long */
  432.     TAG_SEQNO,            /* 64-bit sequence number */
  433.     TAG_RID,            /* 64-bit record ID */
  434.     TAG_SIZE,            /* size_t */
  435.     TAG_NCOPY            /* diskgroup nconfig/nlog */
  436. };
  437.  
  438. /*
  439.  * tag description structure for any record type
  440.  */
  441.  
  442. struct voltagdesc {
  443.     int tag;            /* tag number in rec_set_t */
  444.     char *name;            /* name for variable */
  445.     enum vxvm_tagtype type;        /* variable type */
  446.     size_t offs;            /* offset within structure */
  447.     long info;            /* auxiliary info */
  448. };
  449.  
  450. /*
  451.  * vtagdesc, ptagdesc, and stagdesc - preserved for source compatibility
  452.  */
  453.  
  454. struct vtagdesc {
  455.     volrec_tag_t tag;        /* tag number in rec_set_t */
  456.     char *name;            /* name for variable */
  457.     enum vxvm_tagtype type;        /* variable type */
  458.     int offs;            /* offset within structure */
  459.     long info;            /* auxiliary info */
  460. };
  461.  
  462. struct ptagdesc {
  463.     plexrec_tag_t tag;        /* tag number in rec_set_t */
  464.     char *name;            /* name for variable */
  465.     enum vxvm_tagtype type;        /* variable type */
  466.     int offs;            /* offset within structure */
  467.     long info;            /* auxiliary info */
  468. };
  469.  
  470. struct stagdesc {
  471.     sdrec_tag_t tag;        /* tag number in rec_set_t */
  472.     char *name;            /* name for variable */
  473.     enum vxvm_tagtype type;        /* variable type */
  474.     int offs;            /* offset within structure */
  475.     long info;            /* auxiliary info */
  476. };
  477.  
  478. /*
  479.  * Set manipulation macros for record element tags, ala POSIX sigset_t
  480.  */
  481.  
  482. /*
  483.  * Sets contain up to 64 bits, allowing for future expansion.  The
  484.  * bits are stored in an array of integers.  The first tag number,
  485.  * corresponding to bit 0 of the first integer, is tag number 1.
  486.  */
  487.  
  488. /* number of bits in an int */
  489. #define _VOL_BPI    (sizeof(uint_t) * 8)
  490.  
  491. /* which integer in an array contains a specific tag */
  492. #define _VOL_WHINT(tag)    (((uint_t)(tag) - 1) / _VOL_BPI)
  493.  
  494. /* which bit in an integer corresponds to a specific tag */
  495. #define _VOL_WHBIT(tag)    ((uint_t)1 << (((uint_t)(tag) - 1) % _VOL_BPI))
  496.  
  497. /*
  498.  * define structures that contain enough bits to represent each
  499.  * interesting part of volume, plex and subdisk structures.
  500.  * Add plenty of extra bits to allow for future expansion.
  501.  */
  502. typedef struct rec_set {
  503.     uint_t bits[128 / _VOL_BPI];    /* allow for expansion to 128 tags */
  504. } rec_set_t;
  505.  
  506. /*
  507.  * vol_emptyset - clear all bits in a rec_set_t structure
  508.  * vol_fillset - set all bits in a rec_set_t structure
  509.  * vol_addset(s, t)    - set the bit for tag t in the set s
  510.  * vol_delset(s, t)    - clear the bit for tag t in the set s
  511.  * vol_ismember(s, t)    - test whether the bit for tag t is set in set s
  512.  */
  513.  
  514. #define vol_emptyset(s)    \
  515.     ((void) memset((char *)(s)->bits, 0, sizeof(struct rec_set)))
  516. #define vol_fillset(s)    \
  517.     ((void) memset((char *)(s)->bits, 0xffff, sizeof(struct rec_set)))
  518. #define vol_addset(s,t)  ((s)->bits[_VOL_WHINT((t))] |= _VOL_WHBIT((t)))
  519. #define vol_delset(s,t)  ((s)->bits[_VOL_WHINT((t))] &= ~_VOL_WHBIT((t)))
  520. #define vol_ismember(s,t)  (((s)->bits[_VOL_WHINT((t))] & _VOL_WHBIT((t))) != 0)
  521.  
  522. /*
  523.  * table of all accessible volrec structure variables
  524.  */
  525.  
  526. extern CONST struct voltagdesc vtagdesc[];
  527. extern CONST struct voltagdesc ptagdesc[];
  528. extern CONST struct voltagdesc stagdesc[];
  529. extern CONST struct voltagdesc mtagdesc[];
  530. extern CONST struct voltagdesc gtagdesc[];
  531. extern CONST struct voltagdesc atagdesc[];
  532. extern CONST struct voltagdesc *CONST endvtagdesc;
  533. extern CONST struct voltagdesc *CONST endptagdesc;
  534. extern CONST struct voltagdesc *CONST endstagdesc;
  535. extern CONST struct voltagdesc *CONST endmtagdesc;
  536. extern CONST struct voltagdesc *CONST endgtagdesc;
  537. extern CONST struct voltagdesc *CONST endatagdesc;
  538.  
  539. #if defined(__STDC__)
  540.  
  541. extern int vol_print(const struct volrec *, const rec_set_t *, const char *,
  542.         const char *, FILE *);
  543. extern int plex_print(const struct plexrec *, const rec_set_t *, const char *,
  544.         const char *, FILE *);
  545. extern int sd_print(const struct sdrec *, const rec_set_t *, const char *,
  546.         const char *, FILE *);
  547. extern int dm_print(const struct dmrec *, const rec_set_t *, const char *,
  548.         const char *, FILE *);
  549. extern int dg_print(const struct dgrec *, const rec_set_t *, const char *,
  550.         const char *, FILE *);
  551. extern int da_print(const struct darec *, const rec_set_t *, const char *,
  552.         const char *, FILE *);
  553. extern int vol_print_field(const struct volrec *, volrec_tag_t, FILE *);
  554. extern int plex_print_field(const struct plexrec *, plexrec_tag_t, FILE *);
  555. extern int sd_print_field(const struct sdrec *, sdrec_tag_t, FILE *);
  556. extern int dm_print_field(const struct dmrec *, dmrec_tag_t, FILE *);
  557. extern int dg_print_field(const struct dgrec *, dgrec_tag_t, FILE *);
  558. extern int da_print_field(const struct darec *, darec_tag_t, FILE *);
  559. extern char *vol_sprint_field(const struct volrec *, const char *);
  560. extern char *plex_sprint_field(const struct plexrec *, const char *);
  561. extern char *sd_sprint_field(const struct sdrec *, const char *);
  562. extern char *dm_sprint_field(const struct dmrec *, const char *);
  563. extern char *dg_sprint_field(const struct dgrec *, const char *);
  564. extern char *da_sprint_field(const struct darec *, const char *);
  565.  
  566. extern int vol_sscan(struct volrec *, struct plexvec **, int *,
  567.         const rec_set_t *, rec_set_t *, char **);
  568. extern int plex_sscan(struct plexrec *, struct sdvec **, int *,
  569.         const rec_set_t *, rec_set_t *, char **);
  570. extern int sd_sscan(struct sdrec *, const rec_set_t *, rec_set_t *, char **);
  571. extern int dm_sscan(struct dmrec *, const rec_set_t *, rec_set_t *, char **);
  572. extern int dg_sscan(struct dgrec *, const rec_set_t *, rec_set_t *, char **);
  573. extern int da_sscan(struct darec *, const rec_set_t *, rec_set_t *, char **);
  574. extern volrec_tag_t vol_sscan_field(struct volrec *, struct plexvec **,
  575.         int *, const rec_set_t *, char **, int);
  576. extern plexrec_tag_t plex_sscan_field(struct plexrec *, struct sdvec **,
  577.         int *, const rec_set_t *, char **, int);
  578. extern sdrec_tag_t sd_sscan_field(struct sdrec *, const rec_set_t *,
  579.         char **, int);
  580. extern dmrec_tag_t dm_sscan_field(struct dmrec *, const rec_set_t *,
  581.         char **, int);
  582. extern dgrec_tag_t dg_sscan_field(struct dgrec *, const rec_set_t *,
  583.         char **, int);
  584. extern darec_tag_t da_sscan_field(struct darec *, const rec_set_t *,
  585.         char **, int);
  586.  
  587. extern char *vol_readrec(vol_object_t *, FILE *);
  588. extern int vol_isempty(const rec_set_t *);
  589.  
  590. #else    /* not __SDC__ */
  591.  
  592. extern int vol_print();
  593. extern int plex_print();
  594. extern int sd_print();
  595. extern int dm_print();
  596. extern int dg_print();
  597. extern int da_print();
  598. extern int vol_print_field();
  599. extern int plex_print_field();
  600. extern int sd_print_field();
  601. extern int dm_print_field();
  602. extern int dg_print_field();
  603. extern int da_print_field();
  604. extern char *vol_sprint_field();
  605. extern char *plex_sprint_field();
  606. extern char *sd_sprint_field();
  607. extern char *dm_sprint_field();
  608. extern char *dg_sprint_field();
  609. extern char *da_sprint_field();
  610.  
  611. extern int vol_sscan();
  612. extern int plex_sscan();
  613. extern int sd_sscan();
  614. extern int dm_sscan();
  615. extern int dg_sscan();
  616. extern int da_sscan();
  617. extern volrec_tag_t vol_sscan_field();
  618. extern plexrec_tag_t plex_sscan_field();
  619. extern sdrec_tag_t sd_sscan_field();
  620. extern dmrec_tag_t dm_sscan_field();
  621. extern dgrec_tag_t dg_sscan_field();
  622. extern darec_tag_t da_sscan_field();
  623.  
  624. extern char *vol_readrec();
  625. extern int vol_isempty();
  626.  
  627. #endif    /* __STD__ */
  628.  
  629. #endif    /* _VOLSCNPRNT_H */
  630.