libpayload: Implement new CBFS access API
This commit adds new CBFS API, which is based on the one available in the main coreboot source tree. Libpayload implementation supports RO/RW file lookups and file contents verification. Change-Id: I00da0658dbac0cddf92ad55611def947932d23c7 Signed-off-by: Jakub Czapiga <jacz@semihalf.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/59497 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
committed by
Felix Held
parent
1fa3da4d9b
commit
63e54275f6
46
payloads/libpayload/include/cbfs_glue.h
Normal file
46
payloads/libpayload/include/cbfs_glue.h
Normal file
@ -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 */
|
Reference in New Issue
Block a user