int system_set_scratchpad(uint32_t value) { FILE *f = get_persistent_storage("scratchpad", "w"); fprintf(f, "%lu", value); release_persistent_storage(f); return EC_SUCCESS; }
static void save_reset_flags(uint32_t flags) { FILE *f = get_persistent_storage("reset_flags", "wb"); ASSERT(f != NULL); ASSERT(fwrite(&flags, sizeof(flags), 1, f) == 1); release_persistent_storage(f); }
static void set_image_copy(uint32_t copy) { FILE *f = get_persistent_storage("image_copy", "wb"); ASSERT(f != NULL); ASSERT(fwrite(©, sizeof(copy), 1, f) == 1); release_persistent_storage(f); }
static void save_time(timestamp_t t) { FILE *f = get_persistent_storage("time", "wb"); ASSERT(f != NULL); ASSERT(fwrite(&t, sizeof(t), 1, f) == 1); release_persistent_storage(f); }
static void flash_set_persistent(void) { FILE *f = get_persistent_storage("flash", "wb"); int sz; ASSERT(f != NULL); sz = fwrite(__host_flash, sizeof(__host_flash), 1, f); ASSERT(sz == 1); release_persistent_storage(f); }
static void ramdata_set_persistent(void) { FILE *f = get_persistent_storage("ramdata", "wb"); int sz; ASSERT(f != NULL); sz = fwrite(__ram_data, sizeof(__ram_data), 1, f); ASSERT(sz == 1); release_persistent_storage(f); }
static int load_time(timestamp_t *t) { FILE *f = get_persistent_storage("time", "rb"); if (f == NULL) return 0; fread(t, sizeof(*t), 1, f); release_persistent_storage(f); remove_persistent_storage("time"); return 1; }
static uint32_t load_reset_flags(void) { FILE *f = get_persistent_storage("reset_flags", "rb"); uint32_t ret; if (f == NULL) return RESET_FLAG_POWER_ON; fread(&ret, sizeof(ret), 1, f); release_persistent_storage(f); remove_persistent_storage("reset_flags"); return ret; }
static uint32_t get_image_copy(void) { FILE *f = get_persistent_storage("image_copy", "rb"); uint32_t ret; if (f == NULL) return SYSTEM_IMAGE_UNKNOWN; fread(&ret, sizeof(ret), 1, f); release_persistent_storage(f); remove_persistent_storage("image_copy"); return ret; }
static void flash_get_persistent(void) { FILE *f = get_persistent_storage("flash", "rb"); if (f == NULL) { fprintf(stderr, "No flash storage found. Initializing to 0xff.\n"); memset(__host_flash, 0xff, sizeof(__host_flash)); return; } fread(__host_flash, sizeof(__host_flash), 1, f); release_persistent_storage(f); }
uint32_t system_get_scratchpad(void) { FILE *f = get_persistent_storage("scratchpad", "r"); uint32_t value; int success; if (f == NULL) return 0; success = fscanf(f, "%lu", &value); release_persistent_storage(f); if (success) return value; else return 0; }
static void ramdata_get_persistent(void) { FILE *f = get_persistent_storage("ramdata", "rb"); if (f == NULL) { fprintf(stderr, "No RAM data found. Initializing to 0x00.\n"); memset(__ram_data, 0, sizeof(__ram_data)); return; } fread(__ram_data, sizeof(__ram_data), 1, f); release_persistent_storage(f); /* * Assumes RAM data doesn't preserve across reboot except for sysjump. * Clear persistent data once it's read. */ remove_persistent_storage("ramdata"); }