예제 #1
0
/* (Re)initialize the hash table. Should be locked. */
static int
BCMINITFN(nvram_rehash)(struct nvram_header *header)
{
	char buf[] = "0xXXXXXXXX", *name, *value, *end, *eq;

	/* (Re)initialize hash table */
	nvram_free();

	/* Parse and set "name=value\0 ... \0\0" */
	name = (char *) &header[1];
	end = (char *) header + NVRAM_SPACE - 2;
	end[0] = end[1] = '\0';
	for (; *name; name = value + strlen(value) + 1) {
		if (!(eq = strchr(name, '=')))
			break;
		*eq = '\0';
		value = eq + 1;
		_nvram_set(name, value);
		*eq = '=';
	}

	/* Set special SDRAM parameters */
	if (!_nvram_get("sdram_init")) {
		sprintf(buf, "0x%04X", (uint16)(header->crc_ver_init >> 16));
		_nvram_set("sdram_init", buf);
	}
예제 #2
0
파일: nvram.c 프로젝트: 3sOx/asuswrt-merlin
/* (Re)initialize the hash table. Should be locked. */
static int
BCMINITFN(nvram_rehash)(struct nvram_header *header)
{
	char buf[] = "0xXXXXXXXX", *name, *value, *end, *eq;
	struct nvram_header *hdrptr;
	/* (Re)initialize hash table */
	nvram_free();

	hdrptr = header;

	/* Parse and set "name=value\0 ... \0\0" */
	name = (char *) &hdrptr[1];
	end = (char *) hdrptr + NVRAM_SPACE - 2;
	end[0] = end[1] = '\0';

again:
	for (; *name; name = value + strlen(value) + 1) {
		if (!(eq = strchr(name, '=')))
			break;
		*eq = '\0';
		value = eq + 1;
		_nvram_set(name, value);
		*eq = '=';
	}

printk("rehash %x %x\n", header, name);
{
	int j;

	for(j=0;j<64;j++) {
		if(j%16==0) printk("\n");
		printk("%x ", *(name-32+j));
	}
	printk("\n");
}
	hdrptr = find_next_header(header, name+2);

	if(hdrptr)
		printk("magic: %x\n", hdrptr->magic);

	if(hdrptr && hdrptr->magic==NVRAM_MAGIC) {
		name = (char *)&hdrptr[1];
		goto again;
	}

	/* Set special SDRAM parameters */
	if (!_nvram_get("sdram_init")) {
		sprintf(buf, "0x%04X", (uint16)(header->crc_ver_init >> 16));
		_nvram_set("sdram_init", buf);
	}
예제 #3
0
파일: nvram.c 프로젝트: janfj/dd-wrt
/* (Re)initialize the hash table. Should be locked. */
static int nvram_rehash(struct nvram_header *header)
{
	char *name, *value, *end, *eq;
	/* (Re)initialize hash table */
	nvram_free();

	/* Parse and set "name=value\0 ... \0\0" */
	name = (char *)&header[1];
	end = (char *)header + NVRAM_SPACE - 2;
	end[0] = end[1] = '\0';
	for (; *name; name = value + strlen(value) + 1) {
		if (!(eq = strchr(name, '=')))
			break;
		*eq = '\0';
		value = eq + 1;
		_nvram_set(name, value);
		*eq = '=';
	}

	return 0;
}
예제 #4
0
파일: nvram.c 프로젝트: millken/zhuxianB30
/* Free hash table. Should be locked. */
void
BCMINITFN(_nvram_exit)(void)
{
	nvram_free();
}
예제 #5
0
파일: nvram.c 프로젝트: janfj/dd-wrt
/* Free hash table. Should be locked. */
void _nvram_exit(void)
{
	nvram_free();
}