diff options
Diffstat (limited to 'payloads/libpayload/include/cbfs_glue.h')
-rw-r--r-- | payloads/libpayload/include/cbfs_glue.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/payloads/libpayload/include/cbfs_glue.h b/payloads/libpayload/include/cbfs_glue.h new file mode 100644 index 0000000000..00d0ea943a --- /dev/null +++ b/payloads/libpayload/include/cbfs_glue.h @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#ifndef _CBFS_CBFS_GLUE_H +#define _CBFS_CBFS_GLUE_H + +#include <libpayload-config.h> +#include <boot_device.h> +#include <stdio.h> + +#define CBFS_ENABLE_HASHING CONFIG(LP_CBFS_VERIFICATION) + +#define ERROR(...) printf("CBFS ERROR: " __VA_ARGS__) +#define LOG(...) printf("CBFS: " __VA_ARGS__) +#define DEBUG(...) \ + do { \ + if (CONFIG(LP_DEBUG_CBFS)) \ + printf("CBFS DEBUG: " __VA_ARGS__); \ + } while (0) + +struct cbfs_dev { + size_t offset; + size_t size; +}; + +struct cbfs_boot_device { + struct cbfs_dev dev; + void *mcache; + size_t mcache_size; +}; + +typedef const struct cbfs_dev *cbfs_dev_t; + +static inline ssize_t cbfs_dev_read(cbfs_dev_t dev, void *buffer, size_t offset, size_t size) +{ + if (offset + size < offset || offset + size > dev->size) + return CB_ERR_ARG; + + return boot_device_read(buffer, dev->offset + offset, size); +} + +static inline size_t cbfs_dev_size(cbfs_dev_t dev) +{ + return dev->size; +} + +#endif /* _CBFS_CBFS_GLUE_H */ |