shmem_fs.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef __SHMEM_FS_H
  2. #define __SHMEM_FS_H
  3. /* inode in-kernel data */
  4. #define SHMEM_NR_DIRECT 16
  5. /*
  6.  * A swap entry has to fit into a "unsigned long", as
  7.  * the entry is hidden in the "index" field of the
  8.  * swapper address space.
  9.  *
  10.  * We have to move it here, since not every user of fs.h is including
  11.  * mm.h, but mm.h is including fs.h via sched .h :-/
  12.  */
  13. typedef struct {
  14. unsigned long val;
  15. } swp_entry_t;
  16. extern atomic_t shmem_nrpages;
  17. struct shmem_inode_info {
  18. spinlock_t lock;
  19. struct semaphore  sem;
  20. unsigned long next_index;
  21. swp_entry_t i_direct[SHMEM_NR_DIRECT]; /* for the first blocks */
  22. void       **i_indirect; /* indirect blocks */
  23. unsigned long swapped;
  24. int locked;     /* into memory */
  25. struct list_head list;
  26. struct inode        *inode;
  27. };
  28. struct shmem_sb_info {
  29. unsigned long max_blocks;   /* How many blocks are allowed */
  30. unsigned long free_blocks;  /* How many are left for allocation */
  31. unsigned long max_inodes;   /* How many inodes are allowed */
  32. unsigned long free_inodes;  /* How many are left for allocation */
  33. spinlock_t    stat_lock;
  34. };
  35. #define SHMEM_I(inode)  (&inode->u.shmem_i)
  36. #endif