Lines Matching refs:label

234 	struct pxe_label *label;  in label_create()  local
236 label = malloc(sizeof(struct pxe_label)); in label_create()
237 if (!label) in label_create()
240 memset(label, 0, sizeof(struct pxe_label)); in label_create()
242 return label; in label_create()
258 static void label_destroy(struct pxe_label *label) in label_destroy() argument
260 free(label->name); in label_destroy()
261 free(label->kernel_label); in label_destroy()
262 free(label->kernel); in label_destroy()
263 free(label->config); in label_destroy()
264 free(label->append); in label_destroy()
265 free(label->initrd); in label_destroy()
266 free(label->fdt); in label_destroy()
267 free(label->fdtdir); in label_destroy()
268 free(label->fdtoverlays); in label_destroy()
269 free(label); in label_destroy()
282 struct pxe_label *label = data; in label_print() local
283 const char *c = label->menu ? label->menu : label->name; in label_print()
285 printf("%s:\t%s\n", label->num, c); in label_print()
299 static int label_localboot(struct pxe_label *label) in label_localboot() argument
307 if (label->append) { in label_localboot()
310 cli_simple_process_macros(label->append, bootargs, in label_localboot()
390 struct pxe_label *label) in label_boot_fdtoverlay() argument
392 char *fdtoverlay = label->fdtoverlays; in label_boot_fdtoverlay()
492 static int label_boot(struct pxe_context *ctx, struct pxe_label *label) in label_boot() argument
509 label_print(label); in label_boot()
511 label->attempted = 1; in label_boot()
513 if (label->localboot) { in label_boot()
514 if (label->localboot_val >= 0) in label_boot()
515 label_localboot(label); in label_boot()
519 if (!label->kernel) { in label_boot()
521 label->name); in label_boot()
525 if (get_relfile_envaddr(ctx, label->kernel, "kernel_addr_r", in label_boot()
528 label->name); in label_boot()
534 if (label->config) { in label_boot()
535 int len = strlen(kernel_addr) + strlen(label->config) + 1; in label_boot()
542 snprintf(fit_addr, len, "%s%s", kernel_addr, label->config); in label_boot()
547 if (label->initrd && !strcmp(label->kernel_label, label->initrd)) { in label_boot()
549 } else if (label->initrd) { in label_boot()
551 if (get_relfile_envaddr(ctx, label->initrd, "ramdisk_addr_r", in label_boot()
554 label->name); in label_boot()
565 if (label->ipappend & 0x1) { in label_boot()
572 if (label->ipappend & 0x2) { in label_boot()
582 if ((label->ipappend & 0x3) || label->append) { in label_boot()
586 if (strlen(label->append ?: "") + in label_boot()
589 strlen(label->append ?: ""), in label_boot()
595 if (label->append) in label_boot()
596 strncpy(bootargs, label->append, sizeof(bootargs)); in label_boot()
629 if (label->fdt && !strcmp(label->kernel_label, label->fdt)) { in label_boot()
636 if (label->fdt) { in label_boot()
637 fdtfile = label->fdt; in label_boot()
638 } else if (label->fdtdir) { in label_boot()
668 len = strlen(label->fdtdir); in label_boot()
671 else if (label->fdtdir[len - 1] != '/') in label_boot()
676 len = strlen(label->fdtdir) + strlen(slash) + in label_boot()
686 label->fdtdir, slash, f1, f2, f3, f4); in label_boot()
698 if (label->fdt) { in label_boot()
700 label->name); in label_boot()
705 if (label->kaslrseed) in label_boot()
709 if (label->fdtoverlays) in label_boot()
710 label_boot_fdtoverlay(ctx, label); in label_boot()
1130 struct pxe_label *label) in parse_label_menu() argument
1142 cfg->default_label = strdup(label->name); in parse_label_menu()
1149 parse_sliteral(c, &label->menu); in parse_label_menu()
1165 static int parse_label_kernel(char **c, struct pxe_label *label) in parse_label_kernel() argument
1170 err = parse_sliteral(c, &label->kernel); in parse_label_kernel()
1175 label->kernel_label = strdup(label->kernel); in parse_label_kernel()
1176 if (!label->kernel_label) in parse_label_kernel()
1179 s = strstr(label->kernel, "#"); in parse_label_kernel()
1183 label->config = strdup(s); in parse_label_kernel()
1184 if (!label->config) in parse_label_kernel()
1205 struct pxe_label *label; in parse_label() local
1208 label = label_create(); in parse_label()
1209 if (!label) in parse_label()
1212 err = parse_sliteral(c, &label->name); in parse_label()
1215 label_destroy(label); in parse_label()
1219 list_add_tail(&label->list, &cfg->labels); in parse_label()
1228 err = parse_label_menu(c, cfg, label); in parse_label()
1233 err = parse_label_kernel(c, label); in parse_label()
1237 err = parse_sliteral(c, &label->append); in parse_label()
1238 if (label->initrd) in parse_label()
1240 s = strstr(label->append, "initrd="); in parse_label()
1245 label->initrd = malloc(len + 1); in parse_label()
1246 strncpy(label->initrd, s, len); in parse_label()
1247 label->initrd[len] = '\0'; in parse_label()
1252 if (!label->initrd) in parse_label()
1253 err = parse_sliteral(c, &label->initrd); in parse_label()
1257 if (!label->fdt) in parse_label()
1258 err = parse_sliteral(c, &label->fdt); in parse_label()
1262 if (!label->fdtdir) in parse_label()
1263 err = parse_sliteral(c, &label->fdtdir); in parse_label()
1267 if (!label->fdtoverlays) in parse_label()
1268 err = parse_sliteral(c, &label->fdtoverlays); in parse_label()
1272 label->localboot = 1; in parse_label()
1273 err = parse_integer(c, &label->localboot_val); in parse_label()
1277 err = parse_integer(c, &label->ipappend); in parse_label()
1281 label->kaslrseed = 1; in parse_label()
1400 struct pxe_label *label; in destroy_pxe_menu() local
1406 label = list_entry(pos, struct pxe_label, list); in destroy_pxe_menu()
1408 label_destroy(label); in destroy_pxe_menu()
1445 struct pxe_label *label; in pxe_menu_to_menu() local
1465 label = list_entry(pos, struct pxe_label, list); in pxe_menu_to_menu()
1467 sprintf(label->num, "%d", i++); in pxe_menu_to_menu()
1468 if (menu_item_add(m, label->num, label) != 1) { in pxe_menu_to_menu()
1473 (strcmp(label->name, cfg->default_label) == 0)) in pxe_menu_to_menu()
1474 default_num = label->num; in pxe_menu_to_menu()
1475 if (label_override && !strcmp(label->name, label_override)) in pxe_menu_to_menu()
1476 override_num = label->num; in pxe_menu_to_menu()
1514 struct pxe_label *label; in boot_unattempted_labels() local
1517 label = list_entry(pos, struct pxe_label, list); in boot_unattempted_labels()
1519 if (!label->attempted) in boot_unattempted_labels()
1520 label_boot(ctx, label); in boot_unattempted_labels()