[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH v2] efi: const correct EFI functions
On 15.09.2020 12:02, Trammell Hudson wrote: > @@ -149,10 +150,23 @@ static struct file __initdata cfg; > static struct file __initdata kernel; > static struct file __initdata ramdisk; > static struct file __initdata xsm; > -static CHAR16 __initdata newline[] = L"\r\n"; > - > -#define PrintStr(s) StdOut->OutputString(StdOut, s) > -#define PrintErr(s) StdErr->OutputString(StdErr, s) > +static const CHAR16 __initconst newline[] = L"\r\n"; > + > +/* Cast away const-ness on EFI entry points */ > +#define PrintStr(s) StdOut->OutputString(StdOut, (CHAR16 *)(s)) > +#define PrintErr(s) StdErr->OutputString(StdErr, (CHAR16 *)(s)) > +#define efi_file_open(file,handle,name,mode,attr) \ > + (file)->Open(file, handle, (CHAR16 *)(name), mode, attr) > +#define efi_handle_protocol(handle, protocol, interface) \ > + efi_bs->HandleProtocol(handle, (EFI_GUID *)(protocol), interface) > +#define efi_locate_protocol(protocol, registration, interface) \ > + efi_bs->LocateProtocol((EFI_GUID *)(protocol), (void *)(registration), \ > + interface) > +#define efi_locate_handle(type, protocol, key, size, buffer) \ > + efi_bs->LocateHandle(type, (EFI_GUID *)(protocol), (void *)(key), \ > + size, buffer) > +#define shim_verify(shim, ptr, len) \ > + (shim)->Verify((void *)(ptr), len) In order for these casts to be halfway safe, they need to happen in inline functions, not macros. That way it'll be sufficiently clear and certain that it's really _only_ the const which gets changed, but not e.g. also the pointed-to type. Apart from this I think the whole change wants splitting up, to (about) one basic change at a time. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |