1
0
Files
irix-657m-src/stand/arcs/dmon/include/dkio.h
2022-09-29 17:59:04 +03:00

156 lines
5.4 KiB
C

/* --------------------------------------------------- */
/* | Copyright (c) 1986 MIPS Computer Systems, Inc. | */
/* | All Rights Reserved. | */
/* --------------------------------------------------- */
/* $Header: /proj/irix6.5.7m/isms/stand/arcs/dmon/include/RCS/dkio.h,v 1.2 1998/05/14 15:01:34 jtk Exp $ */
#ifndef _SYS_DKIO_
#define _SYS_DKIO_ 1
/* dkio.h 6.1 83/07/29 */
/*
* Structures and definitions for disk io control commands
*/
/* disk io control commands */
#define _DIOC_(x) (('d'<<8) | x)
#define DIOCFMTTRK _DIOC_(1) /* Format and Map */
#define DIOCVFYSEC _DIOC_(2) /* Verify sectors */
#define DIOCGETCTLR _DIOC_(3) /* Get ctlr info */
#define DIOCDIAG _DIOC_(4) /* Perform diag */
#define DIOCSETDP _DIOC_(5) /* Set devparams */
#define DIOCGETVH _DIOC_(6) /* Get volume header */
/* BSD compatibility for now */
#define DIOCFMTMAP _DIOC_(1) /* Format and Map */
#define DIOCNOECC _DIOC_(20) /* Disable/Enable ECC */
#define DIOCRDEFECTS _DIOC_(21) /* Read meadia defects */
#define DIOCINITVH _DIOC_(22) /* Initialize volume header */
#define DIOCRECONFIG _DIOC_(23) /* SETVH, *and* reconfigure drive */
#define DIOCSOFTCNT _DIOC_(24) /* get/set soft error count */
#define DIOCSEEK _DIOC_(25) /* seek disk */
#define DIOCWRTVFY _DIOC_(26) /* turn on/off write verify flag */
#define DIOCREMOVE _DIOC_(27) /* setup for disk removal */
#define DIOCDISKCACHE _DIOC_(28) /* enable/disable disk cache */
#define DIOCDISKGEOM _DIOC_(29) /* get disk geometry */
/* vdisk io control commands */
#define DIOCGETDKTAB _DIOC_(30) /* Get dktab */
#define DIOCADDDKTAB _DIOC_(31) /* Add dktab */
#define DIOCDELDKTAB _DIOC_(32) /* Del dktab */
#define DIOCSETATTR _DIOC_(33) /* Set virtual disk attributes */
#define DIOCTRKID _DIOC_(34) /* Read track id */
/* Reserved for SGI. */
#define DIOCSETVH _DIOC_(7) /* SGI - SETVH */
/* Can be or'd with DIOCFORCE */
/* #define DIOCRESERVED _DIOC_(8) /* SGI - DRIVETYPE */
#define DIOCTEST _DIOC_(9) /* SGI - TEST */
/* #define DIOCRESERVED _DIOC_(10) /* SGI - FORMAT */
/* #define DIOCRESERVED _DIOC_(11) /* SGI - SENSE */
/* #define DIOCRESERVED _DIOC_(12) /* SGI - SELECT */
#define DIOCRDCAP _DIOC_(13) /* SGI - READCAPACITY */
/* #define DIOCRESERVED _DIOC_(14) /* SGI - RDEFECTS */
/* #define DIOCRESERVED _DIOC_(15) /* SGI - unused */
/* #define DIOCRESERVED _DIOC_(16) /* SGI - unused */
/* #define DIOCRESERVED _DIOC_(17) /* SGI - unused */
/* #define DIOCRESERVED _DIOC_(18) /* SGI - unused */
/* #define DIOCRESERVED _DIOC_(19) /* SGI - unused */
#define DIOCFORCE _DIOC_(128) /* "FORCE" is a flag that can be or'd
* in with DIOCSETVH to bypass the
* specfs "in-use" test that would
* fail the SETVH with an EBUSY if
* a partition was already "in-use".
* Note: Using this bit as a "flag"
* limits the # of DIOC ioctl's
* to 127 in number.
*/
/*
* Added from System 5.3:
* Ioctls to disk drivers will pass the address to this
* structure which the driver handle as appropriate.
*
*/
struct io_arg {
int retval;
unsigned long sectst;
unsigned long memaddr;
unsigned long datasz;
};
/*
* return values returned in retval when EIO returned
*/
#define DIOC_BADSIZE 1
#define DIOC_NOTVOLHDR 2
#define DIOC_DISKBUSY 3
#define DIOC_OPERR 4
#define DIOC_EFAULT 5
#define DIOC_EINVAL 6
/*
* driver ioctl() commands not supported
*/
#define VIOC ('V'<<8)
#define V_PREAD (VIOC|1) /* Physical Read */
#define V_PWRITE (VIOC|2) /* Physical Write */
#define V_PDREAD (VIOC|3) /* Read of Physical
* Description Area */
#define V_PDWRITE (VIOC|4) /* Write of Physical
* Description Area */
#define V_GETSSZ (VIOC|5) /* Get the sector size of media */
struct devtable {
int nmajr; /* Number of major numbers for this device */
int ncpermjr; /* number of controllers per major number */
int ndrives; /* number of drives per controller */
int *mult; /* Array of multiple major numbers */
};
struct bootdevtbl {
char *name; /* name that is typed in */
int (*has_func)(); /* function to determine if module is there */
};
/* defines for SCSI read defects DIOCRDEFECTS */
typedef struct defect_header {
unsigned short reserved;
unsigned short list_size;
} DEFECT_HEADER;
typedef struct defect_entry {
unsigned long def_cyl : 24;
unsigned long def_head : 8;
unsigned long def_sect;
} DEFECT_ENTRY;
#define HEADER_DEFECTS 0
#define GROWTH_DEFECTS 1
#define PRIMARY_DEFECTS 2
#define ALL_DEFECTS 3
/* DIOCDISKGEOM structure */
typedef struct geometry_info {
unsigned long geom_cyl; /* nr. of cylinders */
unsigned short geom_head; /* nr. of heads */
unsigned short geom_spt; /* nr. of sectors per track */
unsigned short geom_bps; /* nr. of bytes per sector */
unsigned short geom_tpz; /* nr. of tracks per zone */
unsigned short geom_aspz; /* nr. of alternate sectors per zone */
unsigned short geom_atpz; /* nr. of alternate tracks per zone */
unsigned short geom_atpv; /* nr. of alternate tracks per volume */
unsigned short geom_ilv; /* interleave */
unsigned short geom_tsf; /* track skew factor */
unsigned short geom_csf; /* cylinder skew factor */
} GEOMETRY_INFO;
#endif _SYS_DKIO_