Files
Arquivotheca.SunOS-4.1.4/sys/sundev/ipvar.h
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

125 lines
3.8 KiB
C

/*
* @(#)ipvar.h 1.1 94/10/31 Copyright (c) 1988 by Sun Microsystems, Inc.
*
*/
#ifndef _IPIVAR_
#define _IPIVAR_
/* controller structure */
#define NLPART NDKMAP
#define LPART(dev) (dev & 07)
#define MAXUNITS 16
/*
* Packet control Block
*/
struct ippcb {
struct ipictlr *pcb_c; /* pointer to controller struct */
struct ipiunit *pcb_un; /* ptr to unit struct */
struct buf *pcb_bp; /* know my buffer */
struct ippcb *pcb_prev; /* prev pcb */
struct ippcb *pcb_next;
int pcb_retry;
int pcb_mbcookie;
u_char pcb_flags;
u_char pcb_mode;
u_char pcb_inuse;
u_char pcb_busy;
short pcb_timecount;
short pcb_errcnt;
struct ipi3pkt *pcb_ppkt; /* pointer to pkt */
};
/*
* Controller structure One per controller
*/
struct ipictlr {
struct mb_ctlr *c_mc; /* Back pointer to mb_ctlr structure */
struct ipiunit *c_units[MAXUNITS];/* max units on controller */
struct ipidevice *c_io; /* ptr to I/O space data */
struct ipi3pkt *c_commandpkts;
int c_busy; /* controller is busy */
int c_pend; /* set - pending for DVMA alloc */
int c_intpri; /* interrupt priority */
int c_intvec; /* interrupt vector */
u_long c_flags; /* state information */
struct ippcb c_pcbhdr; /* pcb header link list manip */
struct buf c_bufhdr; /* buf hdr link list manip */
struct ippcb *c_ppcbsent; /* pcbs sent this far */
};
/*
* Unit structure One per drive
*/
struct ipiunit {
struct ipictlr *c; /* controller */
struct dk_map *un_map; /* logical partitions */
struct dk_geom *un_g; /* disk geometry */
struct buf *un_rtab; /* for physio */
int un_ltick; /* last time active */
struct mb_device *un_md; /* generic unit */
struct mb_ctlr *un_mc; /* generic controller */
struct dkbad *un_bad; /* bad sector info */
int un_errsect;/* sector in error */
u_char un_errno; /* error number */
u_char un_errsevere; /* error severity */
u_short un_errcmd; /* command in error */
u_char un_flags; /* state information */
};
#define IATTACHED 0x10
#define ISLAVED 0x20
#define IOPEN 0x40
/* OPCODES */
#define IP_ATTRIBUTES 0x02 /* Initialize, report, or load slave attribute */
#define IP_ALLOC_RESTOR 0x34 /* Allocate restore */
#define IP_SLAVE_DIAG 0x80 /* Perform Slave Diagnostics */
#define IP_FACIL_DIAG 0x81 /* Perform Facility Diagnostics */
#define IP_FORMAT 0x28 /* Format */
#define IP_NOP 0x00 /* Nop */
#define IP_OPER_MODE 0x07 /* Set Operating mode of facility */
#define IP_PORT_ADDR 0x04 /* Port Address */
#define IP_POS_CTL 0x41 /* Position Control */
#define IP_READ 0x10 /* Read */
#define IP_READ_BUF 0x52 /* Read Buffer */
#define IP_WRITE_BUF 0x62 /* Write Buffer */
#define IP_READ_DEFLIST 0x82 /* Read Defect List */
#define IP_WRITE_DEFLIST 0x83 /* Read Defect List */
#define IP_READ_ERRLOG 0x84 /* Read Error Log */
#define IP_REALLOC 0x33 /* Reallocate Defect */
#define IP_REPORT_STAT 0x03 /* Report Addressee Status */
#define IP_REPORT_POS 0x42 /* Report Position */
#define IP_WRITE 0x20 /* Write */
#define IP_STAT 0x91 /* Read Statistics */
/* Bitdefs for Opcode Modifiers */
#define RWMOD 1 /* read: only read good data. write: */
#define IP_SYNC 0x1
#define IP_ASYNC 0x2
#define IP_SLEEP 0x3
#define IP_IN 0x1
#define IP_OUT 0x2
/* opcodes for ioctl */
#define IP_DIAG_ENTER 0x77
#define IP_DIAG_EXIT 0x78
#define IP_MAPDVMA 0x79
#define IP_MAPREGS 0x7a
#define PCB_GOT_DVMA 0x4
#define PCB_FAKEBP 0x8 /* pcb carries a fake bp */
#endif _IPIVAR_