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_*/
|