int storage_get_createtime(uint32_t *createtime) { int ret, buflen, retry = 0; char buf[MAX_BUF_LEN]; fileid_t fileid; nid_t nid; ret = stor_init(NULL, -1); if (ret) GOTO(err_ret, ret); retry: ret = stor_lookup1(SYSTEM_ROOT, &fileid); if (ret) { if (ret == EAGAIN) { SLEEP_RETRY(err_ret, ret, retry, retry); } else if (ret == ENOKEY || ret == ENOENT) { *createtime = time(NULL); goto out; } else { GOTO(err_ret, ret); } } buf[0] = '\0'; buflen = MAX_BUF_LEN; ret = md_map_getsrv(&fileid, &nid); if (ret) GOTO(err_ret, ret); ret = md_xattr_get(&nid, &fileid, LICH_SYSTEM_ATTR_CREATETIME, buf, &buflen); if (ret) { if (ret == ENOKEY || ret == ENOENT) { *createtime = time(NULL); goto out; } else GOTO(err_ret, ret); } *createtime = atol(buf); out: return 0; err_ret: return ret; }
int dump_flash(void) { u64 region_id, sector; u8 buf[1024]; int i, result; result = stor_init(STOR_FLASH_DEV_ID); if (result != 0) return result; for (region_id = 0; region_id < 1; region_id++) { for (sector = 0; sector < 0x8000; sector++) { result = stor_read(region_id, sector, 1, 0x2, buf + 16); memcpy(buf, ®ion_id, 8); memcpy(buf + 8, §or, 8); if (result != 0) { memcpy(buf + 16, &result, 4); result = gelic_xmit(gelic_bcast_mac_addr, 0xCAFE, buf, 16 + 4); if (result != 0) return result; } else { result = gelic_xmit(gelic_bcast_mac_addr, 0xCAFE, buf, 16 + STOR_FLASH_BLOCK_SIZE); if (result != 0) return result; } for (i = 0; i < 10000; i++) __asm__ __volatile__ ("nop"); } } return 0; }