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