X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=lib%2Fpb-protocol%2Fpb-protocol.c;h=65a1e93408d834d0449d458d0806e3ef50be66f6;hb=75c97cfd449b2bac8e61af1017a83bdf43f5e8fe;hp=64bd16175723536423f2e1a73b3324b9fc4a1d05;hpb=a055f6714fd06aa3b633b1bc44a8dbf42a0eedb0;p=petitboot diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c index 64bd161..65a1e93 100644 --- a/lib/pb-protocol/pb-protocol.c +++ b/lib/pb-protocol/pb-protocol.c @@ -215,11 +215,11 @@ int pb_protocol_boot_len(const struct boot_command *boot) 4 + optional_strlen(boot->console); } -int pb_protocol_boot_status_len(const struct boot_status *status) +int pb_protocol_boot_status_len(const struct status *status) { - return 4 + + return 4 + /* type */ 4 + optional_strlen(status->message) + - 4 + optional_strlen(status->detail) + + 4 + /* backlog */ 4; } @@ -401,7 +401,7 @@ int pb_protocol_serialise_boot_command(const struct boot_command *boot, return 0; } -int pb_protocol_serialise_boot_status(const struct boot_status *status, +int pb_protocol_serialise_boot_status(const struct status *status, char *buf, int buf_len) { char *pos = buf; @@ -410,10 +410,9 @@ int pb_protocol_serialise_boot_status(const struct boot_status *status, pos += sizeof(uint32_t); pos += pb_protocol_serialise_string(pos, status->message); - pos += pb_protocol_serialise_string(pos, status->detail); - *(uint32_t *)pos = __cpu_to_be32(status->type); - pos += sizeof(uint32_t); + *(bool *)pos = __cpu_to_be32(status->backlog); + pos += sizeof(bool); assert(pos <= buf + buf_len); (void)buf_len; @@ -821,7 +820,7 @@ out: return rc; } -int pb_protocol_deserialise_boot_status(struct boot_status *status, +int pb_protocol_deserialise_boot_status(struct status *status, const struct pb_protocol_message *message) { unsigned int len; @@ -838,8 +837,8 @@ int pb_protocol_deserialise_boot_status(struct boot_status *status, status->type = __be32_to_cpu(*(uint32_t *)(pos)); switch (status->type) { - case BOOT_STATUS_ERROR: - case BOOT_STATUS_INFO: + case STATUS_ERROR: + case STATUS_INFO: break; default: goto out; @@ -848,22 +847,13 @@ int pb_protocol_deserialise_boot_status(struct boot_status *status, pos += sizeof(uint32_t); len -= sizeof(uint32_t); - /* message and detail strings */ + /* message string */ if (read_string(status, &pos, &len, &status->message)) goto out; - if (read_string(status, &pos, &len, &status->detail)) - goto out; - - /* and finally, progress */ - if (len < sizeof(uint32_t)) - goto out; - - status->progress = __be32_to_cpu(*(uint32_t *)(pos)); - - /* clamp to 100% */ - if (status->progress > 100) - status->progress = 100; + /* backlog */ + status->backlog = *(bool *)pos; + pos += sizeof(status->backlog); rc = 0;