nicelhc13
nicelhc13

Reputation: 129

In Linux kernel, header inclusion error

When I included "asm/xen/hypercall.h" in my source code in kernel,

I got a this error message. How can I solve it?

 include/linux/stddef.h:8:16: error: expected identifier or '(' before 'void'
 #define NULL ((void *)0)
                ^
./arch/x86/include/asm/alternative.h:221:28: note: in expansion of macro 'NULL'
 #define __parainstructions NULL
                            ^
./arch/x86/include/asm/paravirt_types.h:703:35: note: in expansion of macro '__parainstructions'
 extern struct paravirt_patch_site __parainstructions[],
                                   ^
include/linux/stddef.h:8:23: error: expected ')' before numeric constant
 #define NULL ((void *)0)
                       ^
./arch/x86/include/asm/alternative.h:221:28: note: in expansion of macro 'NULL'
 #define __parainstructions NULL
                            ^
./arch/x86/include/asm/paravirt_types.h:703:35: note: in expansion of macro '__parainstructions'
 extern struct paravirt_patch_site __parainstructions[],
                                   ^
scripts/Makefile.build:257: recipe for target 'drivers/oxen/fallback.o' failed

Upvotes: 2

Views: 770

Answers (1)

Tsyvarev
Tsyvarev

Reputation: 66061

XEN functionality depends on PARAVIRT (see arch/x86/xen/Kconfig).

But line

#define __parainstructions NULL

at arch/x86/include/asm/alternative.h:221 is executed only when PARAVIRT is disabled. So, your shouldn't use XEN headers in that case.

Upvotes: 1

Related Questions