libpayload: bring in file attribute support from cbfstool
This comes from cbfstool (GPL) into libpayload (BSD-l), but I could have just as well written it in libpayload first. Change-Id: I86baefe5c299125a4733fa20523efd5d06de7182 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Reviewed-on: http://review.coreboot.org/11675 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
committed by
Patrick Georgi
parent
81a4c85acf
commit
377d1db57d
@ -132,10 +132,34 @@ struct cbfs_file {
|
||||
char magic[8];
|
||||
uint32_t len;
|
||||
uint32_t type;
|
||||
uint32_t checksum;
|
||||
uint32_t attributes_offset;
|
||||
uint32_t offset;
|
||||
char filename[];
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Depending on how the header was initialized, it may be backed with 0x00 or
|
||||
* 0xff. Support both. */
|
||||
#define CBFS_FILE_ATTR_TAG_UNUSED 0
|
||||
#define CBFS_FILE_ATTR_TAG_UNUSED2 0xffffffff
|
||||
|
||||
/* The common fields of extended cbfs file attributes.
|
||||
Attributes are expected to start with tag/len, then append their
|
||||
specific fields. */
|
||||
struct cbfs_file_attribute {
|
||||
uint32_t tag;
|
||||
/* len covers the whole structure, incl. tag and len */
|
||||
uint32_t len;
|
||||
uint8_t data[0];
|
||||
} __attribute__((packed));
|
||||
|
||||
/* Given a cbfs_file, return the first file attribute, or NULL. */
|
||||
struct cbfs_file_attribute *cbfs_file_first_attr(struct cbfs_file *file);
|
||||
|
||||
/* Given a cbfs_file and a cbfs_file_attribute, return the attribute that
|
||||
* follows it, or NULL. */
|
||||
struct cbfs_file_attribute *cbfs_file_next_attr(struct cbfs_file *file,
|
||||
struct cbfs_file_attribute *attr);
|
||||
|
||||
/*** Component sub-headers ***/
|
||||
|
||||
/* Following are component sub-headers for the "standard"
|
||||
|
Reference in New Issue
Block a user