> +++ b/arch/um/lkl/include/asm/irq.h > @@ -2,6 +2,9 @@ > #ifndef _ASM_LKL_IRQ_H > #define _ASM_LKL_IRQ_H > > +/* pull UML's definitions */ > +#include "../../../include/asm/irq.h" This is _really_ ugly. > +#if defined(__linux) && (defined(__i386) || defined(__x86_64)) > +#include <os.h> > +#endif > +void *um_os_signal(int signum, void *handler); and arguably those random declarations you're sprinkling are worse. > @@ -181,6 +196,11 @@ void init_IRQ(void) > for (i = 0; i < NR_IRQS; i++) > irq_set_chip_and_handler(i, &dummy_irq_chip, handle_simple_irq); > > +#if defined(__linux) && (defined(__i386) || defined(__x86_64)) What's with all those ifdefs with this condition? > +++ b/tools/lkl/lib/um/um_glue.c > @@ -0,0 +1,39 @@ > +// SPDX-License-Identifier: GPL-2.0 > +#include <stdio.h> > +#include <stdlib.h> > +#include <string.h> > +#include <unistd.h> > +#include <errno.h> > + > + > + > +char lkl_um_devs[4096]; > + > +/* from sigio.c */ > +void maybe_sigio_broken(int fd, int read) > +{ > +} > + > +/* from process.c */ > +int os_getpid(void) > +{ > + return getpid(); > +} All of this really is quite ugly - are you sure it's needed for just the vector network driver?? johannes