uboot/fs/jffs2/jffs2_private.h
<<
>>
Prefs
   1#ifndef jffs2_private_h
   2#define jffs2_private_h
   3
   4#include <jffs2/jffs2.h>
   5
   6
   7struct b_node {
   8        u32 offset;
   9        struct b_node *next;
  10        enum { CRC_UNKNOWN = 0, CRC_OK, CRC_BAD } datacrc;
  11};
  12
  13struct b_list {
  14        struct b_node *listTail;
  15        struct b_node *listHead;
  16#ifdef CONFIG_SYS_JFFS2_SORT_FRAGMENTS
  17        struct b_node *listLast;
  18        int (*listCompare)(struct b_node *new, struct b_node *node);
  19        u32 listLoops;
  20#endif
  21        u32 listCount;
  22        struct mem_block *listMemBase;
  23};
  24
  25struct b_lists {
  26        struct b_list dir;
  27        struct b_list frag;
  28        void *readbuf;
  29};
  30
  31struct b_compr_info {
  32        u32 num_frags;
  33        u32 compr_sum;
  34        u32 decompr_sum;
  35};
  36
  37struct b_jffs2_info {
  38        struct b_compr_info compr_info[JFFS2_NUM_COMPR];
  39};
  40
  41static inline int
  42hdr_crc(struct jffs2_unknown_node *node)
  43{
  44#if 1
  45        u32 crc = crc32_no_comp(0, (unsigned char *)node, sizeof(struct jffs2_unknown_node) - 4);
  46#else
  47        /* what's the semantics of this? why is this here? */
  48        u32 crc = crc32_no_comp(~0, (unsigned char *)node, sizeof(struct jffs2_unknown_node) - 4);
  49
  50        crc ^= ~0;
  51#endif
  52        if (node->hdr_crc != crc) {
  53                return 0;
  54        } else {
  55                return 1;
  56        }
  57}
  58
  59static inline int
  60dirent_crc(struct jffs2_raw_dirent *node)
  61{
  62        if (node->node_crc != crc32_no_comp(0, (unsigned char *)node, sizeof(struct jffs2_raw_dirent) - 8)) {
  63                return 0;
  64        } else {
  65                return 1;
  66        }
  67}
  68
  69static inline int
  70dirent_name_crc(struct jffs2_raw_dirent *node)
  71{
  72        if (node->name_crc != crc32_no_comp(0, (unsigned char *)&(node->name), node->nsize)) {
  73                return 0;
  74        } else {
  75                return 1;
  76        }
  77}
  78
  79static inline int
  80inode_crc(struct jffs2_raw_inode *node)
  81{
  82        if (node->node_crc != crc32_no_comp(0, (unsigned char *)node, sizeof(struct jffs2_raw_inode) - 8)) {
  83                return 0;
  84        } else {
  85                return 1;
  86        }
  87}
  88
  89static inline int
  90data_crc(struct jffs2_raw_inode *node)
  91{
  92        if (node->data_crc != crc32_no_comp(0, (unsigned char *)
  93                                            ((int) &node->node_crc + sizeof (node->node_crc)),
  94                                             node->csize)) {
  95                return 0;
  96        } else {
  97                return 1;
  98        }
  99}
 100
 101#if defined(CONFIG_SYS_JFFS2_SORT_FRAGMENTS)
 102/* External merge sort. */
 103int sort_list(struct b_list *list);
 104#endif
 105#endif /* jffs2_private.h */
 106