diff --git a/repos/dde_linux/lib/import/import-lxip.mk b/repos/dde_linux/lib/import/import-lxip.mk
new file mode 100644
index 0000000000..e4387f33ad
--- /dev/null
+++ b/repos/dde_linux/lib/import/import-lxip.mk
@@ -0,0 +1 @@
+INC_DIR += $(REP_DIR)/src/lib/lxip/include
diff --git a/repos/dde_linux/lib/mk/lxip.inc b/repos/dde_linux/lib/mk/lxip.inc
new file mode 100644
index 0000000000..76a9615967
--- /dev/null
+++ b/repos/dde_linux/lib/mk/lxip.inc
@@ -0,0 +1,33 @@
+LXIP_DIR       := $(REP_DIR)/src/lib/lxip
+LIBS           := jitterentropy virt_lx_emul virt_linux_generated
+SHARED_LIB     := yes
+
+TARGET_LIB_DIR := $(LXIP_DIR)
+INC_DIR        += $(LXIP_DIR)/shadow $(LXIP_DIR)/include $(LXIP_DIR)
+
+SRC_CC += lx_emul/random.cc
+
+SRC_CC += init.cc \
+          socket.cc \
+
+SRC_C += dummies.c \
+         generated_dummies.c \
+         lx_emul.c \
+         lx_socket.c \
+         lx_user.c \
+         net_driver.c \
+
+SRC_CC += genode_c_api/nic_client.cc
+
+#
+# Don't create jump slots for everything compiled in here since there are
+# function calls from inline assembly (i.e., __sw_hweight64) with unaligned sp
+# leading to GPs during fxsave on x86).
+#
+LD_OPT += -Bsymbolic-functions
+
+vpath %.cc $(REP_DIR)/src/lib
+vpath %.c  $(LXIP_DIR)/spec/$(SPEC_ARCH)
+vpath %    $(LXIP_DIR)
+
+# vi: set ft=make :
diff --git a/repos/dde_linux/lib/mk/spec/arm_v6/lxip.mk b/repos/dde_linux/lib/mk/spec/arm_v6/lxip.mk
new file mode 100644
index 0000000000..6dd14a389e
--- /dev/null
+++ b/repos/dde_linux/lib/mk/spec/arm_v6/lxip.mk
@@ -0,0 +1,3 @@
+SPEC_ARCH := arm_v6
+
+include $(REP_DIR)/lib/mk/lxip.inc
diff --git a/repos/dde_linux/lib/mk/spec/arm_v7/lxip.mk b/repos/dde_linux/lib/mk/spec/arm_v7/lxip.mk
new file mode 100644
index 0000000000..f1d1865ffa
--- /dev/null
+++ b/repos/dde_linux/lib/mk/spec/arm_v7/lxip.mk
@@ -0,0 +1,3 @@
+SPEC_ARCH := arm_v7
+
+include $(REP_DIR)/lib/mk/lxip.inc
diff --git a/repos/dde_linux/lib/mk/spec/arm_v8/lxip.mk b/repos/dde_linux/lib/mk/spec/arm_v8/lxip.mk
new file mode 100644
index 0000000000..349d17fcbd
--- /dev/null
+++ b/repos/dde_linux/lib/mk/spec/arm_v8/lxip.mk
@@ -0,0 +1,5 @@
+SPEC_ARCH := arm_v8
+
+SRC_C += lx_emul/shadow/arch/arm64/kernel/smp.c
+
+include $(REP_DIR)/lib/mk/lxip.inc
diff --git a/repos/dde_linux/lib/mk/spec/x86_32/lxip.mk b/repos/dde_linux/lib/mk/spec/x86_32/lxip.mk
new file mode 100644
index 0000000000..8dd9796530
--- /dev/null
+++ b/repos/dde_linux/lib/mk/spec/x86_32/lxip.mk
@@ -0,0 +1,5 @@
+SPEC_ARCH := x86_32
+
+SRC_C = lx_emul/spec/x86_32/atomic64_32.c
+
+include $(REP_DIR)/lib/mk/lxip.inc
diff --git a/repos/dde_linux/lib/mk/spec/x86_64/lxip.mk b/repos/dde_linux/lib/mk/spec/x86_64/lxip.mk
new file mode 100644
index 0000000000..d301198ceb
--- /dev/null
+++ b/repos/dde_linux/lib/mk/spec/x86_64/lxip.mk
@@ -0,0 +1,3 @@
+SPEC_ARCH := x86_64
+
+include $(REP_DIR)/lib/mk/lxip.inc
diff --git a/repos/dde_linux/src/lib/lxip/dep.list b/repos/dde_linux/src/lib/lxip/dep.list
new file mode 100644
index 0000000000..62fd48bcf5
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/dep.list
@@ -0,0 +1,1492 @@
+arch/arm/include/asm/archrandom.h
+arch/arm/include/asm/asm-offsets.h
+arch/arm/include/asm/assembler.h
+arch/arm/include/asm/atomic.h
+arch/arm/include/asm/auxvec.h
+arch/arm/include/asm/barrier.h
+arch/arm/include/asm/bitops.h
+arch/arm/include/asm/bitrev.h
+arch/arm/include/asm/bug.h
+arch/arm/include/asm/cache.h
+arch/arm/include/asm/cacheflush.h
+arch/arm/include/asm/cachetype.h
+arch/arm/include/asm/checksum.h
+arch/arm/include/asm/cmpxchg.h
+arch/arm/include/asm/compiler.h
+arch/arm/include/asm/cpu.h
+arch/arm/include/asm/cputype.h
+arch/arm/include/asm/device.h
+arch/arm/include/asm/div64.h
+arch/arm/include/asm/dma.h
+arch/arm/include/asm/domain.h
+arch/arm/include/asm/elf.h
+arch/arm/include/asm/fpstate.h
+arch/arm/include/asm/ftrace.h
+arch/arm/include/asm/glue-cache.h
+arch/arm/include/asm/glue-proc.h
+arch/arm/include/asm/glue.h
+arch/arm/include/asm/hardirq.h
+arch/arm/include/asm/hw_breakpoint.h
+arch/arm/include/asm/hw_irq.h
+arch/arm/include/asm/hwcap.h
+arch/arm/include/asm/insn.h
+arch/arm/include/asm/io.h
+arch/arm/include/asm/irq.h
+arch/arm/include/asm/irq_work.h
+arch/arm/include/asm/kprobes.h
+arch/arm/include/asm/linkage.h
+arch/arm/include/asm/mach/pci.h
+arch/arm/include/asm/mmu.h
+arch/arm/include/asm/mmu_context.h
+arch/arm/include/asm/module.h
+arch/arm/include/asm/opcodes-virt.h
+arch/arm/include/asm/opcodes.h
+arch/arm/include/asm/outercache.h
+arch/arm/include/asm/page-nommu.h
+arch/arm/include/asm/pci.h
+arch/arm/include/asm/percpu.h
+arch/arm/include/asm/proc-fns.h
+arch/arm/include/asm/processor.h
+arch/arm/include/asm/ptrace.h
+arch/arm/include/asm/sections.h
+arch/arm/include/asm/set_memory.h
+arch/arm/include/asm/shmparam.h
+arch/arm/include/asm/signal.h
+arch/arm/include/asm/smp.h
+arch/arm/include/asm/smp_plat.h
+arch/arm/include/asm/spinlock_types.h
+arch/arm/include/asm/string.h
+arch/arm/include/asm/swab.h
+arch/arm/include/asm/switch_to.h
+arch/arm/include/asm/thread_info.h
+arch/arm/include/asm/timex.h
+arch/arm/include/asm/topology.h
+arch/arm/include/asm/uaccess-asm.h
+arch/arm/include/asm/uaccess.h
+arch/arm/include/asm/unified.h
+arch/arm/include/asm/unistd.h
+arch/arm/include/asm/unwind.h
+arch/arm/include/asm/user.h
+arch/arm/include/asm/vdso/cp15.h
+arch/arm/include/asm/vdso/gettimeofday.h
+arch/arm/include/asm/vdso/processor.h
+arch/arm/include/asm/vdso_datapage.h
+arch/arm/include/asm/vmalloc.h
+arch/arm/include/asm/word-at-a-time.h
+arch/arm/include/uapi/asm/auxvec.h
+arch/arm/include/uapi/asm/byteorder.h
+arch/arm/include/uapi/asm/fcntl.h
+arch/arm/include/uapi/asm/hwcap.h
+arch/arm/include/uapi/asm/ioctls.h
+arch/arm/include/uapi/asm/mman.h
+arch/arm/include/uapi/asm/perf_regs.h
+arch/arm/include/uapi/asm/posix_types.h
+arch/arm/include/uapi/asm/ptrace.h
+arch/arm/include/uapi/asm/sigcontext.h
+arch/arm/include/uapi/asm/signal.h
+arch/arm/include/uapi/asm/stat.h
+arch/arm/include/uapi/asm/swab.h
+arch/arm/include/uapi/asm/types.h
+arch/arm/include/uapi/asm/unistd.h
+arch/arm/lib/bitops.h
+arch/arm/lib/csumpartialcopygeneric.S
+arch/arm64/include/asm/alternative-macros.h
+arch/arm64/include/asm/alternative.h
+arch/arm64/include/asm/arch_timer.h
+arch/arm64/include/asm/archrandom.h
+arch/arm64/include/asm/asm-bug.h
+arch/arm64/include/asm/asm-extable.h
+arch/arm64/include/asm/asm-offsets.h
+arch/arm64/include/asm/assembler.h
+arch/arm64/include/asm/atomic.h
+arch/arm64/include/asm/atomic_ll_sc.h
+arch/arm64/include/asm/barrier.h
+arch/arm64/include/asm/bitops.h
+arch/arm64/include/asm/bitrev.h
+arch/arm64/include/asm/boot.h
+arch/arm64/include/asm/brk-imm.h
+arch/arm64/include/asm/bug.h
+arch/arm64/include/asm/cache.h
+arch/arm64/include/asm/cacheflush.h
+arch/arm64/include/asm/checksum.h
+arch/arm64/include/asm/clocksource.h
+arch/arm64/include/asm/cmpxchg.h
+arch/arm64/include/asm/compat.h
+arch/arm64/include/asm/compiler.h
+arch/arm64/include/asm/cpufeature.h
+arch/arm64/include/asm/cputype.h
+arch/arm64/include/asm/debug-monitors.h
+arch/arm64/include/asm/device.h
+arch/arm64/include/asm/elf.h
+arch/arm64/include/asm/esr.h
+arch/arm64/include/asm/exec.h
+arch/arm64/include/asm/extable.h
+arch/arm64/include/asm/fpsimd.h
+arch/arm64/include/asm/ftrace.h
+arch/arm64/include/asm/gpr-num.h
+arch/arm64/include/asm/hardirq.h
+arch/arm64/include/asm/hw_breakpoint.h
+arch/arm64/include/asm/hwcap.h
+arch/arm64/include/asm/insn-def.h
+arch/arm64/include/asm/insn.h
+arch/arm64/include/asm/io.h
+arch/arm64/include/asm/irq.h
+arch/arm64/include/asm/irq_work.h
+arch/arm64/include/asm/kasan.h
+arch/arm64/include/asm/kernel-pgtable.h
+arch/arm64/include/asm/kgdb.h
+arch/arm64/include/asm/kprobes.h
+arch/arm64/include/asm/kvm_arm.h
+arch/arm64/include/asm/linkage.h
+arch/arm64/include/asm/lse.h
+arch/arm64/include/asm/mman.h
+arch/arm64/include/asm/mmu.h
+arch/arm64/include/asm/mmu_context.h
+arch/arm64/include/asm/module.h
+arch/arm64/include/asm/mte-def.h
+arch/arm64/include/asm/mte-kasan.h
+arch/arm64/include/asm/mte.h
+arch/arm64/include/asm/page-def.h
+arch/arm64/include/asm/pci.h
+arch/arm64/include/asm/percpu.h
+arch/arm64/include/asm/pgtable-hwdef.h
+arch/arm64/include/asm/pgtable-prot.h
+arch/arm64/include/asm/pgtable-types.h
+arch/arm64/include/asm/pointer_auth.h
+arch/arm64/include/asm/preempt.h
+arch/arm64/include/asm/proc-fns.h
+arch/arm64/include/asm/processor.h
+arch/arm64/include/asm/ptrace.h
+arch/arm64/include/asm/rwonce.h
+arch/arm64/include/asm/sections.h
+arch/arm64/include/asm/set_memory.h
+arch/arm64/include/asm/shmparam.h
+arch/arm64/include/asm/signal.h
+arch/arm64/include/asm/smp.h
+arch/arm64/include/asm/sparsemem.h
+arch/arm64/include/asm/spectre.h
+arch/arm64/include/asm/spinlock_types.h
+arch/arm64/include/asm/stack_pointer.h
+arch/arm64/include/asm/stat.h
+arch/arm64/include/asm/string.h
+arch/arm64/include/asm/syscall_wrapper.h
+arch/arm64/include/asm/sysreg.h
+arch/arm64/include/asm/thread_info.h
+arch/arm64/include/asm/timex.h
+arch/arm64/include/asm/tlbflush.h
+arch/arm64/include/asm/topology.h
+arch/arm64/include/asm/uaccess.h
+arch/arm64/include/asm/unistd.h
+arch/arm64/include/asm/vdso/clocksource.h
+arch/arm64/include/asm/vdso/processor.h
+arch/arm64/include/asm/virt.h
+arch/arm64/include/asm/vmalloc.h
+arch/arm64/include/asm/word-at-a-time.h
+arch/arm64/include/uapi/asm/auxvec.h
+arch/arm64/include/uapi/asm/bitsperlong.h
+arch/arm64/include/uapi/asm/bpf_perf_event.h
+arch/arm64/include/uapi/asm/byteorder.h
+arch/arm64/include/uapi/asm/fcntl.h
+arch/arm64/include/uapi/asm/hwcap.h
+arch/arm64/include/uapi/asm/mman.h
+arch/arm64/include/uapi/asm/param.h
+arch/arm64/include/uapi/asm/perf_regs.h
+arch/arm64/include/uapi/asm/posix_types.h
+arch/arm64/include/uapi/asm/ptrace.h
+arch/arm64/include/uapi/asm/sigcontext.h
+arch/arm64/include/uapi/asm/signal.h
+arch/arm64/include/uapi/asm/sve_context.h
+arch/arm64/include/uapi/asm/unistd.h
+arch/x86/include/asm/alternative.h
+arch/x86/include/asm/apicdef.h
+arch/x86/include/asm/arch_hweight.h
+arch/x86/include/asm/archrandom.h
+arch/x86/include/asm/asm.h
+arch/x86/include/asm/atomic.h
+arch/x86/include/asm/atomic64_64.h
+arch/x86/include/asm/barrier.h
+arch/x86/include/asm/bitops.h
+arch/x86/include/asm/bug.h
+arch/x86/include/asm/cache.h
+arch/x86/include/asm/cacheflush.h
+arch/x86/include/asm/checksum.h
+arch/x86/include/asm/checksum_32.h
+arch/x86/include/asm/checksum_64.h
+arch/x86/include/asm/clocksource.h
+arch/x86/include/asm/cmpxchg.h
+arch/x86/include/asm/cmpxchg_32.h
+arch/x86/include/asm/cmpxchg_64.h
+arch/x86/include/asm/compat.h
+arch/x86/include/asm/cpu.h
+arch/x86/include/asm/cpu_entry_area.h
+arch/x86/include/asm/cpufeature.h
+arch/x86/include/asm/cpufeatures.h
+arch/x86/include/asm/cpumask.h
+arch/x86/include/asm/delay.h
+arch/x86/include/asm/desc.h
+arch/x86/include/asm/desc_defs.h
+arch/x86/include/asm/device.h
+arch/x86/include/asm/disabled-features.h
+arch/x86/include/asm/div64.h
+arch/x86/include/asm/dma.h
+arch/x86/include/asm/elf.h
+arch/x86/include/asm/emergency-restart.h
+arch/x86/include/asm/exec.h
+arch/x86/include/asm/extable.h
+arch/x86/include/asm/extable_fixup_types.h
+arch/x86/include/asm/fixmap.h
+arch/x86/include/asm/fpu/api.h
+arch/x86/include/asm/fpu/types.h
+arch/x86/include/asm/fsgsbase.h
+arch/x86/include/asm/ftrace.h
+arch/x86/include/asm/hardirq.h
+arch/x86/include/asm/hw_breakpoint.h
+arch/x86/include/asm/hw_irq.h
+arch/x86/include/asm/ibt.h
+arch/x86/include/asm/intel_ds.h
+arch/x86/include/asm/invpcid.h
+arch/x86/include/asm/irq.h
+arch/x86/include/asm/irq_stack.h
+arch/x86/include/asm/irq_vectors.h
+arch/x86/include/asm/irq_work.h
+arch/x86/include/asm/ist.h
+arch/x86/include/asm/kaslr.h
+arch/x86/include/asm/kdebug.h
+arch/x86/include/asm/kprobes.h
+arch/x86/include/asm/kvm_para.h
+arch/x86/include/asm/linkage.h
+arch/x86/include/asm/local.h
+arch/x86/include/asm/math_emu.h
+arch/x86/include/asm/mem_encrypt.h
+arch/x86/include/asm/memtype.h
+arch/x86/include/asm/mmu.h
+arch/x86/include/asm/mmu_context.h
+arch/x86/include/asm/module.h
+arch/x86/include/asm/msr-index.h
+arch/x86/include/asm/msr.h
+arch/x86/include/asm/nops.h
+arch/x86/include/asm/nospec-branch.h
+arch/x86/include/asm/orc_types.h
+arch/x86/include/asm/page_32.h
+arch/x86/include/asm/page_32_types.h
+arch/x86/include/asm/page_64_types.h
+arch/x86/include/asm/page_types.h
+arch/x86/include/asm/paravirt.h
+arch/x86/include/asm/pci.h
+arch/x86/include/asm/percpu.h
+arch/x86/include/asm/perf_event.h
+arch/x86/include/asm/pgtable-2level_types.h
+arch/x86/include/asm/pgtable_32_areas.h
+arch/x86/include/asm/pgtable_32_types.h
+arch/x86/include/asm/pgtable_64_types.h
+arch/x86/include/asm/pgtable_areas.h
+arch/x86/include/asm/pgtable_types.h
+arch/x86/include/asm/posix_types.h
+arch/x86/include/asm/preempt.h
+arch/x86/include/asm/processor-flags.h
+arch/x86/include/asm/processor.h
+arch/x86/include/asm/proto.h
+arch/x86/include/asm/pti.h
+arch/x86/include/asm/ptrace.h
+arch/x86/include/asm/required-features.h
+arch/x86/include/asm/rmwcc.h
+arch/x86/include/asm/segment.h
+arch/x86/include/asm/set_memory.h
+arch/x86/include/asm/shared/msr.h
+arch/x86/include/asm/shared/tdx.h
+arch/x86/include/asm/shmparam.h
+arch/x86/include/asm/signal.h
+arch/x86/include/asm/smap.h
+arch/x86/include/asm/smp.h
+arch/x86/include/asm/softirq_stack.h
+arch/x86/include/asm/sparsemem.h
+arch/x86/include/asm/spinlock_types.h
+arch/x86/include/asm/stacktrace.h
+arch/x86/include/asm/static_call.h
+arch/x86/include/asm/string.h
+arch/x86/include/asm/string_64.h
+arch/x86/include/asm/syscall_wrapper.h
+arch/x86/include/asm/tdx.h
+arch/x86/include/asm/text-patching.h
+arch/x86/include/asm/thread_info.h
+arch/x86/include/asm/timex.h
+arch/x86/include/asm/tlbbatch.h
+arch/x86/include/asm/tlbflush.h
+arch/x86/include/asm/topology.h
+arch/x86/include/asm/trace_clock.h
+arch/x86/include/asm/tsc.h
+arch/x86/include/asm/uaccess.h
+arch/x86/include/asm/unistd.h
+arch/x86/include/asm/unwind_hints.h
+arch/x86/include/asm/user.h
+arch/x86/include/asm/user32.h
+arch/x86/include/asm/user_32.h
+arch/x86/include/asm/user_64.h
+arch/x86/include/asm/vdso.h
+arch/x86/include/asm/vdso/clocksource.h
+arch/x86/include/asm/vdso/processor.h
+arch/x86/include/asm/vmalloc.h
+arch/x86/include/asm/vmxfeatures.h
+arch/x86/include/asm/word-at-a-time.h
+arch/x86/include/asm/x86_init.h
+arch/x86/include/uapi/asm/auxvec.h
+arch/x86/include/uapi/asm/bitsperlong.h
+arch/x86/include/uapi/asm/bootparam.h
+arch/x86/include/uapi/asm/byteorder.h
+arch/x86/include/uapi/asm/hw_breakpoint.h
+arch/x86/include/uapi/asm/ist.h
+arch/x86/include/uapi/asm/kvm_para.h
+arch/x86/include/uapi/asm/ldt.h
+arch/x86/include/uapi/asm/mman.h
+arch/x86/include/uapi/asm/msr.h
+arch/x86/include/uapi/asm/perf_regs.h
+arch/x86/include/uapi/asm/posix_types_32.h
+arch/x86/include/uapi/asm/posix_types_64.h
+arch/x86/include/uapi/asm/processor-flags.h
+arch/x86/include/uapi/asm/ptrace-abi.h
+arch/x86/include/uapi/asm/ptrace.h
+arch/x86/include/uapi/asm/sembuf.h
+arch/x86/include/uapi/asm/shmbuf.h
+arch/x86/include/uapi/asm/sigcontext.h
+arch/x86/include/uapi/asm/siginfo.h
+arch/x86/include/uapi/asm/signal.h
+arch/x86/include/uapi/asm/stat.h
+arch/x86/include/uapi/asm/swab.h
+arch/x86/include/uapi/asm/unistd.h
+arch/x86/include/uapi/asm/vsyscall.h
+drivers/base/base.h
+include/acpi/acbuffer.h
+include/acpi/acconfig.h
+include/acpi/acexcep.h
+include/acpi/acnames.h
+include/acpi/acoutput.h
+include/acpi/acpi.h
+include/acpi/acpi_numa.h
+include/acpi/acpiosxf.h
+include/acpi/acpixf.h
+include/acpi/acrestyp.h
+include/acpi/actbl.h
+include/acpi/actbl1.h
+include/acpi/actbl2.h
+include/acpi/actbl3.h
+include/acpi/actypes.h
+include/acpi/platform/acenv.h
+include/acpi/platform/acenvex.h
+include/acpi/platform/acgcc.h
+include/acpi/platform/acgccex.h
+include/acpi/platform/aclinux.h
+include/acpi/platform/aclinuxex.h
+include/asm-generic/access_ok.h
+include/asm-generic/archrandom.h
+include/asm-generic/asm-prototypes.h
+include/asm-generic/barrier.h
+include/asm-generic/bitops/arch_hweight.h
+include/asm-generic/bitops/atomic.h
+include/asm-generic/bitops/builtin-__ffs.h
+include/asm-generic/bitops/builtin-__fls.h
+include/asm-generic/bitops/builtin-ffs.h
+include/asm-generic/bitops/builtin-fls.h
+include/asm-generic/bitops/const_hweight.h
+include/asm-generic/bitops/ext2-atomic-setbit.h
+include/asm-generic/bitops/ffz.h
+include/asm-generic/bitops/fls64.h
+include/asm-generic/bitops/generic-non-atomic.h
+include/asm-generic/bitops/hweight.h
+include/asm-generic/bitops/instrumented-atomic.h
+include/asm-generic/bitops/instrumented-lock.h
+include/asm-generic/bitops/instrumented-non-atomic.h
+include/asm-generic/bitops/le.h
+include/asm-generic/bitops/lock.h
+include/asm-generic/bitops/non-atomic.h
+include/asm-generic/bitops/non-instrumented-non-atomic.h
+include/asm-generic/bitops/sched.h
+include/asm-generic/bitsperlong.h
+include/asm-generic/bug.h
+include/asm-generic/cacheflush.h
+include/asm-generic/checksum.h
+include/asm-generic/cmpxchg-local.h
+include/asm-generic/compat.h
+include/asm-generic/delay.h
+include/asm-generic/div64.h
+include/asm-generic/dma.h
+include/asm-generic/early_ioremap.h
+include/asm-generic/emergency-restart.h
+include/asm-generic/error-injection.h
+include/asm-generic/exec.h
+include/asm-generic/export.h
+include/asm-generic/extable.h
+include/asm-generic/fixmap.h
+include/asm-generic/getorder.h
+include/asm-generic/hardirq.h
+include/asm-generic/hw_irq.h
+include/asm-generic/int-ll64.h
+include/asm-generic/io.h
+include/asm-generic/ioctl.h
+include/asm-generic/iomap.h
+include/asm-generic/irq.h
+include/asm-generic/irq_regs.h
+include/asm-generic/irqflags.h
+include/asm-generic/kdebug.h
+include/asm-generic/kmap_size.h
+include/asm-generic/kprobes.h
+include/asm-generic/kvm_para.h
+include/asm-generic/local.h
+include/asm-generic/local64.h
+include/asm-generic/memory_model.h
+include/asm-generic/mm_hooks.h
+include/asm-generic/mmiowb.h
+include/asm-generic/mmu_context.h
+include/asm-generic/module.h
+include/asm-generic/param.h
+include/asm-generic/pci.h
+include/asm-generic/pci_iomap.h
+include/asm-generic/percpu.h
+include/asm-generic/pgtable-nop4d.h
+include/asm-generic/pgtable-nopmd.h
+include/asm-generic/pgtable-nopud.h
+include/asm-generic/pgtable_uffd.h
+include/asm-generic/preempt.h
+include/asm-generic/qrwlock_types.h
+include/asm-generic/qspinlock_types.h
+include/asm-generic/resource.h
+include/asm-generic/rwonce.h
+include/asm-generic/sections.h
+include/asm-generic/set_memory.h
+include/asm-generic/shmparam.h
+include/asm-generic/signal.h
+include/asm-generic/softirq_stack.h
+include/asm-generic/switch_to.h
+include/asm-generic/timex.h
+include/asm-generic/topology.h
+include/asm-generic/trace_clock.h
+include/asm-generic/unaligned.h
+include/asm-generic/user.h
+include/clocksource/arm_arch_timer.h
+include/crypto/aead.h
+include/crypto/hash.h
+include/crypto/sha1.h
+include/linux/acpi.h
+include/linux/alarmtimer.h
+include/linux/align.h
+include/linux/apm_bios.h
+include/linux/arch_topology.h
+include/linux/arm-smccc.h
+include/linux/assoc_array.h
+include/linux/atomic.h
+include/linux/atomic/atomic-arch-fallback.h
+include/linux/atomic/atomic-instrumented.h
+include/linux/atomic/atomic-long.h
+include/linux/audit.h
+include/linux/audit_arch.h
+include/linux/auxvec.h
+include/linux/backing-dev-defs.h
+include/linux/backing-dev.h
+include/linux/binfmts.h
+include/linux/bio.h
+include/linux/bit_spinlock.h
+include/linux/bitfield.h
+include/linux/bitmap.h
+include/linux/bitops.h
+include/linux/bitrev.h
+include/linux/bits.h
+include/linux/blk_types.h
+include/linux/blkdev.h
+include/linux/bottom_half.h
+include/linux/bpf-cgroup-defs.h
+include/linux/bpf-cgroup.h
+include/linux/bpf-netns.h
+include/linux/bpf.h
+include/linux/bpf_local_storage.h
+include/linux/bpf_trace.h
+include/linux/bpf_verifier.h
+include/linux/bpfilter.h
+include/linux/bpfptr.h
+include/linux/btf.h
+include/linux/btf_ids.h
+include/linux/bug.h
+include/linux/build_bug.h
+include/linux/buildid.h
+include/linux/bvec.h
+include/linux/byteorder/generic.h
+include/linux/byteorder/little_endian.h
+include/linux/cache.h
+include/linux/cacheflush.h
+include/linux/capability.h
+include/linux/cc_platform.h
+include/linux/cdev.h
+include/linux/cgroup-defs.h
+include/linux/cgroup.h
+include/linux/cgroup_api.h
+include/linux/clk-provider.h
+include/linux/clk.h
+include/linux/clockchips.h
+include/linux/clocksource.h
+include/linux/clocksource_ids.h
+include/linux/compat.h
+include/linux/compiler-gcc.h
+include/linux/compiler-version.h
+include/linux/compiler.h
+include/linux/compiler_attributes.h
+include/linux/compiler_types.h
+include/linux/completion.h
+include/linux/const.h
+include/linux/container_of.h
+include/linux/context_tracking.h
+include/linux/context_tracking_irq.h
+include/linux/context_tracking_state.h
+include/linux/cookie.h
+include/linux/cpu.h
+include/linux/cpu_rmap.h
+include/linux/cpufreq.h
+include/linux/cpuhotplug.h
+include/linux/cpumask.h
+include/linux/cpumask_api.h
+include/linux/cpuset.h
+include/linux/crash_core.h
+include/linux/crash_dump.h
+include/linux/crc-ccitt.h
+include/linux/crc32.h
+include/linux/cred.h
+include/linux/crypto.h
+include/linux/ctype.h
+include/linux/dcache.h
+include/linux/dccp.h
+include/linux/debug_locks.h
+include/linux/debugfs.h
+include/linux/debugobjects.h
+include/linux/delay.h
+include/linux/delayed_call.h
+include/linux/dev_printk.h
+include/linux/device.h
+include/linux/device/bus.h
+include/linux/device/class.h
+include/linux/device/driver.h
+include/linux/dma-direction.h
+include/linux/dma-mapping.h
+include/linux/dmaengine.h
+include/linux/dmapool.h
+include/linux/dqblk_qtree.h
+include/linux/dqblk_v1.h
+include/linux/dqblk_v2.h
+include/linux/dynamic_queue_limits.h
+include/linux/edd.h
+include/linux/elf-randomize.h
+include/linux/elf.h
+include/linux/elfcore.h
+include/linux/energy_model.h
+include/linux/err.h
+include/linux/errname.h
+include/linux/errno.h
+include/linux/error-injection.h
+include/linux/errqueue.h
+include/linux/errseq.h
+include/linux/etherdevice.h
+include/linux/ethtool.h
+include/linux/ethtool_netlink.h
+include/linux/eventfd.h
+include/linux/export.h
+include/linux/fault-inject-usercopy.h
+include/linux/fault-inject.h
+include/linux/fcntl.h
+include/linux/fddidevice.h
+include/linux/file.h
+include/linux/filter.h
+include/linux/find.h
+include/linux/firmware.h
+include/linux/flex_proportions.h
+include/linux/freelist.h
+include/linux/freezer.h
+include/linux/fs.h
+include/linux/fs_api.h
+include/linux/fs_types.h
+include/linux/ftrace.h
+include/linux/ftrace_irq.h
+include/linux/fwnode.h
+include/linux/genetlink.h
+include/linux/gfp.h
+include/linux/gfp_types.h
+include/linux/gpio/consumer.h
+include/linux/hardirq.h
+include/linux/hash.h
+include/linux/hashtable.h
+include/linux/hashtable_api.h
+include/linux/highmem-internal.h
+include/linux/highmem.h
+include/linux/highuid.h
+include/linux/hrtimer.h
+include/linux/hrtimer_api.h
+include/linux/hrtimer_defs.h
+include/linux/huge_mm.h
+include/linux/hugetlb.h
+include/linux/hugetlb_inline.h
+include/linux/icmp.h
+include/linux/icmpv6.h
+include/linux/idr.h
+include/linux/if_arp.h
+include/linux/if_bridge.h
+include/linux/if_ether.h
+include/linux/if_fddi.h
+include/linux/if_hsr.h
+include/linux/if_link.h
+include/linux/if_macvlan.h
+include/linux/if_pppol2tp.h
+include/linux/if_pppox.h
+include/linux/if_tunnel.h
+include/linux/if_vlan.h
+include/linux/igmp.h
+include/linux/in.h
+include/linux/in6.h
+include/linux/indirect_call_wrapper.h
+include/linux/inet.h
+include/linux/inet_diag.h
+include/linux/inetdevice.h
+include/linux/init.h
+include/linux/init_task.h
+include/linux/instruction_pointer.h
+include/linux/instrumentation.h
+include/linux/instrumented.h
+include/linux/interrupt.h
+include/linux/io.h
+include/linux/ioasid.h
+include/linux/iocontext.h
+include/linux/iopoll.h
+include/linux/ioport.h
+include/linux/ioprio.h
+include/linux/ip.h
+include/linux/ipc.h
+include/linux/ipv6.h
+include/linux/ipv6_route.h
+include/linux/irq.h
+include/linux/irq_work.h
+include/linux/irqchip.h
+include/linux/irqdesc.h
+include/linux/irqdomain.h
+include/linux/irqflags.h
+include/linux/irqhandler.h
+include/linux/irqnr.h
+include/linux/irqreturn.h
+include/linux/jhash.h
+include/linux/jiffies.h
+include/linux/jump_label.h
+include/linux/jump_label_ratelimit.h
+include/linux/kallsyms.h
+include/linux/kasan-checks.h
+include/linux/kasan-enabled.h
+include/linux/kasan-tags.h
+include/linux/kasan.h
+include/linux/kconfig.h
+include/linux/kcov.h
+include/linux/kcsan-checks.h
+include/linux/kcsan.h
+include/linux/kdebug.h
+include/linux/kdev_t.h
+include/linux/kern_levels.h
+include/linux/kernel.h
+include/linux/kernel_read_file.h
+include/linux/kernel_stat.h
+include/linux/kernfs.h
+include/linux/kexec.h
+include/linux/key.h
+include/linux/kgdb.h
+include/linux/klist.h
+include/linux/kmemleak.h
+include/linux/kmod.h
+include/linux/kmsan-checks.h
+include/linux/kmsan.h
+include/linux/kmsan_types.h
+include/linux/kobject.h
+include/linux/kobject_api.h
+include/linux/kobject_ns.h
+include/linux/kprobes.h
+include/linux/kref.h
+include/linux/kref_api.h
+include/linux/kstrtox.h
+include/linux/kthread.h
+include/linux/ktime.h
+include/linux/ktime_api.h
+include/linux/kvm_para.h
+include/linux/l2tp.h
+include/linux/latencytop.h
+include/linux/limits.h
+include/linux/linkage.h
+include/linux/linkmode.h
+include/linux/list.h
+include/linux/list_bl.h
+include/linux/list_lru.h
+include/linux/list_nulls.h
+include/linux/livepatch.h
+include/linux/llist.h
+include/linux/local_lock.h
+include/linux/local_lock_internal.h
+include/linux/lockdep.h
+include/linux/lockdep_api.h
+include/linux/lockdep_types.h
+include/linux/lockref.h
+include/linux/log2.h
+include/linux/logic_pio.h
+include/linux/maple_tree.h
+include/linux/math.h
+include/linux/math64.h
+include/linux/mdio.h
+include/linux/mem_encrypt.h
+include/linux/memblock.h
+include/linux/memcontrol.h
+include/linux/memory_hotplug.h
+include/linux/mempolicy.h
+include/linux/mempool.h
+include/linux/memremap.h
+include/linux/migrate_mode.h
+include/linux/mii.h
+include/linux/mii_timestamper.h
+include/linux/minmax.h
+include/linux/mm.h
+include/linux/mm_types.h
+include/linux/mm_types_task.h
+include/linux/mman.h
+include/linux/mmap_lock.h
+include/linux/mmdebug.h
+include/linux/mmu_context.h
+include/linux/mmzone.h
+include/linux/mnt_idmapping.h
+include/linux/mod_devicetable.h
+include/linux/module.h
+include/linux/moduleparam.h
+include/linux/mount.h
+include/linux/mpls.h
+include/linux/mroute.h
+include/linux/mroute_base.h
+include/linux/mutex.h
+include/linux/mutex_api.h
+include/linux/net.h
+include/linux/netdev_features.h
+include/linux/netdevice.h
+include/linux/netfilter.h
+include/linux/netfilter/nf_conntrack_common.h
+include/linux/netfilter/nf_conntrack_dccp.h
+include/linux/netfilter/nf_conntrack_proto_gre.h
+include/linux/netfilter/nf_conntrack_sctp.h
+include/linux/netfilter/nf_conntrack_tcp.h
+include/linux/netfilter/x_tables.h
+include/linux/netfilter_bridge.h
+include/linux/netfilter_defs.h
+include/linux/netfilter_ipv4.h
+include/linux/netfilter_netdev.h
+include/linux/netlink.h
+include/linux/netpoll.h
+include/linux/nfs.h
+include/linux/nfs3.h
+include/linux/nfs4.h
+include/linux/nfs_fs.h
+include/linux/nfs_fs_i.h
+include/linux/nfs_fs_sb.h
+include/linux/nfs_xdr.h
+include/linux/nfsacl.h
+include/linux/nls.h
+include/linux/nmi.h
+include/linux/node.h
+include/linux/nodemask.h
+include/linux/nospec.h
+include/linux/notifier.h
+include/linux/ns_common.h
+include/linux/nsproxy.h
+include/linux/numa.h
+include/linux/nvmem-consumer.h
+include/linux/nvmem-provider.h
+include/linux/objtool.h
+include/linux/of.h
+include/linux/of_address.h
+include/linux/of_clk.h
+include/linux/of_device.h
+include/linux/of_fdt.h
+include/linux/of_irq.h
+include/linux/of_net.h
+include/linux/of_platform.h
+include/linux/once.h
+include/linux/once_lite.h
+include/linux/osq_lock.h
+include/linux/overflow.h
+include/linux/page-flags-layout.h
+include/linux/page-flags.h
+include/linux/page_counter.h
+include/linux/page_ext.h
+include/linux/page_ref.h
+include/linux/pageblock-flags.h
+include/linux/pagemap.h
+include/linux/panic.h
+include/linux/path.h
+include/linux/pci.h
+include/linux/pci_ids.h
+include/linux/percpu-defs.h
+include/linux/percpu-refcount.h
+include/linux/percpu-rwsem.h
+include/linux/percpu.h
+include/linux/percpu_counter.h
+include/linux/perf_event.h
+include/linux/perf_regs.h
+include/linux/personality.h
+include/linux/pfn.h
+include/linux/phy.h
+include/linux/phylink.h
+include/linux/pid.h
+include/linux/pid_namespace.h
+include/linux/pim.h
+include/linux/pipe_fs_i.h
+include/linux/pkeys.h
+include/linux/platform_data/dsa.h
+include/linux/platform_device.h
+include/linux/plist.h
+include/linux/pm.h
+include/linux/pm_opp.h
+include/linux/pm_qos.h
+include/linux/pm_runtime.h
+include/linux/pm_wakeup.h
+include/linux/poison.h
+include/linux/poll.h
+include/linux/posix-timers.h
+include/linux/posix_acl.h
+include/linux/ppp_channel.h
+include/linux/ppp_defs.h
+include/linux/prandom.h
+include/linux/preempt.h
+include/linux/prefetch.h
+include/linux/printk.h
+include/linux/proc_fs.h
+include/linux/proc_ns.h
+include/linux/processor.h
+include/linux/profile.h
+include/linux/projid.h
+include/linux/property.h
+include/linux/psi.h
+include/linux/psi_types.h
+include/linux/ptp_classify.h
+include/linux/ptr_ring.h
+include/linux/ptrace.h
+include/linux/ptrace_api.h
+include/linux/pvclock_gtod.h
+include/linux/quota.h
+include/linux/radix-tree.h
+include/linux/random.h
+include/linux/range.h
+include/linux/ratelimit.h
+include/linux/ratelimit_types.h
+include/linux/rbtree.h
+include/linux/rbtree_augmented.h
+include/linux/rbtree_latch.h
+include/linux/rbtree_types.h
+include/linux/rcu_node_tree.h
+include/linux/rcu_segcblist.h
+include/linux/rcu_sync.h
+include/linux/rculist.h
+include/linux/rculist_bl.h
+include/linux/rculist_nulls.h
+include/linux/rcupdate.h
+include/linux/rcupdate_trace.h
+include/linux/rcutree.h
+include/linux/rcuwait.h
+include/linux/reboot.h
+include/linux/ref_tracker.h
+include/linux/refcount.h
+include/linux/resource.h
+include/linux/resource_ext.h
+include/linux/restart_block.h
+include/linux/rethook.h
+include/linux/rhashtable-types.h
+include/linux/rhashtable.h
+include/linux/ring_buffer.h
+include/linux/rmap.h
+include/linux/root_dev.h
+include/linux/rtc.h
+include/linux/rtmutex.h
+include/linux/rtnetlink.h
+include/linux/rv.h
+include/linux/rwlock.h
+include/linux/rwlock_api_smp.h
+include/linux/rwlock_types.h
+include/linux/rwsem.h
+include/linux/sbitmap.h
+include/linux/scatterlist.h
+include/linux/sched.h
+include/linux/sched/affinity.h
+include/linux/sched/autogroup.h
+include/linux/sched/clock.h
+include/linux/sched/coredump.h
+include/linux/sched/cpufreq.h
+include/linux/sched/cputime.h
+include/linux/sched/deadline.h
+include/linux/sched/debug.h
+include/linux/sched/hotplug.h
+include/linux/sched/idle.h
+include/linux/sched/isolation.h
+include/linux/sched/jobctl.h
+include/linux/sched/loadavg.h
+include/linux/sched/mm.h
+include/linux/sched/nohz.h
+include/linux/sched/numa_balancing.h
+include/linux/sched/prio.h
+include/linux/sched/rseq_api.h
+include/linux/sched/rt.h
+include/linux/sched/sd_flags.h
+include/linux/sched/signal.h
+include/linux/sched/smt.h
+include/linux/sched/stat.h
+include/linux/sched/sysctl.h
+include/linux/sched/task.h
+include/linux/sched/task_flags.h
+include/linux/sched/task_stack.h
+include/linux/sched/topology.h
+include/linux/sched/types.h
+include/linux/sched/user.h
+include/linux/sched/wake_q.h
+include/linux/sched_clock.h
+include/linux/screen_info.h
+include/linux/sctp.h
+include/linux/seccomp.h
+include/linux/securebits.h
+include/linux/security.h
+include/linux/seg6.h
+include/linux/seg6_local.h
+include/linux/sem.h
+include/linux/semaphore.h
+include/linux/seq_buf.h
+include/linux/seq_file.h
+include/linux/seq_file_net.h
+include/linux/seqlock.h
+include/linux/set_memory.h
+include/linux/shm.h
+include/linux/shrinker.h
+include/linux/signal.h
+include/linux/signal_types.h
+include/linux/siphash.h
+include/linux/sizes.h
+include/linux/skb_array.h
+include/linux/skbuff.h
+include/linux/skmsg.h
+include/linux/slab.h
+include/linux/smp.h
+include/linux/smp_types.h
+include/linux/smpboot.h
+include/linux/sock_diag.h
+include/linux/socket.h
+include/linux/sockptr.h
+include/linux/softirq.h
+include/linux/spinlock.h
+include/linux/spinlock_api.h
+include/linux/spinlock_api_smp.h
+include/linux/spinlock_types.h
+include/linux/spinlock_types_raw.h
+include/linux/splice.h
+include/linux/srcu.h
+include/linux/srcutree.h
+include/linux/stackdepot.h
+include/linux/stacktrace.h
+include/linux/stat.h
+include/linux/static_call.h
+include/linux/static_call_types.h
+include/linux/static_key.h
+include/linux/stdarg.h
+include/linux/stddef.h
+include/linux/stop_machine.h
+include/linux/string.h
+include/linux/string_helpers.h
+include/linux/stringhash.h
+include/linux/stringify.h
+include/linux/sunrpc/auth.h
+include/linux/sunrpc/clnt.h
+include/linux/sunrpc/debug.h
+include/linux/sunrpc/gss_api.h
+include/linux/sunrpc/msg_prot.h
+include/linux/sunrpc/rpc_pipe_fs.h
+include/linux/sunrpc/sched.h
+include/linux/sunrpc/stats.h
+include/linux/sunrpc/timer.h
+include/linux/sunrpc/types.h
+include/linux/sunrpc/xdr.h
+include/linux/sunrpc/xprt.h
+include/linux/sunrpc/xprtmultipath.h
+include/linux/swab.h
+include/linux/swait.h
+include/linux/swait_api.h
+include/linux/swap.h
+include/linux/swapops.h
+include/linux/sync_core.h
+include/linux/syscall_user_dispatch.h
+include/linux/syscalls.h
+include/linux/syscalls_api.h
+include/linux/syscore_ops.h
+include/linux/sysctl.h
+include/linux/sysfs.h
+include/linux/task_io_accounting.h
+include/linux/tcp.h
+include/linux/textsearch.h
+include/linux/thread_info.h
+include/linux/threads.h
+include/linux/tick.h
+include/linux/time.h
+include/linux/time32.h
+include/linux/time64.h
+include/linux/timecounter.h
+include/linux/timekeeper_internal.h
+include/linux/timekeeping.h
+include/linux/timer.h
+include/linux/timerqueue.h
+include/linux/timex.h
+include/linux/tnum.h
+include/linux/topology.h
+include/linux/trace_clock.h
+include/linux/trace_events.h
+include/linux/trace_recursion.h
+include/linux/trace_seq.h
+include/linux/tracepoint-defs.h
+include/linux/tracepoint.h
+include/linux/typecheck.h
+include/linux/types.h
+include/linux/u64_stats_sync.h
+include/linux/u64_stats_sync_api.h
+include/linux/uaccess.h
+include/linux/udp.h
+include/linux/uidgid.h
+include/linux/uio.h
+include/linux/umh.h
+include/linux/unaligned/packed_struct.h
+include/linux/uprobes.h
+include/linux/user.h
+include/linux/user_namespace.h
+include/linux/userfaultfd_k.h
+include/linux/usermode_driver.h
+include/linux/uuid.h
+include/linux/verification.h
+include/linux/vm_event_item.h
+include/linux/vmalloc.h
+include/linux/vmpressure.h
+include/linux/vmstat.h
+include/linux/vtime.h
+include/linux/wait.h
+include/linux/wait_api.h
+include/linux/wait_bit.h
+include/linux/win_minmax.h
+include/linux/wireless.h
+include/linux/workqueue.h
+include/linux/workqueue_api.h
+include/linux/writeback.h
+include/linux/ww_mutex.h
+include/linux/xarray.h
+include/net/act_api.h
+include/net/addrconf.h
+include/net/arp.h
+include/net/ax25.h
+include/net/bpf_sk_storage.h
+include/net/busy_poll.h
+include/net/checksum.h
+include/net/cipso_ipv4.h
+include/net/cls_cgroup.h
+include/net/compat.h
+include/net/devlink.h
+include/net/dropreason.h
+include/net/dsa.h
+include/net/dsfield.h
+include/net/dst.h
+include/net/dst_cache.h
+include/net/dst_metadata.h
+include/net/dst_ops.h
+include/net/erspan.h
+include/net/failover.h
+include/net/fib_notifier.h
+include/net/fib_rules.h
+include/net/flow.h
+include/net/flow_dissector.h
+include/net/flow_offload.h
+include/net/gen_stats.h
+include/net/genetlink.h
+include/net/geneve.h
+include/net/gre.h
+include/net/gro.h
+include/net/gro_cells.h
+include/net/icmp.h
+include/net/if_inet6.h
+include/net/inet6_hashtables.h
+include/net/inet_common.h
+include/net/inet_connection_sock.h
+include/net/inet_dscp.h
+include/net/inet_ecn.h
+include/net/inet_frag.h
+include/net/inet_hashtables.h
+include/net/inet_sock.h
+include/net/inet_timewait_sock.h
+include/net/inetpeer.h
+include/net/ip.h
+include/net/ip6_checksum.h
+include/net/ip6_fib.h
+include/net/ip6_tunnel.h
+include/net/ip_fib.h
+include/net/ip_tunnels.h
+include/net/ipconfig.h
+include/net/ipv6.h
+include/net/ipv6_stubs.h
+include/net/iw_handler.h
+include/net/l3mdev.h
+include/net/lwtunnel.h
+include/net/macsec.h
+include/net/mctp.h
+include/net/mpls.h
+include/net/mptcp.h
+include/net/ndisc.h
+include/net/neighbour.h
+include/net/net_debug.h
+include/net/net_namespace.h
+include/net/net_ratelimit.h
+include/net/net_trackers.h
+include/net/netevent.h
+include/net/netfilter/ipv4/nf_conntrack_ipv4.h
+include/net/netfilter/ipv6/nf_conntrack_ipv6.h
+include/net/netfilter/nf_conntrack.h
+include/net/netfilter/nf_conntrack_bpf.h
+include/net/netfilter/nf_conntrack_tuple.h
+include/net/netlabel.h
+include/net/netlink.h
+include/net/netns/bpf.h
+include/net/netns/can.h
+include/net/netns/core.h
+include/net/netns/generic.h
+include/net/netns/hash.h
+include/net/netns/ieee802154_6lowpan.h
+include/net/netns/ipv4.h
+include/net/netns/ipv6.h
+include/net/netns/mctp.h
+include/net/netns/mib.h
+include/net/netns/mpls.h
+include/net/netns/netfilter.h
+include/net/netns/nexthop.h
+include/net/netns/nftables.h
+include/net/netns/packet.h
+include/net/netns/sctp.h
+include/net/netns/smc.h
+include/net/netns/unix.h
+include/net/netns/xdp.h
+include/net/netns/xfrm.h
+include/net/netprio_cgroup.h
+include/net/netrom.h
+include/net/nexthop.h
+include/net/page_pool.h
+include/net/ping.h
+include/net/pkt_cls.h
+include/net/pkt_sched.h
+include/net/pptp.h
+include/net/protocol.h
+include/net/raw.h
+include/net/request_sock.h
+include/net/route.h
+include/net/rtnetlink.h
+include/net/rtnh.h
+include/net/sch_generic.h
+include/net/scm.h
+include/net/secure_seq.h
+include/net/seg6.h
+include/net/seg6_local.h
+include/net/selftests.h
+include/net/snmp.h
+include/net/sock.h
+include/net/sock_reuseport.h
+include/net/strparser.h
+include/net/switchdev.h
+include/net/tcp.h
+include/net/tcp_states.h
+include/net/timewait_sock.h
+include/net/tipc.h
+include/net/tls.h
+include/net/transp_v6.h
+include/net/tso.h
+include/net/udp.h
+include/net/udp_tunnel.h
+include/net/udplite.h
+include/net/vxlan.h
+include/net/wext.h
+include/net/xdp.h
+include/net/xdp_priv.h
+include/net/xdp_sock.h
+include/net/xdp_sock_drv.h
+include/net/xfrm.h
+include/net/xsk_buff_pool.h
+include/scsi/fc/fc_fcoe.h
+include/trace/define_trace.h
+include/trace/events/fib.h
+include/trace/events/irq.h
+include/trace/events/lock.h
+include/trace/events/napi.h
+include/trace/events/neigh.h
+include/trace/events/net.h
+include/trace/events/net_probe_common.h
+include/trace/events/netlink.h
+include/trace/events/power.h
+include/trace/events/qdisc.h
+include/trace/events/sched.h
+include/trace/events/skb.h
+include/trace/events/sock.h
+include/trace/events/tcp.h
+include/trace/events/timer.h
+include/trace/events/tlb.h
+include/trace/events/udp.h
+include/trace/events/workqueue.h
+include/trace/events/xdp.h
+include/trace/syscall.h
+include/uapi/asm-generic/bitsperlong.h
+include/uapi/asm-generic/bpf_perf_event.h
+include/uapi/asm-generic/errno-base.h
+include/uapi/asm-generic/errno.h
+include/uapi/asm-generic/fcntl.h
+include/uapi/asm-generic/hugetlb_encode.h
+include/uapi/asm-generic/int-ll64.h
+include/uapi/asm-generic/ioctl.h
+include/uapi/asm-generic/ioctls.h
+include/uapi/asm-generic/ipcbuf.h
+include/uapi/asm-generic/kvm_para.h
+include/uapi/asm-generic/mman-common.h
+include/uapi/asm-generic/mman.h
+include/uapi/asm-generic/param.h
+include/uapi/asm-generic/poll.h
+include/uapi/asm-generic/posix_types.h
+include/uapi/asm-generic/resource.h
+include/uapi/asm-generic/sembuf.h
+include/uapi/asm-generic/shmbuf.h
+include/uapi/asm-generic/siginfo.h
+include/uapi/asm-generic/signal-defs.h
+include/uapi/asm-generic/signal.h
+include/uapi/asm-generic/socket.h
+include/uapi/asm-generic/sockios.h
+include/uapi/asm-generic/stat.h
+include/uapi/asm-generic/swab.h
+include/uapi/asm-generic/termbits-common.h
+include/uapi/asm-generic/termbits.h
+include/uapi/asm-generic/termios.h
+include/uapi/asm-generic/types.h
+include/uapi/asm-generic/unistd.h
+include/uapi/linux/aio_abi.h
+include/uapi/linux/apm_bios.h
+include/uapi/linux/audit.h
+include/uapi/linux/auxvec.h
+include/uapi/linux/ax25.h
+include/uapi/linux/batadv_packet.h
+include/uapi/linux/binfmts.h
+include/uapi/linux/blkzoned.h
+include/uapi/linux/bpf.h
+include/uapi/linux/bpf_common.h
+include/uapi/linux/bpf_perf_event.h
+include/uapi/linux/bpfilter.h
+include/uapi/linux/btf.h
+include/uapi/linux/byteorder/little_endian.h
+include/uapi/linux/capability.h
+include/uapi/linux/cgroupstats.h
+include/uapi/linux/const.h
+include/uapi/linux/dccp.h
+include/uapi/linux/devlink.h
+include/uapi/linux/dqblk_xfs.h
+include/uapi/linux/edd.h
+include/uapi/linux/elf-em.h
+include/uapi/linux/elf.h
+include/uapi/linux/errno.h
+include/uapi/linux/errqueue.h
+include/uapi/linux/erspan.h
+include/uapi/linux/ethtool.h
+include/uapi/linux/ethtool_netlink.h
+include/uapi/linux/eventpoll.h
+include/uapi/linux/fcntl.h
+include/uapi/linux/fib_rules.h
+include/uapi/linux/filter.h
+include/uapi/linux/fs.h
+include/uapi/linux/gen_stats.h
+include/uapi/linux/genetlink.h
+include/uapi/linux/hdlc/ioctl.h
+include/uapi/linux/icmp.h
+include/uapi/linux/icmpv6.h
+include/uapi/linux/if.h
+include/uapi/linux/if_addr.h
+include/uapi/linux/if_arp.h
+include/uapi/linux/if_bonding.h
+include/uapi/linux/if_bridge.h
+include/uapi/linux/if_ether.h
+include/uapi/linux/if_fddi.h
+include/uapi/linux/if_link.h
+include/uapi/linux/if_macsec.h
+include/uapi/linux/if_packet.h
+include/uapi/linux/if_pppol2tp.h
+include/uapi/linux/if_pppox.h
+include/uapi/linux/if_tunnel.h
+include/uapi/linux/if_vlan.h
+include/uapi/linux/if_xdp.h
+include/uapi/linux/igmp.h
+include/uapi/linux/in.h
+include/uapi/linux/in6.h
+include/uapi/linux/in_route.h
+include/uapi/linux/inet_diag.h
+include/uapi/linux/ioctl.h
+include/uapi/linux/ioprio.h
+include/uapi/linux/ip.h
+include/uapi/linux/ip6_tunnel.h
+include/uapi/linux/ipc.h
+include/uapi/linux/ipsec.h
+include/uapi/linux/ipv6.h
+include/uapi/linux/ipv6_route.h
+include/uapi/linux/irqnr.h
+include/uapi/linux/kcov.h
+include/uapi/linux/kdev_t.h
+include/uapi/linux/kernel.h
+include/uapi/linux/kexec.h
+include/uapi/linux/kvm_para.h
+include/uapi/linux/l2tp.h
+include/uapi/linux/libc-compat.h
+include/uapi/linux/limits.h
+include/uapi/linux/lwtunnel.h
+include/uapi/linux/magic.h
+include/uapi/linux/major.h
+include/uapi/linux/mctp.h
+include/uapi/linux/mdio.h
+include/uapi/linux/membarrier.h
+include/uapi/linux/mempolicy.h
+include/uapi/linux/mii.h
+include/uapi/linux/mman.h
+include/uapi/linux/mpls.h
+include/uapi/linux/mroute.h
+include/uapi/linux/neighbour.h
+include/uapi/linux/net.h
+include/uapi/linux/net_namespace.h
+include/uapi/linux/net_tstamp.h
+include/uapi/linux/netconf.h
+include/uapi/linux/netdevice.h
+include/uapi/linux/netfilter.h
+include/uapi/linux/netfilter/nf_conntrack_common.h
+include/uapi/linux/netfilter/nf_conntrack_sctp.h
+include/uapi/linux/netfilter/nf_conntrack_tcp.h
+include/uapi/linux/netfilter/nf_conntrack_tuple_common.h
+include/uapi/linux/netfilter/nf_tables.h
+include/uapi/linux/netfilter/x_tables.h
+include/uapi/linux/netfilter_arp.h
+include/uapi/linux/netfilter_bridge.h
+include/uapi/linux/netfilter_ipv4.h
+include/uapi/linux/netlink.h
+include/uapi/linux/netrom.h
+include/uapi/linux/nexthop.h
+include/uapi/linux/nfs.h
+include/uapi/linux/nfs2.h
+include/uapi/linux/nfs3.h
+include/uapi/linux/nfs4.h
+include/uapi/linux/nfs_fs.h
+include/uapi/linux/nfsacl.h
+include/uapi/linux/openat2.h
+include/uapi/linux/param.h
+include/uapi/linux/pci.h
+include/uapi/linux/pci_regs.h
+include/uapi/linux/perf_event.h
+include/uapi/linux/personality.h
+include/uapi/linux/pfkeyv2.h
+include/uapi/linux/pkt_cls.h
+include/uapi/linux/pkt_sched.h
+include/uapi/linux/poll.h
+include/uapi/linux/posix_acl.h
+include/uapi/linux/posix_types.h
+include/uapi/linux/ppp_defs.h
+include/uapi/linux/prctl.h
+include/uapi/linux/ptrace.h
+include/uapi/linux/quota.h
+include/uapi/linux/random.h
+include/uapi/linux/reboot.h
+include/uapi/linux/resource.h
+include/uapi/linux/route.h
+include/uapi/linux/rseq.h
+include/uapi/linux/rtc.h
+include/uapi/linux/rtnetlink.h
+include/uapi/linux/sched.h
+include/uapi/linux/sched/types.h
+include/uapi/linux/screen_info.h
+include/uapi/linux/sctp.h
+include/uapi/linux/seccomp.h
+include/uapi/linux/securebits.h
+include/uapi/linux/seg6.h
+include/uapi/linux/seg6_local.h
+include/uapi/linux/sem.h
+include/uapi/linux/shm.h
+include/uapi/linux/signal.h
+include/uapi/linux/snmp.h
+include/uapi/linux/sock_diag.h
+include/uapi/linux/socket.h
+include/uapi/linux/sockios.h
+include/uapi/linux/stat.h
+include/uapi/linux/stddef.h
+include/uapi/linux/string.h
+include/uapi/linux/sunrpc/debug.h
+include/uapi/linux/swab.h
+include/uapi/linux/sysctl.h
+include/uapi/linux/sysinfo.h
+include/uapi/linux/taskstats.h
+include/uapi/linux/tcp.h
+include/uapi/linux/tcp_metrics.h
+include/uapi/linux/termios.h
+include/uapi/linux/time.h
+include/uapi/linux/time_types.h
+include/uapi/linux/times.h
+include/uapi/linux/timex.h
+include/uapi/linux/tls.h
+include/uapi/linux/types.h
+include/uapi/linux/udp.h
+include/uapi/linux/uio.h
+include/uapi/linux/un.h
+include/uapi/linux/unistd.h
+include/uapi/linux/utsname.h
+include/uapi/linux/uuid.h
+include/uapi/linux/vmcore.h
+include/uapi/linux/wait.h
+include/uapi/linux/wireless.h
+include/uapi/linux/xfrm.h
+include/uapi/video/edid.h
+include/vdso/bits.h
+include/vdso/clocksource.h
+include/vdso/const.h
+include/vdso/datapage.h
+include/vdso/jiffies.h
+include/vdso/ktime.h
+include/vdso/limits.h
+include/vdso/math64.h
+include/vdso/processor.h
+include/vdso/time.h
+include/vdso/time32.h
+include/vdso/time64.h
+include/video/edid.h
+kernel/irq/debug.h
+kernel/irq/internals.h
+kernel/irq/settings.h
+kernel/locking/lock_events.h
+kernel/locking/lock_events_list.h
+kernel/locking/mutex.h
+kernel/locking/ww_mutex.h
+kernel/sched/autogroup.h
+kernel/sched/clock.c
+kernel/sched/completion.c
+kernel/sched/cpudeadline.h
+kernel/sched/cpupri.c
+kernel/sched/cpupri.h
+kernel/sched/features.h
+kernel/sched/isolation.c
+kernel/sched/loadavg.c
+kernel/sched/sched-pelt.h
+kernel/sched/sched.h
+kernel/sched/stats.h
+kernel/sched/stop_task.c
+kernel/sched/swait.c
+kernel/sched/topology.c
+kernel/sched/wait.c
+kernel/sched/wait_bit.c
+kernel/smpboot.h
+kernel/time/ntp_internal.h
+kernel/time/tick-internal.h
+kernel/time/tick-sched.h
+kernel/time/timekeeping.h
+kernel/time/timekeeping_internal.h
+kernel/workqueue_internal.h
+lib/kstrtox.h
+mm/internal.h
+mm/slab.h
+mm/swap.h
+net/core/dev.h
+net/core/net-sysfs.h
+net/core/sock_destructor.h
+net/ipv4/fib_lookup.h
+net/ipv4/udp_impl.h
+net/netlink/af_netlink.h
diff --git a/repos/dde_linux/src/lib/lxip/dummies.c b/repos/dde_linux/src/lib/lxip/dummies.c
new file mode 100644
index 0000000000..46e7cde4fe
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/dummies.c
@@ -0,0 +1,365 @@
+/*
+ * \brief  Dummy definitions of Linux kernel functions
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <lx_emul.h>
+
+unsigned smp_on_up;
+
+
+/* lx_kit's 'kernel_init' in start.c */
+
+extern int __init devices_init(void);
+int __init devices_init(void)
+{
+	lx_emul_trace(__func__);
+	return 0;
+}
+
+
+extern int __init buses_init(void);
+int __init buses_init(void)
+{
+	lx_emul_trace(__func__);
+	return 0;
+}
+
+
+#include <linux/jump_label.h>
+#include <asm/processor.h>
+
+struct static_key_false init_on_alloc;
+
+unsigned long sysctl_net_busy_read;
+
+DEFINE_STATIC_KEY_FALSE(force_irqthreads_key);
+DEFINE_STATIC_KEY_FALSE(bpf_stats_enabled_key);
+
+
+#include <linux/cpumask.h>
+#include <linux/percpu-defs.h>
+
+DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_sibling_map);
+EXPORT_PER_CPU_SYMBOL(cpu_sibling_map);
+
+
+#include <net/ipv6_stubs.h>
+
+const struct ipv6_stub *ipv6_stub = NULL;
+
+
+#include <asm/uaccess.h>
+
+long strncpy_from_user(char * dst,const char __user * src,long count)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+int __copy_from_user_flushcache(void *dst, const void __user *src, unsigned size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+#ifdef __x86_64__
+
+unsigned long clear_user(void *mem, unsigned long len)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+#endif
+
+#ifdef ARCH_HAS_NOCACHE_UACCESS
+
+int __copy_from_user_inatomic_nocache(void *dst, const void __user *src,
+                                      unsigned size)
+{
+ 	lx_emul_trace_and_stop(__func__);
+}
+
+#endif
+
+
+#include <asm/uaccess.h>
+
+long strnlen_user(const char __user * str,long count)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+void add_device_randomness(const void * buf,size_t len)
+{
+	lx_emul_trace(__func__);
+}
+
+
+#include <linux/device.h>
+
+void *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp,
+                          int nid, const char *name)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
+void devres_free(void *res)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+void devres_add(struct device *dev, void *res)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+void synchronize_rcu_expedited(void)
+{
+	lx_emul_trace(__func__);
+}
+
+
+#include <linux/rcupdate.h>
+
+void synchronize_rcu(void)
+{
+	lx_emul_trace(__func__);
+}
+
+
+#include <linux/kernel.h>
+
+char *get_options(const char *str, int nints, int *ints)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
+#include <linux/fs.h>
+
+char *file_path(struct file *, char *, int)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
+#include <asm/page.h>
+
+#ifdef __x86_64__
+
+void copy_page(void *to, void *from)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+#endif
+
+
+#include <linux/filter.h>
+
+void bpf_jit_compile(struct bpf_prog *prog)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+u64 bpf_get_raw_cpu_id(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
+#ifndef __arm__
+
+#include <linux/timekeeper_internal.h>
+void update_vsyscall(struct timekeeper * tk)
+{
+	lx_emul_trace(__func__);
+}
+
+#else
+
+#include <asm/cacheflush.h>
+
+struct cpu_cache_fns cpu_cache;
+
+
+#include <asm/uaccess.h>
+
+asmlinkage void __div0(void);
+asmlinkage void __div0(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+#endif
+
+
+#include <linux/kobject.h>
+
+int kobject_uevent(struct kobject * kobj,enum kobject_action action)
+{
+	lx_emul_trace(__func__);
+	return 0;
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_check_ops(const struct ethtool_ops * ops)
+{
+	lx_emul_trace(__func__);
+	return 0;
+}
+
+
+#include <linux/device/driver.h>
+
+void wait_for_device_probe(void)
+{
+	lx_emul_trace(__func__);
+}
+
+
+#include <linux/irq_work.h>
+
+void irq_work_tick(void)
+{
+	lx_emul_trace(__func__);
+}
+
+
+#include <linux/pid.h>
+
+void put_pid(struct pid * pid)
+{
+	lx_emul_trace(__func__);
+}
+
+
+#include <linux/ratelimit_types.h>
+
+int ___ratelimit(struct ratelimit_state * rs,const char * func)
+{
+	lx_emul_trace(__func__);
+	return 0;
+}
+
+
+#include <asm-generic/softirq_stack.h>
+
+void do_softirq_own_stack(void)
+{
+	lx_emul_trace(__func__);
+}
+
+
+unsigned long __must_check __arch_clear_user(void __user *to, unsigned long n);
+unsigned long __must_check __arch_clear_user(void __user *to, unsigned long n)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+unsigned long __must_check arm_clear_user(void __user *addr, unsigned long n);
+unsigned long __must_check arm_clear_user(void __user *addr, unsigned long n)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+u64 bpf_user_rnd_u32(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
+u64 bpf_event_output(struct bpf_map *map, u64 flags, void *meta, u64 meta_size,
+                     void *ctx, u64 ctx_size, bpf_ctx_copy_t ctx_copy)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
+/* kernel/sched/cpudeadline.h */
+struct cpudl;
+int  cpudl_init(struct cpudl *cp)
+{
+	lx_emul_trace_and_stop(__func__);
+	return -1;
+}
+
+
+void cpudl_cleanup(struct cpudl *cp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+void dl_clear_root_domain(struct root_domain *rd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+/* kernel/sched/sched.h */
+bool sched_smp_initialized = true;
+
+struct dl_bw;
+void init_dl_bw(struct dl_bw *dl_b)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+struct irq_work;
+void rto_push_irq_work_func(struct irq_work *work)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+/* include/linux/sched/topology.h */
+int arch_asym_cpu_priority(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+	return 0;
+}
+
+
+extern int __init netdev_kobject_init(void);
+int __init netdev_kobject_init(void)
+{
+	lx_emul_trace(__func__);
+	return 0;
+}
+
+
+extern int netdev_register_kobject(struct net_device * ndev);
+int netdev_register_kobject(struct net_device * ndev)
+{
+	lx_emul_trace(__func__);
+	return 0;
+}
diff --git a/repos/dde_linux/src/lib/lxip/genode_c_api/nic_client.cc b/repos/dde_linux/src/lib/lxip/genode_c_api/nic_client.cc
new file mode 100644
index 0000000000..a16e3fe425
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/genode_c_api/nic_client.cc
@@ -0,0 +1,248 @@
+/*
+ * \brief  C interface to Genode's nic_client session
+ * \author Norman Feske
+ * \date   2021-07-06
+ */
+
+/*
+ * Copyright (C) 2021 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <base/registry.h>
+#include <base/log.h>
+#include <base/session_label.h>
+#include <nic_session/connection.h>
+#include <nic/packet_allocator.h>
+#include <genode_c_api/nic_client.h>
+
+using namespace Genode;
+
+struct Statics
+{
+	Env                                    *env_ptr;
+	Allocator                              *alloc_ptr;
+	Signal_context_capability               sigh { };
+	Registry<Registered<genode_nic_client>> nic_clients { };
+};
+
+
+static Statics & statics()
+{
+	static Statics instance { };
+
+	return instance;
+};
+
+
+struct genode_nic_client : private Noncopyable, private Interface
+{
+	private:
+
+		Env       &_env;
+		Allocator &_alloc;
+
+		Nic::Packet_allocator _packet_alloc { &_alloc };
+
+		static constexpr size_t
+			PACKET_SIZE = Nic::Packet_allocator::DEFAULT_PACKET_SIZE,
+			BUF_SIZE    = Nic::Session::QUEUE_SIZE * PACKET_SIZE;
+
+		Session_label const _session_label;
+
+		Nic::Connection _connection { _env, &_packet_alloc,
+		                              BUF_SIZE, BUF_SIZE,
+		                              _session_label.string() };
+
+	public:
+
+		genode_nic_client(Env &env, Allocator &alloc, Signal_context_capability sigh,
+		              Session_label    const &session_label)
+		:
+			_env(env), _alloc(alloc),
+			_session_label(session_label)
+		{
+			_connection.rx_channel()->sigh_ready_to_ack   (sigh);
+			_connection.rx_channel()->sigh_packet_avail   (sigh);
+			_connection.tx_channel()->sigh_ack_avail      (sigh);
+			_connection.tx_channel()->sigh_ready_to_submit(sigh);
+		}
+
+		void notify_peer()
+		{
+			_connection.rx()->wakeup();
+			_connection.tx()->wakeup();
+		}
+
+		template <typename FN>
+		bool tx_one_packet(FN const &fn)
+		{
+			bool progress = false;
+
+			Nic::Session::Tx::Source &tx_source = *_connection.tx();
+
+			/*
+			 * Process acknowledgements
+			 */
+
+			while (tx_source.ack_avail()) {
+				tx_source.release_packet(tx_source.try_get_acked_packet());
+				progress = true;
+			}
+
+			/*
+			 * Submit packet
+			 */
+
+			if (!tx_source.ready_to_submit(1))
+				return progress;
+
+			typedef Nic::Packet_descriptor Packet_descriptor;
+
+			Packet_descriptor packet { };
+			size_t const max_bytes = Nic::Packet_allocator::OFFSET_PACKET_SIZE;
+
+
+			tx_source.alloc_packet_attempt(max_bytes).with_result(
+				[&] (Packet_descriptor packet)
+				{
+					char * const dst_ptr = tx_source.packet_content(packet);
+					size_t const payload_bytes = min(max_bytes, fn(dst_ptr, max_bytes));
+
+					/* imprint payload size into packet descriptor */
+					packet = Packet_descriptor(packet.offset(), payload_bytes);
+
+					tx_source.try_submit_packet(packet);
+					progress = true;
+				},
+				[] (auto) {}
+			);
+
+			return progress;
+		}
+
+		template <typename FN>
+		bool for_each_rx_packet(FN const &fn)
+		{
+			/*
+			 * Implementation mirrored from (commented) block/request_stream.h
+			 */
+			bool overall_progress = false;
+
+			Nic::Session::Rx::Sink &rx_sink = *_connection.rx();
+
+			for (;;) {
+
+				if (!rx_sink.packet_avail() || !rx_sink.ack_slots_free())
+					break;
+
+				typedef Nic::Packet_descriptor Packet_descriptor;
+
+				Packet_descriptor const packet = rx_sink.peek_packet();
+
+				bool const packet_valid = rx_sink.packet_valid(packet)
+				                       && (packet.offset() >= 0);
+
+				char const *content = rx_sink.packet_content(packet);
+
+				genode_nic_client_rx_result_t const
+					response = packet_valid
+					         ? fn(content, packet.size())
+					         : GENODE_NIC_CLIENT_RX_REJECTED;
+
+				bool progress = false;
+
+				switch (response) {
+
+				case GENODE_NIC_CLIENT_RX_ACCEPTED:
+				case GENODE_NIC_CLIENT_RX_REJECTED:
+
+					(void)rx_sink.try_get_packet();
+					rx_sink.try_ack_packet(packet);
+					progress = true;
+					break;
+
+				case GENODE_NIC_CLIENT_RX_RETRY:
+					Genode::warning("RETRY");
+					break;
+				}
+
+				if (progress)
+					overall_progress = true;
+
+				if (!progress)
+					break;
+			}
+			return overall_progress;
+		}
+
+		Nic::Mac_address mac_address() { return _connection.mac_address(); }
+};
+
+
+void genode_nic_client_init(genode_env            *env_ptr,
+                            genode_allocator      *alloc_ptr,
+                            genode_signal_handler *sigh_ptr)
+{
+	statics().env_ptr   = env_ptr;
+	statics().alloc_ptr = alloc_ptr;
+	statics().sigh      = cap(sigh_ptr);
+}
+
+
+void genode_nic_client_notify_peers()
+{
+	statics().nic_clients.for_each([&] (genode_nic_client &nic_client) {
+		nic_client.notify_peer(); });
+}
+
+
+genode_mac_address genode_nic_client_mac_address(genode_nic_client *nic_client_ptr)
+{
+	Nic::Mac_address mac = nic_client_ptr->mac_address();
+
+	struct genode_mac_address genode_mac;
+	Genode::memcpy(genode_mac.addr, &mac.addr, sizeof(genode_mac_address));
+
+	return genode_mac;
+}
+
+
+bool genode_nic_client_tx_packet(genode_nic_client *nic_client_ptr,
+                                 genode_nic_client_tx_packet_content_t tx_packet_content_cb,
+                                 genode_nic_client_tx_packet_context *ctx_ptr)
+{
+	return nic_client_ptr->tx_one_packet([&] (char *dst, size_t len) {
+		return tx_packet_content_cb(ctx_ptr, dst, len); });
+}
+
+
+bool genode_nic_client_rx(struct genode_nic_client *nic_client_ptr,
+                          genode_nic_client_rx_one_packet_t rx_one_packet_cb,
+                          struct genode_nic_client_rx_context *ctx_ptr)
+{
+	return nic_client_ptr->for_each_rx_packet([&] (char const *ptr, size_t len) {
+		return rx_one_packet_cb(ctx_ptr, ptr, len); });
+}
+
+
+struct genode_nic_client *genode_nic_client_create(char const *label)
+{
+	if (!statics().env_ptr || !statics().alloc_ptr) {
+		error("genode_nic_client_create: missing call of genode_nic_client_init");
+		return nullptr;
+	}
+
+	return new (*statics().alloc_ptr)
+		Registered<genode_nic_client>(statics().nic_clients, *statics().env_ptr,
+		                              *statics().alloc_ptr, statics().sigh,
+		                              Session_label(label));
+}
+
+
+void genode_nic_client_destroy(genode_nic_client *nic_client_ptr)
+{
+	destroy(*statics().alloc_ptr, nic_client_ptr);
+}
diff --git a/repos/dde_linux/src/lib/lxip/genode_c_api/nic_client.h b/repos/dde_linux/src/lib/lxip/genode_c_api/nic_client.h
new file mode 100644
index 0000000000..8f1207b332
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/genode_c_api/nic_client.h
@@ -0,0 +1,110 @@
+/*
+ * \brief  C interface to Genode's NIC session
+ * \author Norman Feske
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is part of the Genode OS framework, which is distributed
+ * under the terms of the GNU Affero General Public License version 3.
+ */
+
+#ifndef __GENODE_C_API__NIC_CLIENT_H_
+#define __GENODE_C_API__NIC_CLIENT_H_
+
+#include <genode_c_api/base.h>
+#include <genode_c_api/mac_address_reporter.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Initialize NIC handling
+ *
+ * \param sigh  signal handler to be installed at the NIC connection
+ */
+void genode_nic_client_init(struct genode_env *,
+                            struct genode_allocator *,
+                            struct genode_signal_handler *);
+
+/**
+ * Wake up NIC server if progress can be made at the server side
+ *
+ * This function should be called whenever the component becomes idle.
+ */
+void genode_nic_client_notify_peers(void);
+
+struct genode_nic_client; /* definition is private to the implementation */
+
+
+/**************
+ ** Lifetime **
+ **************/
+
+struct genode_nic_client *genode_nic_client_create(char const *label);
+void   genode_nic_client_destroy(struct genode_nic_client *);
+
+
+/*************
+ ** Session **
+ *************/
+
+/**
+ * Retreive MAC address from server
+ */
+struct genode_mac_address genode_nic_client_mac_address(struct genode_nic_client *);
+
+
+/**********************************************
+ ** Transmit packets towards the NIC session **
+ **********************************************/
+
+struct genode_nic_client_tx_packet_context;
+
+/**
+ * Callback called by 'genode_nic_client_tx_packet' to provide the content
+ */
+typedef unsigned long (*genode_nic_client_tx_packet_content_t)
+	(struct genode_nic_client_tx_packet_context *, char *dst, unsigned long dst_len);
+
+/**
+ * Process packet transmission
+ *
+ * \return true if progress was made
+ */
+bool genode_nic_client_tx_packet(struct genode_nic_client *,
+                                 genode_nic_client_tx_packet_content_t,
+                                 struct genode_nic_client_tx_packet_context *);
+
+
+/******************************************
+ ** Receive packets from the NIC session **
+ ******************************************/
+
+struct genode_nic_client_rx_context;
+
+typedef enum { GENODE_NIC_CLIENT_RX_REJECTED,
+               GENODE_NIC_CLIENT_RX_ACCEPTED,
+               GENODE_NIC_CLIENT_RX_RETRY } genode_nic_client_rx_result_t;
+
+typedef genode_nic_client_rx_result_t (*genode_nic_client_rx_one_packet_t)
+	(struct genode_nic_client_rx_context *, char const *ptr, unsigned long len);
+
+/**
+ * Process packet reception
+ *
+ * \return true if progress was made
+ */
+bool genode_nic_client_rx(struct genode_nic_client *,
+                          genode_nic_client_rx_one_packet_t rx_one_packet,
+                          struct genode_nic_client_rx_context *);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __GENODE_C_API__NIC_CLIENT_H_ */
diff --git a/repos/dde_linux/src/lib/lxip/include/genode_c_api/socket.h b/repos/dde_linux/src/lib/lxip/include/genode_c_api/socket.h
new file mode 100644
index 0000000000..ae705e4117
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/include/genode_c_api/socket.h
@@ -0,0 +1,254 @@
+/*
+ * \brief  Genode socket C-API
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <base/fixed_stdint.h>
+#include <genode_c_api/base.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum Errno {
+	GENODE_ENONE = 0,
+	GENODE_E2BIG = 1,
+	GENODE_EACCES = 2,
+	GENODE_EADDRINUSE = 3,
+	GENODE_EADDRNOTAVAIL = 4,
+	GENODE_EAFNOSUPPORT = 5,
+	GENODE_EAGAIN = 6,
+	GENODE_EALREADY = 7,
+	GENODE_EBADF = 8,
+	GENODE_EBADFD = 9,
+	GENODE_EBADMSG = 10,
+	GENODE_EBADRQC = 11,
+	GENODE_EBUSY = 12,
+	GENODE_ECONNABORTED = 13,
+	GENODE_ECONNREFUSED = 14,
+	GENODE_EDESTADDRREQ = 15,
+	GENODE_EDOM = 16,
+	GENODE_EEXIST = 17,
+	GENODE_EFAULT = 18,
+	GENODE_EFBIG = 19,
+	GENODE_EHOSTUNREACH = 20,
+	GENODE_EINPROGRESS = 21,
+	GENODE_EINTR = 22,
+	GENODE_EINVAL = 23,
+	GENODE_EIO = 24,
+	GENODE_EISCONN = 25,
+	GENODE_ELOOP = 26,
+	GENODE_EMLINK = 27,
+	GENODE_EMSGSIZE = 28,
+	GENODE_ENAMETOOLONG = 29,
+	GENODE_ENETDOWN = 30,
+	GENODE_ENETUNREACH = 31,
+	GENODE_ENFILE = 32,
+	GENODE_ENOBUFS = 33,
+	GENODE_ENODATA = 34,
+	GENODE_ENODEV = 35,
+	GENODE_ENOENT = 36,
+	GENODE_ENOIOCTLCMD = 37,
+	GENODE_ENOLINK = 38,
+	GENODE_ENOMEM = 39,
+	GENODE_ENOMSG = 40,
+	GENODE_ENOPROTOOPT = 41,
+	GENODE_ENOSPC = 42,
+	GENODE_ENOSYS = 43,
+	GENODE_ENOTCONN = 44,
+	GENODE_ENOTSUPP = 45,
+	GENODE_ENOTTY = 46,
+	GENODE_ENXIO = 47,
+	GENODE_EOPNOTSUPP = 48,
+	GENODE_EOVERFLOW = 49,
+	GENODE_EPERM = 50,
+	GENODE_EPFNOSUPPORT = 51,
+	GENODE_EPIPE = 52,
+	GENODE_EPROTO = 53,
+	GENODE_EPROTONOSUPPORT = 54,
+	GENODE_EPROTOTYPE = 55,
+	GENODE_ERANGE = 56,
+	GENODE_EREMCHG = 57,
+	GENODE_ESOCKTNOSUPPORT = 58,
+	GENODE_ESPIPE = 59,
+	GENODE_ESRCH = 60,
+	GENODE_ESTALE = 61,
+	GENODE_ETIMEDOUT = 62,
+	GENODE_ETOOMANYREFS = 63,
+	GENODE_EUSERS = 64,
+	GENODE_EXDEV = 65,
+	GENODE_MAX_ERRNO = 66,
+};
+
+enum Sock_opt {
+	/* found in lxip and lwip */
+	GENODE_SO_DEBUG = 1,
+	GENODE_SO_ACCEPTCONN = 2,
+	GENODE_SO_DONTROUTE = 3,
+	GENODE_SO_LINGER = 4,
+	GENODE_SO_OOBINLINE = 5,
+	GENODE_SO_REUSEPORT = 6,
+	GENODE_SO_SNDBUF = 7,
+	GENODE_SO_RCVBUF = 8,
+	GENODE_SO_SNDLOWAT = 9,
+	GENODE_SO_RCVLOWAT = 10,
+	GENODE_SO_SNDTIMEO = 11,
+	GENODE_SO_RCVTIMEO = 12,
+	GENODE_SO_ERROR = 13,
+	GENODE_SO_TYPE = 14,
+	GENODE_SO_BINDTODEVICE = 15,
+	GENODE_SO_BROADCAST = 16,
+};
+
+enum Sock_level {
+	GENODE_SOL_SOCKET = 1,
+};
+
+struct genode_socket_handle;
+
+struct genode_sockaddr
+{
+	genode_uint16_t family;
+	union {
+		/* AF_INET (or IPv4) */
+		struct {
+			genode_uint16_t port; /* be */
+			genode_uint32_t addr; /* be */
+		} in;
+	};
+};
+
+/*
+ * I/O progress callback can be registered via genode_socket_init and is
+ * executed when possible progress (e.g., packet received) has been made
+ */
+struct genode_socket_io_progress
+{
+	void  *data;
+	void (*callback)(void *);
+};
+
+
+void genode_socket_init(struct genode_env *env,
+                        struct genode_socket_io_progress *);
+
+
+/**
+ * IPv4 address configuration (DHCP or static)
+ */
+struct genode_socket_config
+{
+	/* IPv4 */
+	bool dhcp;
+	char const *ip_addr;
+	char const *netmask;
+	char const *gateway;
+	char const *nameserver;
+};
+
+/**
+ * Configure/obtain IP address (blocking)
+ */
+void genode_socket_config_address(struct genode_socket_config *config);
+
+/**
+ * Configure MTU size (default should be 1500)
+ */
+void genode_socket_configure_mtu(unsigned mtu);
+
+
+/**
+ * Wait for I/O progress (synchronous) - used for testing if no
+ * genode_socket_io_progress has been registered.
+ */
+void genode_socket_wait_for_progress(void);
+
+
+/**
+ * The following calls have POSIX semantics and are non-blocking
+ */
+
+struct genode_socket_handle *
+genode_socket(int domain, int type, int protocol, enum Errno *);
+
+enum Errno genode_socket_bind(struct genode_socket_handle *,
+                              struct genode_sockaddr const *);
+
+enum Errno genode_socket_listen(struct genode_socket_handle *,
+                                int backlog);
+struct genode_socket_handle *
+genode_socket_accept(struct genode_socket_handle *,
+                     struct genode_sockaddr *,
+                     enum Errno *);
+
+enum Errno genode_socket_connect(struct genode_socket_handle *,
+                                 struct genode_sockaddr *);
+
+unsigned genode_socket_pollin_set(void);
+unsigned genode_socket_pollout_set(void);
+unsigned genode_socket_pollex_set(void);
+
+unsigned genode_socket_poll(struct genode_socket_handle *);
+
+enum Errno genode_socket_getsockopt(struct genode_socket_handle *,
+                                    enum Sock_level, enum Sock_opt,
+                                    void *optval, unsigned *optlen);
+
+enum Errno genode_socket_setsockopt(struct genode_socket_handle *,
+                                    enum Sock_level, enum Sock_opt,
+                                    void const *optval,
+                                    unsigned optlen);
+
+enum Errno genode_socket_getsockname(struct genode_socket_handle *,
+                                     struct genode_sockaddr *);
+
+enum Errno genode_socket_getpeername(struct genode_socket_handle *,
+                                     struct genode_sockaddr *);
+
+/**
+ * I/O vector
+ */
+struct genode_iovec
+{
+	void         *base;
+	unsigned long size;
+};
+
+
+struct genode_msghdr
+{
+	struct genode_sockaddr *name;   /* can be NULL for TCP    */
+	struct genode_iovec    *iov;    /* array of iovecs        */
+	unsigned long           iovlen; /* nr elements in msg_iov */
+};
+
+
+enum Errno genode_socket_sendmsg(struct genode_socket_handle *,
+                                 struct genode_msghdr *,
+                                 unsigned long *bytes_send);
+
+/**
+ * \param msg_peek  Does not advance data read pointer, so data can be re-read
+ *                  later
+ */
+enum Errno genode_socket_recvmsg(struct genode_socket_handle *,
+                                 struct genode_msghdr *,
+                                 unsigned long *bytes_recv,
+                                 bool msg_peek);
+
+enum Errno genode_socket_shutdown(struct genode_socket_handle *,
+                                  int how);
+
+enum Errno genode_socket_release(struct genode_socket_handle *);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
diff --git a/repos/dde_linux/src/lib/lxip/include/genode_c_api/socket_types.h b/repos/dde_linux/src/lib/lxip/include/genode_c_api/socket_types.h
new file mode 100644
index 0000000000..c9c1ecf6fe
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/include/genode_c_api/socket_types.h
@@ -0,0 +1,33 @@
+/*
+ * \brief  Definitions of standard socket API values used when no libc headers
+ *         are present
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+enum {
+	/* socket domain */
+	AF_UNSPEC = 0,
+	AF_INET = 2,
+	/* socket type */
+	SOCK_STREAM = 1,
+	SOCK_DGRAM  = 2,
+	/* protocol */
+	IPPROTO_TCP = 6,
+	IPPROTO_UDP = 17,
+	/* sockaddr_in */
+	INADDR_ANY = 0ul,
+	INADDR_BROADCAST = ~0u,
+
+	/* shutdown */
+	SHUT_RD = 0,
+	SHUT_WR = 1,
+	SHUT_RDWR = 2,
+};
diff --git a/repos/dde_linux/src/lib/lxip/init.cc b/repos/dde_linux/src/lib/lxip/init.cc
new file mode 100644
index 0000000000..a2aa9be3de
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/init.cc
@@ -0,0 +1,89 @@
+/*
+ * \brief  lx_kit C++ initialization and client handling
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <lx_kit/env.h>
+#include <lx_emul/init.h>
+#include <lx_emul/task.h>
+
+#include <genode_c_api/nic_client.h>
+#include <genode_c_api/socket.h>
+
+#include "lx_user.h"
+#include "net_driver.h"
+
+
+using namespace Genode;
+
+struct Main
+{
+	Env &env;
+	genode_socket_io_progress *io_progress;
+
+	Signal_handler<Main> schedule_handler   { env.ep(), *this,
+		&Main::handle_schedule };
+
+	Io_signal_handler<Main> nic_client_handler { env.ep(), *this,
+		&Main::handle_nic_client };
+
+	Main(Env &env, genode_socket_io_progress *io_progress)
+	: env(env), io_progress(io_progress)
+	{ }
+
+	void handle_schedule()
+	{
+		Lx_kit::env().scheduler.execute();
+
+		if (io_progress && io_progress->callback)
+			io_progress->callback(io_progress->data);
+	}
+
+	void handle_nic_client()
+	{
+
+		lx_emul_task_unblock(lx_nic_client_rx_task());
+		Lx_kit::env().scheduler.execute();
+
+		if (io_progress && io_progress->callback)
+			io_progress->callback(io_progress->data);
+	}
+
+	void init()
+	{
+		genode_nic_client_init(genode_env_ptr(env),
+		                       genode_allocator_ptr(Lx_kit::env().heap),
+		                       genode_signal_handler_ptr(nic_client_handler));
+	}
+
+	Main(const Main&) = delete;
+	Main operator=(const Main&) = delete;
+};
+
+
+void genode_socket_init(struct genode_env *_env,
+                        struct genode_socket_io_progress *io_progress)
+{
+	Env &env = *static_cast<Env *>(_env);
+	static Main main { env, io_progress };
+
+	Lx_kit::initialize(env, main.schedule_handler);
+
+	main.init();
+
+	/* must be called before initcalls */
+	lx_user_configure_ip_stack();
+
+	lx_emul_start_kernel(nullptr);
+
+	/* wait to finish initialization before returning to callee */
+	lx_emul_execute_kernel_until(lx_user_startup_complete, nullptr);
+}
diff --git a/repos/dde_linux/src/lib/lxip/lx_emul.c b/repos/dde_linux/src/lib/lxip/lx_emul.c
new file mode 100644
index 0000000000..76e79fbe55
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/lx_emul.c
@@ -0,0 +1,367 @@
+/*
+ * \brief  Implementation of driver specific Linux functions
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <lx_emul.h>
+
+#include <linux/net.h>
+#include <linux/skbuff.h>
+
+unsigned long __FIXADDR_TOP = 0xfffff000;
+
+#include <linux/mm.h>
+
+int mmap_rnd_bits;
+
+#include <linux/percpu.h>
+
+DEFINE_PER_CPU(unsigned long, cpu_scale);
+
+
+#include <asm/pgtable.h>
+
+#ifndef __arm__
+pgd_t reserved_pg_dir[PTRS_PER_PGD];
+#endif
+
+bool arm64_use_ng_mappings = false;
+
+pteval_t __default_kernel_pte_mask __read_mostly = ~0;
+
+
+/* shadowed */
+#include <linux/utsname.h>
+
+struct new_utsname init_uts_ns;
+
+
+#include <linux/random.h>
+
+u8 get_random_u8(void)
+{
+	return get_random_u32() & 0xff;
+}
+
+
+u16 get_random_u16(void)
+{
+	return get_random_u32() & 0xffff;
+}
+
+
+#ifdef __arm__
+#include <asm/uaccess.h>
+
+unsigned long arm_copy_from_user(void *to, const void *from, unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+
+unsigned long arm_copy_to_user(void *to, const void *from, unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+#endif
+
+
+#include <linux/uaccess.h>
+
+#ifndef INLINE_COPY_TO_USER
+unsigned long _copy_from_user(void * to,const void __user * from,unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+
+
+unsigned long raw_copy_from_user(void *to, const void * from, unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+
+
+#else
+unsigned long __must_check __arch_copy_from_user(void *to, const void __user *from, unsigned long n);
+unsigned long __must_check __arch_copy_from_user(void *to, const void __user *from, unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+#endif
+
+
+#ifndef INLINE_COPY_FROM_USER
+unsigned long _copy_to_user(void __user * to,const void * from,unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+
+
+unsigned long raw_copy_to_user(void *to, const void *from, unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+
+
+#else
+unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n);
+unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n)
+{
+	memcpy(to, from, n);
+	return 0;
+}
+#endif
+
+
+__wsum csum_partial_copy_from_user(const void __user *src, void *dst, int len)
+{
+	memcpy(dst, src, len);
+	return csum_partial(dst, len, 0);
+}
+
+
+#include <linux/slab.h>
+
+struct kmem_cache * kmem_cache_create_usercopy(const char * name,
+                                               unsigned int size,
+                                               unsigned int align,
+                                               slab_flags_t flags,
+                                               unsigned int useroffset,
+                                               unsigned int usersize,
+                                               void (* ctor)(void *))
+{
+	return kmem_cache_create(name, size, align, flags, ctor);
+}
+
+
+#include <linux/stringhash.h>
+
+unsigned int full_name_hash(const void *salt, const char *name, unsigned int len)
+{
+	unsigned hash = ((unsigned long)salt) & ~0u;
+	unsigned i;
+	for (i = 0; i < len; i++)
+		hash += name[i];
+
+	return hash;
+}
+
+
+#include <linux/memblock.h>
+
+void *alloc_large_system_hash(const char *tablename,
+	                            unsigned long bucketsize,
+	                            unsigned long numentries,
+	                            int scale,
+	                            int flags,
+	                            unsigned int *_hash_shift,
+	                            unsigned int *_hash_mask,
+	                            unsigned long low_limit,
+	                            unsigned long high_limit)
+{
+	unsigned long elements = numentries ? numentries : high_limit;
+	unsigned long nlog2 = ilog2(elements);
+	void *table;
+
+	nlog2 <<= (1 << nlog2) < elements ? 1 : 0;
+
+	table = lx_emul_mem_alloc_aligned(elements * bucketsize, PAGE_SIZE);
+
+	if (!table) {
+		printk("%s:%d error failed to allocate system hash\n", __func__, __LINE__);
+		return NULL;
+	}
+
+	if (_hash_mask)
+		*_hash_mask = (1 << nlog2) - 1;
+
+	if (_hash_shift)
+		*_hash_shift = nlog2;
+
+	return table;
+}
+
+
+#include <linux/syscore_ops.h>
+
+void register_syscore_ops(struct syscore_ops * ops)
+{
+	lx_emul_trace(__func__);
+}
+
+
+#include <linux/gfp.h>
+
+unsigned long get_zeroed_page(gfp_t gfp_mask)
+{
+	return (unsigned long)kzalloc(PAGE_SIZE, GFP_KERNEL);
+}
+
+
+#include <linux/gfp.h>
+
+void * page_frag_alloc_align(struct page_frag_cache * nc, unsigned int fragsz,
+                             gfp_t gfp_mask, unsigned int align_mask)
+{
+	if (align_mask != ~0U) {
+		printk("page_frag_alloc_align: unsupported align_mask=%x\n", align_mask);
+		lx_emul_trace_and_stop(__func__);
+	}
+
+	if (fragsz > PAGE_SIZE) {
+		printk("page_frag_alloc_align: unsupported fragsz=%u\n", fragsz);
+		lx_emul_trace_and_stop(__func__);
+	}
+
+	return alloc_pages_exact(PAGE_SIZE, GFP_KERNEL);
+}
+
+
+void page_frag_free(void * addr)
+{
+	free_pages_exact(addr, PAGE_SIZE);
+}
+
+
+/* mm/page_alloc. */
+
+/**
+ * nr_free_buffer_pages - count number of pages beyond high watermark
+ *
+ * nr_free_buffer_pages() counts the number of pages which are beyond the high
+ * watermark within ZONE_DMA and ZONE_NORMAL.
+ *
+ * used in 'tcp_mem_init'
+ *
+ * limit = max(nr_free_buffer_pages()/16, 128)
+ * -> set to max
+ */
+unsigned long nr_free_buffer_pages(void)
+{
+	return 2048;
+}
+
+
+/****************************
+ ** Linux socket functions **
+ ****************************/
+
+
+
+static const struct net_proto_family *net_families[NPROTO];
+
+
+int sock_register(const struct net_proto_family *ops)
+{
+	if (ops->family >= NPROTO) {
+		printk("protocol %d >=  NPROTO (%d)\n", ops->family, NPROTO);
+		return -ENOBUFS;
+	}
+
+	net_families[ops->family] = ops;
+	pr_info("NET: Registered protocol family %d\n", ops->family);
+	return 0;
+}
+
+
+struct socket *sock_alloc(void)
+{
+	struct socket *sock = (struct socket *)kzalloc(sizeof(struct socket), 0);
+
+	init_waitqueue_head(&sock->wq.wait);
+	sock->wq.fasync_list = NULL;
+	sock->wq.flags = 0;
+
+	sock->state = SS_UNCONNECTED;
+	sock->flags = 0;
+	sock->ops = NULL;
+	sock->sk = NULL;
+	sock->file = NULL;
+
+
+	return sock;
+}
+
+
+void sock_release(struct socket *sock)
+{
+	kfree(sock);
+}
+
+
+int sock_create_lite(int family, int type, int protocol, struct socket **res)
+
+{
+	struct socket *sock = sock_alloc();
+
+	if (!sock)
+		return -ENOMEM;
+
+	sock->type = type;
+	*res = sock;
+	return 0;
+}
+
+
+int sock_create_kern(struct net *net, int family, int type, int proto,
+                     struct socket **res)
+{
+	struct socket *sock;
+	const struct net_proto_family *pf;
+	int err;
+
+	if (family < 0 || family > NPROTO)
+		return -EAFNOSUPPORT;
+
+	if (type < 0 || type > SOCK_MAX)
+		return -EINVAL;
+
+	pf = net_families[family];
+
+	if (!pf) {
+		printk("No protocol found for family %d\n", family);
+		return -ENOPROTOOPT;
+	}
+
+	sock = sock_alloc();
+	if (!sock) {
+		printk("Could not allocate socket\n");
+		return -ENFILE;
+	}
+
+	sock->type = type;
+
+	err = pf->create(net, sock, proto, 1);
+	if (err) {
+		kfree(sock);
+		return err;
+	}
+
+	*res = sock;
+
+	return 0;
+}
+
+
+static int sock_init(void)
+{
+	skb_init();
+	return 0;
+}
+
+
+core_initcall(sock_init);
diff --git a/repos/dde_linux/src/lib/lxip/lx_emul.h b/repos/dde_linux/src/lib/lxip/lx_emul.h
new file mode 100644
index 0000000000..0e74133070
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/lx_emul.h
@@ -0,0 +1,17 @@
+/*
+ * \brief  Definitions of Linux Kernel functions
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <lx_emul/debug.h>
+
+#include <linux/init.h>
+#include <linux/sched/debug.h>
diff --git a/repos/dde_linux/src/lib/lxip/lx_socket.c b/repos/dde_linux/src/lib/lxip/lx_socket.c
new file mode 100644
index 0000000000..86a76106fc
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/lx_socket.c
@@ -0,0 +1,475 @@
+/*
+ * \brief  C-interface to Linux socked kernel code
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ *
+ * Can only be called by lx_lit tasks
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <linux/net.h>
+#include <net/sock.h>
+
+#include "lx_socket.h"
+
+extern struct net init_net;
+
+
+static enum Errno _genode_errno(int errno)
+{
+	if (errno < 0) errno *= -1;
+
+	switch (errno) {
+	case 0:               return GENODE_ENONE;
+	case E2BIG:           return GENODE_E2BIG;
+	case EACCES:          return GENODE_EACCES;
+	case EADDRINUSE:      return GENODE_EADDRINUSE;
+	case EADDRNOTAVAIL:   return GENODE_EADDRNOTAVAIL;
+	case EAFNOSUPPORT:    return GENODE_EAFNOSUPPORT;
+	case EAGAIN:          return GENODE_EAGAIN;
+	case EALREADY:        return GENODE_EALREADY;
+	case EBADF:           return GENODE_EBADF;
+	case EBADFD:          return GENODE_EBADFD;
+	case EBADMSG:         return GENODE_EBADMSG;
+	case EBADRQC:         return GENODE_EBADRQC;
+	case EBUSY:           return GENODE_EBUSY;
+	case ECONNABORTED:    return GENODE_ECONNABORTED;
+	case ECONNREFUSED:    return GENODE_ECONNREFUSED;
+	case EDESTADDRREQ:    return GENODE_EDESTADDRREQ;
+	case EDOM:            return GENODE_EDOM;
+	case EEXIST:          return GENODE_EEXIST;
+	case EFAULT:          return GENODE_EFAULT;
+	case EFBIG:           return GENODE_EFBIG;
+	case EHOSTUNREACH:    return GENODE_EHOSTUNREACH;
+	case EINPROGRESS:     return GENODE_EINPROGRESS;
+	case EINTR:           return GENODE_EINTR;
+	case EINVAL:          return GENODE_EINVAL;
+	case EIO:             return GENODE_EIO;
+	case EISCONN:         return GENODE_EISCONN;
+	case ELOOP:           return GENODE_ELOOP;
+	case EMLINK:          return GENODE_EMLINK;
+	case EMSGSIZE:        return GENODE_EMSGSIZE;
+	case ENAMETOOLONG:    return GENODE_ENAMETOOLONG;
+	case ENETDOWN:        return GENODE_ENETDOWN;
+	case ENETUNREACH:     return GENODE_ENETUNREACH;
+	case ENFILE:          return GENODE_ENFILE;
+	case ENOBUFS:         return GENODE_ENOBUFS;
+	case ENODATA:         return GENODE_ENODATA;
+	case ENODEV:          return GENODE_ENODEV;
+	case ENOENT:          return GENODE_ENOENT;
+	case ENOIOCTLCMD:     return GENODE_ENOIOCTLCMD;
+	case ENOLINK:         return GENODE_ENOLINK;
+	case ENOMEM:          return GENODE_ENOMEM;
+	case ENOMSG:          return GENODE_ENOMSG;
+	case ENOPROTOOPT:     return GENODE_ENOPROTOOPT;
+	case ENOSPC:          return GENODE_ENOSPC;
+	case ENOSYS:          return GENODE_ENOSYS;
+	case ENOTCONN:        return GENODE_ENOTCONN;
+	case ENOTSUPP:        return GENODE_ENOTSUPP;
+	case ENOTTY:          return GENODE_ENOTTY;
+	case ENXIO:           return GENODE_ENXIO;
+	case EOPNOTSUPP:      return GENODE_EOPNOTSUPP;
+	case EOVERFLOW:       return GENODE_EOVERFLOW;
+	case EPERM:           return GENODE_EPERM;
+	case EPFNOSUPPORT:    return GENODE_EPFNOSUPPORT;
+	case EPIPE:           return GENODE_EPIPE;
+	case EPROTO:          return GENODE_EPROTO;
+	case EPROTONOSUPPORT: return GENODE_EPROTONOSUPPORT;
+	case EPROTOTYPE:      return GENODE_EPROTOTYPE;
+	case ERANGE:          return GENODE_ERANGE;
+	case EREMCHG:         return GENODE_EREMCHG;
+	case ESOCKTNOSUPPORT: return GENODE_ESOCKTNOSUPPORT;
+	case ESPIPE:          return GENODE_ESPIPE;
+	case ESRCH:           return GENODE_ESRCH;
+	case ESTALE:          return GENODE_ESTALE;
+	case ETIMEDOUT:       return GENODE_ETIMEDOUT;
+	case ETOOMANYREFS:    return GENODE_ETOOMANYREFS;
+	case EUSERS:          return GENODE_EUSERS;
+	case EXDEV:           return GENODE_EXDEV;
+	default:
+		printk("%s:%d unsupported errno %d\n",
+		       __func__, __LINE__, errno);
+	}
+	return GENODE_EINVAL;
+}
+
+
+/* index must match with socket.h Genode 'Sock_opt' */
+static int sock_opts[] = {
+	0,
+	SO_DEBUG,
+	SO_ACCEPTCONN,
+	SO_DONTROUTE,
+	SO_LINGER,
+	SO_OOBINLINE,
+	SO_REUSEPORT,
+	SO_SNDBUF,
+	SO_RCVBUF,
+	SO_SNDLOWAT,
+	SO_RCVLOWAT,
+	SO_SNDTIMEO_NEW,
+	SO_RCVTIMEO_NEW,
+	SO_ERROR,
+	SO_TYPE,
+	SO_BINDTODEVICE,
+	SO_BROADCAST,
+};
+
+
+static int _linux_sockopt(enum Sock_opt sockopt)
+{
+	return sock_opts[sockopt];
+}
+
+
+static struct sockaddr _sockaddr(struct genode_sockaddr const *addr)
+{
+	struct sockaddr sock_addr = { };
+
+	if (addr->family == AF_UNSPEC) {
+		sock_addr.sa_family = AF_UNSPEC;
+	}
+	else if (addr->family == AF_INET) {
+		struct sockaddr_in in_addr = {
+			.sin_family      = AF_INET,
+			.sin_port        = addr->in.port,
+			.sin_addr.s_addr = addr->in.addr
+		};
+		memcpy(&sock_addr, &in_addr, sizeof(in_addr));
+	} else {
+		printk("%s:%d error: family %d not implemented\n", __func__, __LINE__,
+		       addr->family);
+	}
+	return sock_addr;
+}
+
+
+static void _genode_sockaddr(struct genode_sockaddr *addr,
+                             struct sockaddr const  *linux_addr,
+                             int length)
+{
+	if (length == sizeof(struct sockaddr_in)) {
+		struct sockaddr_in const * in = (struct sockaddr_in const *)linux_addr;
+		addr->family             = in->sin_family;
+		addr->in.port            = in->sin_port;
+		addr->in.addr            = in->sin_addr.s_addr;
+	} else
+		printk("%s:%d: unknown sockaddr length %d\n", __func__, __LINE__, length);
+}
+
+
+static int _sockaddr_len(struct genode_sockaddr const *addr)
+{
+	if (addr->family == AF_INET)
+		return sizeof(struct sockaddr_in);
+
+	printk("error: _sockaddr_len unknown family: %u\n", addr->family);
+	return 0;
+}
+
+
+struct socket *lx_sock_alloc(void)                  { return sock_alloc(); }
+void           lx_sock_release(struct socket* sock) { sock_release(sock);  }
+
+
+extern int __setup_ip_auto_config_setup(char *);
+
+void lx_socket_address(struct genode_socket_config *config)
+{
+	if (config->dhcp) {
+		__setup_ip_auto_config_setup("dhcp");
+	}
+	else {
+		char address_config[128];
+		snprintf(address_config, sizeof(address_config),
+		         "%s::%s:%s:::off:%s",
+		         config->ip_addr, config->gateway, config->netmask,
+		         config->nameserver);
+		__setup_ip_auto_config_setup(address_config);
+	}
+	lx_emul_initcall("__initcall_ip_auto_config7");
+};
+
+
+void lx_socket_mtu(unsigned mtu)
+{
+	/* zero mtu means reset to default */
+	unsigned new_mtu = mtu ? mtu : ETH_DATA_LEN;
+
+	struct net        *net;
+	struct net_device *dev;
+
+	for_each_net(net) {
+		for_each_netdev(net, dev) {
+			dev_set_mtu(dev, new_mtu);
+		}
+	}
+}
+
+
+enum Errno lx_socket_create(int domain, int type, int protocol,
+                            struct socket **res)
+{
+	int err = sock_create_kern(&init_net, domain, type, protocol, res);
+	if (err) return _genode_errno(err);
+
+	init_waitqueue_head(&(*res)->wq.wait);
+
+	return GENODE_ENONE;
+}
+
+
+enum Errno lx_socket_bind(struct socket *sock, struct genode_sockaddr const *addr)
+{
+	struct sockaddr sock_addr = _sockaddr(addr);
+	return _genode_errno(sock->ops->bind(sock, &sock_addr, _sockaddr_len(addr)));
+}
+
+
+enum Errno lx_socket_listen(struct socket *sock, int length)
+{
+	return _genode_errno(sock->ops->listen(sock, length));
+}
+
+
+enum Errno lx_socket_accept(struct socket *sock, struct socket *new_sock,
+                            struct genode_sockaddr *addr)
+{
+	struct sockaddr linux_addr;
+	int err;
+
+	new_sock->type = sock->type;
+	new_sock->ops  = sock->ops;
+
+	err = sock->ops->accept(sock, new_sock, O_NONBLOCK, true);
+
+	if (err == 0) {
+		err = sock->ops->getname(new_sock, &linux_addr, 0);
+		if (err > 0) _genode_sockaddr(addr, &linux_addr, err);
+	}
+
+	return err < 0 ? _genode_errno(err) : GENODE_ENONE;
+}
+
+
+enum Errno lx_socket_connect(struct socket *sock, struct genode_sockaddr const *addr)
+{
+	struct sockaddr sock_addr = _sockaddr(addr);
+	return _genode_errno(sock->ops->connect(sock, &sock_addr, _sockaddr_len(addr),
+	                     O_NONBLOCK));
+}
+
+
+unsigned lx_socket_pollin_set(void)
+{
+	return (POLLRDNORM | POLLRDBAND | POLLIN | POLLHUP | POLLERR);
+}
+
+
+unsigned lx_socket_pollout_set(void)
+{
+	return (POLLWRBAND | POLLWRNORM | POLLOUT | POLLERR);
+}
+
+
+unsigned lx_socket_pollex_set(void)
+{
+	return POLLPRI;
+}
+
+
+unsigned lx_socket_poll(struct socket *sock)
+{
+	struct file file = { };
+	return sock->ops->poll(&file, sock, NULL);
+}
+
+
+enum Errno lx_socket_getsockopt(struct socket *sock, enum Sock_level level,
+                                enum Sock_opt opt, void *optval, unsigned *optlen)
+{
+	int name = _linux_sockopt(opt);
+	enum Errno errno;
+	int err;
+
+	if (level != GENODE_SOL_SOCKET) return GENODE_ENOPROTOOPT;
+
+	if (opt == GENODE_SO_ERROR && *optlen < sizeof(enum Sock_opt))
+		return GENODE_EFAULT;
+
+	if (level == GENODE_SOL_SOCKET)
+		err = sock_getsockopt(sock, SOL_SOCKET, name, optval, optlen);
+	/* we might need this later
+	else {
+		err = sock->ops->getsockopt(sock, SOL_SOCKET, name, optval, optlen);
+	}
+	*/
+
+	if (err) return _genode_errno(err);
+
+	if (opt == GENODE_SO_ERROR) {
+		err   = *((int *)optval);
+		errno = _genode_errno(err);
+		memcpy(optval, &errno, sizeof(enum Sock_opt));
+	}
+
+	return GENODE_ENONE;
+}
+
+
+enum Errno lx_socket_setsockopt(struct socket *sock, enum Sock_level level,
+                                enum Sock_opt opt, void const *optval, unsigned optlen)
+{
+	int name = _linux_sockopt(opt);
+	int err;
+
+	if (level != GENODE_SOL_SOCKET) return GENODE_ENOPROTOOPT;
+
+	if (level == GENODE_SOL_SOCKET) {
+		sockptr_t val = { .user = optval, .is_kernel = 0 };
+		err = sock_setsockopt(sock, SOL_SOCKET, name, val, optlen);
+	}
+	/* we might need this later
+	else {
+		err = sock->ops->getsockopt(sock, SOL_SOCKET, name, optval, optlen);
+	}
+	*/
+
+	if (err) return _genode_errno(err);
+
+	return GENODE_ENONE;
+}
+
+
+enum Errno lx_socket_getname(struct socket *sock, struct genode_sockaddr *addr, bool peer)
+{
+	struct sockaddr linux_addr;
+
+	int err = sock->ops->getname(sock, &linux_addr, peer ? 1 : 0);
+
+	if (err < 0) return _genode_errno(err);
+
+	_genode_sockaddr(addr, &linux_addr, err);
+
+	return GENODE_ENONE;
+}
+
+
+static struct msghdr *_create_msghdr(struct genode_msghdr *msg, bool write)
+{
+	struct msghdr *msghdr;
+	struct sockaddr_storage *storage = NULL;
+	unsigned long total = 0;
+
+	msghdr = (struct msghdr *)kzalloc(sizeof(*msghdr), GFP_KERNEL);
+	if (!msghdr) goto msghdr;
+
+	/* sockaddr */
+	if (msg->name) {
+		struct sockaddr sock_addr = _sockaddr(msg->name);
+
+		storage = (struct sockaddr_storage *)kmalloc(sizeof(*storage), GFP_KERNEL);
+		if (!storage) goto sock_addr;
+		memcpy(storage, &sock_addr, _sockaddr_len(msg->name));
+
+		msghdr->msg_name    = storage;
+		msghdr->msg_namelen = _sockaddr_len(msg->name);
+	}
+
+	/* iovec iterator */
+	msghdr->msg_iter.iter_type   = ITER_IOVEC;
+	msghdr->msg_iter.data_source = write;
+	msghdr->msg_iter.nr_segs     = msg->iovlen;
+	msghdr->msg_iter.iov         = (struct iovec *)msg->iov;
+
+	for (unsigned i = 0; i < msg->iovlen; i++)
+		total += msg->iov[i].size;
+
+	msghdr->msg_iter.count = total;
+
+	/* non-blocking */
+	msghdr->msg_flags = MSG_DONTWAIT;
+
+	return msghdr;
+
+sock_addr:
+	kfree(msghdr);
+msghdr:
+
+	return NULL;
+
+}
+
+
+static void _destroy_msghdr(struct msghdr *msg)
+{
+	if (msg->msg_name) kfree(msg->msg_name);
+	kfree(msg);
+}
+
+
+enum Errno lx_socket_sendmsg(struct socket *sock, struct genode_msghdr *msg,
+                             unsigned long *bytes_send)
+{
+	struct msghdr *m = _create_msghdr(msg, false);
+	int ret;
+
+	if (!m) return GENODE_ENOMEM;
+
+	ret = sock->ops->sendmsg(sock, m, m->msg_iter.count);
+
+	_destroy_msghdr(m);
+
+	if (ret < 0)
+		return _genode_errno(ret);
+
+	*bytes_send = (unsigned long)ret;
+
+	return GENODE_ENONE;
+}
+
+
+enum Errno lx_socket_recvmsg(struct socket *sock, struct genode_msghdr *msg,
+                             unsigned long *bytes_recv, bool peek)
+{
+	struct msghdr *m = _create_msghdr(msg, true);
+	int ret;
+	int flags = MSG_DONTWAIT;
+
+	if (peek) flags |= MSG_PEEK;
+	if (!m)   return GENODE_ENOMEM;
+
+	ret = sock->ops->recvmsg(sock, m, m->msg_iter.count, flags);
+
+	/* convert to genode_sockaddr */
+	if (ret && msg->name) {
+		_genode_sockaddr(msg->name, m->msg_name, _sockaddr_len(msg->name));
+	}
+
+	_destroy_msghdr(m);
+
+	if (ret < 0)
+		return _genode_errno(ret);
+
+	*bytes_recv = (unsigned long)ret;
+
+	return GENODE_ENONE;
+}
+
+
+enum Errno lx_socket_shutdown(struct socket *sock, int how)
+{
+	return _genode_errno(sock->ops->shutdown(sock, how));
+}
+
+
+enum Errno lx_socket_release(struct socket *sock)
+{
+	return _genode_errno(sock->ops->release(sock));
+}
diff --git a/repos/dde_linux/src/lib/lxip/lx_socket.h b/repos/dde_linux/src/lib/lxip/lx_socket.h
new file mode 100644
index 0000000000..ab9f532273
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/lx_socket.h
@@ -0,0 +1,57 @@
+/*
+ * \brief  C-interface to Linux socked kernel code
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ *
+ * Can only be called by lx_lit tasks
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+
+#include <genode_c_api/socket.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct socket *lx_sock_alloc(void);
+void           lx_sock_release(struct socket* sock);
+
+void lx_socket_address(struct genode_socket_config *config);
+void lx_socket_mtu(unsigned mtu);
+
+enum Errno lx_socket_create(int domain, int type, int protocol, struct socket **res);
+enum Errno lx_socket_bind(struct socket *sock, struct genode_sockaddr const *addr);
+enum Errno lx_socket_listen(struct socket *sock, int length);
+enum Errno lx_socket_accept(struct socket *sock, struct socket *new_sock,
+                            struct genode_sockaddr *addr);
+enum Errno lx_socket_connect(struct socket *sock, struct genode_sockaddr const *addr);
+
+unsigned lx_socket_pollin_set(void);
+unsigned lx_socket_pollout_set(void);
+unsigned lx_socket_pollex_set(void);
+unsigned lx_socket_poll(struct socket *sock);
+
+enum Errno lx_socket_getsockopt(struct socket *sock, enum Sock_level level,
+                                enum Sock_opt opt, void *optval, unsigned *optlen);
+enum Errno lx_socket_setsockopt(struct socket *sock, enum Sock_level level,
+                                enum Sock_opt opt, void const *optval, unsigned optlen);
+
+enum Errno lx_socket_getname(struct socket *sock, struct genode_sockaddr *addr, bool peer);
+enum Errno lx_socket_sendmsg(struct socket *sock, struct genode_msghdr *msg,
+                             unsigned long *bytes_send);
+enum Errno lx_socket_recvmsg(struct socket *sock, struct genode_msghdr *msg,
+                             unsigned long *bytes_recv, bool peek);
+
+enum Errno lx_socket_shutdown(struct socket *sock, int how);
+enum Errno lx_socket_release(struct socket *sock);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
diff --git a/repos/dde_linux/src/lib/lxip/lx_user.c b/repos/dde_linux/src/lib/lxip/lx_user.c
new file mode 100644
index 0000000000..dd48385871
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/lx_user.c
@@ -0,0 +1,67 @@
+/*
+ * \brief  Post kernel activity
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <linux/sched/task.h>
+#include <linux/init.h>
+
+#include "lx_user.h"
+
+
+struct task_struct *lx_user_new_task(int (*func)(void*), void *args)
+{
+	int pid = kernel_thread(func, args, CLONE_FS | CLONE_FILES);
+	return find_task_by_pid_ns(pid, NULL);
+}
+
+
+void lx_user_destroy_task(struct task_struct *task)
+{
+	if (task != current) {
+		printk("%s: task: %px is not current: %px\n", __func__,
+		       task, current);
+		return;
+	}
+
+	do_exit(0);
+}
+
+
+static int _startup_finished = 0;
+
+int lx_user_startup_complete(void *) { return _startup_finished; }
+
+
+static struct task_struct *_socket_dispatch_root = NULL;
+
+struct task_struct *lx_socket_dispatch_root(void)
+{
+	return _socket_dispatch_root;
+}
+
+
+int __setup_set_thash_entries(char const *str);
+int __setup_set_uhash_entries(char const *str);
+
+void lx_user_configure_ip_stack(void)
+{
+	__setup_set_thash_entries("2048");
+	__setup_set_uhash_entries("2048");
+}
+
+
+void lx_user_init(void)
+{
+	_socket_dispatch_root = lx_user_new_task(lx_socket_dispatch,
+	                                         lx_socket_dispatch_queue());
+	_startup_finished = 1;
+}
diff --git a/repos/dde_linux/src/lib/lxip/lx_user.h b/repos/dde_linux/src/lib/lxip/lx_user.h
new file mode 100644
index 0000000000..0eeaec468c
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/lx_user.h
@@ -0,0 +1,34 @@
+/*
+ * \brief  Post kernel activity
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct task_struct;
+
+/* set kernel parameters for Genode */
+void lx_user_configure_ip_stack(void);
+
+int  lx_user_startup_complete(void *);
+
+void  *lx_socket_dispatch_queue(void);
+int    lx_socket_dispatch(void *arg);
+struct task_struct *lx_socket_dispatch_root(void);
+
+struct task_struct *lx_user_new_task(int (*func)(void*), void *args);
+void                lx_user_destroy_task(struct task_struct *task);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/repos/dde_linux/src/lib/lxip/net_driver.c b/repos/dde_linux/src/lib/lxip/net_driver.c
new file mode 100644
index 0000000000..ee82946997
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/net_driver.c
@@ -0,0 +1,215 @@
+/**
+ * \brief  Nic client that transfers packets from/to IP stack to/from nic client
+ *         C-API
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+
+#include <genode_c_api/nic_client.h>
+
+
+static struct genode_nic_client *dev_nic_client(struct net_device *dev)
+{
+	return (struct genode_nic_client *)dev->ifalias;
+}
+
+
+static int net_open(struct net_device *dev)
+{
+	return 0;
+}
+
+
+struct genode_nic_client_tx_packet_context
+{
+	struct sk_buff *skb;
+};
+
+
+static unsigned long nic_tx_packet_content(struct genode_nic_client_tx_packet_context *ctx,
+                                           char *dst, unsigned long dst_len)
+{
+	struct sk_buff * const skb = ctx->skb;
+
+	if (dst_len < skb->len) {
+		printk("nic_tx_packet_content: packet exceeds uplink packet size\n");
+		memset(dst, 0, dst_len);
+		return 0;
+	}
+
+	skb_copy_from_linear_data(skb, dst, skb->len);
+
+	/* clear unused part of the destination buffer */
+	memset(dst + skb->len, 0, dst_len - skb->len);
+
+	return skb->len;
+}
+
+
+static int driver_net_xmit(struct sk_buff *skb, struct net_device *dev)
+{
+	bool progress = false;
+	struct net_device_stats *stats = (struct net_device_stats*) netdev_priv(dev);
+
+	struct genode_nic_client *nic_client = dev_nic_client(dev);
+	struct genode_nic_client_tx_packet_context ctx = { .skb = skb };
+
+	if (!nic_client) return NETDEV_TX_BUSY;
+
+	progress = genode_nic_client_tx_packet(nic_client, nic_tx_packet_content, &ctx);
+	/* transmit to nic-session */
+	if (!progress) {
+		/* tx queue is  full, could not enqueue packet */
+		return NETDEV_TX_BUSY;
+	}
+
+	dev_kfree_skb(skb);
+
+	/* save timestamp */
+	netif_trans_update(dev);
+
+	stats->tx_packets++;
+	stats->tx_bytes += skb->len;
+
+	genode_nic_client_notify_peers();
+
+	return NETDEV_TX_OK;
+}
+
+
+static const struct net_device_ops net_ops =
+{
+	.ndo_open       = net_open,
+	.ndo_start_xmit = driver_net_xmit,
+};
+
+
+static struct task_struct *nic_rx_task_struct_ptr;
+
+struct genode_nic_client_rx_context
+{
+	struct net_device *dev;
+};
+
+
+struct task_struct *lx_nic_client_rx_task(void)
+{
+	return nic_rx_task_struct_ptr;
+}
+
+
+static genode_nic_client_rx_result_t nic_rx_one_packet(struct genode_nic_client_rx_context *ctx,
+                                                       char const *ptr, unsigned long len)
+{
+	enum {
+		ADDITIONAL_HEADROOM = 4, /* smallest value found by trial & error */
+	};
+	struct sk_buff *skb = netdev_alloc_skb_ip_align(ctx->dev, len + ADDITIONAL_HEADROOM);
+	struct net_device_stats *stats = netdev_priv(ctx->dev);
+
+	if (!skb) {
+		printk("alloc_skb failed\n");
+		return GENODE_NIC_CLIENT_RX_RETRY;
+	}
+
+	skb_copy_to_linear_data(skb, ptr, len);
+	skb_put(skb, len);
+	skb->dev       = ctx->dev;
+	skb->protocol  = eth_type_trans(skb, ctx->dev);
+	skb->ip_summed = CHECKSUM_NONE;
+
+	netif_receive_skb(skb);
+
+	stats->rx_packets++;
+	stats->rx_bytes += len;
+
+	return GENODE_NIC_CLIENT_RX_ACCEPTED;
+}
+
+
+static int rx_task_function(void *arg)
+{
+	struct net_device *dev = arg;
+	struct genode_nic_client *nic_client = dev_nic_client(dev);
+	struct genode_nic_client_rx_context ctx = { .dev = dev };
+
+	while (true) {
+
+		bool progress = false;
+
+		lx_emul_task_schedule(true);
+
+		while (genode_nic_client_rx(nic_client,
+		                        nic_rx_one_packet,
+		                        &ctx)) {
+			progress = true; }
+
+		if (progress) genode_nic_client_notify_peers();
+	}
+
+	return 0;
+}
+
+
+static int __init virtio_net_driver_init(void)
+{
+	struct net_device *dev;
+	int err = -ENODEV;
+	struct genode_mac_address mac;
+	pid_t pid;
+
+	dev = alloc_etherdev(0);
+
+	if (!(dev = alloc_etherdev(0)))
+		goto out;
+
+	dev->netdev_ops = &net_ops;
+
+	dev->ifalias = (struct dev_ifalias *)genode_nic_client_create("");
+
+	if (!dev->ifalias) {
+		printk("Failed to create nic client\n");
+		goto out_free;
+	}
+
+	/* set MAC */
+	mac = genode_nic_client_mac_address(dev_nic_client(dev));
+	dev_addr_set(dev, mac.addr);
+
+	if ((err = register_netdev(dev))) {
+		printk("Could not register net device driver %d\n", err);
+		goto out_nic;
+	}
+
+	/* create RX task */
+	pid = kernel_thread(rx_task_function, dev, CLONE_FS | CLONE_FILES);
+
+	nic_rx_task_struct_ptr = find_task_by_pid_ns(pid, NULL);
+
+	return 0;
+
+out_nic:
+	genode_nic_client_destroy(dev_nic_client(dev));
+out_free:
+	free_netdev(dev);
+out:
+	return err;
+}
+
+
+/**
+ * Let's hook into the virtio_net_driver initcall, so we do not need to register
+ * an additional one
+ */
+module_init(virtio_net_driver_init);
+
diff --git a/repos/dde_linux/src/lib/lxip/net_driver.h b/repos/dde_linux/src/lib/lxip/net_driver.h
new file mode 100644
index 0000000000..2a4c80ced9
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/net_driver.h
@@ -0,0 +1,27 @@
+/**
+ * \brief  Nic client that transfers packets from/to IP stack to/from nic client
+ *         C-API
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#ifndef _NET_DRIVER_H_
+#define _NET_DRIVER_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+	struct task_struct;
+	struct task_struct *lx_nic_client_rx_task(void);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NET_DRIVER_H_ */
diff --git a/repos/dde_linux/src/lib/lxip/shadow/linux/init.h b/repos/dde_linux/src/lib/lxip/shadow/linux/init.h
new file mode 100644
index 0000000000..d72ef61c64
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/shadow/linux/init.h
@@ -0,0 +1,30 @@
+/*
+ * \brief  This file shadows linux/init.h
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#ifndef _SHADOW__LINUX__INIT_H_
+#define _SHADOW__LINUX__INIT_H_
+
+/* include the next linux/init.h found in include paths */
+#include_next <linux/init.h>
+
+#undef __setup
+
+/*
+ * '__setup' calls are currently only used by lxip, keep ti local in order to
+ * avoid problems with other projects
+ */
+
+#define __setup(str, fn) \
+	int __setup_##fn(char * string) { return fn(string); }
+
+#endif
diff --git a/repos/dde_linux/src/lib/lxip/shadow/linux/utsname.h b/repos/dde_linux/src/lib/lxip/shadow/linux/utsname.h
new file mode 100644
index 0000000000..4af37ce8b3
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/shadow/linux/utsname.h
@@ -0,0 +1,32 @@
+/*
+ * \brief  This file shadows linux/utsname.h
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#ifndef _SHADOW__LINUX__UTSNAME_H_
+#define _SHADOW__LINUX__UTSNAME_H_
+
+#include <uapi/linux/utsname.h>
+
+extern struct new_utsname init_uts_ns;
+
+static inline struct new_utsname *init_utsname(void)
+{
+	return &init_uts_ns;
+}
+
+
+static inline struct new_utsname *utsname(void)
+{
+	return init_utsname();
+}
+
+#endif /* _SHADOW__LINUX__UTSNAME_H_ */
diff --git a/repos/dde_linux/src/lib/lxip/socket.cc b/repos/dde_linux/src/lib/lxip/socket.cc
new file mode 100644
index 0000000000..fb910f3c36
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/socket.cc
@@ -0,0 +1,641 @@
+/*
+ * \brief  Implementation of Genode's socket C-API for lxip
+ * \author Sebastian Sumpf
+ * \date   2024-01-29
+ *
+ * The functions here can only be called from native Genode EPs, the socket
+ * calls will switch from the EP to DDE Linux task and call Linux kernel C-code.
+ *
+ * All calls except 'genode_socket_config_address' are non-blocking.
+ */
+
+/*
+ * Copyright (C) 2024 Genode Labs GmbH
+ *
+ * This file is distributed under the terms of the GNU General Public License
+ * version 2.
+ */
+
+#include <base/log.h>
+#include <util/fifo.h>
+
+#include <lx_kit/env.h>
+#include <lx_emul/task.h>
+
+#include "lx_socket.h"
+#include "lx_user.h"
+
+
+using namespace Genode;
+
+struct Lx_call;
+
+typedef Fifo<Lx_call> Socket_queue;
+
+
+struct genode_socket_handle
+{
+	struct socket      *sock  { nullptr };
+	struct task_struct *task  { nullptr };
+	Socket_queue       *queue { };
+};
+
+
+void genode_socket_wait_for_progress()
+{
+	Lx_kit::env().env.ep().wait_and_dispatch_one_io_signal();
+	Lx_kit::env().scheduler.execute();
+}
+
+
+/*
+ * Wakeup Linux task and call C-code
+ */
+
+struct Lx_call : private Socket_queue::Element
+{
+	friend class Fifo<Lx_call>;
+
+	genode_socket_handle &handle;
+
+	enum Errno err { GENODE_ENONE };
+	bool finished  { false };
+	bool may_block { false };
+
+	Lx_call(genode_socket_handle &handle)
+	: handle(handle) { }
+
+	virtual ~Lx_call() { }
+
+	/* called from ep */
+	void schedule()
+	{
+		handle.queue->enqueue(*this);
+
+		lx_emul_task_unblock(handle.task);
+		Lx_kit::env().scheduler.execute();
+
+		while (!finished) {
+			if (may_block == false)
+				warning("socket interface call blocked (this should not happen)");
+			genode_socket_wait_for_progress();
+		}
+	}
+
+	virtual void execute() = 0;
+};
+
+
+struct Lx_address : Lx_call
+{
+	genode_socket_config *config;
+
+	Lx_address(genode_socket_handle &handle,
+	           genode_socket_config *config)
+	: Lx_call(handle), config(config)
+	{
+		/* we allow this call to block */
+		may_block = true;
+
+		schedule();
+	}
+
+	void execute() override
+	{
+		lx_socket_address(config);
+		finished = true;
+	}
+
+	Lx_address(const Lx_address&) = delete;
+	Lx_address operator=(const Lx_address&) = delete;
+};
+
+
+struct Lx_mtu : Lx_call
+{
+	unsigned mtu;
+
+	Lx_mtu(genode_socket_handle &handle, unsigned mtu)
+	: Lx_call(handle), mtu(mtu)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		lx_socket_mtu(mtu);
+		finished = true;
+	}
+};
+
+
+struct Lx_socket : Lx_call
+{
+	int domain, type, protocol;
+
+	Lx_socket(genode_socket_handle &handle, int domain, int type, int protocol)
+	: Lx_call(handle), domain(domain), type(type), protocol(protocol)
+	{
+		schedule();
+	}
+
+	/* called from root dispatch task */
+	void execute() override
+	{
+		err = lx_socket_create(domain, type, protocol, &handle.sock);
+		finished = true;
+	}
+};
+
+
+struct Lx_bind : Lx_call
+{
+	genode_sockaddr const &addr;
+
+	Lx_bind(genode_socket_handle &handle, genode_sockaddr const &addr)
+	: Lx_call(handle), addr(addr)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_bind(handle.sock, &addr);
+		finished = true;
+	}
+};
+
+
+struct Lx_listen : Lx_call
+{
+	int length;
+
+	Lx_listen(genode_socket_handle &handle, int length)
+	: Lx_call(handle), length(length)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_listen(handle.sock, length);
+		finished = true;
+	}
+};
+
+
+struct Lx_accept : Lx_call
+{
+	genode_socket_handle &client;
+	genode_sockaddr addr { };
+
+	Lx_accept(genode_socket_handle &handle,
+	          genode_socket_handle &client)
+	: Lx_call(handle), client(client)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		client.sock = lx_sock_alloc();
+		if (!client.sock) {
+			err = GENODE_ENOMEM;
+			finished = true;
+			return;
+		}
+
+		err = lx_socket_accept(handle.sock, client.sock, &addr);
+		if (err)
+			lx_sock_release(client.sock);
+
+		finished = true;
+	}
+};
+
+
+struct Lx_connect : Lx_call
+{
+	genode_sockaddr &addr;
+
+	Lx_connect(genode_socket_handle &handle,
+	           genode_sockaddr &addr)
+	: Lx_call(handle), addr(addr)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_connect(handle.sock, &addr);
+		finished = true;
+	}
+};
+
+
+struct Lx_poll : Lx_call
+{
+	unsigned result = 0;
+
+	Lx_poll(genode_socket_handle &handle)
+	: Lx_call(handle)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		result = lx_socket_poll(handle.sock);
+		finished = true;
+	}
+};
+
+
+struct Lx_getsockopt : Lx_call
+{
+	enum Sock_level level;
+	enum Sock_opt   opt;
+	void           *optval;
+	unsigned       *optlen;
+
+	Lx_getsockopt(genode_socket_handle &handle,
+	              enum Sock_level level,
+	              enum Sock_opt opt,
+	              void *optval, unsigned *optlen)
+	: Lx_call(handle), level(level), opt(opt), optval(optval), optlen(optlen)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_getsockopt(handle.sock, level, opt, optval, optlen);
+		finished = true;
+	}
+
+	Lx_getsockopt(const Lx_getsockopt&) = delete;
+	Lx_getsockopt operator=(const Lx_getsockopt&) = delete;
+};
+
+
+struct Lx_setsockopt : Lx_call
+{
+	enum Sock_level level;
+	enum Sock_opt   opt;
+	void const     *optval;
+	unsigned        optlen;
+
+	Lx_setsockopt(genode_socket_handle &handle,
+	              enum Sock_level level,
+	              enum Sock_opt opt,
+	              void const *optval, unsigned optlen)
+	: Lx_call(handle), level(level), opt(opt), optval(optval), optlen(optlen)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_setsockopt(handle.sock, level, opt, optval, optlen);
+		finished = true;
+	}
+
+	Lx_setsockopt(const Lx_setsockopt&) = delete;
+	Lx_setsockopt operator=(const Lx_setsockopt&) = delete;
+};
+
+
+struct Lx_getname : Lx_call
+{
+	genode_sockaddr &addr;
+	bool peer;
+
+	Lx_getname(genode_socket_handle &handle, genode_sockaddr &addr, bool peer)
+	: Lx_call(handle), addr(addr), peer(peer)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_getname(handle.sock, &addr, peer);
+		finished = true;
+	}
+};
+
+
+struct Lx_sendmsg : Lx_call
+{
+	genode_msghdr &msg;
+	unsigned long bytes { 0 };
+
+	Lx_sendmsg(genode_socket_handle &handle,
+	           genode_msghdr &msg)
+	: Lx_call(handle), msg(msg)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_sendmsg(handle.sock, &msg, &bytes);
+		finished = true;
+	}
+};
+
+
+struct Lx_recvmsg : Lx_call
+{
+	genode_msghdr &msg;
+	unsigned long bytes { 0 };
+	bool peek;
+
+	Lx_recvmsg(genode_socket_handle &handle,
+	           genode_msghdr &msg, bool peek)
+	: Lx_call(handle), msg(msg), peek(peek)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_recvmsg(handle.sock, &msg, &bytes, peek);
+		finished = true;
+	}
+};
+
+
+struct Lx_shutdown : Lx_call
+{
+	int how;
+
+	Lx_shutdown(genode_socket_handle &handle,
+	            int how)
+	: Lx_call(handle), how(how)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_shutdown(handle.sock, how);
+		finished = true;
+	}
+};
+
+
+struct Lx_release : Lx_call
+{
+	Lx_release(genode_socket_handle &handle) : Lx_call(handle)
+	{
+		schedule();
+	}
+
+	void execute() override
+	{
+		err = lx_socket_release(handle.sock);
+		finished = true;
+	}
+};
+
+
+/*
+ * Dispatch socket calls in Linux task
+ */
+
+
+void *lx_socket_dispatch_queue(void)
+{
+	static Socket_queue queue;
+	return &queue;
+}
+
+
+int lx_socket_dispatch(void *arg)
+{
+	Socket_queue &queue = *static_cast<Socket_queue *>(arg);
+
+	while (true) {
+
+		if (queue.empty())
+			lx_emul_task_schedule(true);
+
+		queue.dequeue([] (Lx_call &call) { call.execute(); });
+	}
+}
+
+
+/*
+ * Socket C-API
+ */
+
+static genode_socket_handle * _create_handle()
+{
+	genode_socket_handle *handle = new (Lx_kit::env().heap) genode_socket_handle();
+
+	handle->task  = lx_socket_dispatch_root();
+	handle->queue = static_cast<Socket_queue *>(lx_socket_dispatch_queue());
+	handle->sock  = nullptr;
+
+	return handle;
+}
+
+
+static void _destroy_handle(genode_socket_handle *handle)
+{
+	if (handle->sock) lx_sock_release(handle->sock);
+
+	destroy(Lx_kit::env().heap, handle);
+}
+
+
+/*
+ * Genode socket C-API
+ */
+
+void genode_socket_config_address(struct genode_socket_config *config)
+{
+	genode_socket_handle handle = {
+		.task  = lx_socket_dispatch_root(),
+		.queue = static_cast<Socket_queue *>(lx_socket_dispatch_queue()),
+	};
+
+	Lx_address addr { handle, config };
+}
+
+
+void genode_socket_configure_mtu(unsigned mtu)
+{
+	genode_socket_handle handle = {
+		.task  = lx_socket_dispatch_root(),
+		.queue = static_cast<Socket_queue *>(lx_socket_dispatch_queue()),
+	};
+
+	Lx_mtu addr { handle, mtu };
+}
+
+
+genode_socket_handle *
+genode_socket(int domain, int type, int protocol, enum Errno *errno)
+{
+	genode_socket_handle *handle  = _create_handle();
+
+	if (!handle) {
+		*errno = GENODE_ENOMEM;
+		return nullptr;
+	}
+
+	Lx_socket socket { *handle, domain, type, protocol };
+
+	*errno = socket.err;
+
+	return handle;
+}
+
+
+enum Errno genode_socket_bind(struct genode_socket_handle  *handle,
+                              struct genode_sockaddr const *addr)
+{
+	Lx_bind bind { *handle, *addr };
+	return bind.err;
+}
+
+
+enum Errno genode_socket_listen(struct genode_socket_handle *handle,
+                                int backlog)
+{
+	Lx_listen listen { *handle, backlog };
+	return listen.err;
+}
+
+
+genode_socket_handle *
+genode_socket_accept(struct genode_socket_handle *handle,
+                     struct genode_sockaddr *addr,
+                     enum Errno *errno)
+{
+	genode_socket_handle *client = _create_handle();
+	if (!handle) {
+		*errno = GENODE_ENOMEM;
+		return nullptr;
+	}
+
+	Lx_accept accept { *handle, *client };
+	*errno = accept.err;
+
+	if (*errno) {
+		_destroy_handle(client);
+		return nullptr;
+	}
+
+	if (addr)
+		*addr = accept.addr;
+
+	return client;
+}
+
+
+enum Errno genode_socket_connect(struct genode_socket_handle *handle,
+                                 struct genode_sockaddr *addr)
+{
+	Lx_connect connect  { *handle, *addr };
+	return connect.err;
+}
+
+
+unsigned genode_socket_pollin_set(void)
+{
+	return lx_socket_pollin_set();
+}
+
+
+unsigned genode_socket_pollout_set(void)
+{
+	return lx_socket_pollout_set();
+}
+
+
+unsigned genode_socket_pollex_set(void)
+{
+	return lx_socket_pollex_set();
+}
+
+
+unsigned genode_socket_poll(struct genode_socket_handle *handle)
+{
+	Lx_poll poll { *handle };
+	return poll.result;
+}
+
+
+enum Errno genode_socket_getsockopt(struct genode_socket_handle *handle,
+                                    enum Sock_level level, enum Sock_opt opt,
+                                    void *optval, unsigned *optlen)
+{
+	Lx_getsockopt sock_opt { *handle, level, opt, optval, optlen };
+	return sock_opt.err;
+}
+
+
+enum Errno genode_socket_setsockopt(struct genode_socket_handle *handle,
+                                    enum Sock_level level, enum Sock_opt opt,
+                                    void const *optval,
+                                    unsigned optlen)
+{
+	Lx_setsockopt sock_opt { *handle, level, opt, optval, optlen };
+	return sock_opt.err;
+}
+
+
+enum Errno genode_socket_getsockname(struct genode_socket_handle *handle,
+                                     struct genode_sockaddr *addr)
+{
+	Lx_getname name { *handle, *addr, false };
+	return name.err;
+}
+
+
+enum Errno genode_socket_getpeername(struct genode_socket_handle *handle,
+                                     struct genode_sockaddr *addr)
+{
+	Lx_getname name { *handle, *addr, true };
+	return name.err;
+}
+
+
+enum Errno genode_socket_sendmsg(struct genode_socket_handle *handle,
+                                 struct genode_msghdr *msg,
+                                 unsigned long *bytes_send)
+{
+	Lx_sendmsg send { *handle, *msg };
+	*bytes_send = send.bytes;
+	return send.err;
+}
+
+
+enum Errno genode_socket_recvmsg(struct genode_socket_handle *handle,
+                                 struct genode_msghdr *msg,
+                                 unsigned long *bytes_recv,
+                                 bool peek)
+{
+	Lx_recvmsg recv { *handle, *msg, peek };
+	*bytes_recv = recv.bytes;
+	return recv.err;
+}
+
+
+enum Errno genode_socket_shutdown(struct genode_socket_handle *handle,
+                                  int how)
+{
+	Lx_shutdown shutdown { *handle, how };
+	return shutdown.err;
+}
+
+
+enum Errno genode_socket_release(struct genode_socket_handle *handle)
+{
+	Lx_release release { *handle };
+	handle->sock = nullptr;
+	_destroy_handle(handle);
+	return release.err;
+}
diff --git a/repos/dde_linux/src/lib/lxip/spec/arm_v6/generated_dummies.c b/repos/dde_linux/src/lib/lxip/spec/arm_v6/generated_dummies.c
new file mode 100644
index 0000000000..183f4ed62d
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/arm_v6/generated_dummies.c
@@ -0,0 +1,1345 @@
+/*
+ * \brief  Dummy definitions of Linux Kernel functions
+ * \author Automatically generated file - do no edit
+ * \date   2024-02-05
+ */
+
+#include <lx_emul.h>
+
+
+#include <linux/root_dev.h>
+
+dev_t ROOT_DEV;
+
+
+#include <linux/filter.h>
+
+noinline u64 __bpf_call_base(u64 r1,u64 r2,u64 r3,u64 r4,u64 r5)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void __bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void __check_vmalloc_seq(struct mm_struct * mm);
+void __check_vmalloc_seq(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/clk-provider.h>
+
+const char * __clk_get_name(const struct clk * clk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cpumask.h>
+
+struct cpumask __cpu_active_mask;
+
+
+#include <linux/sched.h>
+
+char * __get_task_comm(char * buf,size_t buf_size,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/ipv6.h>
+
+int __ipv6_addr_type(const struct in6_addr * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+struct irq_domain * __irq_domain_add(struct fwnode_handle * fwnode,unsigned int size,irq_hw_number_t hwirq_max,int direct_max,const struct irq_domain_ops * ops,void * host_data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+struct irq_desc * __irq_resolve_mapping(struct irq_domain * domain,irq_hw_number_t hwirq,unsigned int * irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int __mm_populate(unsigned long start,unsigned long len,int ignore_errors)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void __mmdrop(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <asm-generic/percpu.h>
+
+unsigned long __per_cpu_offset[NR_CPUS] = {};
+
+
+#include <linux/printk.h>
+
+void __printk_safe_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cred.h>
+
+void __put_cred(struct cred * cred)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+void __put_task_struct(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+int __receive_fd(struct file * file,int __user * ufd,unsigned int o_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_cmsgs(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_timestamp(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_wifi_status(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_tx_timestamp(__u16 tsflags,__u8 * tx_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+pid_t __task_pid_nr_ns(struct task_struct * task,enum pid_type type,struct pid_namespace * ns)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc_node_range(unsigned long size,unsigned long align,unsigned long start,unsigned long end,gfp_t gfp_mask,pgprot_t prot,unsigned long vm_flags,int node,const void * caller)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+int _printk_deferred(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+atomic_long_t _totalram_pages;
+
+
+#include <linux/mm.h>
+
+int access_process_vm(struct task_struct * tsk,unsigned long addr,void * buf,int len,unsigned int gup_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+unsigned long arch_get_unmapped_area(struct file * filp,unsigned long addr,unsigned long len,unsigned long pgoff,unsigned long flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+unsigned long arch_get_unmapped_area_topdown(struct file * filp,const unsigned long addr0,const unsigned long len,const unsigned long pgoff,const unsigned long flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void arm_heavy_mb(void);
+void arm_heavy_mb(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_pid_tgid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_uid_gid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_smp_processor_id_proto;
+
+
+#include <linux/filter.h>
+
+void * bpf_internal_load_pointer_neg_helper(const struct sk_buff * skb,int k,unsigned int size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_ktime_get_coarse_ns_proto;
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_alloc(unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_realloc(struct bpf_prog * fp_old,unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_select_runtime(struct bpf_prog * fp,int * err)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+void bpf_user_rnd_init_once(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/if_bridge.h>
+
+int br_ioctl_call(struct net * net,struct net_bridge * br,unsigned int cmd,struct ifreq * ifr,void __user * uarg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/security.h>
+
+int cap_settime(const struct timespec64 * ts,const struct timezone * tz)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void check_and_switch_context(struct mm_struct * mm,struct task_struct * tsk);
+void check_and_switch_context(struct mm_struct * mm,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+int check_zeroed_user(const void __user * from,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+long copy_from_kernel_nofault(void * dst,const void * src,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/arch_topology.h>
+
+struct cpu_topology cpu_topology[NR_CPUS] = {};
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+void ct_irq_enter_irqson(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+void ct_irq_exit_irqson(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations default_pipe_buf_ops;
+
+
+#include <linux/device.h>
+
+const char * dev_driver_string(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int dev_ethtool(struct net * net,struct ifreq * ifr,void __user * useraddr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * dev_fwnode(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/dev_printk.h>
+
+int dev_printk_emit(int level,const struct device * dev,const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int device_rename(struct device * dev,const char * new_name)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int devm_add_action(struct device * dev,void (* action)(void *),void * data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long do_mmap(struct file * file,unsigned long addr,unsigned long len,unsigned long prot,unsigned long flags,unsigned long pgoff,unsigned long * populate,struct list_head * uf)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+asmlinkage __visible void dump_stack(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_get_phc_vclocks(struct net_device * dev,int ** vclock_index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_op_get_ts_info(struct net_device * dev,struct ethtool_ts_info * info)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_readable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_safe_writeable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+struct file * fget_raw(unsigned int fd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/capability.h>
+
+bool file_ns_capable(const struct file * file,struct user_namespace * ns,int cap)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+struct pid * find_get_pid(pid_t nr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+struct task_struct * find_task_by_vpid(pid_t vnr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuwait.h>
+
+void finish_rcuwait(struct rcuwait * w)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void flush_dcache_page(struct page * page);
+void flush_dcache_page(struct page * page)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+struct task_struct * __init fork_idle(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+void fput(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/user.h>
+
+void free_uid(struct user_struct * up)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+unsigned int fwnode_count_parents(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name_prefix(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * fwnode_get_nth_parent(struct fwnode_handle * fwnode,unsigned int depth)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+void fwnode_handle_put(struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+int fwnode_property_read_u8_array(const struct fwnode_handle * fwnode,const char * propname,u8 * val,size_t nval)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+struct device * get_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+unsigned long get_state_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+struct mm_struct * get_task_mm(struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int get_user_ifreq(struct ifreq * ifr,void __user ** ifrdata,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int get_user_pages_fast(unsigned long start,int nr_pages,unsigned int gup_flags,struct page ** pages)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/gfp.h>
+
+bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 guid_index[16] = {};
+
+
+#include <linux/irq.h>
+
+void handle_fasteoi_irq(struct irq_desc * desc)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/protocol.h>
+
+const struct net_offload __rcu *inet6_offloads[MAX_INET_PROTOS] = {};
+
+
+#include <linux/mm_types.h>
+
+struct mm_struct init_mm;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace init_pid_ns;
+
+
+#include <linux/utsname.h>
+
+struct user_namespace init_user_ns;
+
+
+#include <linux/sched.h>
+
+void __sched io_schedule(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void io_schedule_finish(int token)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+int io_schedule_prepare(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+long __sched io_schedule_timeout(long timeout)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_can_set_affinity(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+void irq_domain_free_irqs_common(struct irq_domain * domain,unsigned int virq,unsigned int nr_irqs)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+void irq_domain_set_info(struct irq_domain * domain,unsigned int virq,irq_hw_number_t hwirq,const struct irq_chip * chip,void * chip_data,irq_flow_handler_t handler,void * handler_data,const char * handler_name)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irq.h>
+
+void irq_modify_status(unsigned int irq,unsigned long clr,unsigned long set)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+void irq_set_default_host(struct irq_domain * domain)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqnr.h>
+
+struct irq_desc * irq_to_desc(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_bind(struct socket * sock,struct sockaddr * addr,int addrlen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_connect(struct socket * sock,struct sockaddr * addr,int addrlen,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg(struct socket * sock,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg_locked(struct sock * sk,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage(struct socket * sock,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage_locked(struct sock * sk,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sock_shutdown(struct socket * sock,enum sock_shutdown_cmd how)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kfree_sensitive(const void * p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+int kmem_cache_alloc_bulk(struct kmem_cache * s,gfp_t flags,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_cache_free_bulk(struct kmem_cache * s,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+bool kmem_valid_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/kobject.h>
+
+int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[])
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/llist.h>
+
+bool llist_add_batch(struct llist_node * new_first,struct llist_node * new_last,struct llist_head * head)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/delay.h>
+
+unsigned long lpj_fine;
+
+
+#include <linux/string.h>
+
+ssize_t memory_read_from_buffer(void * to,size_t count,loff_t * ppos,const void * from,size_t available)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_disable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_enable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mman.h>
+
+void mm_compute_batch(int overcommit_policy)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void mmput(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/maple_tree.h>
+
+void * mtree_load(struct maple_tree * mt,unsigned long index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num);
+int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void netdev_unregister_kobject(struct net_device * ndev);
+void netdev_unregister_kobject(struct net_device * ndev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pipe_fs_i.h>
+
+const struct pipe_buf_operations nosteal_pipe_buf_ops;
+
+
+#include <linux/of.h>
+
+struct property * of_find_property(const struct device_node * np,const char * name,int * lenp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+const struct fwnode_operations of_fwnode_ops;
+
+
+#include <linux/of_net.h>
+
+int of_get_mac_address(struct device_node * np,u8 * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+const char * of_prop_next_string(struct property * prop,const char * cur)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+int of_property_read_string(const struct device_node * np,const char * propname,const char ** out_string)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/highuid.h>
+
+int overflowuid;
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations page_cache_pipe_buf_ops;
+
+
+#include <linux/panic.h>
+
+void panic(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/phy.h>
+
+int phy_loopback(struct phy_device * phydev,bool enable)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+pid_t pid_vnr(struct pid * pid)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+bool poll_state_synchronize_rcu(unsigned long oldstate)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_doulongvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+void put_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int put_user_ifreq(struct ifreq * ifr,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_lock_nested(struct rq * rq,int subclass);
+void raw_spin_rq_lock_nested(struct rq * rq,int subclass)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_unlock(struct rq * rq);
+void raw_spin_rq_unlock(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_and_mutex_lock(refcount_t * r,struct mutex * lock)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_if_one(refcount_t * r)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+void refcount_warn_saturate(refcount_t * r,enum refcount_saturation_type t)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/signal.h>
+
+int send_sig(int sig,struct task_struct * p,int priv)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/fs.h>
+
+int send_sigurg(struct fown_struct * fown)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags);
+void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_offline(struct rq * rq);
+void set_rq_offline(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_online(struct rq * rq);
+void set_rq_online(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/scatterlist.h>
+
+void sg_init_one(struct scatterlist * sg,const void * buf,unsigned int buflen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single(int cpu,smp_call_func_t func,void * info,int wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single_async(int cpu,struct __call_single_data * csd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+struct socket * sock_from_file(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+bool sock_is_registered(int family)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int sock_wake_async(struct socket_wq * wq,int how,int band)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+ssize_t splice_to_pipe(struct pipe_inode_info * pipe,struct splice_pipe_desc * spd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long stack_guard_gap;
+
+
+#include <linux/rcutree.h>
+
+unsigned long start_poll_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/jump_label.h>
+
+bool static_key_initialized;
+
+
+#include <linux/mm.h>
+
+void sync_mm_rss(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/class.h>
+
+struct kobject *sysfs_dev_char_kobj;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace * task_active_pid_ns(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/clockchips.h>
+
+void tick_broadcast(const struct cpumask * mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void update_group_capacity(struct sched_domain * sd,int cpu);
+void update_group_capacity(struct sched_domain * sd,int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 uuid_index[16] = {};
+
+
+#include <linux/mman.h>
+
+s32 vm_committed_as_batch;
+
+
+#include <linux/mm.h>
+
+int vm_insert_pages(struct vm_area_struct * vma,unsigned long addr,struct page ** pages,unsigned long * num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+bool vmalloc_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * vmalloc_huge(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/driver.h>
+
+void __init wait_for_init_devices_probe(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/wake_q.h>
+
+void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void __sched yield(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+void zap_page_range(struct vm_area_struct * vma,unsigned long start,unsigned long size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
diff --git a/repos/dde_linux/src/lib/lxip/spec/arm_v6/source.list b/repos/dde_linux/src/lib/lxip/spec/arm_v6/source.list
new file mode 100644
index 0000000000..0fd90d9723
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/arm_v6/source.list
@@ -0,0 +1,158 @@
+arch/arm/lib/clearbit.S
+arch/arm/lib/csumipv6.S
+arch/arm/lib/csumpartial.S
+arch/arm/lib/csumpartialcopy.S
+arch/arm/lib/div64.S
+arch/arm/lib/findbit.S
+arch/arm/lib/memchr.S
+arch/arm/lib/setbit.S
+arch/arm/lib/strchr.S
+arch/arm/lib/testclearbit.S
+arch/arm/lib/testsetbit.S
+drivers/base/class.c
+drivers/net/loopback.c
+fs/nls/nls_base.c
+kernel/kthread.c
+kernel/locking/mutex.c
+kernel/locking/osq_lock.c
+kernel/locking/rwsem.c
+kernel/notifier.c
+kernel/sched/build_utility.c
+kernel/smpboot.c
+kernel/softirq.c
+kernel/time/clockevents.c
+kernel/time/clocksource.c
+kernel/time/hrtimer.c
+kernel/time/jiffies.c
+kernel/time/ntp.c
+kernel/time/tick-broadcast-hrtimer.c
+kernel/time/tick-broadcast.c
+kernel/time/tick-common.c
+kernel/time/tick-oneshot.c
+kernel/time/tick-sched.c
+kernel/time/time.c
+kernel/time/timeconv.c
+kernel/time/timecounter.c
+kernel/time/timekeeping.c
+kernel/time/timer.c
+kernel/time/timer_list.c
+kernel/workqueue.c
+lib/bitmap.c
+lib/ctype.c
+lib/find_bit.c
+lib/hexdump.c
+lib/hweight.c
+lib/idr.c
+lib/iov_iter.c
+lib/kasprintf.c
+lib/klist.c
+lib/kobject.c
+lib/kstrtox.c
+lib/math/div64.c
+lib/nlattr.c
+lib/once.c
+lib/percpu_counter.c
+lib/radix-tree.c
+lib/rbtree.c
+lib/rhashtable.c
+lib/siphash.c
+lib/string.c
+lib/string_helpers.c
+lib/timerqueue.c
+lib/vsprintf.c
+lib/win_minmax.c
+lib/xarray.c
+mm/util.c
+net/core/datagram.c
+net/core/dev.c
+net/core/dev_addr_lists.c
+net/core/dev_ioctl.c
+net/core/dst.c
+net/core/dst_cache.c
+net/core/failover.c
+net/core/fib_notifier.c
+net/core/filter.c
+net/core/flow_dissector.c
+net/core/flow_offload.c
+net/core/gen_estimator.c
+net/core/gen_stats.c
+net/core/gro.c
+net/core/gro_cells.c
+net/core/link_watch.c
+net/core/neighbour.c
+net/core/net_namespace.c
+net/core/netevent.c
+net/core/request_sock.c
+net/core/rtnetlink.c
+net/core/scm.c
+net/core/secure_seq.c
+net/core/selftests.c
+net/core/skbuff.c
+net/core/sock.c
+net/core/sock_diag.c
+net/core/sock_reuseport.c
+net/core/stream.c
+net/core/tso.c
+net/core/utils.c
+net/core/xdp.c
+net/ethernet/eth.c
+net/ipv4/af_inet.c
+net/ipv4/arp.c
+net/ipv4/datagram.c
+net/ipv4/devinet.c
+net/ipv4/fib_frontend.c
+net/ipv4/fib_notifier.c
+net/ipv4/fib_semantics.c
+net/ipv4/fib_trie.c
+net/ipv4/gre_offload.c
+net/ipv4/icmp.c
+net/ipv4/igmp.c
+net/ipv4/inet_connection_sock.c
+net/ipv4/inet_diag.c
+net/ipv4/inet_fragment.c
+net/ipv4/inet_hashtables.c
+net/ipv4/inet_timewait_sock.c
+net/ipv4/inetpeer.c
+net/ipv4/ip_forward.c
+net/ipv4/ip_fragment.c
+net/ipv4/ip_input.c
+net/ipv4/ip_options.c
+net/ipv4/ip_output.c
+net/ipv4/ip_sockglue.c
+net/ipv4/ip_tunnel.c
+net/ipv4/ip_tunnel_core.c
+net/ipv4/ipconfig.c
+net/ipv4/metrics.c
+net/ipv4/netlink.c
+net/ipv4/nexthop.c
+net/ipv4/ping.c
+net/ipv4/protocol.c
+net/ipv4/raw.c
+net/ipv4/route.c
+net/ipv4/tcp.c
+net/ipv4/tcp_cong.c
+net/ipv4/tcp_cubic.c
+net/ipv4/tcp_diag.c
+net/ipv4/tcp_fastopen.c
+net/ipv4/tcp_input.c
+net/ipv4/tcp_ipv4.c
+net/ipv4/tcp_metrics.c
+net/ipv4/tcp_minisocks.c
+net/ipv4/tcp_offload.c
+net/ipv4/tcp_output.c
+net/ipv4/tcp_rate.c
+net/ipv4/tcp_recovery.c
+net/ipv4/tcp_timer.c
+net/ipv4/tcp_ulp.c
+net/ipv4/udp.c
+net/ipv4/udp_offload.c
+net/ipv4/udp_tunnel_core.c
+net/ipv4/udp_tunnel_nic.c
+net/ipv4/udp_tunnel_stub.c
+net/ipv4/udplite.c
+net/netlink/af_netlink.c
+net/netlink/genetlink.c
+net/netlink/policy.c
+net/sched/sch_frag.c
+net/sched/sch_generic.c
+net/sched/sch_mq.c
diff --git a/repos/dde_linux/src/lib/lxip/spec/arm_v7/generated_dummies.c b/repos/dde_linux/src/lib/lxip/spec/arm_v7/generated_dummies.c
new file mode 100644
index 0000000000..b5cdbe1722
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/arm_v7/generated_dummies.c
@@ -0,0 +1,1110 @@
+/*
+ * \brief  Dummy definitions of Linux Kernel functions
+ * \author Automatically generated file - do no edit
+ * \date   2024-02-05
+ */
+
+#include <lx_emul.h>
+
+
+#include <linux/root_dev.h>
+
+dev_t ROOT_DEV;
+
+
+#include <linux/filter.h>
+
+noinline u64 __bpf_call_base(u64 r1,u64 r2,u64 r3,u64 r4,u64 r5)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void __bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void __check_vmalloc_seq(struct mm_struct * mm);
+void __check_vmalloc_seq(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/clk-provider.h>
+
+const char * __clk_get_name(const struct clk * clk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+char * __get_task_comm(char * buf,size_t buf_size,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/ipv6.h>
+
+int __ipv6_addr_type(const struct in6_addr * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+struct irq_domain * __irq_domain_add(struct fwnode_handle * fwnode,unsigned int size,irq_hw_number_t hwirq_max,int direct_max,const struct irq_domain_ops * ops,void * host_data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+struct irq_desc * __irq_resolve_mapping(struct irq_domain * domain,irq_hw_number_t hwirq,unsigned int * irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int __mm_populate(unsigned long start,unsigned long len,int ignore_errors)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void __mmdrop(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cred.h>
+
+void __put_cred(struct cred * cred)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+void __put_task_struct(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+int __receive_fd(struct file * file,int __user * ufd,unsigned int o_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_cmsgs(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_timestamp(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_wifi_status(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_tx_timestamp(__u16 tsflags,__u8 * tx_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+pid_t __task_pid_nr_ns(struct task_struct * task,enum pid_type type,struct pid_namespace * ns)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc_node_range(unsigned long size,unsigned long align,unsigned long start,unsigned long end,gfp_t gfp_mask,pgprot_t prot,unsigned long vm_flags,int node,const void * caller)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+int _printk_deferred(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+atomic_long_t _totalram_pages;
+
+
+#include <linux/mm.h>
+
+int access_process_vm(struct task_struct * tsk,unsigned long addr,void * buf,int len,unsigned int gup_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+unsigned long arch_get_unmapped_area(struct file * filp,unsigned long addr,unsigned long len,unsigned long pgoff,unsigned long flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+unsigned long arch_get_unmapped_area_topdown(struct file * filp,const unsigned long addr0,const unsigned long len,const unsigned long pgoff,const unsigned long flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void arm_heavy_mb(void);
+void arm_heavy_mb(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_pid_tgid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_uid_gid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_smp_processor_id_proto;
+
+
+#include <linux/filter.h>
+
+void * bpf_internal_load_pointer_neg_helper(const struct sk_buff * skb,int k,unsigned int size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_ktime_get_coarse_ns_proto;
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_alloc(unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_realloc(struct bpf_prog * fp_old,unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_select_runtime(struct bpf_prog * fp,int * err)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+void bpf_user_rnd_init_once(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/if_bridge.h>
+
+int br_ioctl_call(struct net * net,struct net_bridge * br,unsigned int cmd,struct ifreq * ifr,void __user * uarg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/security.h>
+
+int cap_settime(const struct timespec64 * ts,const struct timezone * tz)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void check_and_switch_context(struct mm_struct * mm,struct task_struct * tsk);
+void check_and_switch_context(struct mm_struct * mm,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+int check_zeroed_user(const void __user * from,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+long copy_from_kernel_nofault(void * dst,const void * src,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations default_pipe_buf_ops;
+
+
+#include <linux/device.h>
+
+const char * dev_driver_string(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int dev_ethtool(struct net * net,struct ifreq * ifr,void __user * useraddr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * dev_fwnode(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/dev_printk.h>
+
+int dev_printk_emit(int level,const struct device * dev,const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int device_rename(struct device * dev,const char * new_name)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int devm_add_action(struct device * dev,void (* action)(void *),void * data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long do_mmap(struct file * file,unsigned long addr,unsigned long len,unsigned long prot,unsigned long flags,unsigned long pgoff,unsigned long * populate,struct list_head * uf)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+asmlinkage __visible void dump_stack(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_get_phc_vclocks(struct net_device * dev,int ** vclock_index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_op_get_ts_info(struct net_device * dev,struct ethtool_ts_info * info)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_readable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_safe_writeable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+struct file * fget_raw(unsigned int fd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/capability.h>
+
+bool file_ns_capable(const struct file * file,struct user_namespace * ns,int cap)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+struct pid * find_get_pid(pid_t nr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+struct task_struct * find_task_by_vpid(pid_t vnr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuwait.h>
+
+void finish_rcuwait(struct rcuwait * w)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void flush_dcache_page(struct page * page);
+void flush_dcache_page(struct page * page)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+void fput(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/user.h>
+
+void free_uid(struct user_struct * up)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+unsigned int fwnode_count_parents(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name_prefix(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * fwnode_get_nth_parent(struct fwnode_handle * fwnode,unsigned int depth)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+void fwnode_handle_put(struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+int fwnode_property_read_u8_array(const struct fwnode_handle * fwnode,const char * propname,u8 * val,size_t nval)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+struct device * get_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+struct mm_struct * get_task_mm(struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int get_user_ifreq(struct ifreq * ifr,void __user ** ifrdata,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int get_user_pages_fast(unsigned long start,int nr_pages,unsigned int gup_flags,struct page ** pages)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/gfp.h>
+
+bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 guid_index[16] = {};
+
+
+#include <net/protocol.h>
+
+const struct net_offload __rcu *inet6_offloads[MAX_INET_PROTOS] = {};
+
+
+#include <linux/mm_types.h>
+
+struct mm_struct init_mm;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace init_pid_ns;
+
+
+#include <linux/utsname.h>
+
+struct user_namespace init_user_ns;
+
+
+#include <linux/sched.h>
+
+void __sched io_schedule(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void io_schedule_finish(int token)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+int io_schedule_prepare(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+long __sched io_schedule_timeout(long timeout)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+void irq_set_default_host(struct irq_domain * domain)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_bind(struct socket * sock,struct sockaddr * addr,int addrlen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_connect(struct socket * sock,struct sockaddr * addr,int addrlen,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg(struct socket * sock,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg_locked(struct sock * sk,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage(struct socket * sock,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage_locked(struct sock * sk,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sock_shutdown(struct socket * sock,enum sock_shutdown_cmd how)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kfree_sensitive(const void * p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+int kmem_cache_alloc_bulk(struct kmem_cache * s,gfp_t flags,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_cache_free_bulk(struct kmem_cache * s,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+bool kmem_valid_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/kobject.h>
+
+int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[])
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/llist.h>
+
+bool llist_add_batch(struct llist_node * new_first,struct llist_node * new_last,struct llist_head * head)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/delay.h>
+
+unsigned long lpj_fine;
+
+
+#include <linux/string.h>
+
+ssize_t memory_read_from_buffer(void * to,size_t count,loff_t * ppos,const void * from,size_t available)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void mmput(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/maple_tree.h>
+
+void * mtree_load(struct maple_tree * mt,unsigned long index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num);
+int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void netdev_unregister_kobject(struct net_device * ndev);
+void netdev_unregister_kobject(struct net_device * ndev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pipe_fs_i.h>
+
+const struct pipe_buf_operations nosteal_pipe_buf_ops;
+
+
+#include <linux/of.h>
+
+struct property * of_find_property(const struct device_node * np,const char * name,int * lenp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of_net.h>
+
+int of_get_mac_address(struct device_node * np,u8 * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+const char * of_prop_next_string(struct property * prop,const char * cur)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+int of_property_read_string(const struct device_node * np,const char * propname,const char ** out_string)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/highuid.h>
+
+int overflowuid;
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations page_cache_pipe_buf_ops;
+
+
+#include <linux/panic.h>
+
+void panic(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/phy.h>
+
+int phy_loopback(struct phy_device * phydev,bool enable)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+pid_t pid_vnr(struct pid * pid)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_doulongvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+void put_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int put_user_ifreq(struct ifreq * ifr,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_and_mutex_lock(refcount_t * r,struct mutex * lock)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_if_one(refcount_t * r)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+void refcount_warn_saturate(refcount_t * r,enum refcount_saturation_type t)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/signal.h>
+
+int send_sig(int sig,struct task_struct * p,int priv)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/fs.h>
+
+int send_sigurg(struct fown_struct * fown)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/scatterlist.h>
+
+void sg_init_one(struct scatterlist * sg,const void * buf,unsigned int buflen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single(int cpu,void (* func)(void * info),void * info,int wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+struct socket * sock_from_file(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+bool sock_is_registered(int family)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int sock_wake_async(struct socket_wq * wq,int how,int band)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+ssize_t splice_to_pipe(struct pipe_inode_info * pipe,struct splice_pipe_desc * spd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long stack_guard_gap;
+
+
+#include <linux/jump_label.h>
+
+bool static_key_initialized;
+
+
+#include <linux/device/class.h>
+
+struct kobject *sysfs_dev_char_kobj;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace * task_active_pid_ns(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 uuid_index[16] = {};
+
+
+#include <linux/mm.h>
+
+int vm_insert_pages(struct vm_area_struct * vma,unsigned long addr,struct page ** pages,unsigned long * num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+bool vmalloc_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * vmalloc_huge(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/driver.h>
+
+void __init wait_for_init_devices_probe(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/wake_q.h>
+
+void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcupdate_wait.h>
+
+void wakeme_after_rcu(struct rcu_head * head)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void __sched yield(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+void zap_page_range(struct vm_area_struct * vma,unsigned long start,unsigned long size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
diff --git a/repos/dde_linux/src/lib/lxip/spec/arm_v7/source.list b/repos/dde_linux/src/lib/lxip/spec/arm_v7/source.list
new file mode 100644
index 0000000000..0fd90d9723
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/arm_v7/source.list
@@ -0,0 +1,158 @@
+arch/arm/lib/clearbit.S
+arch/arm/lib/csumipv6.S
+arch/arm/lib/csumpartial.S
+arch/arm/lib/csumpartialcopy.S
+arch/arm/lib/div64.S
+arch/arm/lib/findbit.S
+arch/arm/lib/memchr.S
+arch/arm/lib/setbit.S
+arch/arm/lib/strchr.S
+arch/arm/lib/testclearbit.S
+arch/arm/lib/testsetbit.S
+drivers/base/class.c
+drivers/net/loopback.c
+fs/nls/nls_base.c
+kernel/kthread.c
+kernel/locking/mutex.c
+kernel/locking/osq_lock.c
+kernel/locking/rwsem.c
+kernel/notifier.c
+kernel/sched/build_utility.c
+kernel/smpboot.c
+kernel/softirq.c
+kernel/time/clockevents.c
+kernel/time/clocksource.c
+kernel/time/hrtimer.c
+kernel/time/jiffies.c
+kernel/time/ntp.c
+kernel/time/tick-broadcast-hrtimer.c
+kernel/time/tick-broadcast.c
+kernel/time/tick-common.c
+kernel/time/tick-oneshot.c
+kernel/time/tick-sched.c
+kernel/time/time.c
+kernel/time/timeconv.c
+kernel/time/timecounter.c
+kernel/time/timekeeping.c
+kernel/time/timer.c
+kernel/time/timer_list.c
+kernel/workqueue.c
+lib/bitmap.c
+lib/ctype.c
+lib/find_bit.c
+lib/hexdump.c
+lib/hweight.c
+lib/idr.c
+lib/iov_iter.c
+lib/kasprintf.c
+lib/klist.c
+lib/kobject.c
+lib/kstrtox.c
+lib/math/div64.c
+lib/nlattr.c
+lib/once.c
+lib/percpu_counter.c
+lib/radix-tree.c
+lib/rbtree.c
+lib/rhashtable.c
+lib/siphash.c
+lib/string.c
+lib/string_helpers.c
+lib/timerqueue.c
+lib/vsprintf.c
+lib/win_minmax.c
+lib/xarray.c
+mm/util.c
+net/core/datagram.c
+net/core/dev.c
+net/core/dev_addr_lists.c
+net/core/dev_ioctl.c
+net/core/dst.c
+net/core/dst_cache.c
+net/core/failover.c
+net/core/fib_notifier.c
+net/core/filter.c
+net/core/flow_dissector.c
+net/core/flow_offload.c
+net/core/gen_estimator.c
+net/core/gen_stats.c
+net/core/gro.c
+net/core/gro_cells.c
+net/core/link_watch.c
+net/core/neighbour.c
+net/core/net_namespace.c
+net/core/netevent.c
+net/core/request_sock.c
+net/core/rtnetlink.c
+net/core/scm.c
+net/core/secure_seq.c
+net/core/selftests.c
+net/core/skbuff.c
+net/core/sock.c
+net/core/sock_diag.c
+net/core/sock_reuseport.c
+net/core/stream.c
+net/core/tso.c
+net/core/utils.c
+net/core/xdp.c
+net/ethernet/eth.c
+net/ipv4/af_inet.c
+net/ipv4/arp.c
+net/ipv4/datagram.c
+net/ipv4/devinet.c
+net/ipv4/fib_frontend.c
+net/ipv4/fib_notifier.c
+net/ipv4/fib_semantics.c
+net/ipv4/fib_trie.c
+net/ipv4/gre_offload.c
+net/ipv4/icmp.c
+net/ipv4/igmp.c
+net/ipv4/inet_connection_sock.c
+net/ipv4/inet_diag.c
+net/ipv4/inet_fragment.c
+net/ipv4/inet_hashtables.c
+net/ipv4/inet_timewait_sock.c
+net/ipv4/inetpeer.c
+net/ipv4/ip_forward.c
+net/ipv4/ip_fragment.c
+net/ipv4/ip_input.c
+net/ipv4/ip_options.c
+net/ipv4/ip_output.c
+net/ipv4/ip_sockglue.c
+net/ipv4/ip_tunnel.c
+net/ipv4/ip_tunnel_core.c
+net/ipv4/ipconfig.c
+net/ipv4/metrics.c
+net/ipv4/netlink.c
+net/ipv4/nexthop.c
+net/ipv4/ping.c
+net/ipv4/protocol.c
+net/ipv4/raw.c
+net/ipv4/route.c
+net/ipv4/tcp.c
+net/ipv4/tcp_cong.c
+net/ipv4/tcp_cubic.c
+net/ipv4/tcp_diag.c
+net/ipv4/tcp_fastopen.c
+net/ipv4/tcp_input.c
+net/ipv4/tcp_ipv4.c
+net/ipv4/tcp_metrics.c
+net/ipv4/tcp_minisocks.c
+net/ipv4/tcp_offload.c
+net/ipv4/tcp_output.c
+net/ipv4/tcp_rate.c
+net/ipv4/tcp_recovery.c
+net/ipv4/tcp_timer.c
+net/ipv4/tcp_ulp.c
+net/ipv4/udp.c
+net/ipv4/udp_offload.c
+net/ipv4/udp_tunnel_core.c
+net/ipv4/udp_tunnel_nic.c
+net/ipv4/udp_tunnel_stub.c
+net/ipv4/udplite.c
+net/netlink/af_netlink.c
+net/netlink/genetlink.c
+net/netlink/policy.c
+net/sched/sch_frag.c
+net/sched/sch_generic.c
+net/sched/sch_mq.c
diff --git a/repos/dde_linux/src/lib/lxip/spec/arm_v8/generated_dummies.c b/repos/dde_linux/src/lib/lxip/spec/arm_v8/generated_dummies.c
new file mode 100644
index 0000000000..471c5fb5ac
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/arm_v8/generated_dummies.c
@@ -0,0 +1,1347 @@
+/*
+ * \brief  Dummy definitions of Linux Kernel functions
+ * \author Automatically generated file - do no edit
+ * \date   2024-01-24
+ */
+
+#include <lx_emul.h>
+
+
+#include <linux/root_dev.h>
+
+dev_t ROOT_DEV;
+
+
+#include <linux/filter.h>
+
+noinline u64 __bpf_call_base(u64 r1,u64 r2,u64 r3,u64 r4,u64 r5)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void __bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/clk-provider.h>
+
+const char * __clk_get_name(const struct clk * clk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cpumask.h>
+
+struct cpumask __cpu_active_mask;
+
+
+#include <linux/sched.h>
+
+char * __get_task_comm(char * buf,size_t buf_size,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/ipv6.h>
+
+int __ipv6_addr_type(const struct in6_addr * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+struct irq_domain * __irq_domain_add(struct fwnode_handle * fwnode,unsigned int size,irq_hw_number_t hwirq_max,int direct_max,const struct irq_domain_ops * ops,void * host_data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+struct irq_desc * __irq_resolve_mapping(struct irq_domain * domain,irq_hw_number_t hwirq,unsigned int * irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int __mm_populate(unsigned long start,unsigned long len,int ignore_errors)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void __mmdrop(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <asm-generic/percpu.h>
+
+unsigned long __per_cpu_offset[NR_CPUS] = {};
+
+
+#include <linux/printk.h>
+
+void __printk_safe_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cred.h>
+
+void __put_cred(struct cred * cred)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+void __put_task_struct(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+int __receive_fd(struct file * file,int __user * ufd,unsigned int o_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_cmsgs(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_timestamp(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_wifi_status(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_tx_timestamp(__u16 tsflags,__u8 * tx_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+pid_t __task_pid_nr_ns(struct task_struct * task,enum pid_type type,struct pid_namespace * ns)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc_node_range(unsigned long size,unsigned long align,unsigned long start,unsigned long end,gfp_t gfp_mask,pgprot_t prot,unsigned long vm_flags,int node,const void * caller)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+int _printk_deferred(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+atomic_long_t _totalram_pages;
+
+
+#include <linux/mm.h>
+
+int access_process_vm(struct task_struct * tsk,unsigned long addr,void * buf,int len,unsigned int gup_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+unsigned long arch_get_unmapped_area(struct file * filp,unsigned long addr,unsigned long len,unsigned long pgoff,unsigned long flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+unsigned long arch_get_unmapped_area_topdown(struct file * filp,unsigned long addr,unsigned long len,unsigned long pgoff,unsigned long flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_pid_tgid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_uid_gid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_smp_processor_id_proto;
+
+
+#include <linux/filter.h>
+
+void * bpf_internal_load_pointer_neg_helper(const struct sk_buff * skb,int k,unsigned int size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_ktime_get_coarse_ns_proto;
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_alloc(unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_realloc(struct bpf_prog * fp_old,unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_select_runtime(struct bpf_prog * fp,int * err)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+void bpf_user_rnd_init_once(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/if_bridge.h>
+
+int br_ioctl_call(struct net * net,struct net_bridge * br,unsigned int cmd,struct ifreq * ifr,void __user * uarg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/security.h>
+
+int cap_settime(const struct timespec64 * ts,const struct timezone * tz)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void check_and_switch_context(struct mm_struct * mm);
+void check_and_switch_context(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+int check_zeroed_user(const void __user * from,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+long copy_from_kernel_nofault(void * dst,const void * src,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/arch_topology.h>
+
+struct cpu_topology cpu_topology[NR_CPUS] = {};
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+void ct_irq_enter_irqson(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+void ct_irq_exit_irqson(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations default_pipe_buf_ops;
+
+
+#include <linux/device.h>
+
+const char * dev_driver_string(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int dev_ethtool(struct net * net,struct ifreq * ifr,void __user * useraddr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * dev_fwnode(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/dev_printk.h>
+
+int dev_printk_emit(int level,const struct device * dev,const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int device_rename(struct device * dev,const char * new_name)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int devm_add_action(struct device * dev,void (* action)(void *),void * data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long do_mmap(struct file * file,unsigned long addr,unsigned long len,unsigned long prot,unsigned long flags,unsigned long pgoff,unsigned long * populate,struct list_head * uf)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/restart_block.h>
+
+long do_no_restart_syscall(struct restart_block * param)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+asmlinkage __visible void dump_stack(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_get_phc_vclocks(struct net_device * dev,int ** vclock_index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_op_get_ts_info(struct net_device * dev,struct ethtool_ts_info * info)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_readable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_safe_writeable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+struct file * fget_raw(unsigned int fd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/capability.h>
+
+bool file_ns_capable(const struct file * file,struct user_namespace * ns,int cap)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+struct pid * find_get_pid(pid_t nr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+struct task_struct * find_task_by_vpid(pid_t vnr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuwait.h>
+
+void finish_rcuwait(struct rcuwait * w)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void flush_dcache_page(struct page * page);
+void flush_dcache_page(struct page * page)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+struct task_struct * __init fork_idle(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+void fput(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/user.h>
+
+void free_uid(struct user_struct * up)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+unsigned int fwnode_count_parents(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name_prefix(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * fwnode_get_nth_parent(struct fwnode_handle * fwnode,unsigned int depth)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+void fwnode_handle_put(struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+int fwnode_property_read_u8_array(const struct fwnode_handle * fwnode,const char * propname,u8 * val,size_t nval)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+struct device * get_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+unsigned long get_state_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+struct mm_struct * get_task_mm(struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int get_user_ifreq(struct ifreq * ifr,void __user ** ifrdata,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int get_user_pages_fast(unsigned long start,int nr_pages,unsigned int gup_flags,struct page ** pages)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/gfp.h>
+
+bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 guid_index[16] = {};
+
+
+#include <linux/irq.h>
+
+void handle_fasteoi_irq(struct irq_desc * desc)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/protocol.h>
+
+const struct net_offload __rcu *inet6_offloads[MAX_INET_PROTOS] = {};
+
+
+#include <linux/mm_types.h>
+
+struct mm_struct init_mm;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace init_pid_ns;
+
+
+#include <linux/utsname.h>
+
+struct user_namespace init_user_ns;
+
+
+#include <linux/sched.h>
+
+void __sched io_schedule(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void io_schedule_finish(int token)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+int io_schedule_prepare(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+long __sched io_schedule_timeout(long timeout)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_can_set_affinity(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+void irq_domain_free_irqs_common(struct irq_domain * domain,unsigned int virq,unsigned int nr_irqs)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+void irq_domain_set_info(struct irq_domain * domain,unsigned int virq,irq_hw_number_t hwirq,const struct irq_chip * chip,void * chip_data,irq_flow_handler_t handler,void * handler_data,const char * handler_name)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irq.h>
+
+void irq_modify_status(unsigned int irq,unsigned long clr,unsigned long set)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqdomain.h>
+
+void irq_set_default_host(struct irq_domain * domain)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/irqnr.h>
+
+struct irq_desc * irq_to_desc(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_bind(struct socket * sock,struct sockaddr * addr,int addrlen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_connect(struct socket * sock,struct sockaddr * addr,int addrlen,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg(struct socket * sock,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg_locked(struct sock * sk,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage(struct socket * sock,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage_locked(struct sock * sk,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sock_shutdown(struct socket * sock,enum sock_shutdown_cmd how)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kfree_sensitive(const void * p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+int kmem_cache_alloc_bulk(struct kmem_cache * s,gfp_t flags,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_cache_free_bulk(struct kmem_cache * s,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+bool kmem_valid_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/kobject.h>
+
+int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[])
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/llist.h>
+
+bool llist_add_batch(struct llist_node * new_first,struct llist_node * new_last,struct llist_head * head)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/delay.h>
+
+unsigned long lpj_fine;
+
+
+#include <linux/string.h>
+
+ssize_t memory_read_from_buffer(void * to,size_t count,loff_t * ppos,const void * from,size_t available)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_disable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_enable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mman.h>
+
+void mm_compute_batch(int overcommit_policy)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void mmput(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/maple_tree.h>
+
+void * mtree_load(struct maple_tree * mt,unsigned long index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num);
+int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void netdev_unregister_kobject(struct net_device * ndev);
+void netdev_unregister_kobject(struct net_device * ndev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pipe_fs_i.h>
+
+const struct pipe_buf_operations nosteal_pipe_buf_ops;
+
+
+#include <linux/of.h>
+
+struct property * of_find_property(const struct device_node * np,const char * name,int * lenp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+const struct fwnode_operations of_fwnode_ops;
+
+
+#include <linux/of_net.h>
+
+int of_get_mac_address(struct device_node * np,u8 * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+const char * of_prop_next_string(struct property * prop,const char * cur)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/of.h>
+
+int of_property_read_string(const struct device_node * np,const char * propname,const char ** out_string)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/highuid.h>
+
+int overflowuid;
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations page_cache_pipe_buf_ops;
+
+
+#include <linux/panic.h>
+
+void panic(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/phy.h>
+
+int phy_loopback(struct phy_device * phydev,bool enable)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+pid_t pid_vnr(struct pid * pid)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+bool poll_state_synchronize_rcu(unsigned long oldstate)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_doulongvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+void put_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int put_user_ifreq(struct ifreq * ifr,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_lock_nested(struct rq * rq,int subclass);
+void raw_spin_rq_lock_nested(struct rq * rq,int subclass)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_unlock(struct rq * rq);
+void raw_spin_rq_unlock(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_and_mutex_lock(refcount_t * r,struct mutex * lock)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_if_one(refcount_t * r)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+void refcount_warn_saturate(refcount_t * r,enum refcount_saturation_type t)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/signal.h>
+
+int send_sig(int sig,struct task_struct * p,int priv)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/fs.h>
+
+int send_sigurg(struct fown_struct * fown)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags);
+void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_offline(struct rq * rq);
+void set_rq_offline(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_online(struct rq * rq);
+void set_rq_online(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/scatterlist.h>
+
+void sg_init_one(struct scatterlist * sg,const void * buf,unsigned int buflen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single(int cpu,smp_call_func_t func,void * info,int wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single_async(int cpu,struct __call_single_data * csd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+struct socket * sock_from_file(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+bool sock_is_registered(int family)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int sock_wake_async(struct socket_wq * wq,int how,int band)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+ssize_t splice_to_pipe(struct pipe_inode_info * pipe,struct splice_pipe_desc * spd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long stack_guard_gap;
+
+
+#include <linux/rcutree.h>
+
+unsigned long start_poll_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/jump_label.h>
+
+bool static_key_initialized;
+
+
+#include <linux/mm.h>
+
+void sync_mm_rss(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/class.h>
+
+struct kobject *sysfs_dev_char_kobj;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace * task_active_pid_ns(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/clockchips.h>
+
+void tick_broadcast(const struct cpumask * mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void update_group_capacity(struct sched_domain * sd,int cpu);
+void update_group_capacity(struct sched_domain * sd,int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/timekeeper_internal.h>
+
+void update_vsyscall_tz(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 uuid_index[16] = {};
+
+
+#include <linux/mman.h>
+
+s32 vm_committed_as_batch;
+
+
+#include <linux/mm.h>
+
+int vm_insert_pages(struct vm_area_struct * vma,unsigned long addr,struct page ** pages,unsigned long * num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+bool vmalloc_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * vmalloc_huge(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/driver.h>
+
+void __init wait_for_init_devices_probe(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/wake_q.h>
+
+void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void __sched yield(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+void zap_page_range(struct vm_area_struct * vma,unsigned long start,unsigned long size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
diff --git a/repos/dde_linux/src/lib/lxip/spec/arm_v8/source.list b/repos/dde_linux/src/lib/lxip/spec/arm_v8/source.list
new file mode 100644
index 0000000000..18352ecd90
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/arm_v8/source.list
@@ -0,0 +1,155 @@
+arch/arm64/lib/csum.c
+arch/arm64/lib/memchr.S
+arch/arm64/lib/memcmp.S
+arch/arm64/lib/strchr.S
+arch/arm64/lib/strcmp.S
+arch/arm64/lib/strlen.S
+arch/arm64/lib/strncmp.S
+arch/arm64/lib/strnlen.S
+drivers/base/class.c
+drivers/net/loopback.c
+fs/nls/nls_base.c
+kernel/kthread.c
+kernel/locking/mutex.c
+kernel/locking/osq_lock.c
+kernel/locking/rwsem.c
+kernel/notifier.c
+kernel/sched/build_utility.c
+kernel/smpboot.c
+kernel/softirq.c
+kernel/time/clockevents.c
+kernel/time/clocksource.c
+kernel/time/hrtimer.c
+kernel/time/jiffies.c
+kernel/time/ntp.c
+kernel/time/tick-broadcast-hrtimer.c
+kernel/time/tick-broadcast.c
+kernel/time/tick-common.c
+kernel/time/tick-oneshot.c
+kernel/time/tick-sched.c
+kernel/time/time.c
+kernel/time/timeconv.c
+kernel/time/timecounter.c
+kernel/time/timekeeping.c
+kernel/time/timer.c
+kernel/time/timer_list.c
+kernel/workqueue.c
+lib/bitmap.c
+lib/checksum.c
+lib/ctype.c
+lib/find_bit.c
+lib/hexdump.c
+lib/hweight.c
+lib/idr.c
+lib/iov_iter.c
+lib/kasprintf.c
+lib/klist.c
+lib/kobject.c
+lib/kstrtox.c
+lib/nlattr.c
+lib/once.c
+lib/percpu_counter.c
+lib/radix-tree.c
+lib/rbtree.c
+lib/rhashtable.c
+lib/siphash.c
+lib/string.c
+lib/string_helpers.c
+lib/timerqueue.c
+lib/vsprintf.c
+lib/win_minmax.c
+lib/xarray.c
+mm/util.c
+net/core/datagram.c
+net/core/dev.c
+net/core/dev_addr_lists.c
+net/core/dev_ioctl.c
+net/core/dst.c
+net/core/dst_cache.c
+net/core/failover.c
+net/core/fib_notifier.c
+net/core/filter.c
+net/core/flow_dissector.c
+net/core/flow_offload.c
+net/core/gen_estimator.c
+net/core/gen_stats.c
+net/core/gro.c
+net/core/gro_cells.c
+net/core/link_watch.c
+net/core/neighbour.c
+net/core/net_namespace.c
+net/core/netevent.c
+net/core/request_sock.c
+net/core/rtnetlink.c
+net/core/scm.c
+net/core/secure_seq.c
+net/core/selftests.c
+net/core/skbuff.c
+net/core/sock.c
+net/core/sock_diag.c
+net/core/sock_reuseport.c
+net/core/stream.c
+net/core/tso.c
+net/core/utils.c
+net/core/xdp.c
+net/ethernet/eth.c
+net/ipv4/af_inet.c
+net/ipv4/arp.c
+net/ipv4/datagram.c
+net/ipv4/devinet.c
+net/ipv4/fib_frontend.c
+net/ipv4/fib_notifier.c
+net/ipv4/fib_semantics.c
+net/ipv4/fib_trie.c
+net/ipv4/gre_offload.c
+net/ipv4/icmp.c
+net/ipv4/igmp.c
+net/ipv4/inet_connection_sock.c
+net/ipv4/inet_diag.c
+net/ipv4/inet_fragment.c
+net/ipv4/inet_hashtables.c
+net/ipv4/inet_timewait_sock.c
+net/ipv4/inetpeer.c
+net/ipv4/ip_forward.c
+net/ipv4/ip_fragment.c
+net/ipv4/ip_input.c
+net/ipv4/ip_options.c
+net/ipv4/ip_output.c
+net/ipv4/ip_sockglue.c
+net/ipv4/ip_tunnel.c
+net/ipv4/ip_tunnel_core.c
+net/ipv4/ipconfig.c
+net/ipv4/metrics.c
+net/ipv4/netlink.c
+net/ipv4/nexthop.c
+net/ipv4/ping.c
+net/ipv4/protocol.c
+net/ipv4/raw.c
+net/ipv4/route.c
+net/ipv4/tcp.c
+net/ipv4/tcp_cong.c
+net/ipv4/tcp_cubic.c
+net/ipv4/tcp_diag.c
+net/ipv4/tcp_fastopen.c
+net/ipv4/tcp_input.c
+net/ipv4/tcp_ipv4.c
+net/ipv4/tcp_metrics.c
+net/ipv4/tcp_minisocks.c
+net/ipv4/tcp_offload.c
+net/ipv4/tcp_output.c
+net/ipv4/tcp_rate.c
+net/ipv4/tcp_recovery.c
+net/ipv4/tcp_timer.c
+net/ipv4/tcp_ulp.c
+net/ipv4/udp.c
+net/ipv4/udp_offload.c
+net/ipv4/udp_tunnel_core.c
+net/ipv4/udp_tunnel_nic.c
+net/ipv4/udp_tunnel_stub.c
+net/ipv4/udplite.c
+net/netlink/af_netlink.c
+net/netlink/genetlink.c
+net/netlink/policy.c
+net/sched/sch_frag.c
+net/sched/sch_generic.c
+net/sched/sch_mq.c
diff --git a/repos/dde_linux/src/lib/lxip/spec/x86_32/generated_dummies.c b/repos/dde_linux/src/lib/lxip/spec/x86_32/generated_dummies.c
new file mode 100644
index 0000000000..b156d6b5ef
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/x86_32/generated_dummies.c
@@ -0,0 +1,1189 @@
+/*
+ * \brief  Dummy definitions of Linux Kernel functions
+ * \author Automatically generated file - do no edit
+ * \date   2024-02-05
+ */
+
+#include <lx_emul.h>
+
+
+#include <linux/root_dev.h>
+
+dev_t ROOT_DEV;
+
+
+#include <linux/filter.h>
+
+noinline u64 __bpf_call_base(u64 r1,u64 r2,u64 r3,u64 r4,u64 r5)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void __bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cpumask.h>
+
+struct cpumask __cpu_active_mask;
+
+
+#include <linux/sched.h>
+
+char * __get_task_comm(char * buf,size_t buf_size,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/ipv6.h>
+
+int __ipv6_addr_type(const struct in6_addr * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int __mm_populate(unsigned long start,unsigned long len,int ignore_errors)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void __mmdrop(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cred.h>
+
+void __put_cred(struct cred * cred)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+void __put_task_struct(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+int __receive_fd(struct file * file,int __user * ufd,unsigned int o_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_cmsgs(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_timestamp(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_wifi_status(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_tx_timestamp(__u16 tsflags,__u8 * tx_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+pid_t __task_pid_nr_ns(struct task_struct * task,enum pid_type type,struct pid_namespace * ns)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc_node_range(unsigned long size,unsigned long align,unsigned long start,unsigned long end,gfp_t gfp_mask,pgprot_t prot,unsigned long vm_flags,int node,const void * caller)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+int _printk_deferred(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+atomic_long_t _totalram_pages;
+
+
+#include <linux/mm.h>
+
+int access_process_vm(struct task_struct * tsk,unsigned long addr,void * buf,int len,unsigned int gup_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void ack_bad_irq(unsigned int irq);
+void ack_bad_irq(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_pid_tgid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_uid_gid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_smp_processor_id_proto;
+
+
+#include <linux/filter.h>
+
+void * bpf_internal_load_pointer_neg_helper(const struct sk_buff * skb,int k,unsigned int size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_ktime_get_coarse_ns_proto;
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_alloc(unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_realloc(struct bpf_prog * fp_old,unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_select_runtime(struct bpf_prog * fp,int * err)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+void bpf_user_rnd_init_once(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/if_bridge.h>
+
+int br_ioctl_call(struct net * net,struct net_bridge * br,unsigned int cmd,struct ifreq * ifr,void __user * uarg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/security.h>
+
+int cap_settime(const struct timespec64 * ts,const struct timezone * tz)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+int check_zeroed_user(const void __user * from,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern unsigned long clear_user(void __user * to,unsigned long n);
+unsigned long clear_user(void __user * to,unsigned long n)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+long copy_from_kernel_nofault(void * dst,const void * src,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/arch_topology.h>
+
+const struct cpumask * cpu_clustergroup_mask(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations default_pipe_buf_ops;
+
+
+#include <linux/device.h>
+
+const char * dev_driver_string(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int dev_ethtool(struct net * net,struct ifreq * ifr,void __user * useraddr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * dev_fwnode(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/dev_printk.h>
+
+int dev_printk_emit(int level,const struct device * dev,const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int device_rename(struct device * dev,const char * new_name)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int devm_add_action(struct device * dev,void (* action)(void *),void * data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long do_mmap(struct file * file,unsigned long addr,unsigned long len,unsigned long prot,unsigned long flags,unsigned long pgoff,unsigned long * populate,struct list_head * uf)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+asmlinkage __visible void dump_stack(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void enter_lazy_tlb(struct mm_struct * mm,struct task_struct * tsk);
+void enter_lazy_tlb(struct mm_struct * mm,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_get_phc_vclocks(struct net_device * dev,int ** vclock_index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_op_get_ts_info(struct net_device * dev,struct ethtool_ts_info * info)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_readable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_safe_writeable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+struct file * fget_raw(unsigned int fd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/capability.h>
+
+bool file_ns_capable(const struct file * file,struct user_namespace * ns,int cap)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+struct pid * find_get_pid(pid_t nr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+struct task_struct * find_task_by_vpid(pid_t vnr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuwait.h>
+
+void finish_rcuwait(struct rcuwait * w)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+struct task_struct * __init fork_idle(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+void fput(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/user.h>
+
+void free_uid(struct user_struct * up)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+unsigned int fwnode_count_parents(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name_prefix(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * fwnode_get_nth_parent(struct fwnode_handle * fwnode,unsigned int depth)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+void fwnode_handle_put(struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+int fwnode_property_read_u8_array(const struct fwnode_handle * fwnode,const char * propname,u8 * val,size_t nval)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+struct device * get_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+unsigned long get_state_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+struct mm_struct * get_task_mm(struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int get_user_ifreq(struct ifreq * ifr,void __user ** ifrdata,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int get_user_pages_fast(unsigned long start,int nr_pages,unsigned int gup_flags,struct page ** pages)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/gfp.h>
+
+bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 guid_index[16] = {};
+
+
+#include <linux/mm.h>
+
+void * high_memory;
+
+
+#include <net/protocol.h>
+
+const struct net_offload __rcu *inet6_offloads[MAX_INET_PROTOS] = {};
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace init_pid_ns;
+
+
+#include <linux/sched.h>
+
+unsigned long init_stack[THREAD_SIZE / sizeof(unsigned long)] = {};
+
+
+#include <linux/utsname.h>
+
+struct user_namespace init_user_ns;
+
+
+#include <linux/sched.h>
+
+void __sched io_schedule(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void io_schedule_finish(int token)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+int io_schedule_prepare(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+long __sched io_schedule_timeout(long timeout)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_can_set_affinity(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_bind(struct socket * sock,struct sockaddr * addr,int addrlen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_connect(struct socket * sock,struct sockaddr * addr,int addrlen,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg(struct socket * sock,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg_locked(struct sock * sk,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage(struct socket * sock,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage_locked(struct sock * sk,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sock_shutdown(struct socket * sock,enum sock_shutdown_cmd how)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kfree_sensitive(const void * p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+int kmem_cache_alloc_bulk(struct kmem_cache * s,gfp_t flags,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_cache_free_bulk(struct kmem_cache * s,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+bool kmem_valid_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/kobject.h>
+
+int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[])
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/llist.h>
+
+bool llist_add_batch(struct llist_node * new_first,struct llist_node * new_last,struct llist_head * head)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/string.h>
+
+ssize_t memory_read_from_buffer(void * to,size_t count,loff_t * ppos,const void * from,size_t available)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_disable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_enable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mman.h>
+
+void mm_compute_batch(int overcommit_policy)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void mmput(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/maple_tree.h>
+
+void * mtree_load(struct maple_tree * mt,unsigned long index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num);
+int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void netdev_unregister_kobject(struct net_device * ndev);
+void netdev_unregister_kobject(struct net_device * ndev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pipe_fs_i.h>
+
+const struct pipe_buf_operations nosteal_pipe_buf_ops;
+
+
+#include <linux/highuid.h>
+
+int overflowuid;
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations page_cache_pipe_buf_ops;
+
+
+#include <linux/panic.h>
+
+void panic(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/phy.h>
+
+int phy_loopback(struct phy_device * phydev,bool enable)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+pid_t pid_vnr(struct pid * pid)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+bool poll_state_synchronize_rcu(unsigned long oldstate)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_doulongvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+void put_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int put_user_ifreq(struct ifreq * ifr,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_lock_nested(struct rq * rq,int subclass);
+void raw_spin_rq_lock_nested(struct rq * rq,int subclass)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_unlock(struct rq * rq);
+void raw_spin_rq_unlock(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_and_mutex_lock(refcount_t * r,struct mutex * lock)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_if_one(refcount_t * r)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+void refcount_warn_saturate(refcount_t * r,enum refcount_saturation_type t)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/signal.h>
+
+int send_sig(int sig,struct task_struct * p,int priv)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/fs.h>
+
+int send_sigurg(struct fown_struct * fown)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags);
+void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_offline(struct rq * rq);
+void set_rq_offline(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_online(struct rq * rq);
+void set_rq_online(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single(int cpu,smp_call_func_t func,void * info,int wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single_async(int cpu,struct __call_single_data * csd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+struct socket * sock_from_file(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+bool sock_is_registered(int family)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int sock_wake_async(struct socket_wq * wq,int how,int band)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+ssize_t splice_to_pipe(struct pipe_inode_info * pipe,struct splice_pipe_desc * spd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+unsigned long start_poll_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/jump_label.h>
+
+bool static_key_initialized;
+
+
+extern void switch_mm_irqs_off(struct mm_struct * prev,struct mm_struct * next,struct task_struct * tsk);
+void switch_mm_irqs_off(struct mm_struct * prev,struct mm_struct * next,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+void sync_mm_rss(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/class.h>
+
+struct kobject *sysfs_dev_char_kobj;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace * task_active_pid_ns(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void update_group_capacity(struct sched_domain * sd,int cpu);
+void update_group_capacity(struct sched_domain * sd,int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/timekeeper_internal.h>
+
+void update_vsyscall_tz(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 uuid_index[16] = {};
+
+
+#include <linux/mman.h>
+
+s32 vm_committed_as_batch;
+
+
+#include <linux/mm.h>
+
+int vm_insert_pages(struct vm_area_struct * vma,unsigned long addr,struct page ** pages,unsigned long * num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+bool vmalloc_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * vmalloc_huge(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/driver.h>
+
+void __init wait_for_init_devices_probe(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/wake_q.h>
+
+void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void __sched yield(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+void zap_page_range(struct vm_area_struct * vma,unsigned long start,unsigned long size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
diff --git a/repos/dde_linux/src/lib/lxip/spec/x86_32/source.list b/repos/dde_linux/src/lib/lxip/spec/x86_32/source.list
new file mode 100644
index 0000000000..065d9096d5
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/x86_32/source.list
@@ -0,0 +1,147 @@
+arch/x86/lib/checksum_32.S
+arch/x86/lib/hweight.S
+drivers/base/class.c
+drivers/net/loopback.c
+fs/nls/nls_base.c
+kernel/kthread.c
+kernel/locking/mutex.c
+kernel/locking/osq_lock.c
+kernel/locking/rwsem.c
+kernel/notifier.c
+kernel/sched/build_utility.c
+kernel/smpboot.c
+kernel/softirq.c
+kernel/time/clockevents.c
+kernel/time/clocksource.c
+kernel/time/hrtimer.c
+kernel/time/jiffies.c
+kernel/time/ntp.c
+kernel/time/tick-broadcast.c
+kernel/time/tick-common.c
+kernel/time/tick-oneshot.c
+kernel/time/tick-sched.c
+kernel/time/time.c
+kernel/time/timeconv.c
+kernel/time/timecounter.c
+kernel/time/timekeeping.c
+kernel/time/timer.c
+kernel/time/timer_list.c
+kernel/workqueue.c
+lib/bitmap.c
+lib/ctype.c
+lib/find_bit.c
+lib/hexdump.c
+lib/idr.c
+lib/iov_iter.c
+lib/kasprintf.c
+lib/klist.c
+lib/kobject.c
+lib/kstrtox.c
+lib/math/div64.c
+lib/nlattr.c
+lib/once.c
+lib/percpu_counter.c
+lib/radix-tree.c
+lib/rbtree.c
+lib/rhashtable.c
+lib/siphash.c
+lib/string.c
+lib/string_helpers.c
+lib/timerqueue.c
+lib/vsprintf.c
+lib/win_minmax.c
+lib/xarray.c
+mm/util.c
+net/core/datagram.c
+net/core/dev.c
+net/core/dev_addr_lists.c
+net/core/dev_ioctl.c
+net/core/dst.c
+net/core/dst_cache.c
+net/core/failover.c
+net/core/fib_notifier.c
+net/core/filter.c
+net/core/flow_dissector.c
+net/core/flow_offload.c
+net/core/gen_estimator.c
+net/core/gen_stats.c
+net/core/gro.c
+net/core/gro_cells.c
+net/core/link_watch.c
+net/core/neighbour.c
+net/core/net_namespace.c
+net/core/netevent.c
+net/core/request_sock.c
+net/core/rtnetlink.c
+net/core/scm.c
+net/core/secure_seq.c
+net/core/selftests.c
+net/core/skbuff.c
+net/core/sock.c
+net/core/sock_diag.c
+net/core/sock_reuseport.c
+net/core/stream.c
+net/core/tso.c
+net/core/utils.c
+net/core/xdp.c
+net/ethernet/eth.c
+net/ipv4/af_inet.c
+net/ipv4/arp.c
+net/ipv4/datagram.c
+net/ipv4/devinet.c
+net/ipv4/fib_frontend.c
+net/ipv4/fib_notifier.c
+net/ipv4/fib_semantics.c
+net/ipv4/fib_trie.c
+net/ipv4/gre_offload.c
+net/ipv4/icmp.c
+net/ipv4/igmp.c
+net/ipv4/inet_connection_sock.c
+net/ipv4/inet_diag.c
+net/ipv4/inet_fragment.c
+net/ipv4/inet_hashtables.c
+net/ipv4/inet_timewait_sock.c
+net/ipv4/inetpeer.c
+net/ipv4/ip_forward.c
+net/ipv4/ip_fragment.c
+net/ipv4/ip_input.c
+net/ipv4/ip_options.c
+net/ipv4/ip_output.c
+net/ipv4/ip_sockglue.c
+net/ipv4/ip_tunnel.c
+net/ipv4/ip_tunnel_core.c
+net/ipv4/ipconfig.c
+net/ipv4/metrics.c
+net/ipv4/netlink.c
+net/ipv4/nexthop.c
+net/ipv4/ping.c
+net/ipv4/protocol.c
+net/ipv4/raw.c
+net/ipv4/route.c
+net/ipv4/tcp.c
+net/ipv4/tcp_cong.c
+net/ipv4/tcp_cubic.c
+net/ipv4/tcp_diag.c
+net/ipv4/tcp_fastopen.c
+net/ipv4/tcp_input.c
+net/ipv4/tcp_ipv4.c
+net/ipv4/tcp_metrics.c
+net/ipv4/tcp_minisocks.c
+net/ipv4/tcp_offload.c
+net/ipv4/tcp_output.c
+net/ipv4/tcp_rate.c
+net/ipv4/tcp_recovery.c
+net/ipv4/tcp_timer.c
+net/ipv4/tcp_ulp.c
+net/ipv4/udp.c
+net/ipv4/udp_offload.c
+net/ipv4/udp_tunnel_core.c
+net/ipv4/udp_tunnel_nic.c
+net/ipv4/udp_tunnel_stub.c
+net/ipv4/udplite.c
+net/netlink/af_netlink.c
+net/netlink/genetlink.c
+net/netlink/policy.c
+net/sched/sch_frag.c
+net/sched/sch_generic.c
+net/sched/sch_mq.c
diff --git a/repos/dde_linux/src/lib/lxip/spec/x86_64/generated_dummies.c b/repos/dde_linux/src/lib/lxip/spec/x86_64/generated_dummies.c
new file mode 100644
index 0000000000..5e8bab2d9d
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/x86_64/generated_dummies.c
@@ -0,0 +1,1208 @@
+/*
+ * \brief  Dummy definitions of Linux Kernel functions
+ * \author Automatically generated file - do no edit
+ * \date   2024-01-24
+ */
+
+#include <lx_emul.h>
+
+
+extern unsigned long KSTK_ESP(struct task_struct * task);
+unsigned long KSTK_ESP(struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/root_dev.h>
+
+dev_t ROOT_DEV;
+
+
+#include <linux/filter.h>
+
+noinline u64 __bpf_call_base(u64 r1,u64 r2,u64 r3,u64 r4,u64 r5)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void __bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cpumask.h>
+
+struct cpumask __cpu_active_mask;
+
+
+#include <linux/sched.h>
+
+char * __get_task_comm(char * buf,size_t buf_size,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/ipv6.h>
+
+int __ipv6_addr_type(const struct in6_addr * addr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void __memcpy_flushcache(void * _dst,const void * _src,size_t size);
+void __memcpy_flushcache(void * _dst,const void * _src,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int __mm_populate(unsigned long start,unsigned long len,int ignore_errors)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void __mmdrop(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+void __printk_safe_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/cred.h>
+
+void __put_cred(struct cred * cred)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+void __put_task_struct(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+int __receive_fd(struct file * file,int __user * ufd,unsigned int o_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_cmsgs(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_timestamp(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_recv_wifi_status(struct msghdr * msg,struct sock * sk,struct sk_buff * skb)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <net/sock.h>
+
+void __sock_tx_timestamp(__u16 tsflags,__u8 * tx_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+pid_t __task_pid_nr_ns(struct task_struct * task,enum pid_type type,struct pid_namespace * ns)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * __vmalloc_node_range(unsigned long size,unsigned long align,unsigned long start,unsigned long end,gfp_t gfp_mask,pgprot_t prot,unsigned long vm_flags,int node,const void * caller)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+int _printk_deferred(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+atomic_long_t _totalram_pages;
+
+
+#include <linux/mm.h>
+
+int access_process_vm(struct task_struct * tsk,unsigned long addr,void * buf,int len,unsigned int gup_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void ack_bad_irq(unsigned int irq);
+void ack_bad_irq(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_pid_tgid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_current_uid_gid_proto;
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_get_smp_processor_id_proto;
+
+
+#include <linux/filter.h>
+
+void * bpf_internal_load_pointer_neg_helper(const struct sk_buff * skb,int k,unsigned int size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+const struct bpf_func_proto bpf_ktime_get_coarse_ns_proto;
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_alloc(unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+void bpf_prog_free(struct bpf_prog * fp)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_realloc(struct bpf_prog * fp_old,unsigned int size,gfp_t gfp_extra_flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/filter.h>
+
+struct bpf_prog * bpf_prog_select_runtime(struct bpf_prog * fp,int * err)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/bpf.h>
+
+void bpf_user_rnd_init_once(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/if_bridge.h>
+
+int br_ioctl_call(struct net * net,struct net_bridge * br,unsigned int cmd,struct ifreq * ifr,void __user * uarg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/security.h>
+
+int cap_settime(const struct timespec64 * ts,const struct timezone * tz)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+int check_zeroed_user(const void __user * from,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uaccess.h>
+
+long copy_from_kernel_nofault(void * dst,const void * src,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern unsigned long __must_check copy_mc_to_kernel(void * dst,const void * src,unsigned len);
+unsigned long __must_check copy_mc_to_kernel(void * dst,const void * src,unsigned len)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern unsigned long __must_check copy_mc_to_user(void * dst,const void * src,unsigned len);
+unsigned long __must_check copy_mc_to_user(void * dst,const void * src,unsigned len)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/arch_topology.h>
+
+const struct cpumask * cpu_clustergroup_mask(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_enter(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/context_tracking_irq.h>
+
+noinstr void ct_irq_exit(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations default_pipe_buf_ops;
+
+
+#include <linux/device.h>
+
+const char * dev_driver_string(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int dev_ethtool(struct net * net,struct ifreq * ifr,void __user * useraddr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * dev_fwnode(const struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/dev_printk.h>
+
+int dev_printk_emit(int level,const struct device * dev,const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int device_rename(struct device * dev,const char * new_name)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+int devm_add_action(struct device * dev,void (* action)(void *),void * data)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+unsigned long do_mmap(struct file * file,unsigned long addr,unsigned long len,unsigned long prot,unsigned long flags,unsigned long pgoff,unsigned long * populate,struct list_head * uf)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/restart_block.h>
+
+long do_no_restart_syscall(struct restart_block * param)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/printk.h>
+
+asmlinkage __visible void dump_stack(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void enter_lazy_tlb(struct mm_struct * mm,struct task_struct * tsk);
+void enter_lazy_tlb(struct mm_struct * mm,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_get_phc_vclocks(struct net_device * dev,int ** vclock_index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/ethtool.h>
+
+int ethtool_op_get_ts_info(struct net_device * dev,struct ethtool_ts_info * info)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_readable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pagemap.h>
+
+size_t fault_in_safe_writeable(const char __user * uaddr,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+struct file * fget_raw(unsigned int fd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/capability.h>
+
+bool file_ns_capable(const struct file * file,struct user_namespace * ns,int cap)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+struct pid * find_get_pid(pid_t nr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+struct task_struct * find_task_by_vpid(pid_t vnr)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcuwait.h>
+
+void finish_rcuwait(struct rcuwait * w)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/task.h>
+
+struct task_struct * __init fork_idle(int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/file.h>
+
+void fput(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/user.h>
+
+void free_uid(struct user_struct * up)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+unsigned int fwnode_count_parents(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+const char * fwnode_get_name_prefix(const struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+struct fwnode_handle * fwnode_get_nth_parent(struct fwnode_handle * fwnode,unsigned int depth)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+void fwnode_handle_put(struct fwnode_handle * fwnode)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/property.h>
+
+int fwnode_property_read_u8_array(const struct fwnode_handle * fwnode,const char * propname,u8 * val,size_t nval)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+struct device * get_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+unsigned long get_state_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+struct mm_struct * get_task_mm(struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int get_user_ifreq(struct ifreq * ifr,void __user ** ifrdata,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+int get_user_pages_fast(unsigned long start,int nr_pages,unsigned int gup_flags,struct page ** pages)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/gfp.h>
+
+bool gfp_pfmemalloc_allowed(gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 guid_index[16] = {};
+
+
+#include <net/protocol.h>
+
+const struct net_offload __rcu *inet6_offloads[MAX_INET_PROTOS] = {};
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace init_pid_ns;
+
+
+#include <linux/utsname.h>
+
+struct user_namespace init_user_ns;
+
+
+#include <linux/sched.h>
+
+void __sched io_schedule(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void io_schedule_finish(int token)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+int io_schedule_prepare(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+long __sched io_schedule_timeout(long timeout)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_can_set_affinity(unsigned int irq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/interrupt.h>
+
+int irq_set_affinity(unsigned int irq,const struct cpumask * cpumask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_bind(struct socket * sock,struct sockaddr * addr,int addrlen)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_connect(struct socket * sock,struct sockaddr * addr,int addrlen,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg(struct socket * sock,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendmsg_locked(struct sock * sk,struct msghdr * msg,struct kvec * vec,size_t num,size_t size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage(struct socket * sock,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sendpage_locked(struct sock * sk,struct page * page,int offset,size_t size,int flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int kernel_sock_shutdown(struct socket * sock,enum sock_shutdown_cmd how)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kfree_sensitive(const void * p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+int kmem_cache_alloc_bulk(struct kmem_cache * s,gfp_t flags,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void * kmem_cache_alloc_lru(struct kmem_cache * cachep,struct list_lru * lru,gfp_t flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_cache_free_bulk(struct kmem_cache * s,size_t nr,void ** p)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+void kmem_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/slab.h>
+
+bool kmem_valid_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/kobject.h>
+
+int kobject_uevent_env(struct kobject * kobj,enum kobject_action action,char * envp_ext[])
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/llist.h>
+
+bool llist_add_batch(struct llist_node * new_first,struct llist_node * new_last,struct llist_head * head)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/string.h>
+
+ssize_t memory_read_from_buffer(void * to,size_t count,loff_t * ppos,const void * from,size_t available)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_disable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/preempt.h>
+
+void migrate_enable(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mman.h>
+
+void mm_compute_batch(int overcommit_policy)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/mm.h>
+
+void mmput(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/maple_tree.h>
+
+void * mtree_load(struct maple_tree * mt,unsigned long index)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num);
+int netdev_queue_update_kobjects(struct net_device * dev,int old_num,int new_num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void netdev_unregister_kobject(struct net_device * ndev);
+void netdev_unregister_kobject(struct net_device * ndev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pipe_fs_i.h>
+
+const struct pipe_buf_operations nosteal_pipe_buf_ops;
+
+
+#include <linux/highuid.h>
+
+int overflowuid;
+
+
+#include <linux/splice.h>
+
+const struct pipe_buf_operations page_cache_pipe_buf_ops;
+
+
+#include <linux/panic.h>
+
+void panic(const char * fmt,...)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/phy.h>
+
+int phy_loopback(struct phy_device * phydev,bool enable)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/pid.h>
+
+pid_t pid_vnr(struct pid * pid)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+bool poll_state_synchronize_rcu(unsigned long oldstate)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_dointvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sysctl.h>
+
+int proc_doulongvec_minmax(struct ctl_table * table,int write,void * buffer,size_t * lenp,loff_t * ppos)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device.h>
+
+void put_device(struct device * dev)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/netdevice.h>
+
+int put_user_ifreq(struct ifreq * ifr,void __user * arg)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_lock_nested(struct rq * rq,int subclass);
+void raw_spin_rq_lock_nested(struct rq * rq,int subclass)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void raw_spin_rq_unlock(struct rq * rq);
+void raw_spin_rq_unlock(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_and_mutex_lock(refcount_t * r,struct mutex * lock)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+bool refcount_dec_if_one(refcount_t * r)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/refcount.h>
+
+void refcount_warn_saturate(refcount_t * r,enum refcount_saturation_type t)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/signal.h>
+
+int send_sig(int sig,struct task_struct * p,int priv)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/fs.h>
+
+int send_sigurg(struct fown_struct * fown)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags);
+void set_cpus_allowed_common(struct task_struct * p,const struct cpumask * new_mask,u32 flags)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_offline(struct rq * rq);
+void set_rq_offline(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void set_rq_online(struct rq * rq);
+void set_rq_online(struct rq * rq)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+void smp_call_function_many(const struct cpumask * mask,smp_call_func_t func,void * info,bool wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single(int cpu,smp_call_func_t func,void * info,int wait)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/smp.h>
+
+int smp_call_function_single_async(int cpu,struct __call_single_data * csd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+struct socket * sock_from_file(struct file * file)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+bool sock_is_registered(int family)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/net.h>
+
+int sock_wake_async(struct socket_wq * wq,int how,int band)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/splice.h>
+
+ssize_t splice_to_pipe(struct pipe_inode_info * pipe,struct splice_pipe_desc * spd)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/rcutree.h>
+
+unsigned long start_poll_synchronize_rcu(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/jump_label.h>
+
+bool static_key_initialized;
+
+
+extern void switch_mm_irqs_off(struct mm_struct * prev,struct mm_struct * next,struct task_struct * tsk);
+void switch_mm_irqs_off(struct mm_struct * prev,struct mm_struct * next,struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+void sync_mm_rss(struct mm_struct * mm)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/class.h>
+
+struct kobject *sysfs_dev_char_kobj;
+
+
+#include <linux/pid_namespace.h>
+
+struct pid_namespace * task_active_pid_ns(struct task_struct * tsk)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+extern void update_group_capacity(struct sched_domain * sd,int cpu);
+void update_group_capacity(struct sched_domain * sd,int cpu)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/timekeeper_internal.h>
+
+void update_vsyscall_tz(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/uuid.h>
+
+const u8 uuid_index[16] = {};
+
+
+#include <linux/mman.h>
+
+s32 vm_committed_as_batch;
+
+
+#include <linux/mm.h>
+
+int vm_insert_pages(struct vm_area_struct * vma,unsigned long addr,struct page ** pages,unsigned long * num)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+bool vmalloc_dump_obj(void * object)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/vmalloc.h>
+
+void * vmalloc_huge(unsigned long size,gfp_t gfp_mask)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/device/driver.h>
+
+void __init wait_for_init_devices_probe(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched/wake_q.h>
+
+void wake_q_add_safe(struct wake_q_head * head,struct task_struct * task)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/sched.h>
+
+void __sched yield(void)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
+
+#include <linux/mm.h>
+
+void zap_page_range(struct vm_area_struct * vma,unsigned long start,unsigned long size)
+{
+	lx_emul_trace_and_stop(__func__);
+}
+
diff --git a/repos/dde_linux/src/lib/lxip/spec/x86_64/source.list b/repos/dde_linux/src/lib/lxip/spec/x86_64/source.list
new file mode 100644
index 0000000000..2feb99ee0b
--- /dev/null
+++ b/repos/dde_linux/src/lib/lxip/spec/x86_64/source.list
@@ -0,0 +1,148 @@
+arch/x86/lib/csum-copy_64.S
+arch/x86/lib/csum-partial_64.c
+arch/x86/lib/csum-wrappers_64.c
+arch/x86/lib/hweight.S
+drivers/base/class.c
+drivers/net/loopback.c
+fs/nls/nls_base.c
+kernel/kthread.c
+kernel/locking/mutex.c
+kernel/locking/osq_lock.c
+kernel/locking/rwsem.c
+kernel/notifier.c
+kernel/sched/build_utility.c
+kernel/smpboot.c
+kernel/softirq.c
+kernel/time/clockevents.c
+kernel/time/clocksource.c
+kernel/time/hrtimer.c
+kernel/time/jiffies.c
+kernel/time/ntp.c
+kernel/time/tick-broadcast.c
+kernel/time/tick-common.c
+kernel/time/tick-oneshot.c
+kernel/time/tick-sched.c
+kernel/time/time.c
+kernel/time/timeconv.c
+kernel/time/timecounter.c
+kernel/time/timekeeping.c
+kernel/time/timer.c
+kernel/time/timer_list.c
+kernel/workqueue.c
+lib/bitmap.c
+lib/ctype.c
+lib/find_bit.c
+lib/hexdump.c
+lib/idr.c
+lib/iov_iter.c
+lib/kasprintf.c
+lib/klist.c
+lib/kobject.c
+lib/kstrtox.c
+lib/nlattr.c
+lib/once.c
+lib/percpu_counter.c
+lib/radix-tree.c
+lib/rbtree.c
+lib/rhashtable.c
+lib/siphash.c
+lib/string.c
+lib/string_helpers.c
+lib/timerqueue.c
+lib/vsprintf.c
+lib/win_minmax.c
+lib/xarray.c
+mm/util.c
+net/core/datagram.c
+net/core/dev.c
+net/core/dev_addr_lists.c
+net/core/dev_ioctl.c
+net/core/dst.c
+net/core/dst_cache.c
+net/core/failover.c
+net/core/fib_notifier.c
+net/core/filter.c
+net/core/flow_dissector.c
+net/core/flow_offload.c
+net/core/gen_estimator.c
+net/core/gen_stats.c
+net/core/gro.c
+net/core/gro_cells.c
+net/core/link_watch.c
+net/core/neighbour.c
+net/core/net_namespace.c
+net/core/netevent.c
+net/core/request_sock.c
+net/core/rtnetlink.c
+net/core/scm.c
+net/core/secure_seq.c
+net/core/selftests.c
+net/core/skbuff.c
+net/core/sock.c
+net/core/sock_diag.c
+net/core/sock_reuseport.c
+net/core/stream.c
+net/core/tso.c
+net/core/utils.c
+net/core/xdp.c
+net/ethernet/eth.c
+net/ipv4/af_inet.c
+net/ipv4/arp.c
+net/ipv4/datagram.c
+net/ipv4/devinet.c
+net/ipv4/fib_frontend.c
+net/ipv4/fib_notifier.c
+net/ipv4/fib_semantics.c
+net/ipv4/fib_trie.c
+net/ipv4/gre_offload.c
+net/ipv4/icmp.c
+net/ipv4/igmp.c
+net/ipv4/inet_connection_sock.c
+net/ipv4/inet_diag.c
+net/ipv4/inet_fragment.c
+net/ipv4/inet_hashtables.c
+net/ipv4/inet_timewait_sock.c
+net/ipv4/inetpeer.c
+net/ipv4/ip_forward.c
+net/ipv4/ip_fragment.c
+net/ipv4/ip_input.c
+net/ipv4/ip_options.c
+net/ipv4/ip_output.c
+net/ipv4/ip_sockglue.c
+net/ipv4/ip_tunnel.c
+net/ipv4/ip_tunnel_core.c
+net/ipv4/ipconfig.c
+net/ipv4/metrics.c
+net/ipv4/netlink.c
+net/ipv4/nexthop.c
+net/ipv4/ping.c
+net/ipv4/protocol.c
+net/ipv4/raw.c
+net/ipv4/route.c
+net/ipv4/tcp.c
+net/ipv4/tcp_cong.c
+net/ipv4/tcp_cubic.c
+net/ipv4/tcp_diag.c
+net/ipv4/tcp_fastopen.c
+net/ipv4/tcp_input.c
+net/ipv4/tcp_ipv4.c
+net/ipv4/tcp_metrics.c
+net/ipv4/tcp_minisocks.c
+net/ipv4/tcp_offload.c
+net/ipv4/tcp_output.c
+net/ipv4/tcp_rate.c
+net/ipv4/tcp_recovery.c
+net/ipv4/tcp_timer.c
+net/ipv4/tcp_ulp.c
+net/ipv4/udp.c
+net/ipv4/udp_offload.c
+net/ipv4/udp_tunnel_core.c
+net/ipv4/udp_tunnel_nic.c
+net/ipv4/udp_tunnel_stub.c
+net/ipv4/udplite.c
+net/netlink/af_netlink.c
+net/netlink/genetlink.c
+net/netlink/policy.c
+net/sched/sch_frag.c
+net/sched/sch_generic.c
+net/sched/sch_mq.c