lkml.org 
[lkml]   [2016]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH 2/6] arm/efi: Allow invocation of arbitrary runtime services [ver #2]
Date
David Howells <dhowells@redhat.com> wrote:

> +#define efi_call_runtime(f, ...) sys_table_arg->runtime->f(__VA_ARGS__)

Turns out it's not that simple - of course. runtime->get_variable is just a
void pointer. The old arm stub was casting it by virtue of assignment to a
function pointer variable.

The x86_64 appears to be doing bypassing all the compile-time type checking by
passing the arguments through an ellipsis and then fixing up the argument list
in the ->call() function.

What I've changed the ARM and ARM64 things to is:

#define efi_call_runtime(f, ...) ((efi_##f##_t *)sys_table_arg->runtime->f)(__VA_ARGS__)

David

\
 
 \ /
  Last update: 2016-11-23 10:35    [W:1.304 / U:0.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site