/* (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); }
/* (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); }
/* (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; }
/* Free hash table. Should be locked. */ void BCMINITFN(_nvram_exit)(void) { nvram_free(); }
/* Free hash table. Should be locked. */ void _nvram_exit(void) { nvram_free(); }