Subversion Repositories shark

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 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: /home/fabio/w/shark/sharkcvs/CVSROOT/shark/drivers/linuxc26/include/linux/zftape.h,v $
23
 * $Revision: 1.1 $
24
 * $Date: 2004-01-28 15:27:05 $
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