diff options
author | Randall Spangler <rspangler@chromium.org> | 2014-11-19 12:48:36 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-11-27 05:22:32 +0000 |
commit | 02e11b323b819140590d99b6af440d36c12d161b (patch) | |
tree | 005edf6e64093741553e8520028ef0ad26a978b8 /host/lib/include/host_misc.h | |
parent | 8577b5360ca4c9514d9091ed9aded2bb3193f1f0 (diff) | |
download | vboot-02e11b323b819140590d99b6af440d36c12d161b.tar.gz |
vboot2: Add host library functions to read/write files and objects
And unit tests for them.
Move roundup32() into hostlib.
Fix WriteFile() returning success even if it failed to write to the file.
BUG=chromium:423882
BRANCH=none
TEST=VBOOT2=1 make runtests
Change-Id: I8a115335c088dc5c66c88423d1ccbda7eaca1996
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/230844
Diffstat (limited to 'host/lib/include/host_misc.h')
-rw-r--r-- | host/lib/include/host_misc.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/host/lib/include/host_misc.h b/host/lib/include/host_misc.h index b2b4fb94..2e18d90b 100644 --- a/host/lib/include/host_misc.h +++ b/host/lib/include/host_misc.h @@ -43,4 +43,45 @@ int ReadFileBit(const char* filename, int bitmask); * Returns 0 if success, 1 if error. */ int WriteFile(const char* filename, const void *data, uint64_t size); +/** + * Read data from a file into a newly allocated buffer. + * + * @param filename Name of file to read from + * @param data_ptr On exit, pointer to newly allocated buffer with data + * will be stored here. Caller must free() the buffer + * when done with it. + * @param size_ptr On exit, size of data will be stored here. + * @return VB2_SUCCESS, or non-zero if error. + */ +int vb2_read_file(const char *filename, uint8_t **data_ptr, uint32_t *size_ptr); + +/** + * Write data to a file from a buffer. + * + * @param filename Name of file to write to + * @param buf Buffer to write + * @param size Number of bytes of data to write + * @return VB2_SUCCESS, or non-zero if error. + */ +int vb2_write_file(const char *filename, const void *buf, uint32_t size); + +/** + * Write a buffer which starts with a standard vb2_struct_common header. + * + * Determines the buffer size from the common header total size field. + * + * @param filename Name of file to write to + * @param buf Buffer to write + * @return VB2_SUCCESS, or non-zero if error. + */ +int vb2_write_object(const char *filename, const void *buf); + +/** + * Round up a size to a multiple of 32 bits (4 bytes). + */ +static __inline const uint32_t roundup32(uint32_t v) +{ + return (v + 3) & ~3; +} + #endif /* VBOOT_REFERENCE_HOST_MISC_H_ */ |