home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / sys / chio.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  2.9 KB  |  110 lines

  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
  37. struct 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_ */
  110.