File: /usr/include/linux/zftape.h

1     #ifndef _ZFTAPE_H
2     #define _ZFTAPE_H
3     
4     /*
5      * Copyright (C) 1996, 1997 Claus-Justus Heine.
6     
7      This program is free software; you can redistribute it and/or modify
8      it under the terms of the GNU General Public License as published by
9      the Free Software Foundation; either version 2, or (at your option)
10      any later version.
11     
12      This program is distributed in the hope that it will be useful,
13      but WITHOUT ANY WARRANTY; without even the implied warranty of
14      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15      GNU General Public License for more details.
16     
17      You should have received a copy of the GNU General Public License
18      along with this program; see the file COPYING.  If not, write to
19      the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
20     
21      *
22      * $Source: /homes/cvs/ftape-stacked/include/linux/zftape.h,v $
23      * $Revision: 1.12 $
24      * $Date: 1997/10/21 11:02:37 $
25      *
26      *      Special ioctl and other global info for the zftape VFS
27      *      interface for the QIC-40/80/3010/3020 floppy-tape driver for
28      *      Linux.
29      */
30     
31     #define ZFTAPE_VERSION  "zftape for " FTAPE_VERSION
32     
33     #include <linux/ftape.h>
34     
35     #define ZFTAPE_LABEL       "Ftape - The Linux Floppy Tape Project!"
36     
37     /* Bits of the minor device number that control the operation mode */
38     #define ZFT_Q80_MODE		(1 << 3)
39     #define ZFT_ZIP_MODE		(1 << 4)
40     #define ZFT_RAW_MODE		(1 << 5)
41     #define ZFT_MINOR_OP_MASK	(ZFT_Q80_MODE	| 	\
42     				 ZFT_ZIP_MODE	| 	\
43     				 ZFT_RAW_MODE)
44     #define ZFT_MINOR_MASK		(FTAPE_SEL_MASK		|	\
45     				 ZFT_MINOR_OP_MASK	|	\
46     				 FTAPE_NO_REWIND)
47     
48     #ifdef ZFT_OBSOLETE
49     struct mtblksz {
50     	unsigned int mt_blksz;
51     };
52     #define MTIOC_ZFTAPE_GETBLKSZ _IOR('m', 104, struct mtblksz)
53     #endif
54     
55     #ifdef __KERNEL__
56     
57     extern int zft_init(void);
58     
59     static inline __s64 zft_div_blksz(__s64 value, __u32 blk_sz)
60     {
61     	if (blk_sz == 1) {
62     		return value;
63     	} else {
64     		return (__s64)(((__u32)(value >> 10) + (blk_sz >> 10) - 1) 
65     			       / (blk_sz >> 10));
66     	} 
67     }
68     
69     static inline __s64 zft_mul_blksz(__s64 value, __u32 blk_sz)
70     {
71     	if (blk_sz == 1) {
72     		return value;
73     	} else {
74     		/*  if blk_sz != 1, then it is a multiple of 1024. In
75     		 *  this case, `value' will also fit into 32 bits.
76     		 * 
77     		 *  Actually, this limits the capacity to 42
78     		 *  bits. This is (2^32)*1024, roughly a thousand
79     		 *  times 2GB, or 3 Terabytes. Hopefully this is enough
80     		 */
81     		return(__s64)(((__u32)(value)*(blk_sz>>10))<<10);
82     	}
83     }
84     
85     #endif
86     
87     #endif
88