Exemple #1
0
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;
}
Exemple #2
0
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, &region_id, 8);
			memcpy(buf + 8, &sector, 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;
}