]> git.saurik.com Git - apple/xnu.git/blame - bsd/sys/chio.h
xnu-123.5.tar.gz
[apple/xnu.git] / bsd / sys / chio.h
CommitLineData
1c79356b
A
1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
23/*
24 * The NEXTSTEP Software License Agreement specifies the terms
25 * and conditions for redistribution.
26 */
27
28#ifndef _SYS_CHIO_H_
29#define _SYS_CHIO_H_
30
31/*
32 * Structures and definitions for changer io control commands
33 */
34
35#define CH_INVERT 0x10000
36#define CH_ADDR_MASK 0xffff
37struct chop {
38 short ch_op; /* operations defined below */
39 short result; /* the result */
40 union {
41 struct {
42 int chm; /* Transport element */
43 int from;
44 int to;
45 } move;
46 struct {
47 int chm; /* Transport element */
48 int to;
49 } position;
50 struct {
51 short chmo; /* Offset of first CHM */
52 short chms; /* No. of CHM */
53 short slots; /* No. of Storage Elements */
54 short sloto; /* Offset of first SE */
55 short imexs; /* No. of Import/Export Slots */
56 short imexo; /* Offset of first IM/EX */
57 short drives; /* No. of CTS */
58 short driveo; /* Offset of first CTS */
59 short rot; /* CHM can rotate */
60 } getparam;
61 struct {
62 int type;
63#define CH_CHM 1
64#define CH_STOR 2
65#define CH_IMEX 3
66#define CH_CTS 4
67 int from;
68 struct {
69 u_char elema_1;
70 u_char elema_0;
71 u_char full:1;
72 u_char rsvd:1;
73 u_char except:1;
74 u_char :5;
75 u_char rsvd2;
76 union {
77 struct {
78 u_char add_sense_code;
79 u_char add_sense_code_qualifier;
80 } specs;
81 short add_sense;
82/* WARINING LSB only */
83#define CH_CHOLDER 0x0290 /* Cartridge holder is missing */
84#define CH_STATUSQ 0x0390 /* Status is questionable */
85#define CH_CTS_CLOSED 0x0490 /* CTS door is closed */
86 } ch_add_sense;
87 u_char rsvd3[3];
88 u_char :6;
89 u_char invert:1;
90 u_char svalid:1;
91 u_char source_1;
92 u_char source_0;
93 u_char rsvd4[4];
94 } elem_data;
95 } get_elem_stat;
96 } u;
97};
98
99/* operations */
100#define CHMOVE 1
101#define CHPOSITION 2
102#define CHGETPARAM 3
103#define CHGETELEM 4
104
105
106/* Changer IO control command */
107#define CHIOOP _IOWR('c', 1, struct chop) /* do a mag tape op */
108
109#endif /* !_SYS_CHIO_H_ */