[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V2 06/12] add read_config_file() function for XEN EFI config file
On Thu, Jul 24, 2014 at 12:32 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote: >>>> On 22.07.14 at 02:43, <roy.franz@xxxxxxxxxx> wrote: >> Move open-coded reading of the XEN EFI configuration file into a shared >> fuction read_config_file(). > > If the function is shared, why is it being placed in the x86 file instead > of the shared one (with again no declaration added to the shared > header)? > >> +bool_t __init read_config_file(EFI_FILE_HANDLE *cfg_dir_handle, >> + struct file *cfg, CHAR16 *cfg_file_name, >> + union string *section, >> + CHAR16 *xen_file_name) >> +{ >> + /* >> + * This allocation is internal to the EFI stub, so any address is >> + * fine. >> + */ >> + EFI_PHYSICAL_ADDRESS max = ~0; > > Ah, okay, here comes the answer to the question I asked in an > earlier patch. However, using AllocateMaxAddress with an > unlimited address seems kind of bogus. I'd prefer this to be done > cleanly by passing a boolean into the function and having that one > use AllocateMaxAddress or AllocateAnyPages. > This will be going away since Ian's patch resolves the problem this was addressing. >> + >> + /* Read and parse the config file. */ >> + if ( !cfg_file_name ) >> + { >> + CHAR16 *tail; >> + >> + while ( (tail = point_tail(xen_file_name)) != NULL ) >> + { >> + wstrcpy(tail, L".cfg"); >> + if ( read_file(*cfg_dir_handle, xen_file_name, cfg, max) ) >> + break; >> + *tail = 0; >> + } >> + if ( !tail ) >> + return 0; >> + PrintStr(L"Using configuration file '"); >> + PrintStr(xen_file_name); >> + PrintStr(L"'\r\n"); >> + } >> + else if ( !read_file(*cfg_dir_handle, cfg_file_name, cfg, max) ) >> + return 0; >> + pre_parse(cfg); >> + >> + if ( section->w ) >> + w2s(section); >> + else >> + section->s = get_value(cfg, "global", "default"); >> + >> + >> + for ( ; ; ) >> + { >> + union string dom0_kernel_name; >> + dom0_kernel_name.s = get_value(cfg, section->s, "kernel"); >> + if ( dom0_kernel_name.s ) >> + break; >> + dom0_kernel_name.s = get_value(cfg, "global", "chain"); > > Please name the variable differently if it is used for other than the > purpose its current name implies. OK > > Also there are again blank line issues above - I'm not going to > repeat respective comments made in an earlier patch, implying > that you'll take care of these issues throughout the series. Yes, I will review the changes again. > >> @@ -855,53 +917,11 @@ efi_start(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE >> *SystemTable) >> if ( EFI_ERROR(status) ) >> gop = NULL; >> >> - /* Read and parse the config file. */ >> - if ( !cfg_file_name ) >> - { >> - CHAR16 *tail; >> + if ( !read_config_file(&dir_handle, &cfg, cfg_file_name, §ion, >> + file_name) ) >> + blexit(L"Unable to read configuration file."); >> >> - while ( (tail = point_tail(file_name)) != NULL ) >> - { >> - wstrcpy(tail, L".cfg"); >> - if ( read_file(dir_handle, file_name, &cfg, max_addr) ) >> - break; >> - *tail = 0; >> - } >> - if ( !tail ) >> - blexit(L"No configuration file found."); >> - PrintStr(L"Using configuration file '"); >> - PrintStr(file_name); >> - PrintStr(L"'\r\n"); >> - } >> - else if ( !read_file(dir_handle, cfg_file_name, &cfg, max_addr) ) >> - blexit(L"Configuration file not found."); >> - pre_parse(&cfg); >> - >> - if ( section.w ) >> - w2s(§ion); >> - else >> - section.s = get_value(&cfg, "global", "default"); >> - >> - for ( ; ; ) >> - { >> - name.s = get_value(&cfg, section.s, "kernel"); >> - if ( name.s ) >> - break; >> - name.s = get_value(&cfg, "global", "chain"); >> - if ( !name.s ) >> - break; >> - efi_bs->FreePages(cfg.addr, PFN_UP(cfg.size)); >> - cfg.addr = 0; >> - if ( !read_file(dir_handle, s2w(&name), &cfg, max_addr) ) >> - { >> - PrintStr(L"Chained configuration file '"); >> - PrintStr(name.w); >> - efi_bs->FreePool(name.w); >> - blexit(L"'not found."); >> - } >> - pre_parse(&cfg); >> - efi_bs->FreePool(name.w); >> - } >> + name.s = get_value(&cfg, section.s, "kernel"); >> if ( !name.s ) >> blexit(L"No Dom0 kernel image specified."); > > This redundant lookup can be avoided by having the function return > not just a bool_t. Yup, I'll change this. Roy > > Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |