summaryrefslogtreecommitdiff
path: root/scsi/compat_30.h
blob: 988aed778b9081f79b00cc27dc766f013db23c9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/* 
 * Mach Operating System
 * Copyright (c) 1991,1990 Carnegie Mellon University
 * All Rights Reserved.
 * 
 * Permission to use, copy, modify and distribute this software and its
 * documentation is hereby granted, provided that both the copyright
 * notice and this permission notice appear in all copies of the
 * software, derivative works or modified versions, and any portions
 * thereof, and that both notices appear in supporting documentation.
 * 
 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
 * 
 * Carnegie Mellon requests users of this software to return to
 * 
 *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
 *  School of Computer Science
 *  Carnegie Mellon University
 *  Pittsburgh PA 15213-3890
 * 
 * any improvements or extensions that they make and grant Carnegie Mellon
 * the rights to redistribute these changes.
 */
/*
 *	File: compat_30.h
 * 	Author: Alessandro Forin, Carnegie Mellon University
 *	Date:	4/91
 *
 *	Compatibility defs to retrofit Mach 3.0 drivers
 *	into Mach 2.6.
 */

#ifndef	_SCSI_COMPAT_30_
#define	_SCSI_COMPAT_30_

#include <kern/assert.h>

#ifdef	MACH_KERNEL
/*
 * Mach 3.0 compiles with these definitions
 */

#include <device/param.h>
#include <device/io_req.h>
#include <device/device_types.h>
#include <device/disk_status.h>

/*
 * Scratch temporary in io_req structure (for error handling)
 */
#define	io_temporary	io_error

#else	/*MACH_KERNEL*/
/*
 * Mach 2.x compiles with these definitions
 */

/* ??? */
typedef	int	dev_mode_t;
typedef int	*dev_status_t;	/* Variable-length array of integers */
/* ??? */

/* Buffer structures */

typedef	int	io_return_t;

#include <sys/param.h>
#include <sys/buf.h>

#define	io_req	buf
typedef	struct buf	*io_req_t;

#define	io_req_alloc(ior,size)	ior = geteblk(size)
#define	io_req_free(ior)	brelse(ior)

/*
 * Redefine fields for drivers using new names
 */
#define	io_op		b_flags
#define	io_count	b_bcount
#define	io_error	b_error
#define	io_unit		b_dev
#define	io_recnum	b_blkno
#define	io_residual	b_resid
#define	io_data		b_un.b_addr
#define	io_done		b_iodone

/*
 * Redefine fields for driver request list heads, using new names.
 */
#define	io_next		av_forw
#define	io_prev		av_back
/*#define	io_next		b_actf*/
/*#define	io_prev		b_actl*/
#define	io_link		b_forw
#define	io_rlink	b_back
/*#define	io_count	b_active*/
/*#define	io_residual	b_errcnt*/
#define	io_alloc_size	b_bufsize

/*
 * Scratch temporary in io_req structure (for error handling)
 */
#define	io_temporary	b_pfcent

/*
 * Redefine flags
 */
#define	IO_WRITE	B_WRITE
#define	IO_READ		B_READ
#define	IO_OPEN		B_OPEN
#define	IO_DONE		B_DONE
#define	IO_ERROR	B_ERROR
#define	IO_BUSY		B_BUSY
#define	IO_WANTED	B_WANTED
#define	IO_BAD		B_BAD
#define	IO_CALL		B_CALL
#define	IO_INTERNAL	B_MD1

#define	IO_SPARE_START	B_MD1

#include <sys/disklabel.h>

/* Error codes */

#include <sys/errno.h>

#define	D_SUCCESS		ESUCCESS
#define	D_IO_ERROR		EIO
#define	D_NO_SUCH_DEVICE	ENXIO
#define	D_INVALID_SIZE		EINVAL
#define	D_ALREADY_OPEN		EBUSY
#define	D_INVALID_OPERATION	EINVAL
#define D_NO_MEMORY		ENOMEM
#define D_WOULD_BLOCK		EWOULDBLOCK
#define D_DEVICE_DOWN		EIO
#define	D_READ_ONLY		EROFS

/*
 * Debugging support
 */
#define db_printf		kdbprintf
#define db_printsym(s,m)	kdbpsymoff(s,1,"")

/*
 * Miscellaneous utils
 */

#define	check_memory(addr,dow)	((dow) ? wbadaddr(addr,4) : badaddr(addr,4))

#include <sys/kernel.h>		/* for hz */
#include <scsi/adapters/scsi_user_dma.h>

#ifdef	DECSTATION
#include <mach/mips/vm_param.h>	/* for page size */
#define	ULTRIX_COMPAT	1	/* support for rzdisk disk formatter  */
#endif	/*DECSTATION*/

#endif	/*MACH_KERNEL*/

#endif	/*_SCSI_COMPAT_30_*/