diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2017-01-12 09:40:10 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-03-16 00:11:41 -0700 |
commit | 3c4c83b8c3ec35af3a7ba19116e8467e9a09cc80 (patch) | |
tree | 3dc05b0e24a6c7840ce93d3069d4c998eaed08c3 /common/version.c | |
parent | 2a1cbf87821f311d98dd5d75707877b92b1d6df2 (diff) | |
download | chrome-ec-3c4c83b8c3ec35af3a7ba19116e8467e9a09cc80.tar.gz |
version: Store image size data in version struct
Store our image size (known at build time) in our version struct (now
renamed to image_data). This will allow us to more efficiently determine
the size of an image in a follow-up CL.
Note that compatibility is broken for old ROs that do not include this
CL.
BUG=chromium:577915
TEST=Verify on kevin + lars + lars_pd that stored image size matches
output of system_get_image_used() for both RO and RW images.
BRANCH=None
Change-Id: I7b8dc3ac8cf2df3184d0701a0e0ec8032de8d81b
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/450858
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common/version.c')
-rw-r--r-- | common/version.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/common/version.c b/common/version.c index 3757c9d5b4..ff8207bf2c 100644 --- a/common/version.c +++ b/common/version.c @@ -10,11 +10,14 @@ #include "ec_version.h" #include "version.h" -const struct version_struct __keep version_data +const struct image_data __keep current_image_data __attribute__((section(".rodata.ver"))) = { - CROS_EC_VERSION_COOKIE1, - CROS_EC_VERSION32, - CROS_EC_VERSION_COOKIE2 + .cookie1 = CROS_EC_IMAGE_DATA_COOKIE1, + .version = CROS_EC_VERSION32, +#ifndef TEST_BUILD + .size = (const uintptr_t)&__image_size, +#endif + .cookie2 = CROS_EC_IMAGE_DATA_COOKIE2, }; const char build_info[] __keep __attribute__((section(".rodata.buildinfo"))) = @@ -32,7 +35,7 @@ uint32_t ver_get_numcommits(void) * we want to return the numcommits as an int. */ for (i = 0; i < 32; i++) { - if (version_data.version[i] == '.') { + if (current_image_data.version[i] == '.') { numperiods++; if (numperiods == 2) break; @@ -41,12 +44,11 @@ uint32_t ver_get_numcommits(void) i++; for (; i < 32; i++) { - if (version_data.version[i] == '-') + if (current_image_data.version[i] == '-') break; ret *= 10; - ret += version_data.version[i] - '0'; + ret += current_image_data.version[i] - '0'; } return (i == 32 ? 0 : ret); } - |