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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * xpram.h -- definitions for the char module
  3.  *
  4.  *********/
  5. #include <linux/ioctl.h>
  6. #include <asm/atomic.h>
  7. #include <linux/major.h>
  8. /* version dependencies have been confined to a separate file */
  9. /*
  10.  * Macros to help debugging
  11.  */
  12. #define XPRAM_NAME "xpram"  /* name of device/module */
  13. #define XPRAM_DEVICE_NAME_PREFIX "slram" /* Prefix device name for major 35 */
  14. #define XPRAM_DEVS 1        /* one partition */
  15. #define XPRAM_RAHEAD 8      /* no real read ahead */
  16. #define XPRAM_PGSIZE 4096   /* page size of (expanded) mememory pages
  17.                              * according to S/390 architecture
  18.                              */
  19. #define XPRAM_BLKSIZE XPRAM_PGSIZE  /* must be equalt to page size ! */
  20. #define XPRAM_HARDSECT XPRAM_PGSIZE /* FIXME -- we have to deal with both
  21.                                      * this hard sect size and in some cases
  22.                                      * hard coded 512 bytes which I call
  23.                                      * soft sects:
  24.                                      */
  25. #define XPRAM_SOFTSECT 512
  26. #define XPRAM_MAX_DEVS 32   /* maximal number of devices (partitions) */
  27. #define XPRAM_MAX_DEVS1 33  /* maximal number of devices (partitions) +1 */
  28. /* The following macros depend on the sizes above */
  29. #define XPRAM_KB_IN_PG 4                     /* 4 kBs per page */
  30. #define XPRAM_KB_IN_PG_ORDER 2               /* 2^? kBs per page */
  31. /* Eventhough XPRAM_HARDSECT is set to 4k some data structures use hard
  32.  * coded 512 byte sa sector size
  33.  */
  34. #define XPRAM_SEC2KB(x) ((x >> 1) + (x & 1)) /* modifier used to compute size 
  35.                                                 in kB from number of sectors */
  36. #define XPRAM_SEC_IN_PG 8                    /* 8 sectors per page */
  37. #define XPRAM_SEC_IN_PG_ORDER 3              /* 2^? sectors per page */
  38. #define XPRAM_UNUSED 40                     /* unused space between devices, 
  39.                                              * in kB, i.e.
  40.                                              * must be a multiple of 4
  41.                                              */
  42. /*
  43.  * The xpram device is removable: if it is left closed for more than
  44.  * half a minute, it is removed. Thus use a usage count and a
  45.  * kernel timer
  46.  */
  47. typedef struct Xpram_Dev {
  48.    int            size;   /* size in KB not in Byte - RB - */
  49.    atomic_t       usage;
  50.    char *         device_name;   /* device name prefix in devfs */
  51.    devfs_handle_t devfs_entry;   /* handle needed to unregister dev from devfs */
  52.    u8 *data;
  53. }              Xpram_Dev;
  54. /* 2.2: void xpram_setup (char *, int *); */
  55. /* begin 2.3 */
  56. int xpram_setup (char *);
  57. /* end 2.3 */
  58. int xpram_init(void);