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