MCPcopy Create free account
hub / github.com/coreboot/coreboot / fmap_find_region_name

Function fmap_find_region_name

src/lib/fmap.c:214–258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

212}
213
214int fmap_find_region_name(const struct region * const ar,
215 char name[FMAP_STRLEN])
216{
217 struct region_device fmrd;
218 size_t offset;
219
220 if (name == NULL || ar == NULL)
221 return -1;
222
223 if (find_fmap_directory(&fmrd))
224 return -1;
225
226 /* Start reading the areas just after fmap header. */
227 offset = sizeof(struct fmap);
228
229 while (1) {
230 struct fmap_area *area;
231
232 area = rdev_mmap(&fmrd, offset, sizeof(*area));
233
234 if (area == NULL)
235 return -1;
236
237 if (region_offset(ar) != le32toh(area->offset) ||
238 region_sz(ar) != le32toh(area->size)) {
239 rdev_munmap(&fmrd, area);
240 offset += sizeof(struct fmap_area);
241 continue;
242 }
243
244 printk(BIOS_DEBUG, "FMAP: area (%zx, %zx) found, named %s\n",
245 region_offset(ar), region_sz(ar), area->name);
246
247 memcpy(name, area->name, FMAP_STRLEN);
248
249 rdev_munmap(&fmrd, area);
250
251 return 0;
252 }
253
254 printk(BIOS_DEBUG, "FMAP: area (%zx, %zx) not found\n",
255 region_offset(ar), region_sz(ar));
256
257 return -1;
258}
259
260ssize_t fmap_read_area(const char *name, void *buffer, size_t size)
261{

Callers 1

Calls 7

find_fmap_directoryFunction · 0.85
rdev_mmapFunction · 0.85
region_offsetFunction · 0.85
region_szFunction · 0.85
rdev_munmapFunction · 0.85
memcpyFunction · 0.70
printkFunction · 0.50

Tested by 1