efs_fs_i.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * efs_fs_i.h
  3.  *
  4.  * Copyright (c) 1999 Al Smith
  5.  *
  6.  * Portions derived from IRIX header files (c) 1988 Silicon Graphics
  7.  */
  8. #ifndef __EFS_FS_I_H__
  9. #define __EFS_FS_I_H__
  10. typedef int32_t efs_block_t;
  11. typedef uint32_t efs_ino_t;
  12. #define EFS_DIRECTEXTENTS 12
  13. /*
  14.  * layout of an extent, in memory and on disk. 8 bytes exactly.
  15.  */
  16. typedef union extent_u {
  17. unsigned char raw[8];
  18. struct extent_s {
  19. unsigned int ex_magic:8; /* magic # (zero) */
  20. unsigned int ex_bn:24; /* basic block */
  21. unsigned int ex_length:8; /* numblocks in this extent */
  22. unsigned int ex_offset:24; /* logical offset into file */
  23. } cooked;
  24. } efs_extent;
  25. typedef struct edevs {
  26. __be16 odev;
  27. __be32 ndev;
  28. } efs_devs;
  29. /*
  30.  * extent based filesystem inode as it appears on disk.  The efs inode
  31.  * is exactly 128 bytes long.
  32.  */
  33. struct efs_dinode {
  34. __be16 di_mode; /* mode and type of file */
  35. __be16 di_nlink; /* number of links to file */
  36. __be16 di_uid; /* owner's user id */
  37. __be16 di_gid; /* owner's group id */
  38. __be32 di_size; /* number of bytes in file */
  39. __be32 di_atime; /* time last accessed */
  40. __be32 di_mtime; /* time last modified */
  41. __be32 di_ctime; /* time created */
  42. __be32 di_gen; /* generation number */
  43. __be16 di_numextents; /* # of extents */
  44. u_char di_version; /* version of inode */
  45. u_char di_spare; /* spare - used by AFS */
  46. union di_addr {
  47. efs_extent di_extents[EFS_DIRECTEXTENTS];
  48. efs_devs di_dev; /* device for IFCHR/IFBLK */
  49. } di_u;
  50. };
  51. /* efs inode storage in memory */
  52. struct efs_inode_info {
  53. int numextents;
  54. int lastextent;
  55. efs_extent extents[EFS_DIRECTEXTENTS];
  56. struct inode vfs_inode;
  57. };
  58. #endif /* __EFS_FS_I_H__ */