summaryrefslogtreecommitdiff
path: root/host/lib/include/host_misc.h
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2014-11-19 12:48:36 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-11-27 05:22:32 +0000
commit02e11b323b819140590d99b6af440d36c12d161b (patch)
tree005edf6e64093741553e8520028ef0ad26a978b8 /host/lib/include/host_misc.h
parent8577b5360ca4c9514d9091ed9aded2bb3193f1f0 (diff)
downloadvboot-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.h41
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_ */