import of ftp.dlink.com/GPL/DSMG-600_reB/ppclinux.tar.gz
[linux-2.4.21-pre4.git] / drivers / ide / raid / ataraid.h
1 /*
2    ataraid.h  Copyright (C) 2001 Red Hat, Inc. All rights reserved.
3
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2, or (at your option)
7    any later version.
8    
9    You should have received a copy of the GNU General Public License
10    (for example /usr/src/linux/COPYING); if not, write to the Free
11    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  
12    
13    Authors:     Arjan van de Ven <arjanv@redhat.com>
14                 
15    
16 */
17
18 #include <linux/module.h>
19 #include <linux/init.h>
20 #include <linux/kernel.h>
21 #include <asm/semaphore.h>
22 #include <linux/blkdev.h>
23 #include <linux/blkpg.h>
24 #include <linux/genhd.h>
25 #include <linux/ioctl.h>
26
27 #include <linux/ide.h>
28 #include <asm/uaccess.h>
29
30 #define ATAMAJOR 114
31 #define SHIFT 4
32 #define MINOR_MASK 15
33 #define MAJOR_MASK 15
34
35                                         
36 /* raid_device_operations is a light struct block_device_operations with an
37    added method for make_request */
38 struct raid_device_operations {
39         int (*open) (struct inode *, struct file *);
40         int (*release) (struct inode *, struct file *);
41         int (*ioctl) (struct inode *, struct file *, unsigned, unsigned long);
42         int (*make_request) (request_queue_t *q, int rw, struct buffer_head * bh);
43 };
44
45
46 struct geom {
47         unsigned char heads;
48         unsigned int cylinders;
49         unsigned char sectors;
50 };
51
52 /* structure for the splitting of bufferheads */
53
54 struct ataraid_bh_private {
55         struct buffer_head *parent;
56         atomic_t count;
57 };
58
59 extern struct gendisk ataraid_gendisk;
60
61 extern int ataraid_get_device(struct raid_device_operations *fops);
62 extern void ataraid_release_device(int device);
63 extern int get_blocksize(kdev_t dev);
64 extern void ataraid_register_disk(int device,long size);
65 extern struct buffer_head *ataraid_get_bhead(void);
66 extern struct ataraid_bh_private *ataraid_get_private(void);
67 extern void ataraid_end_request(struct buffer_head *bh, int uptodate);
68
69
70
71
72