diff options
author | Jeff Mahoney <jeffm@jeffreymahoney.com> | 2013-08-26 15:47:16 +0200 |
---|---|---|
committer | Jeff Mahoney <jeffm@suse.com> | 2013-08-26 19:00:02 -0400 |
commit | ad42b07bcff6351755c61e4361af8a55e13cbaa5 (patch) | |
tree | 8a3743c42b9de7d544f18226414cbef69b82ac66 | |
parent | 66af7340153344548a180da022480e1e69806501 (diff) | |
download | reiserfsprogs-ad42b07bcff6351755c61e4361af8a55e13cbaa5.tar.gz |
reiserfscore: move endian helpers for offset_v2 into header
We'll need to use these helpers from library callers.
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
-rw-r--r-- | include/reiserfs_fs.h | 51 | ||||
-rw-r--r-- | reiserfscore/node_formats.c | 51 |
2 files changed, 51 insertions, 51 deletions
diff --git a/include/reiserfs_fs.h b/include/reiserfs_fs.h index 7955ef7..dec9404 100644 --- a/include/reiserfs_fs.h +++ b/include/reiserfs_fs.h @@ -1550,6 +1550,57 @@ static inline void buffer_info_init_bh(struct tree_balance *tb, bi->bi_parent = NULL; bi->bi_position = 0; } +#if __BYTE_ORDER == __LITTLE_ENDIAN +# define get_key_offset_v2(key) (__u64)(((key)->u.k2_offset_v2.k_offset)) +# define set_key_offset_v2(key,val) (void)((key)->u.k2_offset_v2.k_offset = (val)) +# define get_key_type_v2(key) (__u16)(((key)->u.k2_offset_v2.k_type)) +# define set_key_type_v2(key,val) (void)((key)->u.k2_offset_v2.k_type = (val)) +#elif __BYTE_ORDER == __BIG_ENDIAN +typedef union { + struct offset_v2 offset_v2; + __u64 linear; +} __attribute__ ((__packed__)) offset_v2_esafe_overlay; + +static inline __u64 get_key_offset_v2(const struct reiserfs_key *key) +{ + offset_v2_esafe_overlay tmp = + *(offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); + tmp.linear = le64_to_cpu(tmp.linear); + return tmp.offset_v2.k_offset; +} + +static inline __u32 get_key_type_v2(const struct reiserfs_key *key) +{ + offset_v2_esafe_overlay tmp = + *(offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); + tmp.linear = le64_to_cpu(tmp.linear); + return tmp.offset_v2.k_type; +} + +static inline void set_key_offset_v2(struct reiserfs_key *key, __u64 offset) +{ + offset_v2_esafe_overlay *tmp = + (offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); + tmp->linear = le64_to_cpu(tmp->linear); + tmp->offset_v2.k_offset = offset; + tmp->linear = cpu_to_le64(tmp->linear); +} + +static inline void set_key_type_v2(struct reiserfs_key *key, __u32 type) +{ + offset_v2_esafe_overlay *tmp = + (offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); + if (type > 15) + reiserfs_panic("set_key_type_v2: type is too big %d", type); + + tmp->linear = le64_to_cpu(tmp->linear); + tmp->offset_v2.k_type = type; + tmp->linear = cpu_to_le64(tmp->linear); +} +#else +# error "nuxi/pdp-endian archs are not supported" +#endif + #endif diff --git a/reiserfscore/node_formats.c b/reiserfscore/node_formats.c index cda3475..dda3990 100644 --- a/reiserfscore/node_formats.c +++ b/reiserfscore/node_formats.c @@ -853,57 +853,6 @@ void for_every_item(struct buffer_head *bh, item_head_action_t action, } } -#if __BYTE_ORDER == __LITTLE_ENDIAN -# define get_key_offset_v2(key) (__u64)((key->u.k2_offset_v2.k_offset)) -# define set_key_offset_v2(key,val) (void)(key->u.k2_offset_v2.k_offset = (val)) -# define get_key_type_v2(key) (__u16)((key->u.k2_offset_v2.k_type)) -# define set_key_type_v2(key,val) (void)(key->u.k2_offset_v2.k_type = (val)) -#elif __BYTE_ORDER == __BIG_ENDIAN -typedef union { - struct offset_v2 offset_v2; - __u64 linear; -} __attribute__ ((__packed__)) offset_v2_esafe_overlay; - -static inline __u64 get_key_offset_v2(const struct reiserfs_key *key) -{ - offset_v2_esafe_overlay tmp = - *(offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); - tmp.linear = le64_to_cpu(tmp.linear); - return tmp.offset_v2.k_offset; -} - -static inline __u32 get_key_type_v2(const struct reiserfs_key *key) -{ - offset_v2_esafe_overlay tmp = - *(offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); - tmp.linear = le64_to_cpu(tmp.linear); - return tmp.offset_v2.k_type; -} - -static inline void set_key_offset_v2(struct reiserfs_key *key, __u64 offset) -{ - offset_v2_esafe_overlay *tmp = - (offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); - tmp->linear = le64_to_cpu(tmp->linear); - tmp->offset_v2.k_offset = offset; - tmp->linear = cpu_to_le64(tmp->linear); -} - -static inline void set_key_type_v2(struct reiserfs_key *key, __u32 type) -{ - offset_v2_esafe_overlay *tmp = - (offset_v2_esafe_overlay *) (&(key->u.k2_offset_v2)); - if (type > 15) - reiserfs_panic("set_key_type_v2: type is too big %d", type); - - tmp->linear = le64_to_cpu(tmp->linear); - tmp->offset_v2.k_type = type; - tmp->linear = cpu_to_le64(tmp->linear); -} -#else -# error "nuxi/pdp-endian archs are not supported" -#endif - static inline int is_key_format_1(int type) { return ((type == 0 || type == 15) ? 1 : 0); |