1
This commit is contained in:
361
linux_kernel/.msg.o.d
Normal file
361
linux_kernel/.msg.o.d
Normal file
@@ -0,0 +1,361 @@
|
||||
msg.o: /home/duck/project/linux_kernel/msg.c \
|
||||
include/linux/compiler-version.h include/linux/kconfig.h \
|
||||
include/generated/autoconf.h include/linux/compiler_types.h \
|
||||
include/linux/compiler_attributes.h include/linux/compiler-gcc.h \
|
||||
/home/duck/project/linux_kernel/head.h include/linux/init.h \
|
||||
include/linux/compiler.h include/linux/compiler_types.h \
|
||||
arch/x86/include/generated/asm/rwonce.h include/asm-generic/rwonce.h \
|
||||
include/linux/kasan-checks.h include/linux/types.h \
|
||||
include/uapi/linux/types.h arch/x86/include/generated/uapi/asm/types.h \
|
||||
include/uapi/asm-generic/types.h include/asm-generic/int-ll64.h \
|
||||
include/uapi/asm-generic/int-ll64.h \
|
||||
arch/x86/include/uapi/asm/bitsperlong.h \
|
||||
include/asm-generic/bitsperlong.h include/uapi/asm-generic/bitsperlong.h \
|
||||
include/uapi/linux/posix_types.h include/linux/stddef.h \
|
||||
include/uapi/linux/stddef.h arch/x86/include/asm/posix_types.h \
|
||||
arch/x86/include/uapi/asm/posix_types_64.h \
|
||||
include/uapi/asm-generic/posix_types.h include/linux/kcsan-checks.h \
|
||||
include/linux/sched.h include/uapi/linux/sched.h \
|
||||
arch/x86/include/asm/current.h arch/x86/include/asm/percpu.h \
|
||||
include/linux/kernel.h include/linux/stdarg.h include/linux/align.h \
|
||||
include/linux/const.h include/vdso/const.h include/uapi/linux/const.h \
|
||||
include/linux/limits.h include/uapi/linux/limits.h include/vdso/limits.h \
|
||||
include/linux/linkage.h include/linux/stringify.h include/linux/export.h \
|
||||
arch/x86/include/asm/linkage.h arch/x86/include/asm/ibt.h \
|
||||
include/linux/container_of.h include/linux/build_bug.h \
|
||||
include/linux/err.h arch/x86/include/generated/uapi/asm/errno.h \
|
||||
include/uapi/asm-generic/errno.h include/uapi/asm-generic/errno-base.h \
|
||||
include/linux/bitops.h include/linux/bits.h include/vdso/bits.h \
|
||||
include/linux/typecheck.h include/uapi/linux/kernel.h \
|
||||
include/uapi/linux/sysinfo.h arch/x86/include/asm/bitops.h \
|
||||
arch/x86/include/asm/alternative.h arch/x86/include/asm/asm.h \
|
||||
arch/x86/include/asm/extable_fixup_types.h arch/x86/include/asm/rmwcc.h \
|
||||
arch/x86/include/asm/barrier.h arch/x86/include/asm/nops.h \
|
||||
include/asm-generic/barrier.h include/asm-generic/bitops/sched.h \
|
||||
arch/x86/include/asm/arch_hweight.h arch/x86/include/asm/cpufeatures.h \
|
||||
arch/x86/include/asm/required-features.h \
|
||||
arch/x86/include/asm/disabled-features.h \
|
||||
include/asm-generic/bitops/const_hweight.h \
|
||||
include/asm-generic/bitops/instrumented-atomic.h \
|
||||
include/linux/instrumented.h \
|
||||
include/asm-generic/bitops/instrumented-non-atomic.h \
|
||||
include/asm-generic/bitops/instrumented-lock.h \
|
||||
include/asm-generic/bitops/le.h arch/x86/include/uapi/asm/byteorder.h \
|
||||
include/linux/byteorder/little_endian.h \
|
||||
include/uapi/linux/byteorder/little_endian.h include/linux/swab.h \
|
||||
include/uapi/linux/swab.h arch/x86/include/uapi/asm/swab.h \
|
||||
include/linux/byteorder/generic.h \
|
||||
include/asm-generic/bitops/ext2-atomic-setbit.h include/linux/kstrtox.h \
|
||||
include/linux/log2.h include/linux/math.h arch/x86/include/asm/div64.h \
|
||||
include/asm-generic/div64.h include/linux/minmax.h include/linux/panic.h \
|
||||
include/linux/printk.h include/linux/kern_levels.h \
|
||||
include/linux/ratelimit_types.h include/uapi/linux/param.h \
|
||||
arch/x86/include/generated/uapi/asm/param.h include/asm-generic/param.h \
|
||||
include/uapi/asm-generic/param.h include/linux/spinlock_types_raw.h \
|
||||
arch/x86/include/asm/spinlock_types.h \
|
||||
include/asm-generic/qspinlock_types.h \
|
||||
include/asm-generic/qrwlock_types.h include/linux/lockdep_types.h \
|
||||
include/linux/once_lite.h include/linux/dynamic_debug.h \
|
||||
include/linux/jump_label.h arch/x86/include/asm/jump_label.h \
|
||||
include/linux/static_call_types.h include/linux/instruction_pointer.h \
|
||||
include/asm-generic/percpu.h include/linux/threads.h \
|
||||
include/linux/percpu-defs.h include/linux/pid.h include/linux/rculist.h \
|
||||
include/linux/list.h include/linux/poison.h include/linux/rcupdate.h \
|
||||
include/linux/atomic.h arch/x86/include/asm/atomic.h \
|
||||
arch/x86/include/asm/cmpxchg.h arch/x86/include/asm/cmpxchg_64.h \
|
||||
arch/x86/include/asm/atomic64_64.h \
|
||||
include/linux/atomic/atomic-arch-fallback.h \
|
||||
include/linux/atomic/atomic-long.h \
|
||||
include/linux/atomic/atomic-instrumented.h include/linux/irqflags.h \
|
||||
arch/x86/include/asm/irqflags.h arch/x86/include/asm/processor-flags.h \
|
||||
arch/x86/include/uapi/asm/processor-flags.h include/linux/mem_encrypt.h \
|
||||
arch/x86/include/asm/mem_encrypt.h include/linux/cc_platform.h \
|
||||
arch/x86/include/uapi/asm/bootparam.h include/linux/screen_info.h \
|
||||
include/uapi/linux/screen_info.h include/linux/apm_bios.h \
|
||||
include/uapi/linux/apm_bios.h include/uapi/linux/ioctl.h \
|
||||
arch/x86/include/generated/uapi/asm/ioctl.h include/asm-generic/ioctl.h \
|
||||
include/uapi/asm-generic/ioctl.h include/linux/edd.h \
|
||||
include/uapi/linux/edd.h arch/x86/include/asm/ist.h \
|
||||
arch/x86/include/uapi/asm/ist.h include/video/edid.h \
|
||||
include/uapi/video/edid.h arch/x86/include/asm/nospec-branch.h \
|
||||
include/linux/static_key.h include/linux/objtool.h \
|
||||
arch/x86/include/asm/msr-index.h arch/x86/include/asm/unwind_hints.h \
|
||||
arch/x86/include/asm/orc_types.h arch/x86/include/asm/GEN-for-each-reg.h \
|
||||
arch/x86/include/asm/segment.h arch/x86/include/asm/cache.h \
|
||||
arch/x86/include/asm/paravirt.h arch/x86/include/asm/pgtable_types.h \
|
||||
arch/x86/include/asm/page_types.h arch/x86/include/asm/page_64_types.h \
|
||||
arch/x86/include/asm/kaslr.h arch/x86/include/asm/pgtable_64_types.h \
|
||||
arch/x86/include/asm/sparsemem.h arch/x86/include/asm/paravirt_types.h \
|
||||
arch/x86/include/asm/desc_defs.h include/linux/bug.h \
|
||||
arch/x86/include/asm/bug.h include/linux/instrumentation.h \
|
||||
include/asm-generic/bug.h include/linux/cpumask.h include/linux/bitmap.h \
|
||||
include/linux/find.h include/linux/string.h include/linux/errno.h \
|
||||
include/uapi/linux/errno.h include/uapi/linux/string.h \
|
||||
arch/x86/include/asm/string.h arch/x86/include/asm/string_64.h \
|
||||
include/linux/fortify-string.h arch/x86/include/asm/frame.h \
|
||||
include/linux/preempt.h arch/x86/include/asm/preempt.h \
|
||||
include/linux/thread_info.h include/linux/restart_block.h \
|
||||
include/linux/time64.h include/linux/math64.h include/vdso/math64.h \
|
||||
include/vdso/time64.h include/uapi/linux/time.h \
|
||||
include/uapi/linux/time_types.h arch/x86/include/asm/thread_info.h \
|
||||
arch/x86/include/asm/page.h arch/x86/include/asm/page_64.h \
|
||||
include/linux/range.h include/asm-generic/memory_model.h \
|
||||
include/linux/pfn.h include/asm-generic/getorder.h \
|
||||
arch/x86/include/asm/cpufeature.h arch/x86/include/asm/processor.h \
|
||||
arch/x86/include/asm/math_emu.h arch/x86/include/asm/ptrace.h \
|
||||
arch/x86/include/uapi/asm/ptrace.h \
|
||||
arch/x86/include/uapi/asm/ptrace-abi.h arch/x86/include/asm/proto.h \
|
||||
arch/x86/include/uapi/asm/ldt.h arch/x86/include/uapi/asm/sigcontext.h \
|
||||
arch/x86/include/asm/msr.h arch/x86/include/asm/msr-index.h \
|
||||
arch/x86/include/asm/cpumask.h arch/x86/include/uapi/asm/msr.h \
|
||||
arch/x86/include/asm/shared/msr.h include/linux/tracepoint-defs.h \
|
||||
arch/x86/include/asm/special_insns.h arch/x86/include/asm/fpu/types.h \
|
||||
arch/x86/include/asm/vmxfeatures.h arch/x86/include/asm/vdso/processor.h \
|
||||
include/linux/personality.h include/uapi/linux/personality.h \
|
||||
include/linux/cache.h include/linux/bottom_half.h \
|
||||
include/linux/lockdep.h include/linux/smp.h include/linux/smp_types.h \
|
||||
include/linux/llist.h arch/x86/include/asm/smp.h include/linux/rcutree.h \
|
||||
include/linux/wait.h include/linux/spinlock.h \
|
||||
arch/x86/include/generated/asm/mmiowb.h include/asm-generic/mmiowb.h \
|
||||
include/linux/spinlock_types.h include/linux/rwlock_types.h \
|
||||
arch/x86/include/asm/spinlock.h arch/x86/include/asm/qspinlock.h \
|
||||
include/asm-generic/qspinlock.h arch/x86/include/asm/qrwlock.h \
|
||||
include/asm-generic/qrwlock.h include/linux/rwlock.h \
|
||||
include/linux/spinlock_api_smp.h include/linux/rwlock_api_smp.h \
|
||||
include/uapi/linux/wait.h include/linux/refcount.h include/linux/sem.h \
|
||||
include/uapi/linux/sem.h include/linux/ipc.h include/linux/uidgid.h \
|
||||
include/linux/highuid.h include/linux/rhashtable-types.h \
|
||||
include/linux/mutex.h include/linux/osq_lock.h \
|
||||
include/linux/debug_locks.h include/linux/workqueue.h \
|
||||
include/linux/timer.h include/linux/ktime.h include/linux/time.h \
|
||||
include/linux/time32.h include/linux/timex.h include/uapi/linux/timex.h \
|
||||
arch/x86/include/asm/timex.h arch/x86/include/asm/tsc.h \
|
||||
include/vdso/time32.h include/vdso/time.h include/linux/jiffies.h \
|
||||
include/vdso/jiffies.h include/generated/timeconst.h \
|
||||
include/vdso/ktime.h include/linux/timekeeping.h \
|
||||
include/linux/clocksource_ids.h include/linux/debugobjects.h \
|
||||
include/uapi/linux/ipc.h arch/x86/include/generated/uapi/asm/ipcbuf.h \
|
||||
include/uapi/asm-generic/ipcbuf.h arch/x86/include/uapi/asm/sembuf.h \
|
||||
include/linux/shm.h include/uapi/linux/shm.h \
|
||||
include/uapi/asm-generic/hugetlb_encode.h \
|
||||
arch/x86/include/uapi/asm/shmbuf.h include/uapi/asm-generic/shmbuf.h \
|
||||
arch/x86/include/asm/shmparam.h include/linux/plist.h \
|
||||
include/linux/hrtimer.h include/linux/hrtimer_defs.h \
|
||||
include/linux/rbtree.h include/linux/rbtree_types.h \
|
||||
include/linux/percpu.h include/linux/mmdebug.h include/linux/seqlock.h \
|
||||
include/linux/timerqueue.h include/linux/seccomp.h \
|
||||
include/uapi/linux/seccomp.h arch/x86/include/asm/seccomp.h \
|
||||
arch/x86/include/asm/unistd.h arch/x86/include/uapi/asm/unistd.h \
|
||||
arch/x86/include/generated/uapi/asm/unistd_64.h \
|
||||
arch/x86/include/generated/asm/unistd_64_x32.h \
|
||||
arch/x86/include/generated/asm/unistd_32_ia32.h \
|
||||
arch/x86/include/asm/ia32_unistd.h include/asm-generic/seccomp.h \
|
||||
include/uapi/linux/unistd.h include/linux/nodemask.h \
|
||||
include/linux/numa.h include/linux/resource.h \
|
||||
include/uapi/linux/resource.h \
|
||||
arch/x86/include/generated/uapi/asm/resource.h \
|
||||
include/asm-generic/resource.h include/uapi/asm-generic/resource.h \
|
||||
include/linux/latencytop.h include/linux/sched/prio.h \
|
||||
include/linux/sched/types.h include/linux/signal_types.h \
|
||||
include/uapi/linux/signal.h arch/x86/include/asm/signal.h \
|
||||
arch/x86/include/uapi/asm/signal.h \
|
||||
include/uapi/asm-generic/signal-defs.h \
|
||||
arch/x86/include/uapi/asm/siginfo.h include/uapi/asm-generic/siginfo.h \
|
||||
include/linux/syscall_user_dispatch.h include/linux/mm_types_task.h \
|
||||
arch/x86/include/asm/tlbbatch.h include/linux/task_io_accounting.h \
|
||||
include/linux/posix-timers.h include/linux/alarmtimer.h \
|
||||
include/uapi/linux/rseq.h include/linux/kcsan.h \
|
||||
arch/x86/include/generated/asm/kmap_size.h \
|
||||
include/asm-generic/kmap_size.h include/linux/module.h \
|
||||
include/linux/stat.h arch/x86/include/uapi/asm/stat.h \
|
||||
include/uapi/linux/stat.h include/linux/buildid.h \
|
||||
include/linux/mm_types.h include/linux/auxvec.h \
|
||||
include/uapi/linux/auxvec.h arch/x86/include/uapi/asm/auxvec.h \
|
||||
include/linux/kref.h include/linux/rwsem.h include/linux/completion.h \
|
||||
include/linux/swait.h include/linux/uprobes.h \
|
||||
arch/x86/include/asm/uprobes.h include/linux/notifier.h \
|
||||
include/linux/srcu.h include/linux/rcu_segcblist.h \
|
||||
include/linux/srcutree.h include/linux/rcu_node_tree.h \
|
||||
include/linux/page-flags-layout.h include/generated/bounds.h \
|
||||
arch/x86/include/asm/mmu.h include/linux/kmod.h include/linux/umh.h \
|
||||
include/linux/gfp.h include/linux/mmzone.h \
|
||||
include/linux/pageblock-flags.h include/linux/page-flags.h \
|
||||
include/linux/local_lock.h include/linux/local_lock_internal.h \
|
||||
include/linux/memory_hotplug.h arch/x86/include/asm/mmzone.h \
|
||||
arch/x86/include/asm/mmzone_64.h include/linux/topology.h \
|
||||
include/linux/arch_topology.h arch/x86/include/asm/topology.h \
|
||||
arch/x86/include/asm/mpspec.h arch/x86/include/asm/mpspec_def.h \
|
||||
arch/x86/include/asm/x86_init.h arch/x86/include/asm/apicdef.h \
|
||||
include/asm-generic/topology.h include/linux/sysctl.h \
|
||||
include/uapi/linux/sysctl.h include/linux/elf.h \
|
||||
arch/x86/include/asm/elf.h arch/x86/include/asm/user.h \
|
||||
arch/x86/include/asm/user_64.h arch/x86/include/asm/fsgsbase.h \
|
||||
arch/x86/include/asm/vdso.h include/uapi/linux/elf.h \
|
||||
include/uapi/linux/elf-em.h include/linux/kobject.h \
|
||||
include/linux/sysfs.h include/linux/kernfs.h include/linux/idr.h \
|
||||
include/linux/radix-tree.h include/linux/xarray.h \
|
||||
include/linux/kconfig.h include/linux/kobject_ns.h \
|
||||
include/linux/moduleparam.h include/linux/rbtree_latch.h \
|
||||
include/linux/error-injection.h include/asm-generic/error-injection.h \
|
||||
include/linux/cfi.h arch/x86/include/asm/module.h \
|
||||
include/asm-generic/module.h arch/x86/include/asm/orc_types.h \
|
||||
include/linux/netdevice.h include/linux/delay.h \
|
||||
arch/x86/include/asm/delay.h include/asm-generic/delay.h \
|
||||
include/linux/prefetch.h arch/x86/include/asm/local.h \
|
||||
include/linux/dynamic_queue_limits.h include/net/net_namespace.h \
|
||||
include/net/flow.h include/linux/socket.h \
|
||||
arch/x86/include/generated/uapi/asm/socket.h \
|
||||
include/uapi/asm-generic/socket.h \
|
||||
arch/x86/include/generated/uapi/asm/sockios.h \
|
||||
include/uapi/asm-generic/sockios.h include/uapi/linux/sockios.h \
|
||||
include/linux/uio.h include/uapi/linux/uio.h include/uapi/linux/socket.h \
|
||||
include/linux/in6.h include/uapi/linux/in6.h \
|
||||
include/uapi/linux/libc-compat.h include/net/flow_dissector.h \
|
||||
include/linux/siphash.h include/uapi/linux/if_ether.h \
|
||||
include/net/netns/core.h include/net/netns/mib.h include/net/snmp.h \
|
||||
include/uapi/linux/snmp.h include/linux/u64_stats_sync.h \
|
||||
arch/x86/include/generated/asm/local64.h include/asm-generic/local64.h \
|
||||
include/net/netns/unix.h include/net/netns/packet.h \
|
||||
include/net/netns/ipv4.h include/net/inet_frag.h \
|
||||
include/net/netns/ipv6.h include/net/dst_ops.h \
|
||||
include/linux/percpu_counter.h include/uapi/linux/icmpv6.h \
|
||||
include/net/netns/nexthop.h include/net/netns/ieee802154_6lowpan.h \
|
||||
include/net/netns/sctp.h include/net/netns/netfilter.h \
|
||||
include/linux/netfilter_defs.h include/uapi/linux/netfilter.h \
|
||||
include/linux/in.h include/uapi/linux/in.h include/net/netns/conntrack.h \
|
||||
include/linux/list_nulls.h include/linux/netfilter/nf_conntrack_tcp.h \
|
||||
include/uapi/linux/netfilter/nf_conntrack_tcp.h \
|
||||
include/linux/netfilter/nf_conntrack_dccp.h \
|
||||
include/uapi/linux/netfilter/nf_conntrack_tuple_common.h \
|
||||
include/linux/netfilter/nf_conntrack_common.h \
|
||||
include/uapi/linux/netfilter/nf_conntrack_common.h \
|
||||
include/linux/netfilter/nf_conntrack_sctp.h \
|
||||
include/uapi/linux/netfilter/nf_conntrack_sctp.h \
|
||||
include/net/netns/nftables.h include/net/netns/xfrm.h \
|
||||
include/uapi/linux/xfrm.h include/net/netns/mpls.h \
|
||||
include/net/netns/can.h include/net/netns/xdp.h include/net/netns/smc.h \
|
||||
include/net/netns/bpf.h include/net/netns/mctp.h \
|
||||
include/net/net_trackers.h include/linux/ref_tracker.h \
|
||||
include/linux/stackdepot.h include/linux/ns_common.h \
|
||||
include/linux/skbuff.h include/linux/bvec.h include/linux/highmem.h \
|
||||
include/linux/fs.h include/linux/wait_bit.h include/linux/kdev_t.h \
|
||||
include/uapi/linux/kdev_t.h include/linux/dcache.h \
|
||||
include/linux/rculist_bl.h include/linux/list_bl.h \
|
||||
include/linux/bit_spinlock.h include/linux/lockref.h \
|
||||
include/linux/stringhash.h include/linux/hash.h include/linux/path.h \
|
||||
include/linux/list_lru.h include/linux/shrinker.h \
|
||||
include/linux/capability.h include/uapi/linux/capability.h \
|
||||
include/linux/semaphore.h include/linux/fcntl.h \
|
||||
include/uapi/linux/fcntl.h arch/x86/include/generated/uapi/asm/fcntl.h \
|
||||
include/uapi/asm-generic/fcntl.h include/uapi/linux/openat2.h \
|
||||
include/linux/migrate_mode.h include/linux/percpu-rwsem.h \
|
||||
include/linux/rcuwait.h include/linux/sched/signal.h \
|
||||
include/linux/signal.h include/linux/sched/jobctl.h \
|
||||
include/linux/sched/task.h include/linux/uaccess.h \
|
||||
include/linux/fault-inject-usercopy.h arch/x86/include/asm/uaccess.h \
|
||||
arch/x86/include/asm/smap.h arch/x86/include/asm/extable.h \
|
||||
include/asm-generic/access_ok.h arch/x86/include/asm/uaccess_64.h \
|
||||
include/linux/cred.h include/linux/key.h include/linux/assoc_array.h \
|
||||
include/linux/sched/user.h include/linux/ratelimit.h \
|
||||
include/linux/rcu_sync.h include/linux/delayed_call.h \
|
||||
include/linux/uuid.h include/uapi/linux/uuid.h include/linux/errseq.h \
|
||||
include/linux/ioprio.h include/linux/sched/rt.h \
|
||||
include/linux/iocontext.h include/uapi/linux/ioprio.h \
|
||||
include/linux/fs_types.h include/linux/mount.h \
|
||||
include/linux/mnt_idmapping.h include/linux/slab.h \
|
||||
include/linux/overflow.h include/linux/percpu-refcount.h \
|
||||
include/linux/kasan.h include/linux/kasan-enabled.h \
|
||||
include/uapi/linux/fs.h include/linux/quota.h \
|
||||
include/uapi/linux/dqblk_xfs.h include/linux/dqblk_v1.h \
|
||||
include/linux/dqblk_v2.h include/linux/dqblk_qtree.h \
|
||||
include/linux/projid.h include/uapi/linux/quota.h \
|
||||
include/linux/nfs_fs_i.h include/linux/cacheflush.h \
|
||||
arch/x86/include/asm/cacheflush.h include/linux/mm.h \
|
||||
include/linux/mmap_lock.h include/linux/page_ext.h \
|
||||
include/linux/stacktrace.h include/linux/page_ref.h \
|
||||
include/linux/sizes.h include/linux/pgtable.h \
|
||||
arch/x86/include/asm/pgtable.h arch/x86/include/asm/pkru.h \
|
||||
arch/x86/include/asm/fpu/api.h arch/x86/include/asm/coco.h \
|
||||
include/asm-generic/pgtable_uffd.h include/linux/page_table_check.h \
|
||||
arch/x86/include/asm/pgtable_64.h arch/x86/include/asm/fixmap.h \
|
||||
arch/x86/include/uapi/asm/vsyscall.h include/asm-generic/fixmap.h \
|
||||
arch/x86/include/asm/pgtable-invert.h include/linux/huge_mm.h \
|
||||
include/linux/sched/coredump.h include/linux/vmstat.h \
|
||||
include/linux/vm_event_item.h include/asm-generic/cacheflush.h \
|
||||
include/linux/hardirq.h include/linux/context_tracking_state.h \
|
||||
include/linux/ftrace_irq.h include/linux/vtime.h \
|
||||
arch/x86/include/asm/hardirq.h include/linux/highmem-internal.h \
|
||||
include/linux/net.h include/linux/random.h include/linux/once.h \
|
||||
include/uapi/linux/random.h include/linux/irqnr.h \
|
||||
include/uapi/linux/irqnr.h include/linux/prandom.h \
|
||||
arch/x86/include/asm/archrandom.h include/linux/sockptr.h \
|
||||
include/uapi/linux/net.h include/linux/textsearch.h \
|
||||
include/net/checksum.h arch/x86/include/asm/checksum.h \
|
||||
arch/x86/include/asm/checksum_64.h include/linux/dma-mapping.h \
|
||||
include/linux/device.h include/linux/dev_printk.h \
|
||||
include/linux/energy_model.h include/linux/sched/cpufreq.h \
|
||||
include/linux/sched/topology.h include/linux/sched/idle.h \
|
||||
include/linux/sched/sd_flags.h include/linux/ioport.h \
|
||||
include/linux/klist.h include/linux/pm.h include/linux/device/bus.h \
|
||||
include/linux/device/class.h include/linux/device/driver.h \
|
||||
arch/x86/include/asm/device.h include/linux/pm_wakeup.h \
|
||||
include/linux/dma-direction.h include/linux/scatterlist.h \
|
||||
arch/x86/include/asm/io.h arch/x86/include/generated/asm/early_ioremap.h \
|
||||
include/asm-generic/early_ioremap.h arch/x86/include/asm/shared/io.h \
|
||||
include/asm-generic/iomap.h include/asm-generic/pci_iomap.h \
|
||||
include/asm-generic/io.h include/linux/logic_pio.h \
|
||||
include/linux/fwnode.h include/linux/vmalloc.h \
|
||||
arch/x86/include/asm/vmalloc.h arch/x86/include/asm/pgtable_areas.h \
|
||||
include/linux/netdev_features.h include/linux/sched/clock.h \
|
||||
include/linux/splice.h include/linux/pipe_fs_i.h \
|
||||
include/uapi/linux/if_packet.h include/net/page_pool.h \
|
||||
include/linux/ptr_ring.h include/net/net_debug.h \
|
||||
include/linux/seq_file_net.h include/linux/seq_file.h \
|
||||
include/linux/string_helpers.h include/linux/ctype.h include/net/dcbnl.h \
|
||||
include/uapi/linux/dcbnl.h include/net/netprio_cgroup.h \
|
||||
include/linux/cgroup.h include/uapi/linux/cgroupstats.h \
|
||||
include/uapi/linux/taskstats.h include/linux/nsproxy.h \
|
||||
include/linux/user_namespace.h include/linux/kernel_stat.h \
|
||||
include/linux/interrupt.h include/linux/irqreturn.h \
|
||||
arch/x86/include/asm/irq.h arch/x86/include/asm/irq_vectors.h \
|
||||
arch/x86/include/asm/sections.h include/asm-generic/sections.h \
|
||||
include/linux/cgroup-defs.h include/linux/bpf-cgroup-defs.h \
|
||||
include/linux/psi_types.h include/linux/kthread.h \
|
||||
include/linux/cgroup_subsys.h include/net/xdp.h \
|
||||
include/uapi/linux/neighbour.h include/linux/netlink.h include/net/scm.h \
|
||||
include/linux/security.h include/linux/kernel_read_file.h \
|
||||
include/linux/file.h include/uapi/linux/netlink.h \
|
||||
include/uapi/linux/netdevice.h include/uapi/linux/if.h \
|
||||
include/uapi/linux/hdlc/ioctl.h include/linux/if_ether.h \
|
||||
include/linux/if_link.h include/uapi/linux/if_link.h \
|
||||
include/uapi/linux/if_bonding.h include/uapi/linux/pkt_cls.h \
|
||||
include/uapi/linux/pkt_sched.h include/linux/hashtable.h \
|
||||
include/linux/netfilter.h \
|
||||
include/linux/netfilter/nf_conntrack_zones_common.h \
|
||||
include/uapi/linux/netfilter/nf_conntrack_tuple_common.h \
|
||||
include/linux/netfilter_ipv4.h include/uapi/linux/netfilter_ipv4.h \
|
||||
include/linux/ip.h include/uapi/linux/ip.h include/linux/tcp.h \
|
||||
include/linux/win_minmax.h include/net/sock.h \
|
||||
include/linux/page_counter.h include/linux/memcontrol.h \
|
||||
include/linux/vmpressure.h include/linux/eventfd.h \
|
||||
include/linux/writeback.h include/linux/flex_proportions.h \
|
||||
include/linux/backing-dev-defs.h include/linux/blk_types.h \
|
||||
include/linux/bio.h include/linux/mempool.h \
|
||||
include/linux/rculist_nulls.h include/linux/poll.h \
|
||||
include/uapi/linux/poll.h arch/x86/include/generated/uapi/asm/poll.h \
|
||||
include/uapi/asm-generic/poll.h include/uapi/linux/eventpoll.h \
|
||||
include/linux/indirect_call_wrapper.h include/net/dst.h \
|
||||
include/linux/rtnetlink.h include/uapi/linux/rtnetlink.h \
|
||||
include/uapi/linux/if_addr.h include/net/neighbour.h \
|
||||
include/net/rtnetlink.h include/net/netlink.h include/net/tcp_states.h \
|
||||
include/uapi/linux/net_tstamp.h include/net/l3mdev.h \
|
||||
include/net/fib_rules.h include/uapi/linux/fib_rules.h \
|
||||
include/net/fib_notifier.h include/net/inet_connection_sock.h \
|
||||
include/net/inet_sock.h include/linux/jhash.h \
|
||||
include/linux/unaligned/packed_struct.h include/net/request_sock.h \
|
||||
include/net/netns/hash.h include/net/inet_timewait_sock.h \
|
||||
include/net/timewait_sock.h include/uapi/linux/tcp.h include/linux/udp.h \
|
||||
include/uapi/linux/udp.h include/linux/inet.h include/linux/cdev.h \
|
||||
/home/duck/project/linux_kernel/some_struct.h \
|
||||
/home/duck/project/linux_kernel/global.h \
|
||||
/home/duck/project/linux_kernel/msg.h
|
||||
10
linux_kernel/Makefile
Normal file
10
linux_kernel/Makefile
Normal file
@@ -0,0 +1,10 @@
|
||||
CONFIG_MODULE_SIG=n
|
||||
obj-m += safe_duck.o
|
||||
safe_duck-objs := main.o msg.o global.o some_struct.o
|
||||
PWD := $(shell pwd)
|
||||
KVER := $(shell uname -r)
|
||||
KDIR := /lib/modules/$(KVER)/build
|
||||
all:
|
||||
$(MAKE) -C $(KDIR) M=$(PWD) modules
|
||||
clean:
|
||||
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.o.d *.mod
|
||||
5
linux_kernel/Module.symvers
Normal file
5
linux_kernel/Module.symvers
Normal file
@@ -0,0 +1,5 @@
|
||||
0x8d232039 push_msg /home/duck/project/linux_kernel/safe_duck EXPORT_SYMBOL
|
||||
0x4b7cb975 get_msg /home/duck/project/linux_kernel/safe_duck EXPORT_SYMBOL
|
||||
0xb3ceb32b get_msg_list_length /home/duck/project/linux_kernel/safe_duck EXPORT_SYMBOL
|
||||
0x38a1fb31 cleanup_msg /home/duck/project/linux_kernel/safe_duck EXPORT_SYMBOL
|
||||
0x50632040 init_msg /home/duck/project/linux_kernel/safe_duck EXPORT_SYMBOL
|
||||
27
linux_kernel/build.sh
Executable file
27
linux_kernel/build.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
# 该脚本可执行make编译safe_duck模块,然后将其移动到指定位置
|
||||
|
||||
# 设定变量
|
||||
MODULE_NAME=safe_duck.ko
|
||||
TARGET_DIR="/run/user/1000/gvfs/smb-share:server=192.168.1.2,share=dev_share/safe_duck.ko"
|
||||
|
||||
# 编译模块
|
||||
if make; then
|
||||
|
||||
# 移动模块文件至目标目录
|
||||
if mv ${MODULE_NAME} ${TARGET_DIR}; then
|
||||
|
||||
echo "${MODULE_NAME} moved to ${TARGET_DIR}"
|
||||
|
||||
else
|
||||
|
||||
echo "Failed to move ${MODULE_NAME} to ${TARGET_DIR}"
|
||||
|
||||
fi
|
||||
|
||||
else
|
||||
|
||||
echo "Failed to build ${MODULE_NAME}"
|
||||
|
||||
fi
|
||||
make clean
|
||||
4
linux_kernel/global.c
Normal file
4
linux_kernel/global.c
Normal file
@@ -0,0 +1,4 @@
|
||||
#include "head.h"
|
||||
struct _driver_dev_build g_driver_dev_build;
|
||||
bool g_is_r3_ready = false;
|
||||
DECLARE_WAIT_QUEUE_HEAD(g_r3_wait_queue);
|
||||
5
linux_kernel/global.h
Normal file
5
linux_kernel/global.h
Normal file
@@ -0,0 +1,5 @@
|
||||
#pragma once
|
||||
#include "head.h"
|
||||
extern struct _driver_dev_build g_driver_dev_build;
|
||||
extern struct wait_queue_head g_r3_wait_queue;
|
||||
extern bool g_is_r3_ready;
|
||||
29
linux_kernel/head.h
Normal file
29
linux_kernel/head.h
Normal file
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/netfilter.h>
|
||||
#include <linux/netfilter_ipv4.h>
|
||||
#include <linux/ip.h>
|
||||
#include <linux/tcp.h>
|
||||
#include <linux/udp.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/socket.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/inet.h>
|
||||
#include <linux/net.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/cdev.h>
|
||||
#include "some_struct.h"
|
||||
#include "global.h"
|
||||
#include "msg.h"
|
||||
#define DEVICE_NAME "safe_duck"
|
||||
#define DEVICE_CNT 1
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("huoji");
|
||||
120
linux_kernel/main.c
Normal file
120
linux_kernel/main.c
Normal file
@@ -0,0 +1,120 @@
|
||||
#include "head.h"
|
||||
|
||||
struct safe_duck_dev {
|
||||
wait_queue_head_t read_wait;
|
||||
};
|
||||
|
||||
unsigned int network_callback(const struct nf_hook_ops *ops,
|
||||
struct sk_buff *skb, const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *)) {
|
||||
do {
|
||||
if (skb == NULL) {
|
||||
break;
|
||||
}
|
||||
struct iphdr *ip_header = ip_hdr(skb);
|
||||
|
||||
if (ip_header == NULL) {
|
||||
break;
|
||||
}
|
||||
// push ip address to list
|
||||
struct kernel_msg_t *msg =
|
||||
kmalloc(sizeof(struct kernel_msg_t), GFP_KERNEL);
|
||||
if (msg == NULL) {
|
||||
printk(KERN_ERR "Failed to allocate memory for new msg\n");
|
||||
break;
|
||||
}
|
||||
msg->type = SD_MSG_TYPE_NEW_IP_CONNECT;
|
||||
msg->u.poll_req.src_ip = ip_header->saddr;
|
||||
push_msg(msg);
|
||||
} while (false);
|
||||
|
||||
return NF_ACCEPT;
|
||||
}
|
||||
unsigned int driver_poll_callback(struct file *filep,
|
||||
struct poll_table_struct *wait) {
|
||||
unsigned int mask = 0;
|
||||
g_is_r3_ready = false;
|
||||
poll_wait(filep, &g_r3_wait_queue, wait);
|
||||
g_is_r3_ready = true;
|
||||
if (get_msg_list_length() != 0) {
|
||||
mask |= POLLIN | POLLRDNORM;
|
||||
}
|
||||
|
||||
return mask;
|
||||
}
|
||||
int safe_duck_release(struct inode *inode, struct file *file) { return 0; }
|
||||
ssize_t safe_duck_read(struct file *file, char __user *buf, size_t count,
|
||||
loff_t *pos) {
|
||||
if (count < sizeof(struct kernel_msg_t)) {
|
||||
return 0;
|
||||
}
|
||||
struct kernel_msg_t *msg = get_msg();
|
||||
if (msg == NULL) {
|
||||
return 0;
|
||||
}
|
||||
int ret = copy_to_user(buf, msg, sizeof(struct kernel_msg_t));
|
||||
kfree(msg);
|
||||
if (ret != 0) {
|
||||
printk(KERN_ERR "Failed to copy msg to user space\n");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int safe_duck_open(struct inode *inode, struct file *filep) { return 0; }
|
||||
bool build_dev(void) {
|
||||
int rc = alloc_chrdev_region(&g_driver_dev_build.devid, 0, DEVICE_CNT,
|
||||
DEVICE_NAME);
|
||||
g_driver_dev_build.major = MAJOR(g_driver_dev_build.devid);
|
||||
g_driver_dev_build.minor = MINOR(g_driver_dev_build.devid);
|
||||
if (rc < 0) {
|
||||
printk("newchrled chr_dev region err\n");
|
||||
return false;
|
||||
}
|
||||
printk(KERN_WARNING "major:%d, minor:%d\n", g_driver_dev_build.major,
|
||||
g_driver_dev_build.minor);
|
||||
cdev_init(&g_driver_dev_build.cdev, &g_fops);
|
||||
rc = cdev_add(&g_driver_dev_build.cdev, g_driver_dev_build.devid,
|
||||
DEVICE_CNT);
|
||||
g_driver_dev_build.class = class_create(THIS_MODULE, DEVICE_NAME);
|
||||
if (IS_ERR(g_driver_dev_build.class)) {
|
||||
return false;
|
||||
}
|
||||
g_driver_dev_build.device =
|
||||
device_create(g_driver_dev_build.class, NULL, g_driver_dev_build.devid,
|
||||
NULL, DEVICE_NAME);
|
||||
return IS_ERR(g_driver_dev_build.device) == false;
|
||||
}
|
||||
void destory_dev(void) {
|
||||
cdev_del(&g_driver_dev_build.cdev);
|
||||
unregister_chrdev_region(g_driver_dev_build.devid, DEVICE_NAME);
|
||||
device_destroy(g_driver_dev_build.class, g_driver_dev_build.devid);
|
||||
class_destroy(g_driver_dev_build.class);
|
||||
}
|
||||
static int __init driver_entry(void) {
|
||||
printk(KERN_WARNING "[DebugMessage] safe duck init\n");
|
||||
|
||||
// Initialize list of addresses
|
||||
if (build_dev() == false) {
|
||||
printk(KERN_ERR "Failed to build device\n");
|
||||
return -1;
|
||||
}
|
||||
init_msg();
|
||||
int rc = nf_register_net_hook(&init_net, &g_network_hook_ops);
|
||||
if (rc < 0) {
|
||||
printk(KERN_ERR "Failed to register network hook: %d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
printk(KERN_WARNING "[DebugMessage] safe duck init success \n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __exit driver_exit(void) {
|
||||
printk(KERN_INFO "[DebugMessage] safe duck exit\n");
|
||||
nf_unregister_net_hook(&init_net, &g_network_hook_ops);
|
||||
cleanup_msg();
|
||||
destory_dev();
|
||||
}
|
||||
|
||||
module_init(driver_entry);
|
||||
module_exit(driver_exit);
|
||||
1
linux_kernel/modules.order
Normal file
1
linux_kernel/modules.order
Normal file
@@ -0,0 +1 @@
|
||||
/home/duck/project/linux_kernel/safe_duck.ko
|
||||
69
linux_kernel/msg.c
Normal file
69
linux_kernel/msg.c
Normal file
@@ -0,0 +1,69 @@
|
||||
#include "head.h"
|
||||
struct msg_list g_msg_list;
|
||||
spinlock_t g_msg_lock;
|
||||
size_t g_msg_length;
|
||||
void push_msg(struct kernel_msg_t *msg) {
|
||||
if (get_msg_list_length() > 0x1000) {
|
||||
printk(KERN_ERR "Too many messages in the list\n");
|
||||
return;
|
||||
}
|
||||
struct msg_list *new_msg = kmalloc(sizeof(struct msg_list), GFP_KERNEL);
|
||||
if (new_msg == NULL) {
|
||||
printk(KERN_ERR "Failed to allocate memory for new msg\n");
|
||||
return;
|
||||
}
|
||||
new_msg->msg = msg;
|
||||
new_msg->msg->check_sum = MSG_CHECK_SUM;
|
||||
spin_lock_bh(&g_msg_lock);
|
||||
list_add_tail(&new_msg->node, &g_msg_list.node);
|
||||
g_msg_length++;
|
||||
spin_unlock_bh(&g_msg_lock);
|
||||
if (g_is_r3_ready) {
|
||||
wake_up_interruptible(&g_r3_wait_queue);
|
||||
}
|
||||
}
|
||||
struct kernel_msg_t *get_msg(void) {
|
||||
struct kernel_msg_t *msg = NULL;
|
||||
struct msg_list *tmp = NULL;
|
||||
spin_lock_bh(&g_msg_lock);
|
||||
if (list_empty(&g_msg_list.node)) {
|
||||
spin_unlock_bh(&g_msg_lock);
|
||||
return NULL;
|
||||
}
|
||||
tmp = list_first_entry(&g_msg_list.node, struct msg_list, node);
|
||||
list_del(&tmp->node);
|
||||
g_msg_length--;
|
||||
spin_unlock_bh(&g_msg_lock);
|
||||
msg = tmp->msg;
|
||||
kfree(tmp);
|
||||
return msg;
|
||||
}
|
||||
size_t get_msg_list_length(void) {
|
||||
size_t len = 0;
|
||||
spin_lock_bh(&g_msg_lock);
|
||||
len = g_msg_length;
|
||||
spin_unlock_bh(&g_msg_lock);
|
||||
return len;
|
||||
}
|
||||
void cleanup_msg(void) {
|
||||
struct msg_list *tmp = NULL;
|
||||
struct msg_list *next = NULL;
|
||||
spin_lock_bh(&g_msg_lock);
|
||||
list_for_each_entry_safe(tmp, next, &g_msg_list.node, node) {
|
||||
list_del(&tmp->node);
|
||||
kfree(tmp->msg);
|
||||
kfree(tmp);
|
||||
}
|
||||
g_msg_length = 0;
|
||||
spin_unlock_bh(&g_msg_lock);
|
||||
}
|
||||
void init_msg(void) {
|
||||
INIT_LIST_HEAD(&(g_msg_list.node));
|
||||
spin_lock_init(&g_msg_lock);
|
||||
g_msg_length = 0;
|
||||
}
|
||||
EXPORT_SYMBOL(push_msg);
|
||||
EXPORT_SYMBOL(get_msg);
|
||||
EXPORT_SYMBOL(get_msg_list_length);
|
||||
EXPORT_SYMBOL(cleanup_msg);
|
||||
EXPORT_SYMBOL(init_msg);
|
||||
27
linux_kernel/msg.h
Normal file
27
linux_kernel/msg.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
#include "head.h"
|
||||
#define MSG_CHECK_SUM 1337
|
||||
typedef enum _msg_type {
|
||||
SD_MSG_TYPE_ERROR = -1,
|
||||
SD_MSG_TYPE_NEW_IP_CONNECT = 0,
|
||||
};
|
||||
|
||||
typedef struct kernel_msg_t {
|
||||
unsigned long check_sum;
|
||||
int type;
|
||||
union {
|
||||
struct {
|
||||
unsigned int src_ip;
|
||||
} poll_req;
|
||||
} u;
|
||||
};
|
||||
typedef struct msg_list {
|
||||
struct list_head node;
|
||||
struct kernel_msg_t *msg;
|
||||
};
|
||||
|
||||
extern void push_msg(struct kernel_msg_t *msg);
|
||||
extern struct kernel_msg_t *get_msg(void);
|
||||
extern size_t get_msg_list_length(void);
|
||||
extern void cleanup_msg(void);
|
||||
extern void init_msg(void);
|
||||
17
linux_kernel/some_struct.c
Normal file
17
linux_kernel/some_struct.c
Normal file
@@ -0,0 +1,17 @@
|
||||
#include "some_struct.h"
|
||||
|
||||
/* define the netfilter hook options */
|
||||
struct nf_hook_ops g_network_hook_ops = {
|
||||
.hook = (nf_hookfn *)network_callback,
|
||||
.hooknum = NF_INET_PRE_ROUTING, /* pre-routing hook point */
|
||||
.pf = NFPROTO_IPV4, /* IPv4 protocol family */
|
||||
.priority = NF_IP_PRI_FIRST, /* set highest priority */
|
||||
};
|
||||
|
||||
struct file_operations g_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.poll = driver_poll_callback,
|
||||
.open = safe_duck_open,
|
||||
.release = safe_duck_release,
|
||||
.read = safe_duck_read,
|
||||
};
|
||||
23
linux_kernel/some_struct.h
Normal file
23
linux_kernel/some_struct.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
#include "head.h"
|
||||
extern unsigned int network_callback(const struct nf_hook_ops *ops,
|
||||
struct sk_buff *skb,
|
||||
const struct net_device *in,
|
||||
const struct net_device *out,
|
||||
int (*okfn)(struct sk_buff *));
|
||||
extern unsigned int driver_poll_callback(struct file *filep,
|
||||
struct poll_table_struct *wait);
|
||||
extern int safe_duck_open(struct inode *inode, struct file *filep);
|
||||
extern int safe_duck_release(struct inode *inode, struct file *file);
|
||||
extern ssize_t safe_duck_read(struct file *file, char __user *buf, size_t count,
|
||||
loff_t *pos);
|
||||
struct _driver_dev_build {
|
||||
int major;
|
||||
int minor;
|
||||
struct cdev cdev;
|
||||
dev_t devid; // device num
|
||||
struct class *class; // class
|
||||
struct device *device; // device
|
||||
};
|
||||
extern struct nf_hook_ops g_network_hook_ops;
|
||||
extern struct file_operations g_fops;
|
||||
Reference in New Issue
Block a user