u-boot/fs/btrfs/compat.h
Qu Wenruo be35942546 fs: btrfs: Crossport structure accessor into ctree.h
This brings all structure accessors from btrfs-progs/ctree.h, as in
kernel's ctree.h.

All these accessors handle the endian convert at runtime, and since all
of them are defined as static inline functions, those which aren't used
won't take space in resulting binary.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
2020-09-07 20:57:27 -04:00

71 lines
1.7 KiB
C

// SPDX-License-Identifier: GPL-2.0+
#ifndef __BTRFS_COMPAT_H__
#define __BTRFS_COMPAT_H__
#include <linux/errno.h>
#include <fs_internal.h>
#include <uuid.h>
/* Provide a compatibility layer to make code syncing easier */
/* A simple wraper to for error() used in btrfs-progs */
#define error(fmt, ...) pr_err("BTRFS: " fmt "\n", ##__VA_ARGS__)
#define BTRFS_UUID_UNPARSED_SIZE 37
/*
* Macros to generate set/get funcs for the struct fields
* assume there is a lefoo_to_cpu for every type, so lets make a simple
* one for u8:
*/
#define le8_to_cpu(v) (v)
#define cpu_to_le8(v) (v)
#define __le8 u8
/*
* Macros to generate set/get funcs for the struct fields
* assume there is a lefoo_to_cpu for every type, so lets make a simple
* one for u8:
*/
#define le8_to_cpu(v) (v)
#define cpu_to_le8(v) (v)
#define __le8 u8
#define get_unaligned_le8(p) (*((u8 *)(p)))
#define get_unaligned_8(p) (*((u8 *)(p)))
#define put_unaligned_le8(val,p) ((*((u8 *)(p))) = (val))
#define put_unaligned_8(val,p) ((*((u8 *)(p))) = (val))
/*
* Read data from device specified by @desc and @part
*
* U-boot equivalent of pread().
*
* Return the bytes of data read.
* Return <0 for error.
*/
static inline int __btrfs_devread(struct blk_desc *desc,
struct disk_partition *part,
void *buf, size_t size, u64 offset)
{
lbaint_t sector;
int byte_offset;
int ret;
sector = offset >> desc->log2blksz;
byte_offset = offset % desc->blksz;
/* fs_devread() return 0 for error, >0 for success */
ret = fs_devread(desc, part, sector, byte_offset, size, buf);
if (!ret)
return -EIO;
return size;
}
static inline void uuid_unparse(const u8 *uuid, char *out)
{
return uuid_bin_to_str((unsigned char *)uuid, out, 0);
}
#endif