From bd458263849ac520962ef21a18878ed83aa32b02 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 13 Nov 2017 16:58:34 +0900 Subject: [PATCH] 7 --- 01_day/.my_interrupt.ko.cmd | 1 + 01_day/.my_interrupt.mod.o.cmd | 579 +++++++++++++++++++++++++ 01_day/.my_interrupt.o.cmd | 598 ++++++++++++++++++++++++++ 01_day/.my_timer.c.swp | Bin 12288 -> 0 bytes 01_day/.tmp_versions/my_interrupt.mod | 2 + 01_day/.tmp_versions/my_timer.mod | 2 - 01_day/Makefile | 2 +- 01_day/a.out | Bin 8656 -> 8632 bytes 01_day/macro.c | 19 + 01_day/modules.order | 2 +- 01_day/my_interrupt.c | 32 ++ 01_day/my_interrupt.ko | Bin 0 -> 113488 bytes 01_day/my_interrupt.mod.c | 21 + 01_day/my_interrupt.mod.o | Bin 0 -> 64312 bytes 01_day/my_interrupt.o | Bin 0 -> 50704 bytes 15 files changed, 1254 insertions(+), 4 deletions(-) create mode 100644 01_day/.my_interrupt.ko.cmd create mode 100644 01_day/.my_interrupt.mod.o.cmd create mode 100644 01_day/.my_interrupt.o.cmd delete mode 100644 01_day/.my_timer.c.swp create mode 100644 01_day/.tmp_versions/my_interrupt.mod delete mode 100644 01_day/.tmp_versions/my_timer.mod create mode 100644 01_day/my_interrupt.c create mode 100644 01_day/my_interrupt.ko create mode 100644 01_day/my_interrupt.mod.c create mode 100644 01_day/my_interrupt.mod.o create mode 100644 01_day/my_interrupt.o diff --git a/01_day/.my_interrupt.ko.cmd b/01_day/.my_interrupt.ko.cmd new file mode 100644 index 0000000..1986682 --- /dev/null +++ b/01_day/.my_interrupt.ko.cmd @@ -0,0 +1 @@ +cmd_/root/android/my_test/01_day/my_interrupt.ko := aarch64-linux-android-ld -EL -r -T /root/tegra/scripts/module-common.lds --build-id -o /root/android/my_test/01_day/my_interrupt.ko /root/android/my_test/01_day/my_interrupt.o /root/android/my_test/01_day/my_interrupt.mod.o diff --git a/01_day/.my_interrupt.mod.o.cmd b/01_day/.my_interrupt.mod.o.cmd new file mode 100644 index 0000000..93c3056 --- /dev/null +++ b/01_day/.my_interrupt.mod.o.cmd @@ -0,0 +1,579 @@ +cmd_/root/android/my_test/01_day/my_interrupt.mod.o := aarch64-linux-android-gcc -Wp,-MD,/root/android/my_test/01_day/.my_interrupt.mod.o.d -nostdinc -isystem /root/android/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/../lib/gcc/aarch64-linux-android/4.9/include -I/root/tegra/arch/arm64/include -Iarch/arm64/include/generated -Iinclude -I/root/tegra/arch/arm64/include/uapi -Iarch/arm64/include/generated/uapi -I/root/tegra/include/uapi -Iinclude/generated/uapi -include /root/tegra/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-tegra/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -std=gnu89 -O2 -fconserve-stack -mgeneral-regs-only -fno-pic -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -DCC_HAVE_ASM_GOTO -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(my_interrupt.mod)" -D"KBUILD_MODNAME=KBUILD_STR(my_interrupt)" -DMODULE -c -o /root/android/my_test/01_day/my_interrupt.mod.o /root/android/my_test/01_day/my_interrupt.mod.c + +source_/root/android/my_test/01_day/my_interrupt.mod.o := /root/android/my_test/01_day/my_interrupt.mod.c + +deps_/root/android/my_test/01_day/my_interrupt.mod.o := \ + $(wildcard include/config/module/unload.h) \ + include/linux/module.h \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/arm64/include/generated/asm/types.h \ + /root/tegra/include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + /root/tegra/arch/arm64/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + /root/tegra/include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/arm64/include/generated/asm/posix_types.h \ + /root/tegra/include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + /root/tegra/include/uapi/linux/const.h \ + include/linux/stat.h \ + /root/tegra/arch/arm64/include/asm/stat.h \ + $(wildcard include/config/compat.h) \ + /root/tegra/arch/arm64/include/uapi/asm/stat.h \ + /root/tegra/include/uapi/asm-generic/stat.h \ + /root/tegra/arch/arm64/include/asm/compat.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/no/hz/common.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/tree/preempt/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/have/hw/breakpoint.h) \ + $(wildcard include/config/uprobes.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/proc/fs.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/mm/owner.h) \ + include/uapi/linux/sched.h \ + /root/tegra/arch/arm64/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ + $(wildcard include/config/base/small.h) \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/ring/buffer.h) \ + /root/android/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/lib/gcc/aarch64-linux-android/4.9/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + /root/tegra/arch/arm64/include/asm/linkage.h \ + include/linux/bitops.h \ + /root/tegra/arch/arm64/include/asm/bitops.h \ + /root/tegra/arch/arm64/include/asm/barrier.h \ + include/asm-generic/bitops/builtin-__ffs.h \ + include/asm-generic/bitops/builtin-ffs.h \ + include/asm-generic/bitops/builtin-__fls.h \ + include/asm-generic/bitops/builtin-fls.h \ + include/asm-generic/bitops/ffz.h \ + include/asm-generic/bitops/fls64.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + include/asm-generic/bitops/hweight.h \ + include/asm-generic/bitops/arch_hweight.h \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/lock.h \ + include/asm-generic/bitops/non-atomic.h \ + include/asm-generic/bitops/le.h \ + /root/tegra/arch/arm64/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/arm64/include/generated/asm/swab.h \ + /root/tegra/include/uapi/asm-generic/swab.h \ + include/linux/byteorder/generic.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + include/linux/kern_levels.h \ + include/linux/dynamic_debug.h \ + include/uapi/linux/kernel.h \ + /root/tegra/include/uapi/linux/sysinfo.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + /root/tegra/arch/arm64/include/asm/cache.h \ + include/linux/seqlock.h \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/context/tracking.h) \ + arch/arm64/include/generated/asm/preempt.h \ + include/asm-generic/preempt.h \ + include/linux/thread_info.h \ + include/linux/bug.h \ + arch/arm64/include/generated/asm/bug.h \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + $(wildcard include/config/debug/bugverbose.h) \ + /root/tegra/arch/arm64/include/asm/relaxed.h \ + /root/tegra/arch/arm64/include/asm/atomic.h \ + /root/tegra/arch/arm64/include/asm/cmpxchg.h \ + include/asm-generic/relaxed.h \ + /root/tegra/arch/arm64/include/asm/thread_info.h \ + $(wildcard include/config/arm64/64k/pages.h) \ + include/linux/irqflags.h \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + /root/tegra/arch/arm64/include/asm/irqflags.h \ + /root/tegra/arch/arm64/include/asm/ptrace.h \ + /root/tegra/arch/arm64/include/uapi/asm/ptrace.h \ + /root/tegra/arch/arm64/include/asm/hwcap.h \ + /root/tegra/arch/arm64/include/uapi/asm/hwcap.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + /root/tegra/arch/arm64/include/asm/spinlock_types.h \ + $(wildcard include/config/arm64/simple/spinlock.h) \ + include/linux/lockdep.h \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + /root/tegra/arch/arm64/include/asm/spinlock.h \ + /root/tegra/arch/arm64/include/asm/processor.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + /root/tegra/arch/arm64/include/asm/string.h \ + /root/tegra/arch/arm64/include/asm/fpsimd.h \ + /root/tegra/arch/arm64/include/asm/hw_breakpoint.h \ + include/asm-generic/processor.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/atomic.h \ + $(wildcard include/config/arch/has/atomic/or.h) \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/math64.h \ + arch/arm64/include/generated/asm/div64.h \ + include/asm-generic/div64.h \ + include/uapi/linux/time.h \ + /root/tegra/include/uapi/linux/param.h \ + /root/tegra/arch/arm64/include/asm/timex.h \ + /root/tegra/arch/arm64/include/asm/arch_timer.h \ + include/clocksource/arm_arch_timer.h \ + $(wildcard include/config/arm/arch/timer.h) \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/of.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + include/linux/ktime.h \ + $(wildcard include/config/ktime/scalar.h) \ + include/linux/jiffies.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + /root/tegra/arch/arm64/include/asm/io.h \ + /root/tegra/arch/arm64/include/asm/pgtable.h \ + /root/tegra/arch/arm64/include/asm/proc-fns.h \ + /root/tegra/arch/arm64/include/asm/page.h \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + /root/tegra/arch/arm64/include/asm/pgtable-3level-types.h \ + include/asm-generic/pgtable-nopud.h \ + /root/tegra/arch/arm64/include/asm/memory.h \ + $(wildcard include/config/need/mach/memory/h.h) \ + arch/arm64/include/generated/asm/sizes.h \ + include/asm-generic/sizes.h \ + include/linux/sizes.h \ + arch/arm/mach-tegra/include/mach/memory.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/asm-generic/getorder.h \ + /root/tegra/arch/arm64/include/asm/pgtable-hwdef.h \ + /root/tegra/arch/arm64/include/asm/pgtable-3level-hwdef.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/arch/uses/numa/prot/none.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/want/page/debug/flags.h) \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + $(wildcard include/config/compaction.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + /root/tegra/arch/arm64/include/uapi/asm/auxvec.h \ + include/linux/rbtree.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + include/linux/rwsem-spinlock.h \ + include/linux/completion.h \ + include/linux/wait.h \ + arch/arm64/include/generated/asm/current.h \ + include/asm-generic/current.h \ + include/uapi/linux/wait.h \ + include/linux/cpumask.h \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + $(wildcard include/config/disable/obsolete/cpumask/functions.h) \ + include/linux/bitmap.h \ + include/linux/page-debug-flags.h \ + $(wildcard include/config/page/poisoning.h) \ + $(wildcard include/config/page/guard.h) \ + $(wildcard include/config/page/debug/something/else.h) \ + include/linux/uprobes.h \ + $(wildcard include/config/arch/supports/uprobes.h) \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + arch/arm64/include/generated/asm/errno.h \ + /root/tegra/include/uapi/asm-generic/errno.h \ + /root/tegra/include/uapi/asm-generic/errno-base.h \ + include/linux/page-flags-layout.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/generated/bounds.h \ + /root/tegra/arch/arm64/include/asm/sparsemem.h \ + /root/tegra/arch/arm64/include/asm/mmu.h \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/asm-generic/timex.h \ + include/linux/nodemask.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/movable/node.h) \ + arch/arm64/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/smp.h \ + /root/tegra/arch/arm64/include/asm/smp.h \ + include/linux/sem.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/rcu/torture/test.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/user/qs.h) \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tiny/preempt/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + include/linux/rcutree.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/linux/uidgid.h \ + $(wildcard include/config/uidgid/strict/type/checks.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/uapi/linux/ipc.h \ + arch/arm64/include/generated/asm/ipcbuf.h \ + /root/tegra/include/uapi/asm-generic/ipcbuf.h \ + arch/arm64/include/generated/asm/sembuf.h \ + /root/tegra/include/uapi/asm-generic/sembuf.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + /root/tegra/arch/arm64/include/uapi/asm/signal.h \ + include/asm-generic/signal.h \ + include/uapi/asm-generic/signal.h \ + /root/tegra/include/uapi/asm-generic/signal-defs.h \ + /root/tegra/arch/arm64/include/asm/sigcontext.h \ + /root/tegra/arch/arm64/include/uapi/asm/sigcontext.h \ + /root/tegra/arch/arm64/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/pfn.h \ + arch/arm64/include/generated/asm/percpu.h \ + include/asm-generic/percpu.h \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/topology.h \ + $(wildcard include/config/sched/smt.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/sched/book.h) \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/cma.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/nodes/span/other/nodes.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/mutex.h \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + $(wildcard include/config/have/arch/mutex/cpu/relax.h) \ + include/linux/srcu.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + arch/arm64/include/generated/asm/topology.h \ + include/asm-generic/topology.h \ + include/linux/proportions.h \ + include/linux/percpu_counter.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/seccomp/filter.h) \ + include/uapi/linux/seccomp.h \ + /root/tegra/arch/arm64/include/asm/seccomp.h \ + /root/tegra/arch/arm64/include/asm/unistd.h \ + /root/tegra/arch/arm64/include/uapi/asm/unistd.h \ + include/asm-generic/unistd.h \ + include/uapi/asm-generic/unistd.h \ + include/asm-generic/seccomp.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/arm64/include/generated/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/sysctl.h \ + include/uapi/linux/sysctl.h \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/gfp.h \ + $(wildcard include/config/pm/sleep.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/virtual.h) \ + include/linux/ptrace.h \ + include/linux/err.h \ + include/linux/pid_namespace.h \ + $(wildcard include/config/pid/ns.h) \ + include/linux/mm.h \ + $(wildcard include/config/have/arch/mmap/rnd/bits.h) \ + $(wildcard include/config/have/arch/mmap/rnd/compat/bits.h) \ + $(wildcard include/config/x86.h) \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ksm.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hibernation.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/range.h \ + include/linux/bit_spinlock.h \ + include/linux/shrinker.h \ + include/linux/page-flags.h \ + $(wildcard include/config/pageflags/extended.h) \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/migration.h) \ + include/linux/nsproxy.h \ + include/linux/kref.h \ + include/uapi/linux/ptrace.h \ + include/uapi/linux/stat.h \ + include/linux/kmod.h \ + include/linux/elf.h \ + /root/tegra/arch/arm64/include/asm/elf.h \ + arch/arm64/include/generated/asm/user.h \ + include/asm-generic/user.h \ + include/uapi/linux/elf.h \ + /root/tegra/include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + include/linux/sysfs.h \ + include/linux/kobject_ns.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/tracepoint.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + /root/tegra/arch/arm64/include/asm/jump_label.h \ + /root/tegra/arch/arm64/include/asm/insn.h \ + /root/tegra/arch/arm64/include/asm/module.h \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/vermagic.h \ + include/generated/utsrelease.h \ + +/root/android/my_test/01_day/my_interrupt.mod.o: $(deps_/root/android/my_test/01_day/my_interrupt.mod.o) + +$(deps_/root/android/my_test/01_day/my_interrupt.mod.o): diff --git a/01_day/.my_interrupt.o.cmd b/01_day/.my_interrupt.o.cmd new file mode 100644 index 0000000..89d8274 --- /dev/null +++ b/01_day/.my_interrupt.o.cmd @@ -0,0 +1,598 @@ +cmd_/root/android/my_test/01_day/my_interrupt.o := aarch64-linux-android-gcc -Wp,-MD,/root/android/my_test/01_day/.my_interrupt.o.d -nostdinc -isystem /root/android/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/../lib/gcc/aarch64-linux-android/4.9/include -I/root/tegra/arch/arm64/include -Iarch/arm64/include/generated -Iinclude -I/root/tegra/arch/arm64/include/uapi -Iarch/arm64/include/generated/uapi -I/root/tegra/include/uapi -Iinclude/generated/uapi -include /root/tegra/include/linux/kconfig.h -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-tegra/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -std=gnu89 -O2 -fconserve-stack -mgeneral-regs-only -fno-pic -Wframe-larger-than=2048 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -g -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -DCC_HAVE_ASM_GOTO -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(my_interrupt)" -D"KBUILD_MODNAME=KBUILD_STR(my_interrupt)" -c -o /root/android/my_test/01_day/my_interrupt.o /root/android/my_test/01_day/my_interrupt.c + +source_/root/android/my_test/01_day/my_interrupt.o := /root/android/my_test/01_day/my_interrupt.c + +deps_/root/android/my_test/01_day/my_interrupt.o := \ + include/linux/module.h \ + $(wildcard include/config/sysfs.h) \ + $(wildcard include/config/modules.h) \ + $(wildcard include/config/unused/symbols.h) \ + $(wildcard include/config/module/sig.h) \ + $(wildcard include/config/generic/bug.h) \ + $(wildcard include/config/kallsyms.h) \ + $(wildcard include/config/smp.h) \ + $(wildcard include/config/tracepoints.h) \ + $(wildcard include/config/tracing.h) \ + $(wildcard include/config/event/tracing.h) \ + $(wildcard include/config/ftrace/mcount/record.h) \ + $(wildcard include/config/module/unload.h) \ + $(wildcard include/config/constructors.h) \ + $(wildcard include/config/debug/set/module/ronx.h) \ + include/linux/list.h \ + $(wildcard include/config/debug/list.h) \ + include/linux/types.h \ + $(wildcard include/config/have/uid16.h) \ + $(wildcard include/config/uid16.h) \ + $(wildcard include/config/lbdaf.h) \ + $(wildcard include/config/arch/dma/addr/t/64bit.h) \ + $(wildcard include/config/phys/addr/t/64bit.h) \ + $(wildcard include/config/64bit.h) \ + include/uapi/linux/types.h \ + arch/arm64/include/generated/asm/types.h \ + /root/tegra/include/uapi/asm-generic/types.h \ + include/asm-generic/int-ll64.h \ + include/uapi/asm-generic/int-ll64.h \ + /root/tegra/arch/arm64/include/uapi/asm/bitsperlong.h \ + include/asm-generic/bitsperlong.h \ + include/uapi/asm-generic/bitsperlong.h \ + /root/tegra/include/uapi/linux/posix_types.h \ + include/linux/stddef.h \ + include/uapi/linux/stddef.h \ + include/linux/compiler.h \ + $(wildcard include/config/sparse/rcu/pointer.h) \ + $(wildcard include/config/trace/branch/profiling.h) \ + $(wildcard include/config/profile/all/branches.h) \ + $(wildcard include/config/enable/must/check.h) \ + $(wildcard include/config/enable/warn/deprecated.h) \ + $(wildcard include/config/kprobes.h) \ + include/linux/compiler-gcc.h \ + $(wildcard include/config/arch/supports/optimized/inlining.h) \ + $(wildcard include/config/optimize/inlining.h) \ + $(wildcard include/config/gcov/kernel.h) \ + $(wildcard include/config/arch/use/builtin/bswap.h) \ + arch/arm64/include/generated/asm/posix_types.h \ + /root/tegra/include/uapi/asm-generic/posix_types.h \ + include/linux/poison.h \ + $(wildcard include/config/illegal/pointer/value.h) \ + /root/tegra/include/uapi/linux/const.h \ + include/linux/stat.h \ + /root/tegra/arch/arm64/include/asm/stat.h \ + $(wildcard include/config/compat.h) \ + /root/tegra/arch/arm64/include/uapi/asm/stat.h \ + /root/tegra/include/uapi/asm-generic/stat.h \ + /root/tegra/arch/arm64/include/asm/compat.h \ + include/linux/sched.h \ + $(wildcard include/config/sched/debug.h) \ + $(wildcard include/config/prove/rcu.h) \ + $(wildcard include/config/no/hz/common.h) \ + $(wildcard include/config/lockup/detector.h) \ + $(wildcard include/config/mmu.h) \ + $(wildcard include/config/core/dump/default/elf/headers.h) \ + $(wildcard include/config/sched/autogroup.h) \ + $(wildcard include/config/virt/cpu/accounting/native.h) \ + $(wildcard include/config/bsd/process/acct.h) \ + $(wildcard include/config/taskstats.h) \ + $(wildcard include/config/audit.h) \ + $(wildcard include/config/cgroups.h) \ + $(wildcard include/config/inotify/user.h) \ + $(wildcard include/config/fanotify.h) \ + $(wildcard include/config/epoll.h) \ + $(wildcard include/config/posix/mqueue.h) \ + $(wildcard include/config/keys.h) \ + $(wildcard include/config/perf/events.h) \ + $(wildcard include/config/schedstats.h) \ + $(wildcard include/config/task/delay/acct.h) \ + $(wildcard include/config/fair/group/sched.h) \ + $(wildcard include/config/rt/group/sched.h) \ + $(wildcard include/config/cgroup/sched.h) \ + $(wildcard include/config/preempt/notifiers.h) \ + $(wildcard include/config/blk/dev/io/trace.h) \ + $(wildcard include/config/preempt/rcu.h) \ + $(wildcard include/config/tree/preempt/rcu.h) \ + $(wildcard include/config/rcu/boost.h) \ + $(wildcard include/config/compat/brk.h) \ + $(wildcard include/config/cc/stackprotector.h) \ + $(wildcard include/config/virt/cpu/accounting/gen.h) \ + $(wildcard include/config/sysvipc.h) \ + $(wildcard include/config/detect/hung/task.h) \ + $(wildcard include/config/auditsyscall.h) \ + $(wildcard include/config/rt/mutexes.h) \ + $(wildcard include/config/debug/mutexes.h) \ + $(wildcard include/config/trace/irqflags.h) \ + $(wildcard include/config/lockdep.h) \ + $(wildcard include/config/block.h) \ + $(wildcard include/config/task/xacct.h) \ + $(wildcard include/config/cpusets.h) \ + $(wildcard include/config/futex.h) \ + $(wildcard include/config/numa.h) \ + $(wildcard include/config/numa/balancing.h) \ + $(wildcard include/config/fault/injection.h) \ + $(wildcard include/config/latencytop.h) \ + $(wildcard include/config/function/graph/tracer.h) \ + $(wildcard include/config/memcg.h) \ + $(wildcard include/config/have/hw/breakpoint.h) \ + $(wildcard include/config/uprobes.h) \ + $(wildcard include/config/bcache.h) \ + $(wildcard include/config/cpumask/offstack.h) \ + $(wildcard include/config/have/unstable/sched/clock.h) \ + $(wildcard include/config/irq/time/accounting.h) \ + $(wildcard include/config/hotplug/cpu.h) \ + $(wildcard include/config/no/hz/full.h) \ + $(wildcard include/config/proc/fs.h) \ + $(wildcard include/config/stack/growsup.h) \ + $(wildcard include/config/debug/stack/usage.h) \ + $(wildcard include/config/preempt/count.h) \ + $(wildcard include/config/preempt.h) \ + $(wildcard include/config/mm/owner.h) \ + include/uapi/linux/sched.h \ + /root/tegra/arch/arm64/include/uapi/asm/param.h \ + include/asm-generic/param.h \ + $(wildcard include/config/hz.h) \ + include/uapi/asm-generic/param.h \ + include/linux/capability.h \ + include/uapi/linux/capability.h \ + include/linux/threads.h \ + $(wildcard include/config/nr/cpus.h) \ + $(wildcard include/config/base/small.h) \ + include/linux/kernel.h \ + $(wildcard include/config/preempt/voluntary.h) \ + $(wildcard include/config/debug/atomic/sleep.h) \ + $(wildcard include/config/prove/locking.h) \ + $(wildcard include/config/ring/buffer.h) \ + /root/android/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/lib/gcc/aarch64-linux-android/4.9/include/stdarg.h \ + include/linux/linkage.h \ + include/linux/stringify.h \ + include/linux/export.h \ + $(wildcard include/config/have/underscore/symbol/prefix.h) \ + $(wildcard include/config/modversions.h) \ + /root/tegra/arch/arm64/include/asm/linkage.h \ + include/linux/bitops.h \ + /root/tegra/arch/arm64/include/asm/bitops.h \ + /root/tegra/arch/arm64/include/asm/barrier.h \ + include/asm-generic/bitops/builtin-__ffs.h \ + include/asm-generic/bitops/builtin-ffs.h \ + include/asm-generic/bitops/builtin-__fls.h \ + include/asm-generic/bitops/builtin-fls.h \ + include/asm-generic/bitops/ffz.h \ + include/asm-generic/bitops/fls64.h \ + include/asm-generic/bitops/find.h \ + $(wildcard include/config/generic/find/first/bit.h) \ + include/asm-generic/bitops/sched.h \ + include/asm-generic/bitops/hweight.h \ + include/asm-generic/bitops/arch_hweight.h \ + include/asm-generic/bitops/const_hweight.h \ + include/asm-generic/bitops/lock.h \ + include/asm-generic/bitops/non-atomic.h \ + include/asm-generic/bitops/le.h \ + /root/tegra/arch/arm64/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/arm64/include/generated/asm/swab.h \ + /root/tegra/include/uapi/asm-generic/swab.h \ + include/linux/byteorder/generic.h \ + include/linux/log2.h \ + $(wildcard include/config/arch/has/ilog2/u32.h) \ + $(wildcard include/config/arch/has/ilog2/u64.h) \ + include/linux/typecheck.h \ + include/linux/printk.h \ + $(wildcard include/config/early/printk.h) \ + $(wildcard include/config/printk.h) \ + $(wildcard include/config/dynamic/debug.h) \ + include/linux/init.h \ + $(wildcard include/config/broken/rodata.h) \ + include/linux/kern_levels.h \ + include/linux/dynamic_debug.h \ + include/uapi/linux/kernel.h \ + /root/tegra/include/uapi/linux/sysinfo.h \ + include/linux/timex.h \ + include/uapi/linux/timex.h \ + include/linux/time.h \ + $(wildcard include/config/arch/uses/gettimeoffset.h) \ + include/linux/cache.h \ + $(wildcard include/config/arch/has/cache/line/size.h) \ + /root/tegra/arch/arm64/include/asm/cache.h \ + include/linux/seqlock.h \ + include/linux/spinlock.h \ + $(wildcard include/config/debug/spinlock.h) \ + $(wildcard include/config/generic/lockbreak.h) \ + $(wildcard include/config/debug/lock/alloc.h) \ + include/linux/preempt.h \ + $(wildcard include/config/debug/preempt.h) \ + $(wildcard include/config/preempt/tracer.h) \ + $(wildcard include/config/context/tracking.h) \ + arch/arm64/include/generated/asm/preempt.h \ + include/asm-generic/preempt.h \ + include/linux/thread_info.h \ + include/linux/bug.h \ + arch/arm64/include/generated/asm/bug.h \ + include/asm-generic/bug.h \ + $(wildcard include/config/bug.h) \ + $(wildcard include/config/generic/bug/relative/pointers.h) \ + $(wildcard include/config/debug/bugverbose.h) \ + /root/tegra/arch/arm64/include/asm/relaxed.h \ + /root/tegra/arch/arm64/include/asm/atomic.h \ + /root/tegra/arch/arm64/include/asm/cmpxchg.h \ + include/asm-generic/relaxed.h \ + /root/tegra/arch/arm64/include/asm/thread_info.h \ + $(wildcard include/config/arm64/64k/pages.h) \ + include/linux/irqflags.h \ + $(wildcard include/config/irqsoff/tracer.h) \ + $(wildcard include/config/trace/irqflags/support.h) \ + /root/tegra/arch/arm64/include/asm/irqflags.h \ + /root/tegra/arch/arm64/include/asm/ptrace.h \ + /root/tegra/arch/arm64/include/uapi/asm/ptrace.h \ + /root/tegra/arch/arm64/include/asm/hwcap.h \ + /root/tegra/arch/arm64/include/uapi/asm/hwcap.h \ + include/linux/bottom_half.h \ + include/linux/spinlock_types.h \ + /root/tegra/arch/arm64/include/asm/spinlock_types.h \ + $(wildcard include/config/arm64/simple/spinlock.h) \ + include/linux/lockdep.h \ + $(wildcard include/config/lock/stat.h) \ + include/linux/rwlock_types.h \ + /root/tegra/arch/arm64/include/asm/spinlock.h \ + /root/tegra/arch/arm64/include/asm/processor.h \ + include/linux/string.h \ + $(wildcard include/config/binary/printf.h) \ + include/uapi/linux/string.h \ + /root/tegra/arch/arm64/include/asm/string.h \ + /root/tegra/arch/arm64/include/asm/fpsimd.h \ + /root/tegra/arch/arm64/include/asm/hw_breakpoint.h \ + include/asm-generic/processor.h \ + include/linux/rwlock.h \ + include/linux/spinlock_api_smp.h \ + $(wildcard include/config/inline/spin/lock.h) \ + $(wildcard include/config/inline/spin/lock/bh.h) \ + $(wildcard include/config/inline/spin/lock/irq.h) \ + $(wildcard include/config/inline/spin/lock/irqsave.h) \ + $(wildcard include/config/inline/spin/trylock.h) \ + $(wildcard include/config/inline/spin/trylock/bh.h) \ + $(wildcard include/config/uninline/spin/unlock.h) \ + $(wildcard include/config/inline/spin/unlock/bh.h) \ + $(wildcard include/config/inline/spin/unlock/irq.h) \ + $(wildcard include/config/inline/spin/unlock/irqrestore.h) \ + include/linux/rwlock_api_smp.h \ + $(wildcard include/config/inline/read/lock.h) \ + $(wildcard include/config/inline/write/lock.h) \ + $(wildcard include/config/inline/read/lock/bh.h) \ + $(wildcard include/config/inline/write/lock/bh.h) \ + $(wildcard include/config/inline/read/lock/irq.h) \ + $(wildcard include/config/inline/write/lock/irq.h) \ + $(wildcard include/config/inline/read/lock/irqsave.h) \ + $(wildcard include/config/inline/write/lock/irqsave.h) \ + $(wildcard include/config/inline/read/trylock.h) \ + $(wildcard include/config/inline/write/trylock.h) \ + $(wildcard include/config/inline/read/unlock.h) \ + $(wildcard include/config/inline/write/unlock.h) \ + $(wildcard include/config/inline/read/unlock/bh.h) \ + $(wildcard include/config/inline/write/unlock/bh.h) \ + $(wildcard include/config/inline/read/unlock/irq.h) \ + $(wildcard include/config/inline/write/unlock/irq.h) \ + $(wildcard include/config/inline/read/unlock/irqrestore.h) \ + $(wildcard include/config/inline/write/unlock/irqrestore.h) \ + include/linux/atomic.h \ + $(wildcard include/config/arch/has/atomic/or.h) \ + $(wildcard include/config/generic/atomic64.h) \ + include/asm-generic/atomic-long.h \ + include/linux/math64.h \ + arch/arm64/include/generated/asm/div64.h \ + include/asm-generic/div64.h \ + include/uapi/linux/time.h \ + /root/tegra/include/uapi/linux/param.h \ + /root/tegra/arch/arm64/include/asm/timex.h \ + /root/tegra/arch/arm64/include/asm/arch_timer.h \ + include/clocksource/arm_arch_timer.h \ + $(wildcard include/config/arm/arch/timer.h) \ + include/linux/clocksource.h \ + $(wildcard include/config/arch/clocksource/data.h) \ + $(wildcard include/config/clocksource/watchdog.h) \ + $(wildcard include/config/clksrc/of.h) \ + include/linux/timer.h \ + $(wildcard include/config/timer/stats.h) \ + $(wildcard include/config/debug/objects/timers.h) \ + include/linux/ktime.h \ + $(wildcard include/config/ktime/scalar.h) \ + include/linux/jiffies.h \ + include/linux/debugobjects.h \ + $(wildcard include/config/debug/objects.h) \ + $(wildcard include/config/debug/objects/free.h) \ + /root/tegra/arch/arm64/include/asm/io.h \ + /root/tegra/arch/arm64/include/asm/pgtable.h \ + /root/tegra/arch/arm64/include/asm/proc-fns.h \ + /root/tegra/arch/arm64/include/asm/page.h \ + $(wildcard include/config/have/arch/pfn/valid.h) \ + /root/tegra/arch/arm64/include/asm/pgtable-3level-types.h \ + include/asm-generic/pgtable-nopud.h \ + /root/tegra/arch/arm64/include/asm/memory.h \ + $(wildcard include/config/need/mach/memory/h.h) \ + arch/arm64/include/generated/asm/sizes.h \ + include/asm-generic/sizes.h \ + include/linux/sizes.h \ + arch/arm/mach-tegra/include/mach/memory.h \ + include/asm-generic/memory_model.h \ + $(wildcard include/config/flatmem.h) \ + $(wildcard include/config/discontigmem.h) \ + $(wildcard include/config/sparsemem/vmemmap.h) \ + $(wildcard include/config/sparsemem.h) \ + include/asm-generic/getorder.h \ + /root/tegra/arch/arm64/include/asm/pgtable-hwdef.h \ + /root/tegra/arch/arm64/include/asm/pgtable-3level-hwdef.h \ + include/asm-generic/pgtable.h \ + $(wildcard include/config/transparent/hugepage.h) \ + $(wildcard include/config/arch/uses/numa/prot/none.h) \ + include/linux/mm_types.h \ + $(wildcard include/config/split/ptlock/cpus.h) \ + $(wildcard include/config/have/cmpxchg/double.h) \ + $(wildcard include/config/have/aligned/struct/page.h) \ + $(wildcard include/config/want/page/debug/flags.h) \ + $(wildcard include/config/kmemcheck.h) \ + $(wildcard include/config/aio.h) \ + $(wildcard include/config/mmu/notifier.h) \ + $(wildcard include/config/compaction.h) \ + include/linux/auxvec.h \ + include/uapi/linux/auxvec.h \ + /root/tegra/arch/arm64/include/uapi/asm/auxvec.h \ + include/linux/rbtree.h \ + include/linux/rwsem.h \ + $(wildcard include/config/rwsem/generic/spinlock.h) \ + include/linux/rwsem-spinlock.h \ + include/linux/completion.h \ + include/linux/wait.h \ + arch/arm64/include/generated/asm/current.h \ + include/asm-generic/current.h \ + include/uapi/linux/wait.h \ + include/linux/cpumask.h \ + $(wildcard include/config/debug/per/cpu/maps.h) \ + $(wildcard include/config/disable/obsolete/cpumask/functions.h) \ + include/linux/bitmap.h \ + include/linux/page-debug-flags.h \ + $(wildcard include/config/page/poisoning.h) \ + $(wildcard include/config/page/guard.h) \ + $(wildcard include/config/page/debug/something/else.h) \ + include/linux/uprobes.h \ + $(wildcard include/config/arch/supports/uprobes.h) \ + include/linux/errno.h \ + include/uapi/linux/errno.h \ + arch/arm64/include/generated/asm/errno.h \ + /root/tegra/include/uapi/asm-generic/errno.h \ + /root/tegra/include/uapi/asm-generic/errno-base.h \ + include/linux/page-flags-layout.h \ + include/linux/numa.h \ + $(wildcard include/config/nodes/shift.h) \ + include/generated/bounds.h \ + /root/tegra/arch/arm64/include/asm/sparsemem.h \ + /root/tegra/arch/arm64/include/asm/mmu.h \ + include/asm-generic/iomap.h \ + $(wildcard include/config/has/ioport.h) \ + $(wildcard include/config/pci.h) \ + $(wildcard include/config/generic/iomap.h) \ + include/asm-generic/pci_iomap.h \ + $(wildcard include/config/no/generic/pci/ioport/map.h) \ + $(wildcard include/config/generic/pci/iomap.h) \ + include/asm-generic/timex.h \ + include/linux/nodemask.h \ + $(wildcard include/config/highmem.h) \ + $(wildcard include/config/movable/node.h) \ + arch/arm64/include/generated/asm/cputime.h \ + include/asm-generic/cputime.h \ + $(wildcard include/config/virt/cpu/accounting.h) \ + include/asm-generic/cputime_jiffies.h \ + include/linux/smp.h \ + /root/tegra/arch/arm64/include/asm/smp.h \ + include/linux/sem.h \ + include/linux/rcupdate.h \ + $(wildcard include/config/rcu/torture/test.h) \ + $(wildcard include/config/tree/rcu.h) \ + $(wildcard include/config/rcu/trace.h) \ + $(wildcard include/config/rcu/user/qs.h) \ + $(wildcard include/config/tiny/rcu.h) \ + $(wildcard include/config/tiny/preempt/rcu.h) \ + $(wildcard include/config/debug/objects/rcu/head.h) \ + $(wildcard include/config/rcu/nocb/cpu.h) \ + include/linux/rcutree.h \ + include/uapi/linux/sem.h \ + include/linux/ipc.h \ + include/linux/uidgid.h \ + $(wildcard include/config/uidgid/strict/type/checks.h) \ + $(wildcard include/config/user/ns.h) \ + include/linux/highuid.h \ + include/uapi/linux/ipc.h \ + arch/arm64/include/generated/asm/ipcbuf.h \ + /root/tegra/include/uapi/asm-generic/ipcbuf.h \ + arch/arm64/include/generated/asm/sembuf.h \ + /root/tegra/include/uapi/asm-generic/sembuf.h \ + include/linux/signal.h \ + $(wildcard include/config/old/sigaction.h) \ + include/uapi/linux/signal.h \ + /root/tegra/arch/arm64/include/uapi/asm/signal.h \ + include/asm-generic/signal.h \ + include/uapi/asm-generic/signal.h \ + /root/tegra/include/uapi/asm-generic/signal-defs.h \ + /root/tegra/arch/arm64/include/asm/sigcontext.h \ + /root/tegra/arch/arm64/include/uapi/asm/sigcontext.h \ + /root/tegra/arch/arm64/include/uapi/asm/siginfo.h \ + include/asm-generic/siginfo.h \ + include/uapi/asm-generic/siginfo.h \ + include/linux/pid.h \ + include/linux/percpu.h \ + $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ + $(wildcard include/config/need/per/cpu/page/first/chunk.h) \ + $(wildcard include/config/have/setup/per/cpu/area.h) \ + include/linux/pfn.h \ + arch/arm64/include/generated/asm/percpu.h \ + include/asm-generic/percpu.h \ + include/linux/percpu-defs.h \ + $(wildcard include/config/debug/force/weak/per/cpu.h) \ + include/linux/topology.h \ + $(wildcard include/config/sched/smt.h) \ + $(wildcard include/config/sched/mc.h) \ + $(wildcard include/config/sched/book.h) \ + $(wildcard include/config/use/percpu/numa/node/id.h) \ + $(wildcard include/config/have/memoryless/nodes.h) \ + include/linux/mmzone.h \ + $(wildcard include/config/force/max/zoneorder.h) \ + $(wildcard include/config/cma.h) \ + $(wildcard include/config/memory/isolation.h) \ + $(wildcard include/config/zone/dma.h) \ + $(wildcard include/config/zone/dma32.h) \ + $(wildcard include/config/memory/hotplug.h) \ + $(wildcard include/config/have/memblock/node/map.h) \ + $(wildcard include/config/flat/node/mem/map.h) \ + $(wildcard include/config/no/bootmem.h) \ + $(wildcard include/config/have/memory/present.h) \ + $(wildcard include/config/need/node/memmap/size.h) \ + $(wildcard include/config/need/multiple/nodes.h) \ + $(wildcard include/config/have/arch/early/pfn/to/nid.h) \ + $(wildcard include/config/sparsemem/extreme.h) \ + $(wildcard include/config/nodes/span/other/nodes.h) \ + $(wildcard include/config/holes/in/zone.h) \ + $(wildcard include/config/arch/has/holes/memorymodel.h) \ + include/linux/pageblock-flags.h \ + $(wildcard include/config/hugetlb/page.h) \ + $(wildcard include/config/hugetlb/page/size/variable.h) \ + include/linux/memory_hotplug.h \ + $(wildcard include/config/memory/hotremove.h) \ + $(wildcard include/config/have/arch/nodedata/extension.h) \ + $(wildcard include/config/have/bootmem/info/node.h) \ + include/linux/notifier.h \ + include/linux/mutex.h \ + $(wildcard include/config/mutex/spin/on/owner.h) \ + $(wildcard include/config/have/arch/mutex/cpu/relax.h) \ + include/linux/srcu.h \ + include/linux/workqueue.h \ + $(wildcard include/config/debug/objects/work.h) \ + $(wildcard include/config/freezer.h) \ + arch/arm64/include/generated/asm/topology.h \ + include/asm-generic/topology.h \ + include/linux/proportions.h \ + include/linux/percpu_counter.h \ + include/linux/seccomp.h \ + $(wildcard include/config/seccomp.h) \ + $(wildcard include/config/seccomp/filter.h) \ + include/uapi/linux/seccomp.h \ + /root/tegra/arch/arm64/include/asm/seccomp.h \ + /root/tegra/arch/arm64/include/asm/unistd.h \ + /root/tegra/arch/arm64/include/uapi/asm/unistd.h \ + include/asm-generic/unistd.h \ + include/uapi/asm-generic/unistd.h \ + include/asm-generic/seccomp.h \ + include/linux/rculist.h \ + include/linux/rtmutex.h \ + $(wildcard include/config/debug/rt/mutexes.h) \ + include/linux/plist.h \ + $(wildcard include/config/debug/pi/list.h) \ + include/linux/resource.h \ + include/uapi/linux/resource.h \ + arch/arm64/include/generated/asm/resource.h \ + include/asm-generic/resource.h \ + include/uapi/asm-generic/resource.h \ + include/linux/hrtimer.h \ + $(wildcard include/config/high/res/timers.h) \ + $(wildcard include/config/timerfd.h) \ + include/linux/timerqueue.h \ + include/linux/task_io_accounting.h \ + $(wildcard include/config/task/io/accounting.h) \ + include/linux/latencytop.h \ + include/linux/cred.h \ + $(wildcard include/config/debug/credentials.h) \ + $(wildcard include/config/security.h) \ + include/linux/key.h \ + $(wildcard include/config/sysctl.h) \ + include/linux/sysctl.h \ + include/uapi/linux/sysctl.h \ + include/linux/selinux.h \ + $(wildcard include/config/security/selinux.h) \ + include/linux/llist.h \ + $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ + include/linux/gfp.h \ + $(wildcard include/config/pm/sleep.h) \ + include/linux/mmdebug.h \ + $(wildcard include/config/debug/vm.h) \ + $(wildcard include/config/debug/virtual.h) \ + include/linux/ptrace.h \ + include/linux/err.h \ + include/linux/pid_namespace.h \ + $(wildcard include/config/pid/ns.h) \ + include/linux/mm.h \ + $(wildcard include/config/have/arch/mmap/rnd/bits.h) \ + $(wildcard include/config/have/arch/mmap/rnd/compat/bits.h) \ + $(wildcard include/config/x86.h) \ + $(wildcard include/config/ppc.h) \ + $(wildcard include/config/parisc.h) \ + $(wildcard include/config/metag.h) \ + $(wildcard include/config/ia64.h) \ + $(wildcard include/config/ksm.h) \ + $(wildcard include/config/debug/vm/rb.h) \ + $(wildcard include/config/debug/pagealloc.h) \ + $(wildcard include/config/hibernation.h) \ + $(wildcard include/config/hugetlbfs.h) \ + include/linux/debug_locks.h \ + $(wildcard include/config/debug/locking/api/selftests.h) \ + include/linux/range.h \ + include/linux/bit_spinlock.h \ + include/linux/shrinker.h \ + include/linux/page-flags.h \ + $(wildcard include/config/pageflags/extended.h) \ + $(wildcard include/config/arch/uses/pg/uncached.h) \ + $(wildcard include/config/memory/failure.h) \ + $(wildcard include/config/swap.h) \ + include/linux/huge_mm.h \ + include/linux/vmstat.h \ + $(wildcard include/config/vm/event/counters.h) \ + include/linux/vm_event_item.h \ + $(wildcard include/config/migration.h) \ + include/linux/nsproxy.h \ + include/linux/kref.h \ + include/uapi/linux/ptrace.h \ + include/uapi/linux/stat.h \ + include/linux/kmod.h \ + include/linux/elf.h \ + /root/tegra/arch/arm64/include/asm/elf.h \ + arch/arm64/include/generated/asm/user.h \ + include/asm-generic/user.h \ + include/uapi/linux/elf.h \ + /root/tegra/include/uapi/linux/elf-em.h \ + include/linux/kobject.h \ + include/linux/sysfs.h \ + include/linux/kobject_ns.h \ + include/linux/moduleparam.h \ + $(wildcard include/config/alpha.h) \ + $(wildcard include/config/ppc64.h) \ + include/linux/tracepoint.h \ + include/linux/static_key.h \ + include/linux/jump_label.h \ + $(wildcard include/config/jump/label.h) \ + /root/tegra/arch/arm64/include/asm/jump_label.h \ + /root/tegra/arch/arm64/include/asm/insn.h \ + /root/tegra/arch/arm64/include/asm/module.h \ + include/asm-generic/module.h \ + $(wildcard include/config/have/mod/arch/specific.h) \ + $(wildcard include/config/modules/use/elf/rel.h) \ + $(wildcard include/config/modules/use/elf/rela.h) \ + include/linux/interrupt.h \ + $(wildcard include/config/generic/hardirqs.h) \ + $(wildcard include/config/irq/forced/threading.h) \ + $(wildcard include/config/generic/irq/probe.h) \ + include/linux/irqreturn.h \ + include/linux/irqnr.h \ + include/uapi/linux/irqnr.h \ + include/linux/hardirq.h \ + include/linux/ftrace_irq.h \ + $(wildcard include/config/ftrace/nmi/enter.h) \ + include/linux/vtime.h \ + /root/tegra/arch/arm64/include/asm/hardirq.h \ + /root/tegra/arch/arm64/include/asm/irq.h \ + arch/arm/mach-tegra/include/mach/irqs.h \ + $(wildcard include/config/arch/tegra/2x/soc.h) \ + $(wildcard include/config/arch/tegra/3x/soc.h) \ + $(wildcard include/config/arch/tegra/11x/soc.h) \ + $(wildcard include/config/arch/tegra/14x/soc.h) \ + $(wildcard include/config/arch/tegra/12x/soc.h) \ + include/asm-generic/irq.h \ + include/linux/irq_cpustat.h \ + +/root/android/my_test/01_day/my_interrupt.o: $(deps_/root/android/my_test/01_day/my_interrupt.o) + +$(deps_/root/android/my_test/01_day/my_interrupt.o): diff --git a/01_day/.my_timer.c.swp b/01_day/.my_timer.c.swp deleted file mode 100644 index 31cc67b9b3bf973b29ab6f9adcb0dfbd231d9e61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2-%Aux6vvOgZDoZ;^yB5Wmh86M{>UhzA5bPGxE6^%NU)4MvpPA>F0(VSBALMw zLG)Tt7HISm5<=1s4f^q1FZ~12Q=lvK6cj!5y)&b@nnYL+(i!;d+&OdZojadB_hH%F zmFQ?riG#8IgkvMo)bT)P)eeImZzHmDIa`K*cNn_q6!&)MmhC9UiCl5H{6RTjTrpKE zr>pV4{<~1FO)0q7oGXM0eL<^7#LM?)U%q4McCiJx~A^I0x#%F7RzV(MK=|o`YxLA$S08 zfFfuG+rifwqEFyGcne;GS6~c00yn`B7zA0+3R2(zh=VZrvX1B-7zHEX3TOvyAOz~c zW>5=$tR?ykrodIu1ybM;h=C}GfURH)s0L-c|1|gjCcz6Z3Z$1ifDbmn2G{@_U;}J` z4X}ZKZlF#xRXt0oGbh_yn$j)JjZLj>O`+havn|2!VWPgA>KIyDE9!PgU^A&~2;A`F zy6MMdL&h&rAaCiW-5Uz}+2>6;P(am;v@N%uhU(oDVgqy$TU6&p4atiz$q_8gb}UmQ z&`nX*#oYpK|Cp-Sijc=qH_;1b9W!I=ITJy-^Hn}C-GjZbhGt=~c--wU|1o>JRK7n} zzCJuXUJ{}_{BmYwc;@NQY-wDG1_UOq3G$z&74y2K739+{=-I3;n?gk9hHBVzx)TqO z7M4tRfe(4#^D#h>ByA3Cdo>Aexc7?pkMB$hPz1!4OVdTtiKb;D; zV(S@Euq`KJ3$KTv7yKr^=Q`cY7>=rmBkn%qxSJB|IVJ?8xff#kNvV8mVo7GNW|^8H zQ<3St>yjL=TKpVWk{5}JjG-x}lTUls=$I7=;+p(*O(y@OB>zG|%C(3u#;<7ME!^n* i0*Htt%3dyRuUZzYNZE`eac4pCdsXMJ#{a3Hlk^jw0U5~v diff --git a/01_day/.tmp_versions/my_interrupt.mod b/01_day/.tmp_versions/my_interrupt.mod new file mode 100644 index 0000000..5222ea8 --- /dev/null +++ b/01_day/.tmp_versions/my_interrupt.mod @@ -0,0 +1,2 @@ +/root/android/my_test/01_day/my_interrupt.ko +/root/android/my_test/01_day/my_interrupt.o diff --git a/01_day/.tmp_versions/my_timer.mod b/01_day/.tmp_versions/my_timer.mod deleted file mode 100644 index 1caecdc..0000000 --- a/01_day/.tmp_versions/my_timer.mod +++ /dev/null @@ -1,2 +0,0 @@ -/root/android/my_test/01_day/my_timer.ko -/root/android/my_test/01_day/my_timer.o diff --git a/01_day/Makefile b/01_day/Makefile index 5a32871..7467b00 100644 --- a/01_day/Makefile +++ b/01_day/Makefile @@ -1,4 +1,4 @@ -obj-m = my_timer.o +obj-m = my_interrupt.o KERNEL = /root/tegra PWD = $(shell pwd) diff --git a/01_day/a.out b/01_day/a.out index 48da326f66e46bcc1a611f7d078614b4fc414d67..d690edb74fb790135ffb2ab424faefdaf04f5276 100755 GIT binary patch delta 1923 zcmZuyZERCz6h3cnzsK6%c3W@RMmv+Tj)b)(ur;u`c0+BGC5*Wb6EoVeF>Rv2WEc{n zY?(@`nPE9G8Ae6^s2B~w{cyx6EF%sCO;Jqb52*%{vP?4!G5iqfd2io~qk5WqpPujY zew=f&9djMW6lX{u1y02`z&+3OhL0>QCRGS6)7OKRfUd}dP-aK#mJLO2*-&)Ru%#%5 z7Cg%?R~&lh^x^*gsqV&!3zy$L^k(j~@78lTql=&-DVWtM>@j4L8$(i=e*eL-1NfvA zGJ=kNfUii^ER4sc9Y^Am%jWo72LBo##9u!@X2^F?j`-vS^Mc4Fps>YBCIx>5z3tv8 z{p0-eTzflLAo5!|&p4k|`5()CFmg<|L-_YZ=IX9^=C}Cd&6Td6#NzoZEiOK^IG^IU zxVViV|0Q|e9kF}21I)EKQqUXU7$JyH-m}Fsw_dKE`Ezydd+jdJ8~kXh!5ztu7>E&Q8|r;hc<`eKsu>H0Wq874P8gMv1^UVOl%E3!}J`cfNsKv`tG8h_8NG? zab%_r3s3P0S?XqYn$8(9W%65SGdSh+xYoAbc~L5|<*E?ingP3QyO@G!Y+lxiS8Z*K zF0tJ!&j>@4FdWC2J;+ixYWK1}oVFje7)4)H;YrzrIi|;`BTJEF*-aL*Tq&6$g)!pB zRn7`CI7-|_m0JTV99cP@klm6ELU>hnC$5QVMN$|osC;)WxS5qy?onQmrah$}gfsJ^w z((Rcftq(j9DDg_*Xr(*+ENLC2<^8jo>eZNbI{xTtG3@4Eo(bVq8uM+Q@yPq6m31Bn zmBjp%%U7M1UPL~t=CT2w6rA>`Z-7fezFx@H+fTZm=yA|lL`&iyE!ww(Hjp=nK;M&s zJCrW+x=6rh6DPHO2ydtx_a|xjGD^K3aIJMg^(}*o5`I@TYj|;R=%sx);Xa}8SsaZ% z)tPATNN#G})VKwbdxi(c263zMj4PRZA-#JjIdtG)GQBrF1~egNXO;KZY}Z;J@(JW~_2YW+=h zFV!^3E5c>vp;5Rth`w3}?yn75w2chmsoG|%b{A+QEY&v2TFd3c*UXCHbwOEcIPDwP zf}`t#&VVthE+)W7AW;RI{bJp#j2bZPqpzbl$N;8&%@%FHBY4W!#v*u|-g#`OYh(K{ QUDsyGRuyB=NUHPx19IGrAOHXW delta 1919 zcmZuyT})h65I$%BV7Fy=@9x6>vv(7L(pYw(6i7_N-GcUFNhr0@RtpRA6G$rE+68|S z1*KXyO>Ngn8Z}Mj$u`==G`wIR1jIm%J^+c@Ha=j}#%&^|#-{d#t}}PnLe7QV-#Em9eO{ngE#aoqg(7WlgQ-vW|GFt9@NX@-{sHc?AaZ+(3CB?jjJsr;Ty>VWW2kQMJl;TGADUak(WuP z@ONhv`6HD3N6*p@qRQ2#)KaIMx+Ra_zPERO)544$OCm4KP8f+T^drk$#GUv1ZJ|cS zrgmfIZSpn=nLPf`DyQy@_@~GdO-?h{A7!(0>e+|#DST4%(@$Z} zN)nk1Xi?t2$G~F*jva`#$5Po?TWo*x>5|TT5z{}tjra>qsRvD|pPI|>C}p2r(`O>^ zp|O3}(9ze#onpz6VGCp2uYZQR!idkkwQP0_xr9OXBCo;hE+J1KzlNMnz)rPiP-@y| z96-1PZ<)%1+esI*+TYhT6qtrK=jEe_#bmwsOu%oZ2J>ZnyM}Icla+aMCX0k+ClZa| zvz9uT+TR6=k};PF_E|f56s}l9yb+eH^;`zQ780iPk^-T=BAS4hEyBm(m@UMUkhYx^ zYE)Oxsk|M+_TSM{SSZxzu_SUg;z=^&?pBnh6loKF)D@wSZ-%b~x4wXNq2%TX((SQf zLXr}1{i0`fCjPHpVA{Mrj(4yDD0f`MY?d5uF5y}Tj~ven6Kbv++7HK^Zb&%uy`owt z%|b=x%*P~1J0s{})_K57rRB`Q4(3T3OyO6d(iP$J(Cu=2e^D?+Y>Tz)G0Y02(fYTd zdopVi%%U}bC+=WYMuS77UNr1!_{-&PI)PS^d07^_>JF{QSo%45N%gh##T`;VsHK95`r8{N11QjTY!2ImblaMv*HDN z(E#5TO&aK;g*V-w`Qm-O-N|nC&XuIy%}u)+;#Cz@6+58Pb1+P}$FwXSr|UZ2b9^{H zI5e1?JnuQrCu@CS&R>T^{)iCOOG<)KeJ;;N;7%u8_6LNdYDuaV3*7KWKn~c!6Ns88 zR4a~7p!UCUoKmqed=iLQv}wkVSPs;H9JFJndV>*jm)hrD&>E~YYn4qvI#_GbCJaY^ zIaniTgC&}B`Psl*j9IHKsQuom;ZSkJF`#M(RP22=`DyXn9LLNn;*U{1*eJA$wPvmK fI6z`OjUcXB5W@9Xm)3B-<$6&rUYQPF^cDXL3D}9? diff --git a/01_day/macro.c b/01_day/macro.c index d048ba0..f51ba72 100644 --- a/01_day/macro.c +++ b/01_day/macro.c @@ -1,6 +1,25 @@ #if 1 #include +#define __must_check __attribute__((warn_unused_result)) + +int __must_check foo(void) +{ + printf("foo()\n"); + return 1; +} + +int main() +{ + int ret; + ret = foo(); + return 0; +} +#endif + +#if 0 +#include + void bar(void) { printf("bar()\n"); diff --git a/01_day/modules.order b/01_day/modules.order index be4bf99..2650b92 100644 --- a/01_day/modules.order +++ b/01_day/modules.order @@ -1 +1 @@ -kernel//root/android/my_test/01_day/my_timer.ko +kernel//root/android/my_test/01_day/my_interrupt.ko diff --git a/01_day/my_interrupt.c b/01_day/my_interrupt.c new file mode 100644 index 0000000..4133280 --- /dev/null +++ b/01_day/my_interrupt.c @@ -0,0 +1,32 @@ +#if 1 +#include // init_module, cleanup_module +#include // printk +#include // interrupt 계열 + +irqreturn_t my_irq_handler(int irq, void *id) +{ + printk("my_irq_handler(%d, %p)\n", irq, id ); + return IRQ_HANDLED; +} + +static void *dev = (void*)0x1234; + +int my_init(void) +{ + int ret; + unsigned long flags = 0x83; + printk("my_init\n"); + ret = request_irq(379, my_irq_handler, flags, "MY INT", dev); + return 0; +} + +void my_exit(void) +{ + free_irq( 379, dev ); + printk("my_exit\n"); +} +module_init( my_init ); +module_exit( my_exit ); + +MODULE_LICENSE("GPL"); +#endif diff --git a/01_day/my_interrupt.ko b/01_day/my_interrupt.ko new file mode 100644 index 0000000000000000000000000000000000000000..3023195a72ea1852b1b00ac3e254643504c194f7 GIT binary patch literal 113488 zcmeFa34EPZwKo2~CnxEfd1%un9g>r#g>*=oPH9S8NZN)b&>?i9D0q63oD4L>;hdyR z8Kiho3pi9ot>ULux!hg_?Nt;+hEhZkK`XWwb!1)wQcLq54f)5|8t$YoD}jy9q0I+sn8Y)ZgHkMQ=FHt zdf*>_l;wWnhgr^C1Rr=g%Xt@m^XKM}vv2duS3P+6Xjb^2$#;4@ay$^kPYw73&b}wQ zOZGi+J?J-||E4E)F4(u3c{r!#ah=6kIf!=-;77{y%K~-=2fCxfiRh|zo$Cpmo@gvO z+>==4?2g8VB7Fnhs}?sbY{Y+y>-&~2>RGxlx;V6DLuV)!k4A@LqoJXZp77Z4;7Ft= z6p6&U`M)Q=*aW-5M>e#r|VR&>r zE!>Yk{WtR+9*xH1W3kcGXNjoY06eCMtyAI@9y#V`Hmi%ZXI zZJFTIEPvverH(^B$MIzFrAD9x%IGl4aRP1*>459WuRyl`n!sNy#L23JIy%8%HuTIw zruHHv5EPz(rzt!^*@VTxS$pUKc2%vl*O zNs+HhnN$7;pEqafg=knwmNR1y$bcI_oP|{9CL=?Wl4MhLlKebBhean-q_rF0zw>%ys(makygwZ_+W*$uEd5p0H-+X5>!4o7c@so$h2-eH-JC7h= zVm%@RQ~n&d;_Fugf#Jl%G(f9;+1NVUTy%vBA1sp7j-f^ zpY7r~W%xQr^K#3A`(Rlo66H<|u3UiM3MK`=gX}y7sFAE!Dwr8OAA+__N<^L9+TeHV9jCoK zKI-Jo3VyBuwQ?t;EGPG@;C66%0Yy#0B?v4rv_k7(Xr;(dVQ5wGlW4+_p%#_gP-~Fm zZN8z^K`Kk5p|)UzQW;tw%%2Cj3~dt5enS@p-(TZ68hV4o9W@k|jJ{;3OVA@$NRMC0V-^s#fGR(r&jM!n z0he3AbU$F11x$O)iWmysh8i3Xl*a~ooZOM%b~Mxpi;D?*#?V!wfhP@JE$Eb?ebQ{t z8@f)AlcgQ{CgChGbc4iI7`jnVouRh}`_M7XhTb7@`wYEP&;dj53htVPzA*IeU=--E zq4x+nV(7iWdWdm%20EI79?3w*4ZTm&oiOzN;3!(@q@fQ4|9}y5%FwOSf-htsOc$aT ze;@oF2dAOi1XUP1Ea~bpP@|zw1kXAfEn(=B!Ou;1oK8cZ3hqHG?K5;l(0)Uo2`+{u zIbi56QLRH6=vG7bOX-IVJsA8#f#VzrmiH!{+=qg1MFBfKt-`~>cLVhs`bzK$G%l{n=uAV$MX8~Q=;&C*p`+mnKVxr&|* zHs_=J3_Taj0V*-{)8HGCONF7I2fu+5>I@ZR(D$f26;+hRj%>Eak7DH3Ap9g9; zRGIyIpiV>6vU3_8XNRE~*&L`l4OL|qAgyugf=s@ zQqr~LmB+isoZJhuIh%G`Txa$hkZz};&DrZPh4dTRmfeH6aYJv&<{Y)pP*~9QhIUFT z?KgC}paX_>2|8%#je-st+9&9+p?7C<8a&@d3PoNz^RKxuE=;%vtFvz06E~ zr-INA5i!jxXq^pS*aJ9Hs~P0y(L!CFQHqawQw8hESyd7!oS6V2Sr*o&1TUN=ny-Qv z&L)81)!+}k9sE*6Va;1mL}(3jm1YP93adW_G=o_>HQli>r*IC%ED2aUxkXD}K%5j; z)Wohbx|wuP!-AlX@*0C^$F9mTP3r)WLNo!S&fvWg}68s5Xkj*0dZMHzlTd!(qB?R+qx-CsO~E^{rS9j~OJ4oRhdN){Yo5R?>EUBO1o z`3A@}Agt*mseJcj0H{&Ka zrX@2T$2T-%0z%OCcJralPWqGu5=|wj4IQlskB=qCO~=3W+5mKUgtiCtaoV4>s=beoeC}$(4*io zmm|4fLD*%34=UK{vP;Jmbh&K)g9`ekoWlwR1RPPYOTgU<1_c~dFeKm+1;YZ4D;N=Q zLP1QxNd;F3IHe#i;CTfJ0WZiLRi?nv)rcW41CG}C5m#quOgI}e zP;&-q$w2Lf_P9Sst9Kf@#=RQImK!j=b=cpZYaCneFTd1h&te9Z;{f? zRWIA`PCz?SvaIrs%j_aXNhwvW29We>T795RL;7FEs7a%O`A_VBub zii(LWv=|GAib=f;l%ZKso*J4Jlj#VR=%}lh@*%KK^U9iD#&0oSWy`3tN;Z>K$>l5< z`v_%yi!oBpV%BB-EFoA@VsJoUv1{;hflM_mShn?Iq|%(C)Z0+1yg_O!b|A_&$H6m$ z*{jrL!{iK7ytTA#ntT(p4KX{XprmZ+A*Oi}!aFmV++*N4ZJ<=VZ0`tvD}7aJf-Ae4 zbb&Liq-^vhFrPgbA9KpaI3PmIQH%OJVkNJ4*$Xn;c^*?hsQn8OrqMUthFB%v)07Oo zSqisAWHypZaVQFUq3nJRMiuXYG*KU<%c7>a>=@|+KP~y|LS>$N8;D8qE~hNlrOkE# z(It609Gp3!vI*`}2%9Ux`R?B(=>i$|8eZsriSZ)Lk+L7t+Nm)A$_g2MinIyybF!#o zP$qPR^8bP|gp~db`J0vg9qnw3(!cM)?{=kMB2TBvTqJebp0mfjg{YIE+Rzb6Q7}5tn`zlwUU)j zJpo!PS$TrAR?as%wqR4NME6eD$34x-=8dEozR%n=+*oKf@M+*IP=-S zoR;!wKk|uA`#=!#=W)8qXE#YaLXRWB^DaStGNHZ%D4EXjTazK4w+`O|Z)(>}STbqD zsa>3rZQ7mMRfuqLWTpjKx{%Ww-iRTkxfuq2y zUjA$RmTFX=!(CXTS8%5_=oC~`pLY)Sm6V~S1%XDlGFx?es#lXmb*Op`OE!8fc}mm` z>;OwWH=|*ws@r!b^Xy0~^a3eV%eqkVaSB4!o4%N2?o4C8D2;hD3$jADEQOG&#MN6# zSFpq#&m=RsL|Q>hxoia!k|FYPlA-J86tg(o+v8MsOU`8In~OzoSogbT@G(k>!xJ+(MZ+Cf&x=ELeCW+!8FNA5cUAH)(sMqutc1DuNt91sxH zn0E=#ftven0R?-gJ>zqbT9S}Qc>qX7<&kb;j1s8jH9VQWjh7Nf$21|B?e}2`mHcf zMYfQEYL-!FpyunyxzWJPZv!+NID6$;n6V7h{WyeXHZW%mD&KElF2xx%FpnT+U_J{S zrJZLZG;kBQvu63YU%{FcqDfNOnw8{Lovb;REM779VQS9fHcUu)TJ|Hn(aE7#NYV^^ z4%_~qkNtkHX}b?Wns6Q4*eRv}HSG-M`fdS!i;DEuZaL+%)@~)K$!fRV26Cs9L+9rO z1WS3@n#ie*6k`Myk2|$pBrpcKwygrGMoqE~)!w%TAtFWXm+v5((qAEM+83*Rv_Hx8 zHIl~k7<22?^2b3+`9UqerS=!xch%hfT~tfy=Sgcr*8Y;TTEW_1ksYR&m3i3DETEa~ zto`k85QIH~m{a=#i?WPgz6xZEX8Z@Tv^qHq%9)WgHP{nGd9^`zKEmJ?;GcY5`3B^h zrE5xOLhW+*M^$D#YF7!ZmZWyAx@$7JYBx%Z8iHC~IW}v|8{Gdu`W6LUvRcrwU)wEf zy-tnkmDRyk1-gjaq2O{UXQzUg`vP+7=XiH&_qkNTle+0#d!3*k8+wyue#+3BU221q zt?BlQ6h6AaWruqfcaxMhZs=`-_8EGo>s3RK4ZT;&>(9|V4@wF941LzE0H=@clw9^( z+~))xFm#XmBXAxxbg#r6GV~)shYdX|=!l^o3%c9TPsA5KnxkG18{9^k=TUQV9zyLY zyM*Sc!$k=NPs7mS?gUl_SOJ#T-W#Au+TQmCE(sx2>v(@)fS_E_0|Dx4yP+q=_;(t5 zO3)5NPYc><=v$Jm-_VHweXy9JZwDyIxS{U|I$-F#0ouyLhMtjJju`r0fckxBIcib` z+0~t`eRH4$@@hriBD8_GN@AKh4gukAue~L3Zj$>$fi<9w`+o&G06gD=Bv;NUl){#g z2F!ADm=7DrnmuPS=)FERtJOHG@fd<+Y|dJgvZS*XbDKjAz^o-4?dtl>YGQ>$%DvnM`|d_3<-eDl7KPd+~gpv6}!Hal8gV@1vG<%F%p&hBIOYF}peQ<@6DTI9EO zYYnyoXuE9`2iU+x62W$(ot2VG&ZhRmoX-?s?BvTQ0%2d8N#SCV3SrFz~^wQivZbw+U)l_MA&KrKn&tu*Q`8AJuF%}e( zLg!s^0xZO6>iC85^Ba{;usL)>|)7<=Adb;x8&o&7u{QzmE zLAxC#ZL&NlvS|22zk&!Ykn1A+Uc?B``w7S#%E|LA8>-Su&GYkl#w#i37u~{)l`bLe zDP2ZdrJO&Bv`RUDI%$<`{!G#;+5CB=8&RyZw8v$y=j}l;Qe#k1?``m{UBk~C3W?s4}(GSN4sAS>w!@yBf0_@qlCFPG@>wfd}NVKw}*?6p}9pOZ!lX`Ox|8&~Rm=KkE}Wq=lq`FF`c z-OAiw3%FEcej{miDtJ+1`W5_6yu881sHBsd9q7d`+{=k6&M{mSQ|4UpD@GOM1vpua zD<}-mPVZMx6yS>Hl!D>_mHGKe1GvaEIly*!ft~8)P7kpC?F1mVI>27Do&4OI0M`cn zy04#GEBPHXbe0Hl$Sofo-RtDm1%7}m4_n;g05#@F2D&=~`M0Q)^AU?%BI%ABS}N#- zp=AMT)Ig+j<165?8PzI_qv_jG~W}xN_)RKYP4Xu=P zof&9{p;ZCS7ds8L1*qW%4Rr?o1?_pr(DuOZh_bZDE)jL`FAlv<(CrrY`am|kEB_i% zUx0^M{xzb@10R8=_?Lrr1y-QEXDr>Ipzj+R3DBuL35S!G;X5c>tb^;DD2C+Fjrz48 zRqRJG1S&`y#ledIU|w?{2y6hQn)skJiGgEMYa4723$VfVWdXL4GM@Xjz;BZ|JQk1> zQqAshslVm${Qz$+Sq=(9%JzeROq&W$3b3*J!vKv~i^e=FV6B4ZB)9f-V59n9C4+vA zIVEXgTGx`?Ls`}H{kncM>ozuk@+pvJVVm5VHJs%8L>6T*J_TltKAA95SPq{PP@!o)FCe7gE&+84z967c!94=3>AooP zv}nwI5@W4(zkp7Sc|d?Q-BAHMHRhNAYsZHK#5Cqh0>%|QEMT94FALbO;1K}_6ns^{ zK?RQrIHcff0uC#9Ou!KZj|;e4!Pf;GRqzb~k0>}U;J8jD<8JO#S+_R$t^ITsRnt+% zf6lrcL#{-@x3XxP>lB>GqE&BJ@EysoMZtFkv@3WpLj?oi}D zC(_v2Z0@P7PeZnLvxYwv)ajN-cK12CzY^u#;bM4FU2LR&0{k*k+jC#Ynum=WE#pNI z-@xxg-K=82SKU*#m!x7L1%HtAR%Iv1%o;T&5Nral`UeHHKn&igH8B<^+R=95A>m*bb`-R;NofKL+XSsAmHM*;dW0M+#wdHR>eNLl>jGnY#a zVCSIQSaBYJ$lh2<5)DAsO(3NK7Wpm45Nm+frN}7ACBxBCh!_JY4H8^faWiPibYZ0| zAT*+6W&yX$C1Pe_Y8^APh}D2I%w%81kCc3^UmQcMV3%B910^OUSU25pF3ZTg9sR|KQumKX>8^BslkSM4cPvXDdG){G5wV zvfz)f;3N_;&SM7d6v+mkRCTUHj!D+XkuV7)T??DVEqDjGmXyg+rtHCg99VibAKTT; zx%zH|;Btul%Y6@^w9g|TRy%7LzIfJs4E+Yk?@OpO#F7Wxp91ARiI1=?UCa(svWaaW zWYccm2@!JHhG|P+-jY#sA7$f7RP*JZ@VS;>mt>eSJ;^Yo^J1jUy%ZnM>mtefSu#$p z0g^hk$k%a1yeTgRZXjD9J`!-w*JLACid!M8b|q`K`a;ZHz_S<$U0HUAA6mPf43fp{ z&F<71pWc?DYu}Z{&Cr}|bOV1xjw}co^0{mKg1?3!lJ_ck7$h0y&duQhMS{=GOA1n1 zlWc;<>9e8D!q9jbHmWwRZuKX_np6^I#K(4w_ zb@F==n$Iz&A7&z)Iy0;TbOJ||OGnExlo4d`E4}Y}#rIrUWOk>l!Z#3@K%gO&n?R;N z?Q*9^$dmE3OIfR~WJKzfSD+Ys!FbxWu*nIOaq`X{BRP>}$lI^LWM(CAzXBEg5{kE9 zfy%Uea*iSR+xVHlPuknB=KynmhL8XD>t)dS6jlY#D&otw^tWGG#mq}Y&6-9=B^xP& zk_%JhI^2M=(01mm3_DWfB`NZCsmxwa((@>nqzIO+N|NPM{Vao1<4JPHr$MH_3kz1y zPDX|rlVsD1B)Q`JB>9m@GW(C+1+pL*{B$8E3YkBGN2EDSl7D&usS3Q{o%PB1&*|eo zmGtu!2$#vJB>08Pl05g2wETqTE^xEY>ILt+I>~zfN6G5v@gR}PaZDnN{s#mz52o`x z##o`>d?K0P36hrh$!Ez3);sV!k04)SF^_|mv|jd<04gC*#Ih?$Vz6(=rwpVijs#{` z{sd`CJS{P2>RN<~SUJ;=F_F?UPJ(2K7a+P+dvqJfGEFui_bNZxguIK;sG4j-K3mgM zU-W36R~CFR4|{uv#@Z;j41?Feq~Hvs_cW$F$nGjpFgeKXoTOlifC>c_0;VgN7W^&d znUI3%K?+!>pi01e1t9^A>0n7ZXjV`oS+7(uGuR42TgvgU%&QF^f!EMJ8P__zS-~4& z=8oz_=baV22wa}NmhzgoM}TYUG6{Msv<`+=iVPKoRt0AjLvTYaD!HN7AP3ESL#u;S zu|`8}!AmKXq4mLg>LHh*O~To4=%U~>2s0j-jE803*5HLG?vO<(IvfzM&f6|x%EL01 z`%;nSPGi1I(A^p6UPEt?xTA)`lF^q8bqRXJ3hD6+dCUT$7J!FkDn_3L;9;2tTy6n) zSf&BHEC3J7RM4RyRrPpaGOq-9Bf)n->rPl)Owcoit`ZGAY3OP}rwr|rW_#Yyb%LBM zE#XbVSz_o0iK{Slqo6uNZx42%W10=UL*n)sdZ(ZRhTavNiiOP~L+=hw0y=EyJ%WxH zdT$VK|FI*avM4&5fgZ^~#|^zt(w#8${vaojlZHMJykia@mT8{1N(;V_ft;Ym{e5sd z2dAOi1XUP1Ea~bpP@|zw1fNC;&4xZ1Tn<;D)6l1aakSDtLq`PdH}shx7vl#E-6g7Z zChn7{XF<6N~kkbkWHK1Xs9^*X~Z=fnwWhOsKwBf?4JR(8>-Cy4N#|{ zY1uBkz8!{UWOJbIG*p#60df6?sjJZxyDpd*HAvt>9Ks?RP%E=LV5 z$flKi#L%Mb8HhV!Xi0V*&`Cp0!g00t8 z^Fot%VK(RBPK)czz69xZ8rqzFbRz0!Xj^s|apQ*Gkj*)2pP{gz>kaLcR@!gqazO_S z?Gkj*&>ICEGPF<7VMFiE<}@k~%Q!jXq=Pe3?uCod|1zoPt|y7VD}sNy8|WK20Rys6s|F^zhs4oChZYL?`jUw#2dqo+ienR;CLq1Pc|x|iSjVf>zf z2q%9vgZw;NsH;^sGQ?7>Cnp|?70moO2+6*nHYIq$EYW-wykIr~1P_5flv7|u6x93? zZb!|%%vG8p6ey@Z8?jZ)(wWJJWd(C6CLWe)JGq5Rt^k7+SJ=d^GP;?xo}CshC#^d* zg)7LeJ2izXN#pGFI{e~~v>qRpy%hkX)@s{dcpeRwJS;10ImU22{AzRxTS@D~vclD* z^9tuVOin%r1fE0;X2a#u&l71bc;MJE9@XG56cQKASn;a z3NIun56cSIliaCIaU`oS@RKe(Oa`kI?4;wos+EW;1_yO&a!d|xXL3>zM zG^IXZPnNvmhL0kts6g?8+mS;1yLiP72+sK#@Vy|c>7c)8g>sq%C8wmw#a{uRhAv?e z&-(?wqLa;~b7q48gwr~YVi{e34+f@J#ohXns`K#;RqeyKQIl1a)o%BbmCZ^eE1S(= z?eMa*Nb}+$OTd4KD4RP5LP{%}$7qWPO`LL@A2G3FEyIOrVkJk6D$~TNv|DzCuwqip z*Zc&NW^zbqf=RVxvWI1pW;0VMB~)Jdd!N5t)}qQ^K8@M<56dPOO)9pGlteqTa&$nY zovj%s7cn#J$Kq<&#{w%5o5KJ)j>d+26aZ*2NSsxAfm>K+j(q8bZcRBt#d9uQ?_SE{ z6>N|g_3BGExlwG{sv}>z*}V!tefQF>E=5w`y>y!Zb=OO`3s4We^kM-mn)MC=?Fudt z&{@uhWu>okuS3>5H0Jd#4dPA(mkQ`naGARah4w25yKL}51v_1K>9_)1P(%g?74%Cv zhZPJ6IHF*efV&k83OK4@NWdcsh6Nl~Fe2cDf|!7l3a$`vN(VyMK>s3fa!C-Y%hsiIIuT%DmY;cU!6%^9dA1GO94cM6a#IZCf} zKLli}h|=ra1yCegHZSYLk0G78>ZLbIADOFOdXw9YetE&t zeaQU{HB(*L(udqzUFe{phecJfcL+}d|5o5(*_4Saln=|MOyU%vBWFr^YG_WGOh?Er z(odOE4)*C@Y13}}7V}lQj4G>SGg*~f&VsS~P}+ApIN@-@2KBQ9J}gr>AQ0Os3NIJP zRMUf{TaPF6k5X@IQsoU&Td{9Zy7_0|sbcmjb?GoUgA{KqZJP?RiP_dLJ3MnJU0R8V zs`W%wOwPv~2H%sBQh=O4yvyqq(`*qn&Nh z@Za-wa=X$mk*8B-E|R+JP%v4f8&^=_&PQ?k6-;yA3UEL{mDKZ~f{=`nLkenKD(zvk zIIC|hel}7{B^xWg$y`K;iYM+^>{qhlNzz)$il-h2t(B}eL0T(W@x9-G)=E~qICTls z2Bo|m+2t<6XFl>mkIr-N0Z>`yyWAl%P%jbOb$YkY-CWw}{yNFMP>i^7FLKG{X+DeH ze}?oGPJOVnN$gJp%W~xF$~Pe2EES@n^n7;_?29H|Cp4x#`aP==EYn`VS->vf#FbAA zlTUQo2cnWcj}uxxJ5u5ix(flG_XP5jDfj(=lIa}3y&2+pM^OX3{^+_7NLswIi*vS3 z%#~e-5iZA8!OGn(7eTL5Ev=kYQFzP&pDGJe&nrdRyy^Jlv+vb?n%3}n*d9V>+JXl` z7I@Py=K5FOuub2QCdu?m79m_%XO#YjpTUf>euUz_crtDh_Xw4({CbHS#+Q3z@V+M8 z0a{Ezl}F>EWNu2Js=OP)QQ%cA|2BS0dsLmn9b=RYqUu_;h9w)lmOOY!@iY9Y2g^cks>3E$wZATzXGdD07f7L6)`gOfQxK}!^pPZU zXBzWGY0R5hkQKV+QV6NzrD`i_zG17{aWt99CDIC7%4M`XG}Bd)A0`>PWS?5zuvK+S z&SdB-!tzB^^{3@9kXE!zGO**Zs-+`f)<$nikt^>`_DUO@y^e3#s@Ah#4j* z08ppk!mD?CfCH;tV?Hfxe8ct?2w#NsPDOR)KSFltrfPBfjh@EA zW=nuj_3uw5nO?pO5ytcf%Ahr>4!V1pLQ1O6ahbeA8z_Xoq!++3T{+&cRp+@Z4;P>L z35IgcM#QTajw}^16k4<$Onm4TS|Z)Vhi;*zi})Bu1P?W_#wEH&9QSIbFiK)-D!#ZB ze%)opWDi7V*2#e*RTWI-peg#7-MBTI* zR+3j0H*_vp^r2hmygSf5A?0a#7s4Bz9D1oFZ90*D_^6M4v|JNwXQ07?ZA4xMUv9=s}r++Gv=;zxrCk| zUr)Zd^39WPzI+ShTPWWm`4-E!M82i+EtBs=`A(8=xqK(fcZz%~m z&%T5pkuJS0O%yF2Zw$EwuSNd5jB2HyC#^bM`%BU~#A|;=c1(@z;|`Ffw?*J^@W${; z1lb!y7H%28d>zOZ&G-*w!5c#c-RNg9%{&;qF+75>SCtu70RQ;Lu(!sHJKh+QR!fgJ zhSWhd)Ocga7&X**W5}3hv5U2DaCal7MM0M=9Mv}CjUg-BsWH8>P~56O*Yi6RTrRoo zR1kBoMsD72B-EW zDQ(=)+XU@1^iKC}D15)6_ey#FIhyXEl(5gxXWb8h(?@qoF8eL+bAk>Sy2tIEiA@bd z_e$I$Lq8I9*wC|rju`r}pt}wIM3zNI@y3uX&jvST@jPly4lNL6mr%Sh#w^<&9x4MAG)YFYrCkbal}-_Xqxspj^=d0d`-zp(kZ>?lkn2pdE&u7PQmQwbJZx{1~dGD;vBqyg6Bsw+L;u zdaESn%7#NgxcSELSd#lgfv>Qp+6MnC@Hl|yFBQm@Gl&mcMj8-TzL^gj$C^FogP>pb zvA>j?)p$N;Lm8X17NsV!S&O;jr3PTu5{`CtO=mT+!Xf2fPJc4_#*pu*Jnv$B^SbcK z=LZ3tY{fi;W=B5&T9VH0Wp5kZ$L!U<%5aw%ak} zC?(;I;cxwt&Jq_xOFC=XO9)Oj8hMoe?2C9FE|Q(SnbKGU-WaY=Mr@~Q8Pmlnki z+J6~XHj)Z-o3t$5>EE!>_m$EOko9zX7^Y=>#R#4TyPT zta^)v?`EgBE4_!OvYpO?2a)x5B+cgsqEQ_D(G&n_U%WA7#+v44UfMPKz06m8e%|{& z;KKV;p7*nTRN>|wOq2Bkaild_Kge*C^%l~6W7vga;8R0byfI`!n%`aAxik9iNUF>) zkhU_v$ULmfdnuRhSIoPQw7xN$cR$-CqnTH;i>0{U-C0;s7YnoFq1N<^=YUTd8B}bS!CA^Ync5M=mSm; z9e9$`KzNS$ENK3yU+H;_mnz^n;&WIAXioi7nmtG4;>>@JNOrAGL!9AOT7uzPwT4lK z`_B;>uGMVV&2UwfhCK||DmRQ%&1Px2dwJPPTfE^)(yBHMSCMX3o~uc>D18m-cBS9S zq1UPO4P5K)Q2Iu$Zgwht(=S2$&k^qkU>fs{DeLZe>_lk|JVz|ST?|RJU=2w|^U9RW zxplaD=Dr@GVsgD}(zeySH%f%vGq_e97thc>my;!*Bc6hMyO3VGA<-N@n4ZHenuA}`?QY&&pYM)zzE7o> z^lA4>mZXX5yyNb9$wc3jf~=$`#C5YBfG1trlj(Na74%NJd+Yt8ewf}+KN4UY56?;# zR>L354z1PjIcc*KnBPd6oeEx*n0^Jn z6NhjRLk_*09iSreIilhm!&Nb5&J`DAR6$;V^V+zA!T?SBeg#DVt~*aDC=Sr9JztLJ zh~DG?+d)sCyy*e9znvR-)dBXJo&R_>0WKr@^)$$p~7WuQ7kDL&@QfnJ*4-2rt_GJOKCpPYVEpS_dpTlDTIak;09+&!C4&M*(zMJKsAf#+R2;2p! z8Wo%rU}N`(0UEIujd@nUS_RKZZtdy7M)ki+2K^dyO47t^ZS1`ecnp%_Km3!gD_?&- zuYR(3DC<`U)(k$Hb&SmE!1G(~)~q!P{HRZ4QBvbmU^eTMS*)Ek!tGhN16U*6A$eOf zp78!Di??94q|Znq1D{RL;Z6aT!{-E4XqwLp2r0NrK%Igw2(SjeM}Rf(7e$^HWxG#e ztWED1(5W#G2(Sh|DqyF^91~!z{g8l|#(YV@xPpfT>{IY%0s9p^BH)06uL?M*;86jG z6nssw3u6ZZ`9$g76HTj~2aOiE_%LMXHO9=WD?)+S~5EkVW5E%Xm@5H}E@AH>=q1Rri$b zC8=0Q!5<{ORT<|%$gELg0>OL$tA9{H3;Z44*ETV7$c#2}f?mE{M3>=pt$Z^E9R40E z?46}rhg7*M@iDwUMP3Xthnu;)*D8jNPaDSpa(@CZ%o1FaO0XZK=g|YfUw43kT)-)w zH$(MA&htJZ4C`QME%806#1E&)<0!J74wdFO%FLAGT61)wXW_$BrEQ!q@OQfVNM`7Ef%hd=pC@WGH+ zj9<$K{%ORv>-PC$9=(^%WkJGfe3#2Zjo7V8Cu^ILi>av!G2J4-b z3fmM`89ZO%41?kRS7qXr@YwK8e_TJ`VuTo5;fkz9-2;3Nc6VD^~@(4WtOR zv*{yjAZ?#RY(t|zO2<|^z3F3YerwN<-+2yp5s=&0{4DC42HCEf#ZUsI(ZhQ|TbGQ? z2fJk#`!K>SyDL5mI)vp@EGnXeyzE9gpyh4%|hqrU@CS;t7~&Gn|;oH!kKX4hD+)3hfKbqu;w8Pqh+m|(7x z!#-ey7y#@V{S4vLfSbP!;*S%oqnoZ;k1#FZ>YX5szUErc));U6N6_eK=1i7+c7Y0; z8zq~^JQkcpG*hKVUoX+S7|qll&xp<^MCvafyWCF+=Z*5c2j5)Es>-<9RF?n+o{1GFQgR`3RP=ga1PfgLkZ|dlP~rpH*{cV$cgCJ0zb+<0O(EQTjhg->vkoSnyG$e|s4L)9+d z-G&U!lpC3KhGq+DG*lAhfaQf(6 z_gTof!{W|!-wd?V&}#P=K;wqm+!ulN8M?sbsNHX9qtxMmp-oc4K|@;veaO&OcLroR zWawg-L+Y@h9m09U(CY==Y3Ne-k0||aLt!^>HI%^6PT_pS(12{m9yhd0&`CqXvbp-a zp(|XDmlq5r+{wt(;ku66Uke&!XN!&4=2Z)hfL29n$Tlb+!>{f)N{h^WRfWo=m=k$!TbXO+l z`GA;5kjDh7N-7Vz6?p)$D;(&xa_=Z4wG@SkMRD&j97#f{(DZE{-5r$);mI zxq3IB7)a=v4bOsiS~6ecJ;^Y+vw95*n}v_(%_Yg_KC)hG z1Cl0bkuUyM403fQzZkfPYzy#_fb+lRCNo|q$9YonIyub~vStCV(h1pK_ElfB+VvDd zvcTUd`EadIZ%fhmJ0-kOk@Gmp;*ZF|zf*Fn&yBxRavvfj?+*DR7LuViH-{$|5_~~k zva%I5Nl6z@=Tcu77GCx?6e8&=c4f2K(`o#j9K0Bqn4eWNt*F#3n@}jidsy}%-1Eb8T(@H)|6e;3YMhRV3-Zy{#mIq4a?e5tMqRmk zb|pFTvjrDSbo29>oMDB9$ujs?^ol0BSw*SXV#HcWj4ff#SgVygXIH{o6W(m(l+Bzb zT29#=6UmE{O-X97JPl@}r_-1Lr=(zheqnw=elr3qlKG3ImBxdrF?Q-wsm!z~X_djL zX{y0y6oP@0RH43 z^=+wm|7uaR<*8IWBRc1XH@Qx!%m1I#iY00JtprHsw`v9$n9Gj*OQh&?vmK^5FTI?M zQd&}ZO-Hx2rg95Z;CThcowFttc3vf`xYh#D+8WT7o_)u}l_LN7Nbjsmk73&M(fWVW zNM*;D>5!e698#h$9HZ=jR~VyEV2)7^3&x^-)5fTb&Q#jekgZJSFI_m*cx=c{(;+)O zeaK>zrgWgnAF|cyLpGE?WHDA*pP43`CY<*Dek+g4vKOPsP26AI^XbQ_h9oLJJq0(@RGl%&S%T(f) zrb?j$!_}Xs21G0`%GPl>T!}oRfm*RWe`&2T9s6)G@K@^g#k9{a0eYT`am@ zoMabdV8vey|H?j9WLi7pr%7#qOnM9U_m4? zRNogJj>ZSNlM(4*n(t_|FCJOoXY;BFB|-~HPZx=I_b-UVhnkk0k%jYT_#leopf&@; zqtSSLEH>KE&FZFLKN}3NesHj9Nkcz31kw;%DmIcB7!Qx`jYSiPhSvBb(sf5-k*LgC`(3HZVLm(!DF0ANuu-Fl5vlOAHJ#J>p~W zk?v?BF%nl8866oK=&m0e8SX;>1l(n%B3Z0&G}1K~tzSGC-5njQ_a#LpLqo|T!58lu zjYlaG={cQT{$vr6&o5GjgBklo{{*jE5@Q@7L$l}vtE|V;6TDE8;>SN#^Taf=t9aK zPfI0O)AYyFz$n@yJTMZDAk(qo(E;ff$TFNj&yAaAbjN*l7)+J7dnhp)v9fo?qrI9r z{_rIJUgTKZT09nqK3aqCipGbdY%pZszX#d}63tIxG%(fFY>ep8NSx(UiBvOA2k4Og zfxdopil&c6qXU=zvT!q;|>7P%>5vQ8R?(ATrDlgVKgk(j+0=H%TDV zO%hKGmk4~#~K zH0Pw1LbO>aP|-n}E6B8Kr0eo%_h@*S76B27y$Lbl?oH7_-z+}gf>GYrjqj85bE)_N` znK+oz;-g{ykrVvF-%#!oSxmpfy#s@A#GuxZ!LV{lbaFHxFh15j>V!uj0HbsU4);eR zJK@d^5#|KCd!)D5%x1VN7RChKJv{2{O6-ZmdeGkE;gNU`>k`=` zGoo*l(89aWeE79)O%Jobc28o zISR)uI@~i583q=YIx<)vkM*wXI0S95#&gQ9uzzptsfp69ITgt6^+-U-!YjZzI$Xi5smMT zBAZC}E=>@lY??K~>M;e3Lghx{8VEmhw7wVPIqK(T;W2dFz?H~ppbN8UUwt>afJH!r z-H~`b2lg(8M-nu*L(oTyg>yVG9Ifvi8y3Y*NXlpr8lXGs3nFzK*&U7d4vy?``r;#F zF?jdABTg8Z#YP4Psdwz@INWllKRO#3Wmx;hsprmPxKEt!_o0kXE+W8 z8W=>-&;Zsc98-xfhaty|`9Dye=x*vrI65BfW~?Y~n8QOynob=~zl;S=K~B<>^R)=R zY9i7Xb;gDVMib8KHf?MRZ`icGb@lo-CmdG81jUEaLwPW?dd(Kgv;ixDRv4s|dr-A# zxN9$#Xf$|NU^sQtW}|x|v>+x)xC_fURxVX5nuvsqSQHrV3d0;TVfV=3NF2$+SR)N% zh+q_i@rRruB1IVX1dM$sEKMfX(!m*ccx)J^Cq`3(LG5(WWN@~QpuNQ)_>GDjG3a{K z_;hT(D1342g>B)j?VH)eG?*73Z zv~_ehtjnkaLl#fX%xs7~kzLWTSOT?y=Iur{13Ge{7@`O$7ILHe(W3DDVP8i3QL7%* zj(-k5!!n~S25|N|HkwE)gY{}}-MDsr+ge|75{^yH;ci*^bz$iHL23uJ6I8)`+dViE zK|e>~n~yr(qT~s6=J01BP~B1Lc9=$*jZZaIy>TKvJ#ZNkFxXfVIZ`5+DAq=3o70PB zpLAsywg3zJLKl}6pof!~KeYKjE<>Y- z!QC?`BLd|UU&3C;S)Oa=D9I(hZ9j;dB3+{GDqt8GJ2Ln~8wn05(^g$B`Ab^Ua*Q-o9STh@Uf3BJ z9vL0z-3!A4QE83E+lrzg2VhbF5^Od>>>1hwbwv_7dvH9!ndynsd4RNonA6a|bQjP>tDEcignIF(kRYSJYUAg<65l~gRu*f1g?Y^WPcbWJ0JK%0@n914idz0nBV zrbu_Xb&O!U25yjOCZ;*3TZNT2Oq#&47}8?gV{S10Mf>-`c8lvO?iS`3XfJn~;O1kt zP$fgJVAg=w+KWvYryG*Qp>*&M$Kug0PK#+~5>=3#Fl%carK!3GcVW9l4Hz4+i`^$f z83s%|OVNGK)mmGBvgULp?GCfoI~eIpIHtF~((_t`Fl2a|m_LWvKG>CsV;@WE3`xWI zp}`s*>_Tp1iGG+(9n;KWWDFx7IgXCOvS9}=JcO3yIw8#lOMzlfX&=cf^G%|kL(+GG z=+1}(042k;ALpb+Rx~Q7;M7nEC-x3^>oObzaR4qxxGM_NMHaMmHxxI`5kMC3h|NQD zdNE_D<82cV^ei&ggDjGrt82N01J6DjhZ%!>{Te zVZ*@0V8>zr%HY6W_ACnPvIs4Np#*DBo#47B;rQhuGtBG>@%E+fpr4%K>8R5&g~SP{ zI!6yT{!lge30Q8x2w2r*koJsVQ8gOD^(fuJFh!7YJb;2_M8I3bBu*B06FDHyN9AE>n?ld2Q^DNC&+B%Vy zrvIsSO!g$<=g^bH7>kROpbnZYZa5CbWc!`zH#K`j)kclUV4};}#nq!O-E6;!4k(5O zvbZtcN8HriE@)$`&FrSo*QV6b&_Vt^-u2Wbwxbdd5*6Egy}ASU;FeEP2f6 zr1}P}31ftkIW5v)K_+qCdWSJcY!66!7Ip@HemsUL0G+6s!TC>ifY>}ye>Viv7*>cf z8=yC^AjJ%!-Kvu|I@Q^YijH9dHy_l|CJC!Tm@3LDL-r(g`&L<6ft`T?(;FYT64t{O z4zPppFFB5NtTru4nkDMxAcitM`8{+AyHQ;kTaaJ#qU9PO2S$U8YEeMJ>=rf>)QB0` z*hEU{Gwfi&b>epq_kY5+&0>><%(J~R?V&kfA8czwoQXsXZrC6_4p|oInh0$*Hjde1 zxOWIX5x3@2wif$r)Wzf`iuP5?=apei7d*8Z^eu9-MTc#D;QQd#dg5(y%@vn96gebD zaNNR`1N~~WmYE-Pgw3XOHFxQfi25md*{vHmvd)1j>DE#=mlzOB&Y7s~nBU-1Wa>_8 z<-;`wyO*amGBt?HuNFp>JHttmb(?NIV+}_uhbJlGpRujDhCshbhNu9R+5U=w-kWdf zq}OFSqPJ)EEiw$ZWA{)*H(0fL;&{kT!2oO{2EEKjj_;@Ws{(&b!2QM4qD1Qg%bdVa z6U|E4UVw}psxG(eWveyZH-@tkoyyH_Y5PKzV(|Ln{&T*8@ZuaGiw9L_ z>~#!u@6}}i<|5jHq`&7+qwrL96gu6Q;<1E<^Wa+@PFuG znJB%Q+pfLgp%Fcr#srk0Q{F?*I<@y8GRw4@Zl@h_!PSPM<2XdswPx!LbW`>b@nFUI zwD}8KCME#CWlsxB=nbvw(UjPPq~@kgO_IIXK$*dG=T1dVZCC4}Ee!p!9S|BLX$uyJ ztr{#yWM@vdnPeN*JWXmU_kwL3ExEM2e59*;)OMyaybG)xLYGk-7 z3(GdRdeg~8jjrDK#5mnpbD2o*Hj1&%rKfBciL09QsKxo)rAH4?EKyQA><$(u82nmw zRM=L6vR>Ug5QS@^Bc7uO-UoM1M$|<~h{|)qQP-4z#lkPn-)hw@0U3eX4l)y_yh_t* z?%s&*LKN)Ej#D8A#i16ZRS7t;>LmzW%JH;9JxZF#@tB<1sA#g(OCVQz=Kkup53592 zq}}ihFayzb!jham87hwnpR*%&(!@KH)z44_`6nWnV(}l{pE0V+z_5)A*`ZE%b60_RAWFB6OuCk_TqPDWzAFluVLSudH8C;{$e3}QoAtg>#|&^rR!-4B>Jo;1S#VO0k0q-~@f)*UC^yF*kWJc{1swvWH{ zih0%!pe@O69)?&#vFOr8vKo@!gi)6vfPHMvg*Xx5Z);sda#63#ehxHgC{wX6>n0zXMjlZpvtqKm*K0d-c!Jyi=EK9S3jCzds`Gl4aJ`a%v_VBth}{ZHKi;AJaV zNlw3VJ*j&@*9bD8qP@L5!0vB+s7G&gP(VlnoWPl_#W?y+@b_YB{pO zaRro5x5m+!wCb>?-OvGU!{Ic56ASmcqu9#FEQz@?wLu3NxXX|JkVCp|+XLjfiaEg+ zh@FFLedg{Z?$!*#d4$&y4sU4P5#G2t%*kSl8j!&#cHTL!V}jBtJ{EzH*aPo}NX%6S ztZvKo=r#xX)SLs9j)?*Dk2v~iHXMTjXI2he?&Q`!=W0}hW+{y0C|$&f`-*g2h+^$4 z1xizjxi^2DTVlz&!sWuM50gFIVDT}jP;_;ee@`46;K-BXSXT28RqE#Jzj>r-uC6IL z4G5N&P%W90Xll?+5emj_aA!}ts+x&Ly~X#3t|d34Z4*}))oBf)BQzYrQS(rY4iLBJ zIMk9lLz~8-q-H8HhBXZ~+_4iq3ZIbcX&$A@GQeDMwv)6bPhe#oNe(u#$;G1}ICF5Y zX$aUAYL%q+zAnLb4Gj0=P(}9_Msdghdzq9fWujzIaVTQPR$L7EWXxiAqT(N4h-EY5 z$zDkC`iCx(Ia&ZjlhVC-X#|;P;8Ao(_WFiG7U0k}EM{VTq9vknX&XI=pltrVG-rIv1<)B|_mJxj+>Xwud;X`L z=%N-JYkqT##$Y4{$1t*ygZO5$XhQGz@UTM031-Y>zwG8jAqQi&@Dh)B?S@u(?-+(O z4m^St2NGLq80K=q=ohE+4UMUpWtN8Ckg7PcfR#mbZwy-$scDRJjDHq^|DAI}IkD8W zEi4r4+dHQ{t`~Y4I~mF86giIW#{Vrh%F}n< z!=m|;)eTG&SA%fZvBj`k=Ttj0(KZwHvAwOZIHe{l+%a?oSG4SXF;jBFtSuzQQCDo4 zKC&$)^>jdFzy$^Kiqr(ig$;kw#GWx1+AM-9s(Vr9BqTVl#FtI3KgRU-F1L9G#O0z2 zV35ZBYa!xYaj^4bLtO)IugFv~JQ9Zwrb{T9^WlhLn*;qQ``O+8VI9q)fA^1hbB+9G zt_WdJVre;KlLiKC>N2X`6~c78degRzYuf(uTSJ{4Yqws~iK_~&JN|FGK@^pnRR1+M ziTsr%rcNy2UemoIH2V1+>)CRhowyP38g3WqT{bKUdVP)J_W1w1X!L*5MWbyS+qQSC z+1iS0JK@fCTh_F0+=$MlTXV+sBUqO`$va4EI=A6=!B*T)zu&#w6C8G3y2@22PH5b%8^ShYc+AchIQ?eafx<3+!s%SMp<~@<2o*lRwPStC0TeTf zsRnb_-*_*I#u9&l0KN}qP0Yz@r=oD(?0VFNn^s>C-nbrL%Q&+s3Wo_HFChI$PIq1u0jHSr_w+H-_6g*0qN>v~Ae5 z`I6UgZOgpj)PaTild@v7+grMm@z-9}O2o1D*5l&Werqe`-l;e9w_Vn1xBE@2Tesla zU2BIrsWLE=4)fn|dy5_pO&E{pF^cE``R6jSWum^g_;Ktgy4d20nEJlTovyTgz|t1y ze{gdCNAGm`Gq@?*Yq{Z-ISSPChndf~^|dj)Y2*41T*#A4HhC~3*OO8RmrmsWb63QCm#=eO$J$I2iJVTmFP3>r3}aCifoheoRSYYSOWUvc z&X`m}?pBGx*WEpFpF6i)+_`Dn*3?qKzqP;#A+aY}#nW$<+1iw=wbQParKXxK+t#dU z+p@*c_g}Wl%=!4Vi)a4S68^UX_LfYE4d5bQAWiRu;_`Y0H0ki?R9pDd5IkUv7 z-&wP1LnoZH^EbD_xiIfiHjDoDyLG50XWFf88}Wb#m+E-9fX0$7J)97r*KphH&s?$t z5BEGXJq?_Xuh|AiBi(J<;$Zh%4gmhT`*>PV+F;bp%ro!i`I@?BLo1Dye^1XezGLI2 zwYbp><^9WV?(O3KxB08Q?`aCp{T=MLVEr!VJ^xKt`%Djf+vHy(r&pqC-pLik`D?Y~Qq?V-Gp{6On6h=7IySEJZz-OZl|Q4TU0&omr7t#!jaIw{ zhI7UJ9l5XIyX&W2Xhb_~S>L)EOA+|r>svcEaD|$A&9QUc+P38SuT4Cv9oWq60T=Jk z;~Xw|kowo&goG4W0Br4mF~B~QZ`@=86!Y@uE=97|X^TtjwBRu`R%^)W)$dBOnWTNt z6|d={B(K=|iUo-~HcG2t&57+A#~)W5D6|>$L~wql*Hy*Qm8pS}qEJ|6J^l;xI%S5N zjkhi9`KsX0T(V46Ic-1Szw+v(Zy?k4;=lMhX4-oYh<6^5n zpV{t@EpYIzNv<1-P4IV_cm^iJI(6;U4p6aN!f6dXExEg4hu+-v_k4%s#A#V~hkw)|DsY?1l;&D+B3JGN}yqKCBp@{Ss+H$d!?t-QRqE|>eZ zul>3T8W&IO|Cal?F%R$Jz~(kcN}p8 zf9qA@jp5EsTefu2`!z>>{ich<{$|0}@I~7?)?B#$lE3Uqu~;5BF6rJ4&D7Y!rqp#~ z3_4psb!@<4KnJEtU1iv8&bfheI+vB$d{^gDd>gfF{i$s%-wEBgS(dHzlhmHbaeeZ5 zUKRxD7nsv6DXvgt+-8P&^i|~O%1K>q_AjHp>J?{I%!|2DKr_fC2HzmR=G)FmCs#Jc z{QCizLj2nk$)gGX_H+70AIvUXm1a&Z*jxB>*P}PuhL=D5)2~b09L;+~6fS86dHg2( zEq~%FH6B6Zz7h^putWXY?o^}g z`rmLrJ3NM~GOv6~J2?XI*9qiwjvEy^=>OvD+L`L0yN!Bv=FBVH+~v}1n19thZc||X zoqbp|ynvDWXvurs{x;TDIJ_B`yu0I=Heczc_b6W7;cDV*yzq^)O}P@KS3~W-y(|qN z82=UspFo{{@p}x83(r5HT*)(VS^M+u_Fs7;oEPkMdiQs5d4Mek`Sf;qPh1UYD<6E@ zUKHFH?6}GiF5ODmSa|K1$WzCvyncYy04Ai@c%9q~g&dTgIW<}h{I}{h?sts-g()X>yG*X3>BaP2x(vW_fzLcpv)6J>9qlRi7jPdMm$Q2D=O{BS zu8Y0Z>*0Ul750pILAJAB={~y{TE5HCLB_?2Zm6X$wyU?ThosIKm)ZS==oTzQC9^Xx zw$q|IfSXo^}QJRc^AYwr%Lx$kCU!u*4K*r(^!?rJQiyUeoP&7y{jU@UOwA z<&BFvvMm1pn!67uDXO*I;|)X3S%Scj^N=OO07Fg#2uP5egGfdM$%05uDp`^sL6jT> z1Ox#I5)_qa0Lg+VNW4|OpBHET;&;wj=eu{^UJGXWH@kQ3+Tq>1s;j!aqt>TU)(cbr z@x}4#n%+lAc%Po)u9T0ymCCiNc$X(ccyELSKjbOOrZ!(m=Q8`?cnW?( zNbuMvI4S6zt|+$zcpq2dK9M7MUco!rI`gkudwTV{9jz-0XnxSNqs#cc zrJZ+0#Q(c%`Mq%czi<)1SHVv&Ch^}h@XjH4yJ7pQ1*CN_Ug+;l``%I`+PhfZ0@8b* zK6v!m%{w_0oZ2o)Uk0lYo1N z%)6`Aztz^eFT#J%Klphn|MK1e|3Eu!+8ictO@~Dv0)ufj<}iH+L9#fuv_&?^c8;SD;6`7+F^V{SUVn=nA)fulgqq{7G4} zeftjn+1zK|f1nxHj*FkZ@#|&aS7-2eD|nB&_n{`<9iRVrTY^7HL7LOit4|(k-?v#pAMm5Pz(0ar;C5w4QOF!(VGoziI?ws|*VM8Ek$tG55@9t>}?u2|C@fO$hX>g^a& zPWA?4?|*W8M%`9kv~h>B{!JP>Leh-jeGr{@PTf0W6bzoacf((Yd0`;ho4DRM_20$) zSGRT88O7k`c6I7`*ZtP3Tch&7b+?Dt_QCgYqrO{bcYwH4qr4I1ua8dk4r$yD_#Y@1 z9A1h%{&@3G-t_Rhmf!dNf(5)Q0{nHPJGB1mdc*(K+e!Rk_4Eo1U7+c0*S{Redk?B% zltY03>;@C^QN?KkhhqD`28G!O{$dP?w3;;`O5{hRFk z#D&932Eu}O+=T@bdLIuP=ASC`KS4Dt>f2#q{@YSv{-4|S^KSet;N4>s*4A69xR*uw z*o-judz-f2XM6Pb^0rTakCxJV+wK+rzVoQB_BPwW(t9Nfgn3hf|5>jAw`s50+(*qu zdr|P?WdEx0XZ#l8e}BU>9wF|#9RK#05dTA|pYaIsKfL-Gj}ZUs8=mn9@jpoV8IO=a z{AZ~D&5{ZJ!R?DbqW?L>eHmMH^qz&d?|yuS+t-am|5HdHMRd@!kbw8aFwb~|xNm>| z+h0NgssCnv&BqGddcr@rlKj10{4K_a(k`~=uHXN?U7V-(zJD(IBcJ#5S=)8#L;jY& zytZrkSPS`IN9LEu|GFao5&W(=@2AV>@9o~f`VV<|6-oyG=O0O$=pWXlT5&Zs8?^$ZN|3y~*BZKEz z-LJv_^XqrZ$I=y(TR!F`<;*AeC3oK6{CxcH=CMb(ezE-7{(k;Z(?=@3ZP(Jbko()s zqTl@=gQK{8y^v4CHdOk`&Er0W|a_(2Cw>|&ie|u17_iOO~dr>@76t|HT)BC%P zMgPy%UcUQZKY2>8Pp;RR|Dc_)h-5xLsY__%*)NZ>2>u~YlzePkKH2_RK2_C0{4Wpn zALcJAg!}Qtf0z%>=AKt^Kc0F@;>rOIjTW%+pDnHPL?LHabx|5f;NSsV<2msTSz zhrgx{x)Xj%Q^7HKVpZf1@PhFi+=PFl^522SliNgL`@3KHBv2!npY*;^!GHMu&wrTL z*C4R|W*$>hcRr*atxop>e3a_HB0QF+pxW>Zs?R3yR`Ry+;pttud%zDW|3UC~T=KwB z_)z6P4sQKp2K-j=J6i+Z*Y>&$t$sErn5}?kRe#{9fj{wyPt*cRefH8r&9Vq;GMI$a)xNXt)8zbpXBh4DrY8mUj@s2 z@C=F@CE<3UR0TdgzAH}ycnZatR`9Y)-yL3D@#Ho5M8$_U;hok0rok60p9Szs*<3kS z!TqnH_8(i|BNWHZ!wY0{>2JV4QT;!Jzo7Xdf#QU<*F5!;wD4FOk2&F4ysr`UAI0GB zt2~w9CzL)Cen)Y#CA@&<-|lelOD}_uLGUH&hcn>*_k#M5MetSXZ|mTP)Zcc&o49NO zN8z8Te$T=eXaRB!-cIGY5AUEusCb%ZtX(Ro-P6I_svqWsuTnY7z%QvCYs2qo9(ftw zU-kSNe7k%M{Jx&gfY(>tSOg!f@_!5;q;}Z>-==yv1ka~9|2@2p#`|S>H`V)H_)v}0 z*lIVc|F{}2DdBG`ZfAkd)_xU)-&6U^!PADi2CD`CO>wCye67|So#46EZ~MW|s6UK^ zKT`TB@Hl!tAO5cT$tw7I?blZL7|mb%;kQ+uZ{W?8&(H9!iUYsFn`-`zq50X`>m9XM zQuy~Oe@1w3c|Q0_j&sp3pE_+8Cwjo?eTEB$zQk7TamX2C6;@2XwS!|&+%4fqPx=R?8U?G>SMnif7%aV97Hq{dw_cp8n1 zO7NMACz0^&njc%jtJ!)0K1k&p1YfCk91FL&ITQYi;{RfJH|6sQe4_gQPWZe~*B=hU z`>K9U!#|Q=fuGIl^0D}2?Xp|-A4m0J{)6VbRPZ%w@2v2lns*Ap+o`{mrz`*3@b#+y zX7J343!UMew4eRq%~j4(@I)%lRCt*B&jR>W%{!~%>lBx^!BcDAIRIZSzX&g@`RERO zkIEBM^=j=>RPiAhyqc}I;oob2^TU&Bze>YjQ#q=`YpXvuhCh(Ehp$$@>J6Wx_463` zeU)cAJeS7B0{8>1KUcwvs-GW%UsHP>gU@xtBJcyer}Do6x8vLU@VB(Ci>vw2+N-qI z3F+ajls+dslg4`~cz@Mf9k|s`Q@GVnN4V9`5O`9p6DGpbtNuTNH&=h#2A`w&`~`ft z@;L#|uk`2Pdle_I!DFlcC$;h6)r;TNifEme3cgkCv<3c1^ZP!yr9Tdzqx9$CRzFwa zD>Uxz!DCyz)lcguP1Nqm;kEVpjPPCR=Xu~oHI5?SbyYw0;On$s&EOMMo(}K|dTz%J zR{j?>zD6Lu9luY6msLDp1+Ss;vKih_@$++d8Ey9~_zfM8`~)wd{rVMd+kFI|r}a#H zZO8Wa3)Nd{cp{C9EbzAKhhgv`YRA&>ni?-v;Ug4p8^TK}eM|TP&8J=Ab{?=lyszT_ zNO%&(!%6V*n!i@U_r>rArT5qfZ>#rP|!z(EsmVz%-Ijh2RXulf5i)nsr4Nn>x?B;=2;HTt+;r&(rW4G_!Pmf7s65-?Z8hHa!|nL_G`yh3 z?YvNu z_I}5Dc!c8qXYj>Z7hQz^sO{c@f2Mx;2;Nien@r=|>g}59-`n_2Rh3VA_*ZJ*T=3^r&&A*tXR5<(erW{%O!Gxs z_(sLmp74xnuOaZ|ia+Dv-)a9J!Oy83)2Lpp9&Ejx4ZcJDHVi&q?Nti?mDcAG@E_IB z+rzu7d_Cc|9vTEsq&WLF{E^1pO!!MWe)#|%5$Y;>E&Nl>@7v+=RR0IyXH@@Z;I*~C zm*FL}-gpf6uW#}n2{g}GyNpyjrh!k?xXubsqVXFBzoL3>0Jn0sgj+eg!Y%)yaLeay zxaIQ>{FK&3i{LBNz8}FOLxa^5*aP3K_B{&kqk8xm-bBZ1anwFm&wr|YQ@}5(y)wbK zYJE}^ZtYSYeo^y&4S0m|Zw0TS`KT-WhQ?z*cvY2W82opQi#hOlD$g=_J=Nzr_!!mO zPWW|=moMQ16j#56?^8Se1iz>Kxe7f>~9{z#Gby>KrL#o5A9$tjo^*P<)q3WOS!JDZ+EP>m3 z_C4@y+1xyG6n;SS#A*08t#kf_pHjcdtopF}x8uNk@QR9`CE!bS{2l@SN$nL0pP_No z0)9qu>^1moZP%`sv2t3wOhNj~8rO5-&nbU9-m-kGJbRITyXxmGJdWz~3cR}NA+F+q z<^QSrRVw%y#n1HcgIZUG!tW|R=Y-!>ISRmERlSvgC)D_<4nL^pjo{-|4;JTazw*m_ zB7FwMhrw_=Z~qp&t>(p<@JQ9qB6v0BzXopCrF{yw@p1tEz2=2e@ZF047vUu|zV5)k zQv1eKepWvXR6oh!HZC&3e^fs9zMth|=lx0}{S@_+>hPRu-^TFA>bLFT%QYT*!>ee$ zF${iQ+norXto~;2b6WYEDGq#y^yL-DHo-@09^4Dxr}^##{IdE(X1&g~yFt$jz}F}a z+V%UE{)Y0Yj`WYz9~#3qYJO}F-=cZP)GgNLY|v%`nEmj?>N zztVnHfNxj&L2!E?_f5FX7gOQ(zT`Z(y)XG8{9Uc*H^3{ZeRsn@*7Kj?!}a_Yyq4n2 zBY4k%d&E~oZ^OGNUcC$NrE#|yZr7!+f#+0z-Uhe)_rn{-a0NXHFQ@T)0dCjr-GHCc zI^jOt)_ZX@ZmfN4X}?m!)5dV+$qb*P{*w=G=l9CPztwoG2_LO^8wsDS@-%_p*7~*` z-1e&{{FdgU*Wszeq#eqg}n+H3? zC#d}W;Wl1I!V87E?M{ZLQ~l3_Cs6*M!tW_Q9Dv)r{|&s6)(=0yuWDU-3tmb2KY`bC z#SbLP<$kfamsb0g4sQ4384Oe3IhodH8zu+w1U|8h7{M0p%Yzcl36= zsr*yHODj%hfgjTR7zVfV4`tvfmpH0{(&Oe-gZg z#@#ab3z{!B!0rC2J#f2!>KMGA`r&!_AZ_;{-1>ilJki_5`hQw@hftR;Cw#v8VKMj_ zmpo7jK3Dr23Ag*&TEgwVw(fAduWbgT87(=_i~fhSQp@4>Iccl#A5uls57FpiEBQ^6moU9!TT-tPmqQ^j z=N{bdAC8^hz0Ss0dd*)c;L}1~x={EM&4UHtYOX+O_%hA!)!<7Lxcpy)&(k`&4ZOI< zOHX)0)z4sfnDT!M{-)|}CVYm*^&he$FdDTA;z;mdde*^EXa{dHwoY2+J zE%;;g&&TjLv~EdQz`f4ecc;c(T6iJtZw`3Rc<%K@;Op%?Fnm~uOJ5s)Dv|T1@K*AU z@WQH}KJcH{SAerEY6T8>vgWEd4B>Z>vt19p%YTpL%mt(p7Tfqlu ze(w&q>k|gS+bbT9g_l+SE8v!X13Z_;^=|ks_4A|fqZ(gl;GI-&SK!kWm+r!ks{FAE zMsF|M-{kObT(UqWxb1HdxTUWIx6fl~03WXT_htBW#etFV5gK0;;dbBMPPpCAeh{8X z`FstZ7wUHS0z9_*`8BxRCw>=h_ld_W6uqA9KJk?BPqe?8;9b-o^1$sn#bWTE6;B$$ zvnl^(@J|$%y1^@Gz8C^!k~g^hM!CT(UqUe4FB1 zbGUsZXGi#c#kaw5yKZVMe6h+i18&z-y$`qRXI8;&e-FTOg}NO(3BRg%avpw4@$DMC zjpE5|_yN_=J@{?q{{;R*7FV7Gs&Jc^(`h|Z5S~Q!Srh)g=C4L@>p!jG_P+c8_zKM< z!{z+^z=cuLYibPcz#6!QZ(u$0QTPw+j*{LFslVw3hmc-}?SY#}Z~OHa>C3w641^VR zzgYQO%ge$oeNDO5e{$_yB+_?RKAqsh`(x*|}J_m2E z{`o7sveqXL;Gb%{af-Q(+5Vo_Je3?iN8>RIyjN29`uy-Lnm0?pYbJ5&E5UzJ|E~jI zrR}}}xBK}g!R>PfXTvL`blY7DPpo?Q7#^m1d>ed{#``{ab*<-*!5`{4=qx;j{0h8r za#zko#obS97rP!HExdcEOP3A)o935-@HDFb((tAlcU9o~Q@H#i;dWh9b9e*I@15Y^ zC|>n}_fr0Ez$fbXVjSGAlUo3vX6tSEVDZy zuT{$VpHbYef;o!wffwB0tsSd`yXSG?{WKpWfp>1~(x-%Pt>`=yopT}cp2}YY{$X90z8t)e+N(PJ`8+Ot zL--KYb9;E7YA$_G_;#fq1kYW=r5_DXuKk({xA%kJfj?3H3*jrWyZl$dt=>1m$JTb~ zcf+4k|2z!Os&RAyURMi<8}PVFAETt(jvQ$UdfgJ0Q`o=)o<`FkuH5e z{o2aYSK~bq{BUWPJ}o>_akvD$uNH8X;r-PQ>%p%njG@FDu>-fX~wWJqrG| z$~gs|s)^gLdGL~joUedCRC{fLe_qg~{~Z3J;@dI!CdI3B@SQnaKG)!nmCv8>zL#4h=y*zZon6+oDbpOslO#w9J2afr*V`4K0)y|4}7BH zMhSSG{H{Dz;J>Rp4dL&VbLrc_>!{s(!-uLLj)dP-Ij6%bD=sa8A5uMUfZO`x82k(M zlk@N;`BeY#HHsS#;R{v%1nQ?&{|nSEY2m-B9&*C(YQ882ud4aF5`3KI{Ydz6jnkI! zhw2aA;iVN%2Ek*hJY(T?6=!C`FDRZbrfb}N0>7zs&QACjij#-onH85#!*6T9uE0N5 zJKlp=P(O*IeroM?S?!Vvo=wNeS>eT0o3@b>{QV8yS^YVN+TYscSH+*C z@D7T%8Q~kX&d3Mfu68K}xA#}7!Cz5*HiEaW?%Jgtytu|`FZcw-nW6Bx8g~=mr8O>Q z!|lAoa=4A>jqvYnJpdoCavq28RXbjQr_eaM2_LI@@DY5p@=2(1Y3=x$`hPn3rTVTu zbHTHzeu~3;%PYehX#G$heoFP<3jVp~yB_dST5rD&|47FLZ^09&AHD;(>$jG`_ z!VjpPKZB1`zdZsksB)fx&sP7x3XiY(=udbI^|!ccH*2qg$|p6vfW~Py_)U2QcsI>Q zb>MM|2ZE30@I+eQbb-&Z^)`Hr>fidEmH&IqU(=92qvoUc;b*m;`3OE+{rpq-CiSa> z@cWt<&cl3xem;R){p^5S{d^7Yt2lKDeo6HoPxF=4 z^I4@!4L_xJ%mVMO_*MYkOzBI(&xgBus{-Gv{@fY9NatI6!0#(ArPMgH@?X{b9tyYg z`Qc@hz9ii0Cj#C?<*W}MsBzs2-br!3E4-27Qh#_h#q$yHCmPpt;X716%is;QUu)q@ zRi5qeV=DgX zCr99E75`7e&#J%u0za>IjjeK7I~G!$Oa}j0`&$GaFU*biaQHUG;X3fUdfp7aQtjRe z{zU!9&QDl5-_`NYaHMam_L>Mkpz&q%p5^nNjW48ct>fYK@Gz}Ecfn_9J%1X$U*qmF ze6Py+2Yis$KOtHVS~;`n{6I4JXg$vepRE1O3%B>5O28W{Zb!gtsQ=W5r&NDx39qAm z*bUxE^Tj}TM&)DsVf!1mj_X%bk$#)XIUhb(^}G^(Li6Kh_$l?beeilZUwRV0RPFU6 zJZTPB&L{Arnnx0A9NT_v(>#{}Zr3sAfj3vbDgpntsM~H8_{Qwc8^XJ)KeT}-Q~UOW z7ghZafwxtEeH(7`#e4AnD*p%YLyCLr;nTHF-VJ|4_4yTipz7fqyn_1Sjeqd?I^MN* zxupJ?8a`U_Ei3$i#%XbQh&&vgK>fTH{ITL{EBIlx<16qP>gPk?g%z)6!27GeErFlT z?fS_Mcm=iZ3HWf$`!O}ITD{r(CQ0Buw5~`GKTynV*Und2J|nf=nn?eR`e9?ZUEkIP z{)6hjFFdx64~N2csovg(|Df{EgvU^Sejomu;>;?zt*mzR-ap}Kf?>DU9-T8s2_&GlPPYLhA&gSRfQMUxN87Uul~~#UQ6}d6~0+< zxIa9-%0B|0QS~_y{)yu9Eci~1BRhX-^>#zP7U>tNes;p2SHH4&X8ANxJ$#4s71WNG z;IXuxxdYD;?)phQt*SAMU|-D89wkIJ5SRt>ck_@J;F`Q{c9qp9hbnaj_h}C%-HI26&{lyA6I@adj8G zx%$r+@cQ{&{)gf1G+s`?JE=c>2Y*-Xcme*2>i-eEbWV*I)vML#3dMok@SECSTklx< zI$DR6M|yi7r5?Pt`gt>WWsT=<@ci{%IS0Uh(soC{+o^v}g#V`J@566vK3xUBu6Ef4 zZnZt479AEa-s_8JRct@fP`-=%t34)34G)#m~DCCwLK!x!gw>3@Ka&F%ay+}b6k z#=Y&=7X@7U#PIv-582=w^1Ae4@JKx`1^+ykOCJG`(70#~@2&E5hub=1ApDT(Z4^9} z)*+MOnY2!t3oog4#WHv^Jzo#cu6Eo7FQj@u0=M@EPs1~4TwjLwQM>;EpP_jqMDwk+ zW9~+-o|D1t{`rh>J08mmKcIM90)AWNs1LW}{SI*3uU>Fl&kupy`=R6D)zlAX!mFsB z7s6v`{H})Q(sn|Iet0g$sUP7d6$fs@2dlsR4xbw4+T{T}w&Ft!#Sd%8`C5m> zgTJcrk{4c4^I!>he{C-UK11_bB>brArv-eN;(r(TIqh$M_zv~Yk?^JAt{x`Cv*`F} zF5Ip^`4GNU?Yj}4O!cz|KB<=5?pN?nb^L!8K27a%6<$^I+CBIK>Ocv8iIgYe0UhhM?% z{iO5oN~)iW@HQHcc739i|HFc=9d9H39rdew@DM$J3=dcTiKRGa`G2YMB!JH>} zRSyT?=`?Wp#8lJw|VV%_@1J!|HM#!)<1hIo+pM|J>-S2)Of4} zzo7i*dyTQX0_Xff(?z{od5#h=|3jRRjZXA58&O1zjPg1?jhc{DySP8$NIJOzy zO!crAZr7b0hi6m#KTlUbxeiaHxP2dfLiH9`ZTXZ&iQT0{<#p^$CAp>-MkV_Wu1(@T}@5x8Y+IhXXG~ug^8AwG1bl*M`>TiwU$rOj% zz&}>~^nlxaVT0fis-MyDaMk}*_$$hPKD@X3+gi9?7rg^+pOi)h@%YZkp7cPjr>@aNQ@L*bTx0r-67Qwm--+-e%*!JeS#s)qqqA@T4yGO&(V0y0Dn})y}mMhoc608e052ezB$~kyXXW@ zs(GXjyspOAQ1}|H>)wXnE8@2M4tzvi=ZoO>{{9B|E{(6&mkSURr(> zZr3ZHhJT^<{RLiL>%h1#yX{yz+I>kW;WjU4hF{S-KOa24))gh-gEX!y!{1Q7)q{Vg zdTs$3#et@9TZeRn57auR4?LiFI1E0wjN6}y@X>1b*>Jn>bs1g# zd;`3Qju&>rEuW)w<#PreQ2k$pKQ8Uce-CcukKHyt@2T zxSbC<08gQQ_#J#s?LhEx1)f{u{Vx2v`faQ>?sYbQEzvqHIlPhTKNI|0jk^-?y5(HH zRp54?azpsX;Vyj}_!#xWp6~=kUHZ4-*8kt5tN(uhAFughJ^YCJ;cmFyKmHZ`u=e*H z-0mO04!7%ZAHePY@%U}s{#mcvZD~4!GSvUKDQEUsi;tS3ju-|4jYiWq3Bl z;coEm6cZFY8IY+~%g}ZW3 zhFke(!|iiOmca+A-qyp{Xk6@q$5Fc!_t!FO52dWXFbpGxpgbl#>OJhkel1$>?A zzYBbl#$$i@b*+;}!f$DQnF4=PabP~YhxT_R{D9)vX81Xc_q}lYyszW%A760wa~^KT z7uVs>t6$xRH&*+`?G(Lz2j_9mQ^DWSd7&(DyUwj3ymPqAryTr6<=+}^>AS&?Db5Up z$5nqA4IigCKNVh5^)?@F*N?7*Us3rt!)<@}!qeq&`+FR2`+Es)>2JgLsJ}gdH`e%# z-Pvu&#$#;FI|2)EC9D*&&g{7b?=*LtHRe3`~|7kEC^|7^H@PR>&J zpK8aC;r976+u#dzJh%^TpFeX9Zl6DM25z4}a|8aC;=`Ztw$)sF#Oe~gT^>fb=Skt~ zYd9|i&!_q<4sW1%SQY-3`db6It;brz?7o%(R{aTXSJx>fDUEg_1 z_-(B})4^9NeP(!0_1he9yN@CtyqoH|F#L|?$6+raI-@uLcsteG+wd2w zx^|xeZ>jv>fmcy`&4t_dtSo|O)4FRp{ENJ9yC1>(Yu&gWepc)Jt?->%SAPa?qWH59 z-dyqX5WHV?SDxeWt?K9B!t1IX&%sx#JU_z+s-IkiC(h%xdkY?0>+QSnq*{MIf=^TV zL%O;AY<@Yb_Kgp>`_+@epHuu#4PT^wl>z=yF1NibaQnW2T=17_x%36#)ivIW!nZ4Z zDR`~CE}shU9;*MU@cHtF@Rr$KKCi<2c`zY-iRQI5@b|T@$O0drc$*(?-(OV{ zUS8XcfZONTM#3l8bLDOUZ>#<446jzprSA(rq4{DsJYKjT`2Q|^isI@#_;iiy z#qfg~zboKjwcU0%!dohC?1q1#|FnSH=N)&3TRwf^cD>UuxUJ{M!-pyEy$j!~{rw1T<8&+hkmAw-czLbo zzlE>Wxc&wHgZkTD_*d%BDPM_R|B2M@nc?3l-sXc>YT#a90$y74!b-T+&nCFtAGZhI zzJ|;HD15Kh38&%b8oTs2;px;a58x*>PUH4`c0HtoFV%WDGrXPZKOfxcp*-B~FP#Oq z`v5X}!JF21`ObhJQh#0rU!i{TIlQ0Z>ScHV z&HIUZM=$>l^~1FAX6jej;fXYU3&HLE`f~7LI=@!~Zl9;$2)??AD_>uD(fZDZ!Yiu& z$H7mlerCe$y3mDiyT0@z_|bxHyIbMbACAMX=segt_&&|=SK&L9K53um?NUYkBp1Ak zj)RKAE&kMkr&s!R@bG+Yd#}Rny1~J4i-%+3Ru9wRjT9diz`qQ0+g%A?p?I|k{)5W7 z2i`~P&!g}I>d&X)cjdppD{0;P1m08YmV|wyx68@~?s-~xC6y-!d_x_Vz6jhtr#l>; zuc1p{7yg{q8!g~(E53Dwf3M?|f$$AQUH)&vUw+Z~bohr#zYu;W(xqPmk5nAq4$oZM zrT-FM_eJO5!H;OZ{so>xDi ze@*y1+TWMp`Lw?s;mNdLec?ZAJ{kdUs{ALz=P7Q?gWKnsu7n44o^}iTj@DOSz$@2t z_4_qEvHJf{@NtTtx8cvJUj_O{Z?E^%|C7L%6nE*Khfh;G7KXpj$fYj}Ptw?Vb@<0> z_ZQ)|&TI|0b!K;XCe_10_+*uT6x`M!&ku-R51R|Q=egm@3Of&jFHpS|gMY8>mWFRs ze5(jgnA7E72Odx9o5DX(JnRU+r1;PqeoyC}-hgi`;kG*to>S|V&F~S5ZwKJNYrLO? z7uIp{Mfh5+XA%!|+qbyUGu%B-C-=X%F{Vf990y7u{RNGS%1EC~>FXnX6UB{}qomKM zwEmA?NMBL)HU@r9@QkHgJ}2OB7IA(KUQhAu z3Vet9?eFjt+HTI*Tz=LrT@*J;z(3b|wKDvi)}M9Z_Pyp!;m_&(Kzn#u#s8l0X-Yo` zenRVwH{tK=eEU@R$2z`V2e^~V0R@4sH*z&KDy z+YNsz?iYK#{v7bTpZ|LZ(!FX4;ADRp^gq2m9(K&OZ`nq8zdWn{BCop?g_O{*FTaiK z^;UoFJd5l7!)5{lwL{sxzeRoc+lu<|mkEBJ-2XWQy@>li%yXKb)Lx%KspQS{|^M3x*t#f zXW9?FztH@|oAmm~r>}IsFzphLpSAzz*SeI|^?JX(lX(BQ|Jyxdp8iYXjrRW!1m217 ze%k*`yV?80v$mgmol9x`%>U`fBX0kIXMRfSr{1r@$NY)zXNe{P{jlxZ&y$`%>-As% z>|UV5kEfZ~>+I)Qz5Zze{gU+}#XYyz*1`{h~n7q0r7 ztb~63rS|^W>#bgsd-klMw#Lej!r^JK>>T_4Cf8i@{|^LOEAw>T?|!W2_WkbhtnDXL N{66OWJ?ewo|39J(e&zrG literal 0 HcmV?d00001 diff --git a/01_day/my_interrupt.mod.c b/01_day/my_interrupt.mod.c new file mode 100644 index 0000000..ffd1624 --- /dev/null +++ b/01_day/my_interrupt.mod.c @@ -0,0 +1,21 @@ +#include +#include +#include + +MODULE_INFO(vermagic, VERMAGIC_STRING); + +struct module __this_module +__attribute__((section(".gnu.linkonce.this_module"))) = { + .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif + .arch = MODULE_ARCH_INIT, +}; + +static const char __module_depends[] +__used +__attribute__((section(".modinfo"))) = +"depends="; + diff --git a/01_day/my_interrupt.mod.o b/01_day/my_interrupt.mod.o new file mode 100644 index 0000000000000000000000000000000000000000..398e18b846f88c769a5d99761bbd668592036924 GIT binary patch literal 64312 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 RfBqD%#;cV-iKlJ<{{XPzaxee@ literal 0 HcmV?d00001 diff --git a/01_day/my_interrupt.o b/01_day/my_interrupt.o new file mode 100644 index 0000000000000000000000000000000000000000..841bb6ffe1ef8404897289b9eca8f25bb3ebd589 GIT binary patch literal 50704 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