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

嵌入式Linux

开发平台:

C/C++

  1. /*
  2.  * spull.h -- definitions for the partitionable block device
  3.  *
  4.  * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet
  5.  * Copyright (C) 2001 O'Reilly & Associates
  6.  *
  7.  * The source code in this file can be freely used, adapted,
  8.  * and redistributed in source or binary form, so long as an
  9.  * acknowledgment appears in derived source files.  The citation
  10.  * should list that the code comes from the book "Linux Device
  11.  * Drivers" by Alessandro Rubini and Jonathan Corbet, published
  12.  * by O'Reilly & Associates.   No warranty is attached;
  13.  * we cannot take responsibility for errors or fitness for use.
  14.  */
  15. #include <linux/ioctl.h>
  16. /* version dependencies have been confined to a separate file */
  17. #include "sysdep.h"
  18. /*
  19.  * Macros to help debugging
  20.  */
  21. #undef PDEBUG             /* undef it, just in case */
  22. #ifdef SPULL_DEBUG
  23. #  ifdef __KERNEL__
  24.      /* This one if debugging is on, and kernel space */
  25. #    define PDEBUG(fmt, args...) printk( KERN_DEBUG "spull: " fmt, ## args)
  26. #  else
  27.      /* This one for user space */
  28. #    define PDEBUG(fmt, args...) fprintf(stderr, fmt, ## args)
  29. #  endif
  30. #else
  31. #  define PDEBUG(fmt, args...) /* not debugging: nothing */
  32. #endif
  33. #undef PDEBUGG
  34. #define PDEBUGG(fmt, args...) /* nothing: it's a placeholder */
  35. #define SPULL_MAJOR 0       /* dynamic major by default */
  36. #define SPULL_DEVS 2        /* two disks */
  37. #define SPULL_RAHEAD 2      /* two sectors */
  38. #define SPULL_SIZE 2048     /* two megs each */
  39. #define SPULL_BLKSIZE 1024  /* 1k blocks */
  40. #define SPULL_HARDSECT 512  /* 512-byte hardware sectors */
  41. /*
  42.  * The spull device is removable: if it is left closed for more than
  43.  * half a minute, it is removed. Thus use a usage count and a
  44.  * kernel timer
  45.  */
  46. typedef struct Spull_Dev {
  47.    int size;
  48.    int usage;
  49.    struct timer_list timer;
  50.    spinlock_t lock;
  51.    u8 *data;
  52. }              Spull_Dev;