#include <assert.h>
#include <errno.h>
#include <string.h>
+#include <stdbool.h>
#include <stdint.h>
#include <asm/byteorder.h>
* 4-byte len, icon_file
* 4-byte len, boot_image_file
* 4-byte len, initrd_file
+ * 4-byte len, dtb_file
* 4-byte len, boot_args
*
* action = 0x2: device remove message
* 4-byte len, boot option id
* 4-byte len, boot_image_file
* 4-byte len, initrd_file
+ * 4-byte len, dtb_file
* 4-byte len, boot_args
*
*/
fprintf(stream, "%s\t\ticon: %s\n", text, opt->icon_file);
fprintf(stream, "%s\t\tboot: %s\n", text, opt->boot_image_file);
fprintf(stream, "%s\t\tinit: %s\n", text, opt->initrd_file);
+ fprintf(stream, "%s\t\tdtb: %s\n", text, opt->dtb_file);
fprintf(stream, "%s\t\targs: %s\n", text, opt->boot_args);
}
}
4 + optional_strlen(opt->icon_file) +
4 + optional_strlen(opt->boot_image_file) +
4 + optional_strlen(opt->initrd_file) +
- 4 + optional_strlen(opt->boot_args);
+ 4 + optional_strlen(opt->dtb_file) +
+ 4 + optional_strlen(opt->boot_args) +
+ sizeof(opt->is_default);
}
int pb_protocol_boot_len(const struct boot_command *boot)
return 4 + optional_strlen(boot->option_id) +
4 + optional_strlen(boot->boot_image_file) +
4 + optional_strlen(boot->initrd_file) +
+ 4 + optional_strlen(boot->dtb_file) +
4 + optional_strlen(boot->boot_args);
}
pos += pb_protocol_serialise_string(pos, opt->icon_file);
pos += pb_protocol_serialise_string(pos, opt->boot_image_file);
pos += pb_protocol_serialise_string(pos, opt->initrd_file);
+ pos += pb_protocol_serialise_string(pos, opt->dtb_file);
pos += pb_protocol_serialise_string(pos, opt->boot_args);
+ *(bool *)pos = opt->is_default;
+ pos += sizeof(bool);
+
assert(pos <= buf + buf_len);
(void)buf_len;
pos += pb_protocol_serialise_string(pos, boot->option_id);
pos += pb_protocol_serialise_string(pos, boot->boot_image_file);
pos += pb_protocol_serialise_string(pos, boot->initrd_file);
+ pos += pb_protocol_serialise_string(pos, boot->dtb_file);
pos += pb_protocol_serialise_string(pos, boot->boot_args);
assert(pos <= buf + buf_len);
if (read_string(opt, &pos, &len, &opt->initrd_file))
goto out;
+ if (read_string(opt, &pos, &len, &opt->dtb_file))
+ goto out;
+
if (read_string(opt, &pos, &len, &opt->boot_args))
goto out;
+ if (len < sizeof(bool))
+ goto out;
+ opt->is_default = *(bool *)(pos);
+
rc = 0;
out:
if (read_string(cmd, &pos, &len, &cmd->initrd_file))
goto out;
+ if (read_string(cmd, &pos, &len, &cmd->dtb_file))
+ goto out;
+
if (read_string(cmd, &pos, &len, &cmd->boot_args))
goto out;