ataraid.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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