sbull.h
上传用户:wudi5211
上传日期:2010-01-21
资源大小:607k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

C/C++

  1. /*
  2.  * sbull.h -- definitions for the char module
  3.  *
  4.  *********/
  5. #include <linux/ioctl.h>
  6. /* version dependencies have been confined to a separate file */
  7. #include "sysdep.h"
  8. /* Multiqueue only works on 2.4 */
  9. #ifdef SBULL_MULTIQUEUE
  10. #  ifndef LINUX_24
  11. #    warning "Multiqueue only works on 2.4 kernels"
  12. #    undef SBULL_MULTIQUEUE
  13. #  endif
  14. #endif
  15. /*
  16.  * Macros to help debugging
  17.  */
  18. #undef PDEBUG             /* undef it, just in case */
  19. #ifdef SBULL_DEBUG
  20. #  ifdef __KERNEL__
  21.      /* This one if debugging is on, and kernel space */
  22. #    define PDEBUG(fmt, args...) printk( KERN_DEBUG "sbull: " fmt, ## args)
  23. #  else
  24.      /* This one for user space */
  25. #    define PDEBUG(fmt, args...) fprintf(stderr, fmt, ## args)
  26. #  endif
  27. #else
  28. #  define PDEBUG(fmt, args...) /* not debugging: nothing */
  29. #endif
  30. #undef PDEBUGG
  31. #define PDEBUGG(fmt, args...) /* nothing: it's a placeholder */
  32. #define SBULL_MAJOR 0       /* dynamic major by default */
  33. #define SBULL_DEVS 2        /* two disks */
  34. #define SBULL_RAHEAD 2      /* two sectors */
  35. #define SBULL_SIZE 2048     /* two megs each */
  36. #define SBULL_BLKSIZE 1024  /* 1k blocks */
  37. #define SBULL_HARDSECT 512  /* 2.2 and 2.4 can used different values */
  38. #define SBULLR_MAJOR 0      /* Dynamic major for raw device */
  39. /*
  40.  * The sbull device is removable: if it is left closed for more than
  41.  * half a minute, it is removed. Thus use a usage count and a
  42.  * kernel timer
  43.  */
  44. typedef struct Sbull_Dev {
  45.    int size;
  46.    int usage;
  47.    struct timer_list timer;
  48.    spinlock_t lock;
  49.    u8 *data;
  50. #ifdef SBULL_MULTIQUEUE
  51.    request_queue_t queue;
  52.    int busy;
  53. #endif
  54. }              Sbull_Dev;