From a518715003d4f961c960bef5a0ab063630e921ff Mon Sep 17 00:00:00 2001
From: hyunjun <gusrkfl0609@ajou.ac.kr>
Date: Sun, 21 Jun 2020 21:47:00 +0100
Subject: [PATCH] buzzer & smoke detection

---
 app.c                               |  52 ++
 buzzer/.buzzer_dev.ko.cmd           |   1 +
 buzzer/.buzzer_dev.mod.o.cmd        | 499 +++++++++++++++++++
 buzzer/.buzzer_dev.o.cmd            | 720 ++++++++++++++++++++++++++++
 buzzer/.tmp_versions/buzzer_dev.mod |   3 +
 buzzer/Makefile                     |  22 +
 buzzer/Module.symvers               |   0
 buzzer/buzzer_dev.c                 | 105 ++++
 buzzer/buzzer_dev.ko                | Bin 0 -> 7624 bytes
 buzzer/buzzer_dev.mod.c             |  50 ++
 buzzer/buzzer_dev.mod.o             | Bin 0 -> 3104 bytes
 buzzer/buzzer_dev.o                 | Bin 0 -> 6512 bytes
 buzzer/modules.order                |   1 +
 smoke/.smoke_dev.ko.cmd             |   1 +
 smoke/.smoke_dev.mod.o.cmd          | 499 +++++++++++++++++++
 smoke/.smoke_dev.o.cmd              | 720 ++++++++++++++++++++++++++++
 smoke/.tmp_versions/smoke_dev.mod   |   3 +
 smoke/Makefile                      |  11 +
 smoke/Module.symvers                |   0
 smoke/modules.order                 |   1 +
 smoke/smoke_dev.c                   | 141 ++++++
 smoke/smoke_dev.ko                  | Bin 0 -> 7644 bytes
 smoke/smoke_dev.mod.c               |  47 ++
 smoke/smoke_dev.mod.o               | Bin 0 -> 2908 bytes
 smoke/smoke_dev.o                   | Bin 0 -> 6688 bytes
 25 files changed, 2876 insertions(+)
 create mode 100644 app.c
 create mode 100644 buzzer/.buzzer_dev.ko.cmd
 create mode 100644 buzzer/.buzzer_dev.mod.o.cmd
 create mode 100644 buzzer/.buzzer_dev.o.cmd
 create mode 100644 buzzer/.tmp_versions/buzzer_dev.mod
 create mode 100644 buzzer/Makefile
 create mode 100644 buzzer/Module.symvers
 create mode 100644 buzzer/buzzer_dev.c
 create mode 100644 buzzer/buzzer_dev.ko
 create mode 100644 buzzer/buzzer_dev.mod.c
 create mode 100644 buzzer/buzzer_dev.mod.o
 create mode 100644 buzzer/buzzer_dev.o
 create mode 100644 buzzer/modules.order
 create mode 100644 smoke/.smoke_dev.ko.cmd
 create mode 100644 smoke/.smoke_dev.mod.o.cmd
 create mode 100644 smoke/.smoke_dev.o.cmd
 create mode 100644 smoke/.tmp_versions/smoke_dev.mod
 create mode 100644 smoke/Makefile
 create mode 100644 smoke/Module.symvers
 create mode 100644 smoke/modules.order
 create mode 100644 smoke/smoke_dev.c
 create mode 100644 smoke/smoke_dev.ko
 create mode 100644 smoke/smoke_dev.mod.c
 create mode 100644 smoke/smoke_dev.mod.o
 create mode 100644 smoke/smoke_dev.o

diff --git a/app.c b/app.c
new file mode 100644
index 0000000..1cfed08
--- /dev/null
+++ b/app.c
@@ -0,0 +1,52 @@
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <errno.h>
+#include <time.h>
+
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/sysmacros.h>
+
+#define SMOKE_DEV_PATH         "/dev/smoke_dev"
+#define BUZZER_DEV_PATH		"/dev/buzzer_dev"
+
+#define INTERVAL         50000
+
+int main(void)
+{
+   int smoke_dev, smoke_data;
+   int buzzer_dev, buzzer_data = 400;
+   
+   smoke_dev = open(SMOKE_DEV_PATH, O_RDONLY);
+   buzzer_dev = open(BUZZER_DEV_PATH, O_RDWR);
+   
+   if(smoke_dev < 0) {
+	   printf("fail to open smoke detection sensor device\n");
+	   return 1;
+   }
+
+   if(buzzer_dev < 0) {
+	   printf("fail to open buzzer sensor device\n");
+	   return 1;
+   }
+   int count = 0;
+   
+   while(count < 200){
+      
+      read(smoke_dev, &smoke_data, sizeof(int));
+      printf("data : %d\n", smoke_data);
+      if(smoke_data > 500) {
+      		write(buzzer_dev, &buzzer_data, sizeof(int)*2);
+      }
+      sleep(3);
+   }
+   
+   close(smoke_dev);
+   close(buzzer_dev);
+   
+   return 0;
+}
diff --git a/buzzer/.buzzer_dev.ko.cmd b/buzzer/.buzzer_dev.ko.cmd
new file mode 100644
index 0000000..a9d227e
--- /dev/null
+++ b/buzzer/.buzzer_dev.ko.cmd
@@ -0,0 +1 @@
+cmd_/home/pi/Desktop/project/buzzer/buzzer_dev.ko := ld -r  -EL -T ./scripts/module-common.lds -T ./arch/arm/kernel/module.lds  --build-id  -o /home/pi/Desktop/project/buzzer/buzzer_dev.ko /home/pi/Desktop/project/buzzer/buzzer_dev.o /home/pi/Desktop/project/buzzer/buzzer_dev.mod.o ;  true
diff --git a/buzzer/.buzzer_dev.mod.o.cmd b/buzzer/.buzzer_dev.mod.o.cmd
new file mode 100644
index 0000000..72c6e76
--- /dev/null
+++ b/buzzer/.buzzer_dev.mod.o.cmd
@@ -0,0 +1,499 @@
+cmd_/home/pi/Desktop/project/buzzer/buzzer_dev.mod.o := gcc -Wp,-MD,/home/pi/Desktop/project/buzzer/.buzzer_dev.mod.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/8/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables -marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned  -DKBUILD_BASENAME='"buzzer_dev.mod"' -DKBUILD_MODNAME='"buzzer_dev"' -DMODULE  -c -o /home/pi/Desktop/project/buzzer/buzzer_dev.mod.o /home/pi/Desktop/project/buzzer/buzzer_dev.mod.c
+
+source_/home/pi/Desktop/project/buzzer/buzzer_dev.mod.o := /home/pi/Desktop/project/buzzer/buzzer_dev.mod.c
+
+deps_/home/pi/Desktop/project/buzzer/buzzer_dev.mod.o := \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/retpoline.h) \
+  include/linux/kconfig.h \
+    $(wildcard include/config/cpu/big/endian.h) \
+    $(wildcard include/config/booger.h) \
+    $(wildcard include/config/foo.h) \
+  include/linux/compiler_types.h \
+    $(wildcard include/config/have/arch/compiler/h.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/use/builtin/bswap.h) \
+  include/linux/build-salt.h \
+    $(wildcard include/config/build/salt.h) \
+  include/linux/elfnote.h \
+  include/linux/elf.h \
+  arch/arm/include/asm/elf.h \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/vdso.h) \
+  arch/arm/include/asm/auxvec.h \
+  arch/arm/include/uapi/asm/auxvec.h \
+  arch/arm/include/asm/hwcap.h \
+  arch/arm/include/uapi/asm/hwcap.h \
+  arch/arm/include/asm/vdso_datapage.h \
+  arch/arm/include/asm/page.h \
+    $(wildcard include/config/cpu/copy/v4wt.h) \
+    $(wildcard include/config/cpu/copy/v4wb.h) \
+    $(wildcard include/config/cpu/copy/feroceon.h) \
+    $(wildcard include/config/cpu/copy/fa.h) \
+    $(wildcard include/config/cpu/sa1100.h) \
+    $(wildcard include/config/cpu/xscale.h) \
+    $(wildcard include/config/cpu/xsc3.h) \
+    $(wildcard include/config/cpu/copy/v6.h) \
+    $(wildcard include/config/kuser/helpers.h) \
+    $(wildcard include/config/arm/lpae.h) \
+    $(wildcard include/config/have/arch/pfn/valid.h) \
+  arch/arm/include/asm/glue.h \
+  arch/arm/include/asm/pgtable-2level-types.h \
+  arch/arm/include/uapi/asm/types.h \
+  include/asm-generic/int-ll64.h \
+  include/uapi/asm-generic/int-ll64.h \
+  arch/arm/include/generated/uapi/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+    $(wildcard include/config/64bit.h) \
+  include/uapi/asm-generic/bitsperlong.h \
+  arch/arm/include/asm/memory.h \
+    $(wildcard include/config/need/mach/memory/h.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/thumb2/kernel.h) \
+    $(wildcard include/config/highmem.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/dram/base.h) \
+    $(wildcard include/config/dram/size.h) \
+    $(wildcard include/config/xip/kernel.h) \
+    $(wildcard include/config/have/tcm.h) \
+    $(wildcard include/config/arm/patch/phys/virt.h) \
+    $(wildcard include/config/phys/offset.h) \
+    $(wildcard include/config/xip/phys/addr.h) \
+    $(wildcard include/config/debug/virtual.h) \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/stack/validation.h) \
+    $(wildcard include/config/kasan.h) \
+  include/linux/compiler_types.h \
+  include/uapi/linux/types.h \
+  include/uapi/linux/posix_types.h \
+  include/linux/stddef.h \
+  include/uapi/linux/stddef.h \
+  arch/arm/include/uapi/asm/posix_types.h \
+  include/uapi/asm-generic/posix_types.h \
+  arch/arm/include/asm/barrier.h \
+    $(wildcard include/config/cpu/32v6k.h) \
+    $(wildcard include/config/cpu/fa526.h) \
+    $(wildcard include/config/arm/heavy/mb.h) \
+    $(wildcard include/config/arm/dma/mem/bufferable.h) \
+    $(wildcard include/config/cpu/spectre.h) \
+  include/asm-generic/barrier.h \
+  include/linux/kasan-checks.h \
+  include/linux/const.h \
+  include/uapi/linux/const.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) \
+  include/linux/sizes.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/linux/pfn.h \
+  include/asm-generic/getorder.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/bitops.h \
+  include/linux/bits.h \
+  arch/arm/include/asm/bitops.h \
+  include/linux/irqflags.h \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+  include/linux/typecheck.h \
+  arch/arm/include/asm/irqflags.h \
+    $(wildcard include/config/cpu/v7m.h) \
+  arch/arm/include/asm/ptrace.h \
+    $(wildcard include/config/arm/thumb.h) \
+  arch/arm/include/uapi/asm/ptrace.h \
+    $(wildcard include/config/cpu/endian/be8.h) \
+  include/asm-generic/irqflags.h \
+  include/asm-generic/bitops/non-atomic.h \
+  include/asm-generic/bitops/builtin-__fls.h \
+  include/asm-generic/bitops/builtin-__ffs.h \
+  include/asm-generic/bitops/builtin-fls.h \
+  include/asm-generic/bitops/builtin-ffs.h \
+  include/asm-generic/bitops/ffz.h \
+  include/asm-generic/bitops/fls64.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/linux/atomic.h \
+    $(wildcard include/config/generic/atomic64.h) \
+  arch/arm/include/asm/atomic.h \
+  include/linux/prefetch.h \
+  arch/arm/include/asm/processor.h \
+    $(wildcard include/config/have/hw/breakpoint.h) \
+    $(wildcard include/config/binfmt/elf/fdpic.h) \
+    $(wildcard include/config/arm/errata/754327.h) \
+  arch/arm/include/asm/hw_breakpoint.h \
+  arch/arm/include/asm/unified.h \
+  arch/arm/include/asm/cache.h \
+    $(wildcard include/config/arm/l1/cache/shift.h) \
+    $(wildcard include/config/aeabi.h) \
+  arch/arm/include/asm/cmpxchg.h \
+    $(wildcard include/config/cpu/sa110.h) \
+    $(wildcard include/config/cpu/v6.h) \
+  include/asm-generic/cmpxchg-local.h \
+  include/asm-generic/atomic-long.h \
+  include/asm-generic/bitops/find.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+  include/asm-generic/bitops/le.h \
+  arch/arm/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/arm/include/asm/swab.h \
+  arch/arm/include/uapi/asm/swab.h \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/ext2-atomic-setbit.h \
+  arch/arm/include/asm/user.h \
+  include/uapi/linux/elf.h \
+  include/uapi/linux/elf-em.h \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/sysfs.h) \
+    $(wildcard include/config/modules/tree/lookup.h) \
+    $(wildcard include/config/livepatch.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/tracepoints.h) \
+    $(wildcard include/config/jump/label.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/function/error/injection.h) \
+    $(wildcard include/config/strict/module/rwx.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+    $(wildcard include/config/page/poisoning/zero.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/atomic/sleep.h) \
+    $(wildcard include/config/arch/has/refcount.h) \
+    $(wildcard include/config/panic/timeout.h) \
+  /usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
+  include/linux/linkage.h \
+  include/linux/stringify.h \
+  include/linux/export.h \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/module/rel/crcs.h) \
+    $(wildcard include/config/have/arch/prel32/relocations.h) \
+    $(wildcard include/config/trim/unused/ksyms.h) \
+  arch/arm/include/asm/linkage.h \
+  include/linux/printk.h \
+    $(wildcard include/config/message/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/quiet.h) \
+    $(wildcard include/config/early/printk.h) \
+    $(wildcard include/config/printk/nmi.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+  include/linux/init.h \
+    $(wildcard include/config/strict/kernel/rwx.h) \
+  include/linux/kern_levels.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  include/uapi/linux/kernel.h \
+  include/uapi/linux/sysinfo.h \
+  include/linux/build_bug.h \
+  arch/arm/include/asm/div64.h \
+  arch/arm/include/asm/compiler.h \
+  include/asm-generic/div64.h \
+  include/linux/stat.h \
+  arch/arm/include/uapi/asm/stat.h \
+  include/uapi/linux/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/count.h) \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/trace/preempt/toggle.h) \
+    $(wildcard include/config/preempt/notifiers.h) \
+  arch/arm/include/generated/asm/preempt.h \
+  include/asm-generic/preempt.h \
+  include/linux/thread_info.h \
+    $(wildcard include/config/thread/info/in/task.h) \
+    $(wildcard include/config/have/arch/within/stack/frames.h) \
+    $(wildcard include/config/hardened/usercopy.h) \
+  include/linux/bug.h \
+    $(wildcard include/config/bug/on/data/corruption.h) \
+  arch/arm/include/asm/bug.h \
+    $(wildcard include/config/debug/bugverbose.h) \
+  arch/arm/include/asm/opcodes.h \
+    $(wildcard include/config/cpu/endian/be32.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  include/linux/restart_block.h \
+  include/linux/time64.h \
+    $(wildcard include/config/64bit/time.h) \
+  include/linux/math64.h \
+    $(wildcard include/config/arch/supports/int128.h) \
+  include/uapi/linux/time.h \
+  arch/arm/include/asm/thread_info.h \
+    $(wildcard include/config/crunch.h) \
+    $(wildcard include/config/arm/thumbee.h) \
+  arch/arm/include/asm/fpstate.h \
+    $(wildcard include/config/vfpv3.h) \
+    $(wildcard include/config/iwmmxt.h) \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  arch/arm/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+  include/linux/rwlock_types.h \
+  arch/arm/include/asm/spinlock.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) \
+    $(wildcard include/config/generic/lockbreak.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/time32.h \
+  include/linux/uidgid.h \
+    $(wildcard include/config/multiuser.h) \
+    $(wildcard include/config/user/ns.h) \
+  include/linux/highuid.h \
+  include/linux/kmod.h \
+  include/linux/umh.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/zone/device.h) \
+    $(wildcard include/config/numa.h) \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/memory/isolation.h) \
+    $(wildcard include/config/compaction.h) \
+    $(wildcard include/config/cma.h) \
+  include/linux/mmdebug.h \
+    $(wildcard include/config/debug/vm.h) \
+    $(wildcard include/config/debug/vm/pgflags.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/zsmalloc.h) \
+    $(wildcard include/config/memcg.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/page/extension.h) \
+    $(wildcard include/config/no/bootmem.h) \
+    $(wildcard include/config/deferred/struct/page/init.h) \
+    $(wildcard include/config/transparent/hugepage.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/have/memoryless/nodes.h) \
+    $(wildcard include/config/have/memblock/node/map.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/memory/hotremove.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  arch/arm/include/generated/asm/current.h \
+  include/asm-generic/current.h \
+  include/uapi/linux/wait.h \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+    $(wildcard include/config/fortify/source.h) \
+  include/uapi/linux/string.h \
+  arch/arm/include/asm/string.h \
+    $(wildcard include/config/bcm2835/fast/memcpy.h) \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/page-flags-layout.h \
+    $(wildcard include/config/numa/balancing.h) \
+  include/generated/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/arch/has/add/pages.h) \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/have/bootmem/info/node.h) \
+  include/linux/notifier.h \
+    $(wildcard include/config/tree/srcu.h) \
+  include/linux/errno.h \
+  include/uapi/linux/errno.h \
+  arch/arm/include/generated/uapi/asm/errno.h \
+  include/uapi/asm-generic/errno.h \
+  include/uapi/asm-generic/errno-base.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/mutex/spin/on/owner.h) \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/osq_lock.h \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/spin/on/owner.h) \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  include/linux/err.h \
+  arch/arm/include/generated/asm/rwsem.h \
+  include/asm-generic/rwsem.h \
+  include/linux/srcu.h \
+    $(wildcard include/config/tiny/srcu.h) \
+    $(wildcard include/config/srcu.h) \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/preempt/rcu.h) \
+    $(wildcard include/config/rcu/stall/common.h) \
+    $(wildcard include/config/no/hz/full.h) \
+    $(wildcard include/config/rcu/nocb/cpu.h) \
+    $(wildcard include/config/tasks/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+    $(wildcard include/config/tiny/rcu.h) \
+    $(wildcard include/config/debug/objects/rcu/head.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/prove/rcu.h) \
+    $(wildcard include/config/rcu/boost.h) \
+    $(wildcard include/config/arch/weak/release/acquire.h) \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+  include/linux/rcutree.h \
+  include/linux/workqueue.h \
+    $(wildcard include/config/debug/objects/work.h) \
+    $(wildcard include/config/freezer.h) \
+    $(wildcard include/config/wq/watchdog.h) \
+  include/linux/timer.h \
+    $(wildcard include/config/debug/objects/timers.h) \
+    $(wildcard include/config/no/hz/common.h) \
+  include/linux/ktime.h \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+  include/uapi/linux/timex.h \
+  include/uapi/linux/param.h \
+  arch/arm/include/generated/uapi/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/uapi/asm-generic/param.h \
+  arch/arm/include/asm/timex.h \
+  include/generated/timeconst.h \
+  include/linux/timekeeping.h \
+  include/linux/timekeeping32.h \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  include/linux/rcu_segcblist.h \
+  include/linux/srcutree.h \
+  include/linux/rcu_node_tree.h \
+    $(wildcard include/config/rcu/fanout.h) \
+    $(wildcard include/config/rcu/fanout/leaf.h) \
+  include/linux/completion.h \
+  include/linux/topology.h \
+    $(wildcard include/config/use/percpu/numa/node/id.h) \
+    $(wildcard include/config/sched/smt.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/up/late/init.h) \
+  include/linux/llist.h \
+    $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
+  arch/arm/include/asm/smp.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) \
+  arch/arm/include/asm/percpu.h \
+  include/asm-generic/percpu.h \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+    $(wildcard include/config/virtualization.h) \
+    $(wildcard include/config/amd/mem/encrypt.h) \
+  arch/arm/include/asm/topology.h \
+    $(wildcard include/config/arm/cpu/topology.h) \
+  include/linux/arch_topology.h \
+  include/asm-generic/topology.h \
+  include/linux/sysctl.h \
+    $(wildcard include/config/sysctl.h) \
+  include/linux/rbtree.h \
+  include/uapi/linux/sysctl.h \
+  include/linux/kobject.h \
+    $(wildcard include/config/uevent/helper.h) \
+    $(wildcard include/config/debug/kobject/release.h) \
+  include/linux/sysfs.h \
+  include/linux/kernfs.h \
+    $(wildcard include/config/kernfs.h) \
+  include/linux/idr.h \
+  include/linux/radix-tree.h \
+    $(wildcard include/config/radix/tree/multiorder.h) \
+  include/linux/kobject_ns.h \
+  include/linux/kref.h \
+  include/linux/refcount.h \
+    $(wildcard include/config/refcount/full.h) \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/jump_label.h \
+  arch/arm/include/asm/jump_label.h \
+  include/linux/rbtree_latch.h \
+  include/linux/error-injection.h \
+  include/asm-generic/error-injection.h \
+  include/linux/tracepoint-defs.h \
+  include/linux/static_key.h \
+  arch/arm/include/asm/module.h \
+    $(wildcard include/config/arm/unwind.h) \
+    $(wildcard include/config/arm/module/plts.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 \
+
+/home/pi/Desktop/project/buzzer/buzzer_dev.mod.o: $(deps_/home/pi/Desktop/project/buzzer/buzzer_dev.mod.o)
+
+$(deps_/home/pi/Desktop/project/buzzer/buzzer_dev.mod.o):
diff --git a/buzzer/.buzzer_dev.o.cmd b/buzzer/.buzzer_dev.o.cmd
new file mode 100644
index 0000000..01a66d1
--- /dev/null
+++ b/buzzer/.buzzer_dev.o.cmd
@@ -0,0 +1,720 @@
+cmd_/home/pi/Desktop/project/buzzer/buzzer_dev.o := gcc -Wp,-MD,/home/pi/Desktop/project/buzzer/.buzzer_dev.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/8/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables -marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned  -DMODULE  -DKBUILD_BASENAME='"buzzer_dev"' -DKBUILD_MODNAME='"buzzer_dev"' -c -o /home/pi/Desktop/project/buzzer/.tmp_buzzer_dev.o /home/pi/Desktop/project/buzzer/buzzer_dev.c
+
+source_/home/pi/Desktop/project/buzzer/buzzer_dev.o := /home/pi/Desktop/project/buzzer/buzzer_dev.c
+
+deps_/home/pi/Desktop/project/buzzer/buzzer_dev.o := \
+  include/linux/kconfig.h \
+    $(wildcard include/config/cpu/big/endian.h) \
+    $(wildcard include/config/booger.h) \
+    $(wildcard include/config/foo.h) \
+  include/linux/compiler_types.h \
+    $(wildcard include/config/have/arch/compiler/h.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/retpoline.h) \
+    $(wildcard include/config/arch/use/builtin/bswap.h) \
+  include/linux/init.h \
+    $(wildcard include/config/have/arch/prel32/relocations.h) \
+    $(wildcard include/config/strict/kernel/rwx.h) \
+    $(wildcard include/config/strict/module/rwx.h) \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/stack/validation.h) \
+    $(wildcard include/config/kasan.h) \
+  include/linux/compiler_types.h \
+  include/uapi/linux/types.h \
+  arch/arm/include/uapi/asm/types.h \
+  include/asm-generic/int-ll64.h \
+  include/uapi/asm-generic/int-ll64.h \
+  arch/arm/include/generated/uapi/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+    $(wildcard include/config/64bit.h) \
+  include/uapi/asm-generic/bitsperlong.h \
+  include/uapi/linux/posix_types.h \
+  include/linux/stddef.h \
+  include/uapi/linux/stddef.h \
+  arch/arm/include/uapi/asm/posix_types.h \
+  include/uapi/asm-generic/posix_types.h \
+  arch/arm/include/asm/barrier.h \
+    $(wildcard include/config/cpu/32v6k.h) \
+    $(wildcard include/config/thumb2/kernel.h) \
+    $(wildcard include/config/cpu/xsc3.h) \
+    $(wildcard include/config/cpu/fa526.h) \
+    $(wildcard include/config/arm/heavy/mb.h) \
+    $(wildcard include/config/arm/dma/mem/bufferable.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/cpu/spectre.h) \
+  include/asm-generic/barrier.h \
+  include/linux/kasan-checks.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) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/atomic/sleep.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/arch/has/refcount.h) \
+    $(wildcard include/config/panic/timeout.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+  /usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
+  include/linux/linkage.h \
+  include/linux/stringify.h \
+  include/linux/export.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/module/rel/crcs.h) \
+    $(wildcard include/config/trim/unused/ksyms.h) \
+    $(wildcard include/config/unused/symbols.h) \
+  arch/arm/include/asm/linkage.h \
+  include/linux/bitops.h \
+  include/linux/bits.h \
+  arch/arm/include/asm/bitops.h \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+  include/linux/typecheck.h \
+  arch/arm/include/asm/irqflags.h \
+    $(wildcard include/config/cpu/v7m.h) \
+  arch/arm/include/asm/ptrace.h \
+    $(wildcard include/config/arm/thumb.h) \
+  arch/arm/include/uapi/asm/ptrace.h \
+    $(wildcard include/config/cpu/endian/be8.h) \
+  arch/arm/include/asm/hwcap.h \
+  arch/arm/include/uapi/asm/hwcap.h \
+  include/asm-generic/irqflags.h \
+  include/asm-generic/bitops/non-atomic.h \
+  include/asm-generic/bitops/builtin-__fls.h \
+  include/asm-generic/bitops/builtin-__ffs.h \
+  include/asm-generic/bitops/builtin-fls.h \
+  include/asm-generic/bitops/builtin-ffs.h \
+  include/asm-generic/bitops/ffz.h \
+  include/asm-generic/bitops/fls64.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/linux/atomic.h \
+    $(wildcard include/config/generic/atomic64.h) \
+  arch/arm/include/asm/atomic.h \
+    $(wildcard include/config/arm/lpae.h) \
+  include/linux/prefetch.h \
+  arch/arm/include/asm/processor.h \
+    $(wildcard include/config/have/hw/breakpoint.h) \
+    $(wildcard include/config/binfmt/elf/fdpic.h) \
+    $(wildcard include/config/arm/errata/754327.h) \
+  arch/arm/include/asm/hw_breakpoint.h \
+  arch/arm/include/asm/unified.h \
+  arch/arm/include/asm/cache.h \
+    $(wildcard include/config/arm/l1/cache/shift.h) \
+    $(wildcard include/config/aeabi.h) \
+  arch/arm/include/asm/cmpxchg.h \
+    $(wildcard include/config/cpu/sa1100.h) \
+    $(wildcard include/config/cpu/sa110.h) \
+    $(wildcard include/config/cpu/v6.h) \
+  include/asm-generic/cmpxchg-local.h \
+  include/asm-generic/atomic-long.h \
+  include/asm-generic/bitops/find.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+  include/asm-generic/bitops/le.h \
+  arch/arm/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/arm/include/asm/swab.h \
+  arch/arm/include/uapi/asm/swab.h \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/ext2-atomic-setbit.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/printk.h \
+    $(wildcard include/config/message/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/quiet.h) \
+    $(wildcard include/config/early/printk.h) \
+    $(wildcard include/config/printk/nmi.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+  include/linux/kern_levels.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  include/uapi/linux/kernel.h \
+  include/uapi/linux/sysinfo.h \
+  include/linux/build_bug.h \
+  arch/arm/include/asm/div64.h \
+  arch/arm/include/asm/compiler.h \
+  include/asm-generic/div64.h \
+  include/linux/module.h \
+    $(wildcard include/config/sysfs.h) \
+    $(wildcard include/config/modules/tree/lookup.h) \
+    $(wildcard include/config/livepatch.h) \
+    $(wildcard include/config/module/sig.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/jump/label.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/function/error/injection.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+    $(wildcard include/config/page/poisoning/zero.h) \
+  include/linux/const.h \
+  include/uapi/linux/const.h \
+  include/linux/stat.h \
+  arch/arm/include/uapi/asm/stat.h \
+  include/uapi/linux/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/count.h) \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/trace/preempt/toggle.h) \
+    $(wildcard include/config/preempt/notifiers.h) \
+  arch/arm/include/generated/asm/preempt.h \
+  include/asm-generic/preempt.h \
+  include/linux/thread_info.h \
+    $(wildcard include/config/thread/info/in/task.h) \
+    $(wildcard include/config/have/arch/within/stack/frames.h) \
+    $(wildcard include/config/hardened/usercopy.h) \
+  include/linux/bug.h \
+    $(wildcard include/config/bug/on/data/corruption.h) \
+  arch/arm/include/asm/bug.h \
+    $(wildcard include/config/debug/bugverbose.h) \
+  arch/arm/include/asm/opcodes.h \
+    $(wildcard include/config/cpu/endian/be32.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  include/linux/restart_block.h \
+  include/linux/time64.h \
+    $(wildcard include/config/64bit/time.h) \
+  include/linux/math64.h \
+    $(wildcard include/config/arch/supports/int128.h) \
+  include/uapi/linux/time.h \
+  arch/arm/include/asm/thread_info.h \
+    $(wildcard include/config/crunch.h) \
+    $(wildcard include/config/arm/thumbee.h) \
+  arch/arm/include/asm/fpstate.h \
+    $(wildcard include/config/vfpv3.h) \
+    $(wildcard include/config/iwmmxt.h) \
+  arch/arm/include/asm/page.h \
+    $(wildcard include/config/cpu/copy/v4wt.h) \
+    $(wildcard include/config/cpu/copy/v4wb.h) \
+    $(wildcard include/config/cpu/copy/feroceon.h) \
+    $(wildcard include/config/cpu/copy/fa.h) \
+    $(wildcard include/config/cpu/xscale.h) \
+    $(wildcard include/config/cpu/copy/v6.h) \
+    $(wildcard include/config/kuser/helpers.h) \
+    $(wildcard include/config/have/arch/pfn/valid.h) \
+  arch/arm/include/asm/glue.h \
+  arch/arm/include/asm/pgtable-2level-types.h \
+  arch/arm/include/asm/memory.h \
+    $(wildcard include/config/need/mach/memory/h.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/highmem.h) \
+    $(wildcard include/config/dram/base.h) \
+    $(wildcard include/config/dram/size.h) \
+    $(wildcard include/config/xip/kernel.h) \
+    $(wildcard include/config/have/tcm.h) \
+    $(wildcard include/config/arm/patch/phys/virt.h) \
+    $(wildcard include/config/phys/offset.h) \
+    $(wildcard include/config/xip/phys/addr.h) \
+    $(wildcard include/config/debug/virtual.h) \
+  include/linux/sizes.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/linux/pfn.h \
+  include/asm-generic/getorder.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  arch/arm/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+  include/linux/rwlock_types.h \
+  arch/arm/include/asm/spinlock.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) \
+    $(wildcard include/config/generic/lockbreak.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/time32.h \
+  include/linux/uidgid.h \
+    $(wildcard include/config/multiuser.h) \
+    $(wildcard include/config/user/ns.h) \
+  include/linux/highuid.h \
+  include/linux/kmod.h \
+  include/linux/umh.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/zone/device.h) \
+    $(wildcard include/config/numa.h) \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/memory/isolation.h) \
+    $(wildcard include/config/compaction.h) \
+    $(wildcard include/config/cma.h) \
+  include/linux/mmdebug.h \
+    $(wildcard include/config/debug/vm.h) \
+    $(wildcard include/config/debug/vm/pgflags.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/zsmalloc.h) \
+    $(wildcard include/config/memcg.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/page/extension.h) \
+    $(wildcard include/config/no/bootmem.h) \
+    $(wildcard include/config/deferred/struct/page/init.h) \
+    $(wildcard include/config/transparent/hugepage.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/have/memoryless/nodes.h) \
+    $(wildcard include/config/have/memblock/node/map.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/memory/hotremove.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  arch/arm/include/generated/asm/current.h \
+  include/asm-generic/current.h \
+  include/uapi/linux/wait.h \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+    $(wildcard include/config/fortify/source.h) \
+  include/uapi/linux/string.h \
+  arch/arm/include/asm/string.h \
+    $(wildcard include/config/bcm2835/fast/memcpy.h) \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/page-flags-layout.h \
+    $(wildcard include/config/numa/balancing.h) \
+  include/generated/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/arch/has/add/pages.h) \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/have/bootmem/info/node.h) \
+  include/linux/notifier.h \
+    $(wildcard include/config/tree/srcu.h) \
+  include/linux/errno.h \
+  include/uapi/linux/errno.h \
+  arch/arm/include/generated/uapi/asm/errno.h \
+  include/uapi/asm-generic/errno.h \
+  include/uapi/asm-generic/errno-base.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/mutex/spin/on/owner.h) \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/osq_lock.h \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/spin/on/owner.h) \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  include/linux/err.h \
+  arch/arm/include/generated/asm/rwsem.h \
+  include/asm-generic/rwsem.h \
+  include/linux/srcu.h \
+    $(wildcard include/config/tiny/srcu.h) \
+    $(wildcard include/config/srcu.h) \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/preempt/rcu.h) \
+    $(wildcard include/config/rcu/stall/common.h) \
+    $(wildcard include/config/no/hz/full.h) \
+    $(wildcard include/config/rcu/nocb/cpu.h) \
+    $(wildcard include/config/tasks/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+    $(wildcard include/config/tiny/rcu.h) \
+    $(wildcard include/config/debug/objects/rcu/head.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/prove/rcu.h) \
+    $(wildcard include/config/rcu/boost.h) \
+    $(wildcard include/config/arch/weak/release/acquire.h) \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+  include/linux/rcutree.h \
+  include/linux/workqueue.h \
+    $(wildcard include/config/debug/objects/work.h) \
+    $(wildcard include/config/freezer.h) \
+    $(wildcard include/config/wq/watchdog.h) \
+  include/linux/timer.h \
+    $(wildcard include/config/debug/objects/timers.h) \
+    $(wildcard include/config/no/hz/common.h) \
+  include/linux/ktime.h \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+  include/uapi/linux/timex.h \
+  include/uapi/linux/param.h \
+  arch/arm/include/generated/uapi/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/uapi/asm-generic/param.h \
+  arch/arm/include/asm/timex.h \
+  include/generated/timeconst.h \
+  include/linux/timekeeping.h \
+  include/linux/timekeeping32.h \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  include/linux/rcu_segcblist.h \
+  include/linux/srcutree.h \
+  include/linux/rcu_node_tree.h \
+    $(wildcard include/config/rcu/fanout.h) \
+    $(wildcard include/config/rcu/fanout/leaf.h) \
+  include/linux/completion.h \
+  include/linux/topology.h \
+    $(wildcard include/config/use/percpu/numa/node/id.h) \
+    $(wildcard include/config/sched/smt.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/up/late/init.h) \
+  include/linux/llist.h \
+    $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
+  arch/arm/include/asm/smp.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) \
+  arch/arm/include/asm/percpu.h \
+  include/asm-generic/percpu.h \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+    $(wildcard include/config/virtualization.h) \
+    $(wildcard include/config/amd/mem/encrypt.h) \
+  arch/arm/include/asm/topology.h \
+    $(wildcard include/config/arm/cpu/topology.h) \
+  include/linux/arch_topology.h \
+  include/asm-generic/topology.h \
+  include/linux/sysctl.h \
+    $(wildcard include/config/sysctl.h) \
+  include/linux/rbtree.h \
+  include/uapi/linux/sysctl.h \
+  include/linux/elf.h \
+  arch/arm/include/asm/elf.h \
+    $(wildcard include/config/vdso.h) \
+  arch/arm/include/asm/auxvec.h \
+  arch/arm/include/uapi/asm/auxvec.h \
+  arch/arm/include/asm/vdso_datapage.h \
+  arch/arm/include/asm/user.h \
+  include/uapi/linux/elf.h \
+  include/uapi/linux/elf-em.h \
+  include/linux/kobject.h \
+    $(wildcard include/config/uevent/helper.h) \
+    $(wildcard include/config/debug/kobject/release.h) \
+  include/linux/sysfs.h \
+  include/linux/kernfs.h \
+    $(wildcard include/config/kernfs.h) \
+  include/linux/idr.h \
+  include/linux/radix-tree.h \
+    $(wildcard include/config/radix/tree/multiorder.h) \
+  include/linux/kobject_ns.h \
+  include/linux/kref.h \
+  include/linux/refcount.h \
+    $(wildcard include/config/refcount/full.h) \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/jump_label.h \
+  arch/arm/include/asm/jump_label.h \
+  include/linux/rbtree_latch.h \
+  include/linux/error-injection.h \
+  include/asm-generic/error-injection.h \
+  include/linux/tracepoint-defs.h \
+  include/linux/static_key.h \
+  arch/arm/include/asm/module.h \
+    $(wildcard include/config/arm/unwind.h) \
+    $(wildcard include/config/arm/module/plts.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/fs.h \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/cgroup/writeback.h) \
+    $(wildcard include/config/ima.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/fs/encryption.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fs/dax.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/mandatory/file/locking.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/wait_bit.h \
+  include/linux/kdev_t.h \
+  include/uapi/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/rculist.h \
+  include/linux/rculist_bl.h \
+  include/linux/list_bl.h \
+  include/linux/bit_spinlock.h \
+  include/linux/lockref.h \
+    $(wildcard include/config/arch/use/cmpxchg/lockref.h) \
+  include/linux/stringhash.h \
+    $(wildcard include/config/dcache/word/access.h) \
+  include/linux/hash.h \
+    $(wildcard include/config/have/arch/hash.h) \
+  include/linux/path.h \
+  include/linux/list_lru.h \
+    $(wildcard include/config/memcg/kmem.h) \
+  include/linux/shrinker.h \
+  include/linux/xarray.h \
+  include/linux/pid.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/have/aligned/struct/page.h) \
+    $(wildcard include/config/userfaultfd.h) \
+    $(wildcard include/config/have/arch/compat/mmap/bases.h) \
+    $(wildcard include/config/membarrier.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+    $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \
+    $(wildcard include/config/hmm.h) \
+  include/linux/mm_types_task.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \
+  include/linux/auxvec.h \
+  include/uapi/linux/auxvec.h \
+  include/linux/uprobes.h \
+    $(wildcard include/config/uprobes.h) \
+  arch/arm/include/asm/mmu.h \
+    $(wildcard include/config/cpu/has/asid.h) \
+  include/linux/capability.h \
+  include/uapi/linux/capability.h \
+  include/linux/semaphore.h \
+  include/linux/fcntl.h \
+  include/uapi/linux/fcntl.h \
+  arch/arm/include/uapi/asm/fcntl.h \
+  include/uapi/asm-generic/fcntl.h \
+  include/uapi/linux/fiemap.h \
+  include/linux/migrate_mode.h \
+  include/linux/percpu-rwsem.h \
+  include/linux/rcuwait.h \
+  include/linux/rcu_sync.h \
+  include/linux/delayed_call.h \
+  include/linux/uuid.h \
+  include/uapi/linux/uuid.h \
+  include/linux/errseq.h \
+  include/linux/ioprio.h \
+  include/linux/sched.h \
+    $(wildcard include/config/virt/cpu/accounting/native.h) \
+    $(wildcard include/config/sched/info.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/cgroup/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/compat/brk.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/blk/cgroup.h) \
+    $(wildcard include/config/stackprotector.h) \
+    $(wildcard include/config/arch/has/scaled/cputime.h) \
+    $(wildcard include/config/virt/cpu/accounting/gen.h) \
+    $(wildcard include/config/posix/timers.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/ubsan.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/intel/rdt.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/compat.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/rseq.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/kcov.h) \
+    $(wildcard include/config/bcache.h) \
+    $(wildcard include/config/vmap/stack.h) \
+    $(wildcard include/config/arch/task/struct/on/stack.h) \
+    $(wildcard include/config/debug/rseq.h) \
+  include/uapi/linux/sched.h \
+  include/linux/sem.h \
+  include/uapi/linux/sem.h \
+  include/linux/ipc.h \
+  include/linux/rhashtable-types.h \
+  include/uapi/linux/ipc.h \
+  arch/arm/include/generated/uapi/asm/ipcbuf.h \
+  include/uapi/asm-generic/ipcbuf.h \
+  arch/arm/include/generated/uapi/asm/sembuf.h \
+  include/uapi/asm-generic/sembuf.h \
+  include/linux/shm.h \
+  include/uapi/linux/shm.h \
+  include/uapi/asm-generic/hugetlb_encode.h \
+  arch/arm/include/generated/uapi/asm/shmbuf.h \
+  include/uapi/asm-generic/shmbuf.h \
+  arch/arm/include/asm/shmparam.h \
+  include/linux/kcov.h \
+  include/uapi/linux/kcov.h \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+    $(wildcard include/config/time/low/res.h) \
+    $(wildcard include/config/timerfd.h) \
+  include/linux/timerqueue.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+    $(wildcard include/config/have/arch/seccomp/filter.h) \
+    $(wildcard include/config/seccomp/filter.h) \
+    $(wildcard include/config/checkpoint/restore.h) \
+  include/uapi/linux/seccomp.h \
+  arch/arm/include/generated/asm/seccomp.h \
+  include/asm-generic/seccomp.h \
+  include/uapi/linux/unistd.h \
+  arch/arm/include/asm/unistd.h \
+    $(wildcard include/config/oabi/compat.h) \
+  arch/arm/include/uapi/asm/unistd.h \
+  arch/arm/include/generated/uapi/asm/unistd-eabi.h \
+  arch/arm/include/generated/uapi/asm/unistd-common.h \
+  arch/arm/include/generated/asm/unistd-nr.h \
+  include/linux/resource.h \
+  include/uapi/linux/resource.h \
+  arch/arm/include/generated/uapi/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/uapi/asm-generic/resource.h \
+  include/linux/latencytop.h \
+  include/linux/sched/prio.h \
+  include/linux/signal_types.h \
+    $(wildcard include/config/old/sigaction.h) \
+  include/uapi/linux/signal.h \
+  arch/arm/include/asm/signal.h \
+  arch/arm/include/uapi/asm/signal.h \
+  include/uapi/asm-generic/signal-defs.h \
+  arch/arm/include/uapi/asm/sigcontext.h \
+  arch/arm/include/generated/uapi/asm/siginfo.h \
+  include/uapi/asm-generic/siginfo.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/uapi/linux/rseq.h \
+  include/linux/sched/rt.h \
+  include/linux/iocontext.h \
+  include/uapi/linux/fs.h \
+  include/uapi/linux/limits.h \
+  include/uapi/linux/ioctl.h \
+  arch/arm/include/generated/uapi/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  include/uapi/asm-generic/ioctl.h \
+  include/linux/quota.h \
+    $(wildcard include/config/quota/netlink/interface.h) \
+  include/linux/percpu_counter.h \
+  include/uapi/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/projid.h \
+  include/uapi/linux/quota.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/uaccess.h \
+  arch/arm/include/asm/uaccess.h \
+    $(wildcard include/config/cpu/sw/domain/pan.h) \
+    $(wildcard include/config/cpu/use/domains.h) \
+    $(wildcard include/config/uaccess/with/memcpy.h) \
+  arch/arm/include/asm/domain.h \
+    $(wildcard include/config/io/36.h) \
+    $(wildcard include/config/cpu/cp15/mmu.h) \
+  arch/arm/include/generated/asm/extable.h \
+  include/asm-generic/extable.h \
+  include/linux/slab.h \
+    $(wildcard include/config/debug/slab.h) \
+    $(wildcard include/config/failslab.h) \
+    $(wildcard include/config/have/hardened/usercopy/allocator.h) \
+    $(wildcard include/config/slab.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+  include/linux/overflow.h \
+  include/linux/kasan.h \
+  include/linux/delay.h \
+  arch/arm/include/asm/delay.h \
+  arch/arm/include/asm/mach/map.h \
+    $(wildcard include/config/debug/ll.h) \
+  arch/arm/include/asm/io.h \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/need/mach/io/h.h) \
+    $(wildcard include/config/pcmcia/soc/common.h) \
+    $(wildcard include/config/isa.h) \
+    $(wildcard include/config/pccard.h) \
+  include/asm-generic/pci_iomap.h \
+    $(wildcard include/config/no/generic/pci/ioport/map.h) \
+    $(wildcard include/config/generic/pci/iomap.h) \
+  include/xen/xen.h \
+    $(wildcard include/config/xen.h) \
+    $(wildcard include/config/xen/pvh.h) \
+    $(wildcard include/config/xen/dom0.h) \
+  include/asm-generic/io.h \
+    $(wildcard include/config/generic/iomap.h) \
+    $(wildcard include/config/has/ioport/map.h) \
+    $(wildcard include/config/virt/to/bus.h) \
+  include/linux/logic_pio.h \
+    $(wildcard include/config/indirect/pio.h) \
+  include/linux/fwnode.h \
+  include/linux/vmalloc.h \
+
+/home/pi/Desktop/project/buzzer/buzzer_dev.o: $(deps_/home/pi/Desktop/project/buzzer/buzzer_dev.o)
+
+$(deps_/home/pi/Desktop/project/buzzer/buzzer_dev.o):
diff --git a/buzzer/.tmp_versions/buzzer_dev.mod b/buzzer/.tmp_versions/buzzer_dev.mod
new file mode 100644
index 0000000..03d49c1
--- /dev/null
+++ b/buzzer/.tmp_versions/buzzer_dev.mod
@@ -0,0 +1,3 @@
+/home/pi/Desktop/project/buzzer/buzzer_dev.ko
+/home/pi/Desktop/project/buzzer/buzzer_dev.o
+
diff --git a/buzzer/Makefile b/buzzer/Makefile
new file mode 100644
index 0000000..6b4a5c0
--- /dev/null
+++ b/buzzer/Makefile
@@ -0,0 +1,22 @@
+KERNEL_VER := $(shell uname -r)
+KERNEL_DIR = '/lib/modules/$(KERNEL_VER)/build'
+
+obj-m := buzzer_dev.o
+
+PWD := $(shell pwd)
+
+all :
+	make -C $(KERNEL_DIR) M=$(PWD) modules
+
+clean :
+	make -C $(KERNEL_DIR) M=$(PWD) modules
+
+in :
+	sudo insmod buzzer_dev.ko
+	sudo mknod -m 666 /dev/buzzer c 501 0
+
+out : 
+	sudo rmmod buzzer_dev
+
+in2 :
+	sudo insmod buzzer_dev.ko
diff --git a/buzzer/Module.symvers b/buzzer/Module.symvers
new file mode 100644
index 0000000..e69de29
diff --git a/buzzer/buzzer_dev.c b/buzzer/buzzer_dev.c
new file mode 100644
index 0000000..095b9a1
--- /dev/null
+++ b/buzzer/buzzer_dev.c
@@ -0,0 +1,105 @@
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/fs.h>
+#include <linux/uaccess.h>
+#include <linux/slab.h>
+#include <linux/delay.h>
+#include <linux/time.h>
+#include <linux/ktime.h>
+#include <linux/jiffies.h>
+
+
+#include <asm/mach/map.h>
+#include <asm/io.h>
+#include <asm/uaccess.h>
+
+#define BUZZER_MAJOR_NUMBER   501
+#define BUZZER_DEV_NAME      "buzzer_dev"
+
+#define GPIO_BASE_ADDR 0x3F200000
+#define GPFSEL1 	0x04
+#define GPSET1   	0x1C
+#define GPCLR1   	0x28
+#define GPLEV1   	0x34
+
+static void __iomem *gpio_base;
+volatile unsigned int* gpsel1;
+volatile unsigned int* gpset1;
+volatile unsigned int* gpclr1;
+
+int buzzer_open(struct inode* inode, struct file* filp) {
+   printk(KERN_ALERT "buzzer open function called\n");
+   
+   gpio_base = ioremap(GPIO_BASE_ADDR, 0x60);
+   gpsel1 = (volatile unsigned int*)(gpio_base + GPFSEL1);
+   gpset1 = (volatile unsigned int*)(gpio_base + GPSET1);
+   gpclr1 = (volatile unsigned int*)(gpio_base + GPCLR1);
+   
+   return 0;
+}
+   
+ssize_t buzzer_write(struct file *filp, const char* buf, size_t count, loff_t *f_pos) {
+   printk(KERN_ALERT "buzzer write function called\n");
+   
+   *gpsel1 |= (1<<24);
+
+   int data = 0;
+   copy_from_user(&data, buf, 4);   
+   printk(KERN_INFO "%d\n", data);
+
+   unsigned int duration = 500;
+
+   long bdelay = (long)(1000000/data);
+   long time = (long)(duration*1000)/(bdelay*2);
+
+   printk(KERN_ALERT "%ld %ld\n", bdelay, time);
+
+   int i;
+   for(i = 0; i < time*2; i++) {
+      *gpset1 |= (1<<18);
+      udelay(bdelay);
+      *gpclr1 |= (1<<18);
+      udelay(bdelay);
+   }
+   
+   *gpsel1 |=(0<<24);
+   
+   
+   return count;
+}
+
+int buzzer_release(struct inode* inode, struct file* filp) {
+   printk(KERN_ALERT "buzzer device driver closed!!\n");
+   iounmap((void*)gpio_base);
+   return 0;
+}
+
+static struct file_operations buzzer_fops = {
+   .owner = THIS_MODULE,
+   .open = buzzer_open,
+   .release = buzzer_release,
+   .write = buzzer_write
+};
+
+int __init buzzer_init(void) {
+   if(register_chrdev(BUZZER_MAJOR_NUMBER, BUZZER_DEV_NAME, &buzzer_fops) < 0 )
+      printk(KERN_ALERT "[buzzer] driver init failed\n");
+   else
+      printk(KERN_ALERT "[buzzer] driver init successful\n");
+
+   return 0;
+}
+
+void __exit buzzer_exit(void) {
+   unregister_chrdev(BUZZER_MAJOR_NUMBER, BUZZER_DEV_NAME);
+   printk(KERN_ALERT "[buzzer] driver cleanup");
+}
+
+module_init(buzzer_init);
+module_exit(buzzer_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("hyunjun cho");
+MODULE_DESCRIPTION("BUZZER_DEVICE_DRIVER");
+
diff --git a/buzzer/buzzer_dev.ko b/buzzer/buzzer_dev.ko
new file mode 100644
index 0000000000000000000000000000000000000000..f937f15ce87fc008f1cc47c6d3a43928729f6120
GIT binary patch
literal 7624
zcmb<-^>JflWMqH=Mg|QA1doA%K>{qpY67M-7*rWl7+4q>7(^Ht7?>Ft7~K6r8SVtE
zx?5)IcG`CKS{cU|##`scP2bPPzyL9ak%7S{Gq1D)te=5__rQXO3^#ONvTX2q#PUG*
z>A(N~Uo$W;JZ4~Ucno4E2rPKaz_8%40>3ku&tSmtn8Co|F^fXOBN>5)M=T1>Pc;-8
z9x*U9KLx4d5NLkNqtN`6Va41RAhSQ*hnUTC!53kE0>fj51c%2kdl(F+J!N!Q@Q|rs
z!9xQBZipM8_Am%6c+8?O`6+Y5f`<$Slb$k~G(ToAXnJZQ!2OihV8O$B+ry9T4Gur%
zFqr(5MPbS#W`#=z3<e8~85x2fvN147u_!Ef%p$Php$UWcBanX>6apTxF)(m3FfhCV
z%P}N9GBNN5x&HykE|3}%0qLi3w*@eO{S6XxU}Aa94-FTF0Efp66Bayf5Lob#!C}Ee
z1xBvN>`*z7eGCc<9>UCMTCm_D$Xrf_sE7Ov47WHGW;|tKSn!Z>Lgyo}pUfeC;xL%{
z)cC*tLmsF+Ho3R||G#1}nDLaIVZlQNg~?AD6q=tJC`dmAg&{LT5Xeq0kX;%VydQm7
z4~YYO@e7Mj28PLyaA#QX7#4RheH_Sf2TBhLpftenm_fk-oE8`qdY^t}WO&S|vj7}c
z3=9FFxZTXaz_6Hs!C^B4gTrEwn?UJ<=Ysbmbn`*_Kw%Fu1LhuxdPF(|>2aFP*tlUs
zLmMdRdV<;i!E9u4kQ@ldFfcIiFfcGYV1#5DY-+HHrKA=o7iAWdWaj7DI)z3>xdz3%
zxQ2N;yT-c&d4{<LF(j6jWaJmwW>l8uWtHYBBxmF^<YXqN<`t*fx(E0$6c;6zr4|)~
zv|C!b85)?nx|ujyx)_?c892KdxtcpWGccs27Nq8-6x%Z7CFZ8uCY4rIr544fq?R$1
zr55ETre`MGn&=r?>RFoWmYHiS1p5Xk<mRWum*(Z<C#HayPz#C`9D{tz%oPfZ$}AK>
zer7a;n5B?kkea8ER+^U#@`gfkVopwK3Ks(dT)w<0vm_N$0i&5JNErj8p=wTwf@%(k
z1J{$1T9%ods*qBYS(aL)keriWoSLGj2+Btc5L>}MU|=+ihHztHN;C5^OBB))GhuGP
zDqmchoSa%*oK~6xb|<=;<eb#RywU;&1_l8J1_luQfe}*Xy|0y8o133fnv)uzlUSKw
zS^^3P67YfFhqL43OY@3S(=&@pQj6k~Gm1b_L97vy&BxEj$CIm@fg#xPz}w9H(!AV6
zkgtff6`^h+Yw_*)_~Mep<m~w5jO=(&KqF)cvutA9`VxzB<5N;|5-a2L3yKMAK~WLq
zR~nz2np>PoYQRHHxvhFe17v@4enDk?T2X#(d}(oN5mb^0ioH9%AKCxurHMr;MCgMl
zQAw6$ijPlBO-#y+&rHcIgNYMM9}|esi-+nj%`4B$ONmb|D2Oj8G9=CfX2+VBnfXPj
z<i`Jp3q~~sMVWae*~Hn0uIhot+Kut?>3OB`xykvZc_s0A$>>UkEFV%3LCU2e>xof^
z(?0~<ot>=|G=dU~3z9Mu^As%fjP(q3&9sXOG7U8$JO&0L)HoV2Fff3N76wK&1_lOJ
zb6rOUHZFEY4n|HUE+!!+5k^r)ab^idNk%CqIVL5Pc0LwgGecVNa2aL>CO8|!U<UU9
zKr9Gm2KNjgY!J!J0O|#RSP;z2zyV=ENoH`f7|H?nC%6$DFrOEV&xghb)y@bZW(Gk7
z2drNhjSuRzAcUA1L=haYdT}&9r1Jw4WM+_pF~Kx5gAAC45zGv-FeaF0W{?BZFoKyu
z9>xUI%naaW6qpSnm>CpNLY#%+<9{KL1RP5-fcOq@zA)GaAigrVza`9|$H2e<s*gCK
ze0v54hFoYnhLJ&-A&7y2p_YMx!3HW1G7oMX0~13glmqfPBLfrIKBy1_1A{n2A(Yd=
z4C>#BGt@!(APVH(ZV&^GSs41@Y!E|)VKRt<V>vYQxzPCB409P6kU~j>VG#oZ1IWJ+
zBSaXMGcYiCKsexD=^6$Gh7cq^s(aWNHp1mV3<-wa3=9mgzA31McYuL`p#>xb#v%+y
z85kIrfY~5I1kHWCXnZ~fRQos>PBAbroB(MBV|4ujX!-@w_!11~!TJ~&8o==-fhI4<
za2qNQ>XS1v$T5IAk{}^PuzF#J{|pQaAT}r`fZ|_-k%0l!mk0G#Kz!8rM|Ynvnth@S
zTF^qnfr)`ZkU@&U0?G&33CfLLP<{df1A`C)8$%c)q)%i4=Cd%QLgiuVbD?~Yn}irR
z7;2z=nEnn%25_kY@}D4s978`N0|Th9)xroepM_x#R6WeRwP^fZX#5k54B%1-X5M);
z`Ri!>duaTpX#5{&d=8`{5)>X%P(H}bLJTYnYEVARy|zq{ek061E>L+`cmzQCF!e~C
zAHCfC6uo2yl@x~f_)tI3z);tCPnUQ^htSZ7AwC}3SAli`QB;C@gNBAELa+{@p#ejD
zUVcexyct7$e0)5t1Bh&SGJ{GYgPxDG0fU~8qo1>fe-Mb}YzPuF0uja_!UQf0mM{g0
znSls%5Mco`Fb&iZNH56Dk55W0PDODNQU@9AA%ssMJ!3Q<K>NlZ55$*bWEMjMfC013
z4sET0x{EMp6s6{*g6xNNkf7Z_m>D3YFm`%DacYhsOe461i(&`3Uj%EYgB$vwUI(Jr
z1JYk&$N+1KLz~plo()JTS_cKa&5YRxg!%{67iWN3jMhU)FG$WQf;&33BC~`6TVE8E
zZe>D1r6B`@wi;wSLr0APT-(V6GBD^cFfhmjFff3c8`|oS@<c}+(oY8I19i=`T_EME
zjtc`r4Fdy%wicue)6rsJm;%xt$iOfIB(BcDFo%JG0i^#8NIaN<L4c8gK_-ZSL4uKi
zL0g-FL57imK}VZ`K>@_~V_;AL$p<npn1E<s25=dq<Hx`d0OiMk)afuVB!KkkFfe3*
z!~+=^u7GGC1_n@H9^}q1Aa%M744^!$qszeX2P7ZJzyNCIfc(Y61aTJ+69a>cJ0v_n
z`are5wmzg@(l%gVPyxALpMgOGL>n+LfXX_VP)I$cZOFjj0`jL3q@L0-WMJ?CsWW0=
z2mtvv5E8y1b3o?m7(mRGiGrA`Z3Z>h3>xkr_c1UqXn_h0P@xbGDIc}iA>|rK98|W0
z_@H<M@j<N~5FeymixosNFfhRMff@=R^I%Oim^id4#>4_KA4G#%Zy*|EJ`>a&CTB?b
z#pDf12TWm*wgr<L1H%naP<k>jfWnapR7vX<SLT)^CNbz0mlQ$h3>XVk+UTX{mFgvx
zX6B^mW~MOcfrTJr$9hGnIeI0j6(xG5c{!QcsX3JlU?EVB1dBtspcD<|ItKabrB;+A
zCV}~A+8~mdDHZ6F5DAbjG?O6`ARR~&5J8Y?B#S{Vg-C!@BT3}ur)1`(<um9N<)<W;
zB!a@gP|pPH@OW5fI43`u0janJ`w^rVtO^`FIhlFc`FY8yddP*F9@tR@IVB8wNyWts
zddc~@xv6<2&>(d83)KY=*f8jU9F|y8Qk0ogT9QiA(2Fz!0|PrKKB376R6l{zJ(LTs
zqd{y?`x9AR1bhksBnwGPAl3$O`-B1BLqH#mf>o=fSky@%)rqidV8y_|07}ZRwxNg!
zr2J4~fY=FA2TH%I(ah^$VqgHZH9&3xVURiy?Tcofjwk~I$S)xCKv@N(4rJa<H1l3C
zLGl5}3=jsX1JR)RAK85^qLA_vWFE*IkU9_z8dd@M9p*(DW=J^zG6RG`>Ogb{#NL7?
z5C_yIW`>j_FnJgaYRe+qyG0aIK7s57WpR)?ki82b=7EYnu!#}OkbDj1K*JEk-UU$y
zw>O0uQtp7l1SAhK4@7T63%@s_5ch%X1@+=U>Ol6MhnNSqHwTBkFCgmR_Etdc1(^Y|
z4`d#Qeu8E%ix|RQQ11|=4y5NV#5}mYp#IEGkO5E(QU_wPF@pLz3=Bpf4yfP6!octd
z$_7y&b)fi?gsOwZn*u9j>=>j5ghA>+v?wELI+YQFl=q-;0rf^f>Ok&OLo?5Sm4N}|
zMvxgG3{nT8O`+;Qb8#U41`bF)3u1#XOr0T`y*5bpg8F(Obs&4~(adw;WMBZb^+9HV
zFf4yrqnQ^Y2JtV*AD~_`%)B@x^FZb_a6`fqWEKd6!VW}7BB^s^Vqj>*p)MKPeuw$D
zg&Sfo$P5q$*$bjUbw0>!P#Xor2dM*9K_E5=gXBQC5Na<-41~{sG6jeM#UM2xW+Nkb
zz7t+dfz%-nxx&<eXjmEm=>ts)ZD3_!0QJwEq4@|@FN5+V%nu-S8w42`Qjj!)%mImm
U(k!yN95Duli7-iM8V0EY0H;k=rT_o{

literal 0
HcmV?d00001

diff --git a/buzzer/buzzer_dev.mod.c b/buzzer/buzzer_dev.mod.c
new file mode 100644
index 0000000..db5f703
--- /dev/null
+++ b/buzzer/buzzer_dev.mod.c
@@ -0,0 +1,50 @@
+#include <linux/build-salt.h>
+#include <linux/module.h>
+#include <linux/vermagic.h>
+#include <linux/compiler.h>
+
+BUILD_SALT;
+
+MODULE_INFO(vermagic, VERMAGIC_STRING);
+MODULE_INFO(name, KBUILD_MODNAME);
+
+__visible 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,
+};
+
+#ifdef CONFIG_RETPOLINE
+MODULE_INFO(retpoline, "Y");
+#endif
+
+static const struct modversion_info ____versions[]
+__used
+__attribute__((section("__versions"))) = {
+	{ 0xad1a7def, "module_layout" },
+	{ 0x6bc3fbc0, "__unregister_chrdev" },
+	{ 0xcfc78319, "__register_chrdev" },
+	{ 0xedc03953, "iounmap" },
+	{ 0xdb7305a1, "__stack_chk_fail" },
+	{ 0x8e865d3c, "arm_delay_ops" },
+	{ 0x5f754e5a, "memset" },
+	{ 0x28cc25db, "arm_copy_from_user" },
+	{ 0x8f678b07, "__stack_chk_guard" },
+	{ 0x2196324, "__aeabi_idiv" },
+	{ 0x2e5810c6, "__aeabi_unwind_cpp_pr1" },
+	{ 0xe97c4103, "ioremap" },
+	{ 0x7c32d0f0, "printk" },
+	{ 0xb1ad28e0, "__gnu_mcount_nc" },
+};
+
+static const char __module_depends[]
+__used
+__attribute__((section(".modinfo"))) =
+"depends=";
+
+
+MODULE_INFO(srcversion, "99F105EF4A9D14F0CE2E7CC");
diff --git a/buzzer/buzzer_dev.mod.o b/buzzer/buzzer_dev.mod.o
new file mode 100644
index 0000000000000000000000000000000000000000..140d775bf5dabf03ea186323f7b63fabb05824cb
GIT binary patch
literal 3104
zcmb<-^>JflWMqH=Mg|QA1doB?1SeRA)dWmwFz_?*fmzsyq|&OY)S~#5)G}<cqhg~W
zfEfbCMagBUMa7x<dA638ZiWV?u5KodmM(@SZU)Y-My}@0&I}AGsRgNdDaE!7d5O8H
zwn(Y0EVU>%F+DTc)<n<HQqR&{x6E8yA=o!SAvZrIzBDf<KQRTwgj!In;27jvX0A|R
zRA!+7atRv)10=08GBEgL=9N}}1Q{3@-q%X4&CO3K%}I^VNvzB-ErE&?OC9)qI6FSR
zG_NQ%J+rtZwJ1J0qllDDA=!NVe0)5)x)~UPEf2iS%rDK$O)MbR$tda;vKHTtk1sAs
zOwNu^&d82WOU%qcQ9yuW6Wi98Sd<%|lA4oP8J}NJOh7%lbd+Cdd~RxPaVn_+4>jnv
z>KP4?{mJ<SmGNms`ML3>#i>P5Ng^or?(}|S|EHHG7NroO52i#VS&}I}J~1^hDKkDZ
zC6naR@R&e^UOZHPX<m6|UP^p&K|y>$ks-_m{4}#;&CAUEqEvF@|HB2Nnu4OtypnAE
z_TZ9zps{vie0+LdX?$*SeraAwd|omxrP#&Yot>=|G=dU~3z9Mu^As%fjP(q3&9sXO
zG7U8$JO)Pt1_lOj5Hm2UF)%Q&n(I0;uyL_Faxii-aWM%oi7<*XiZe?vN-|0@$uTJ*
z*J&_Ik;PaTKK_S^gJ@<*$pB)4F*5@bn1&I|49qYlm}X{RVGshdU<3<{0j8N5*wEzJ
z7(~G`3=GQPa)^yVkAZ<fg@J(qROK=<urb&(FfiycFfa%}<%1X)7;G6B7;K<?sCF>L
z%)pLjK08AuScZW?0<4}L%7akM3>;|cIT#8dQVb2upmLD|%7akM3|tTflw=0G63Ss<
zU|?q8W~hU59hevx1Q}QudZ2s|1@glT5Ce)qd<H~Ou9usiqL<8|lEM%lAL{2B80s4D
z=@O5q91M*Z;^U!ZGPF8CQ3<LU3=L6)V3mWR0YiLVeo1P)8AE)0d_1f&V2F<|$;d2*
z8p@EFmstX1C+DOl=9Lz}xC}QK7#Ntu85mfY7#Ns9fvHzqnOl;W#GqGPQUswhV62kV
ziV_CBl*E!m2EC->Vg|jU)EvF^yi&cK%)IRUyyR3pWLrVr&df{8XV3$=P!CcGA-Pd6
zIX^cyHLnCJ@9r0>3oe!!^c;hH^%6@;iZYW*OHxTFV5Pxnfq?;3_kp4U(yjxsAQ+Y>
z6rt*1sT`L&bp{3oP)Z@B4wPL%X2aAuFfcHH(h0;?1_lrx#MXhPe;8kd6O#UU7#J8p
zISPb9_IW|w2g{WWObiT_AOoNnqz=RkW?*0drF@vWKTMGP0Fnb?n7Vj0^F){#!1(~A
z283bivY_ff{sD<kVT0sZ5F3O+egt7qlz?cE7zpox1vrQUH3P(K2In0Hcts6Thg{6V
z%mC3aKY;YTVPjyJz{tSB%fP@O1`Qifp5la<2T}sYH5?2K%fT!N0Wt@~5=2vH!pXoe
K86*M4Fm(VFdn(ZY

literal 0
HcmV?d00001

diff --git a/buzzer/buzzer_dev.o b/buzzer/buzzer_dev.o
new file mode 100644
index 0000000000000000000000000000000000000000..3a1750ee291fc5d81aa2bbdf517a306596939681
GIT binary patch
literal 6512
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

literal 0
HcmV?d00001

diff --git a/buzzer/modules.order b/buzzer/modules.order
new file mode 100644
index 0000000..ca4c90f
--- /dev/null
+++ b/buzzer/modules.order
@@ -0,0 +1 @@
+kernel//home/pi/Desktop/project/buzzer/buzzer_dev.ko
diff --git a/smoke/.smoke_dev.ko.cmd b/smoke/.smoke_dev.ko.cmd
new file mode 100644
index 0000000..4fac9d4
--- /dev/null
+++ b/smoke/.smoke_dev.ko.cmd
@@ -0,0 +1 @@
+cmd_/home/pi/Desktop/project/smoke/smoke_dev.ko := ld -r  -EL -T ./scripts/module-common.lds -T ./arch/arm/kernel/module.lds  --build-id  -o /home/pi/Desktop/project/smoke/smoke_dev.ko /home/pi/Desktop/project/smoke/smoke_dev.o /home/pi/Desktop/project/smoke/smoke_dev.mod.o ;  true
diff --git a/smoke/.smoke_dev.mod.o.cmd b/smoke/.smoke_dev.mod.o.cmd
new file mode 100644
index 0000000..1b37f99
--- /dev/null
+++ b/smoke/.smoke_dev.mod.o.cmd
@@ -0,0 +1,499 @@
+cmd_/home/pi/Desktop/project/smoke/smoke_dev.mod.o := gcc -Wp,-MD,/home/pi/Desktop/project/smoke/.smoke_dev.mod.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/8/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables -marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned  -DKBUILD_BASENAME='"smoke_dev.mod"' -DKBUILD_MODNAME='"smoke_dev"' -DMODULE  -c -o /home/pi/Desktop/project/smoke/smoke_dev.mod.o /home/pi/Desktop/project/smoke/smoke_dev.mod.c
+
+source_/home/pi/Desktop/project/smoke/smoke_dev.mod.o := /home/pi/Desktop/project/smoke/smoke_dev.mod.c
+
+deps_/home/pi/Desktop/project/smoke/smoke_dev.mod.o := \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/retpoline.h) \
+  include/linux/kconfig.h \
+    $(wildcard include/config/cpu/big/endian.h) \
+    $(wildcard include/config/booger.h) \
+    $(wildcard include/config/foo.h) \
+  include/linux/compiler_types.h \
+    $(wildcard include/config/have/arch/compiler/h.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/use/builtin/bswap.h) \
+  include/linux/build-salt.h \
+    $(wildcard include/config/build/salt.h) \
+  include/linux/elfnote.h \
+  include/linux/elf.h \
+  arch/arm/include/asm/elf.h \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/vdso.h) \
+  arch/arm/include/asm/auxvec.h \
+  arch/arm/include/uapi/asm/auxvec.h \
+  arch/arm/include/asm/hwcap.h \
+  arch/arm/include/uapi/asm/hwcap.h \
+  arch/arm/include/asm/vdso_datapage.h \
+  arch/arm/include/asm/page.h \
+    $(wildcard include/config/cpu/copy/v4wt.h) \
+    $(wildcard include/config/cpu/copy/v4wb.h) \
+    $(wildcard include/config/cpu/copy/feroceon.h) \
+    $(wildcard include/config/cpu/copy/fa.h) \
+    $(wildcard include/config/cpu/sa1100.h) \
+    $(wildcard include/config/cpu/xscale.h) \
+    $(wildcard include/config/cpu/xsc3.h) \
+    $(wildcard include/config/cpu/copy/v6.h) \
+    $(wildcard include/config/kuser/helpers.h) \
+    $(wildcard include/config/arm/lpae.h) \
+    $(wildcard include/config/have/arch/pfn/valid.h) \
+  arch/arm/include/asm/glue.h \
+  arch/arm/include/asm/pgtable-2level-types.h \
+  arch/arm/include/uapi/asm/types.h \
+  include/asm-generic/int-ll64.h \
+  include/uapi/asm-generic/int-ll64.h \
+  arch/arm/include/generated/uapi/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+    $(wildcard include/config/64bit.h) \
+  include/uapi/asm-generic/bitsperlong.h \
+  arch/arm/include/asm/memory.h \
+    $(wildcard include/config/need/mach/memory/h.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/thumb2/kernel.h) \
+    $(wildcard include/config/highmem.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/dram/base.h) \
+    $(wildcard include/config/dram/size.h) \
+    $(wildcard include/config/xip/kernel.h) \
+    $(wildcard include/config/have/tcm.h) \
+    $(wildcard include/config/arm/patch/phys/virt.h) \
+    $(wildcard include/config/phys/offset.h) \
+    $(wildcard include/config/xip/phys/addr.h) \
+    $(wildcard include/config/debug/virtual.h) \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/stack/validation.h) \
+    $(wildcard include/config/kasan.h) \
+  include/linux/compiler_types.h \
+  include/uapi/linux/types.h \
+  include/uapi/linux/posix_types.h \
+  include/linux/stddef.h \
+  include/uapi/linux/stddef.h \
+  arch/arm/include/uapi/asm/posix_types.h \
+  include/uapi/asm-generic/posix_types.h \
+  arch/arm/include/asm/barrier.h \
+    $(wildcard include/config/cpu/32v6k.h) \
+    $(wildcard include/config/cpu/fa526.h) \
+    $(wildcard include/config/arm/heavy/mb.h) \
+    $(wildcard include/config/arm/dma/mem/bufferable.h) \
+    $(wildcard include/config/cpu/spectre.h) \
+  include/asm-generic/barrier.h \
+  include/linux/kasan-checks.h \
+  include/linux/const.h \
+  include/uapi/linux/const.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) \
+  include/linux/sizes.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/linux/pfn.h \
+  include/asm-generic/getorder.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/bitops.h \
+  include/linux/bits.h \
+  arch/arm/include/asm/bitops.h \
+  include/linux/irqflags.h \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+  include/linux/typecheck.h \
+  arch/arm/include/asm/irqflags.h \
+    $(wildcard include/config/cpu/v7m.h) \
+  arch/arm/include/asm/ptrace.h \
+    $(wildcard include/config/arm/thumb.h) \
+  arch/arm/include/uapi/asm/ptrace.h \
+    $(wildcard include/config/cpu/endian/be8.h) \
+  include/asm-generic/irqflags.h \
+  include/asm-generic/bitops/non-atomic.h \
+  include/asm-generic/bitops/builtin-__fls.h \
+  include/asm-generic/bitops/builtin-__ffs.h \
+  include/asm-generic/bitops/builtin-fls.h \
+  include/asm-generic/bitops/builtin-ffs.h \
+  include/asm-generic/bitops/ffz.h \
+  include/asm-generic/bitops/fls64.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/linux/atomic.h \
+    $(wildcard include/config/generic/atomic64.h) \
+  arch/arm/include/asm/atomic.h \
+  include/linux/prefetch.h \
+  arch/arm/include/asm/processor.h \
+    $(wildcard include/config/have/hw/breakpoint.h) \
+    $(wildcard include/config/binfmt/elf/fdpic.h) \
+    $(wildcard include/config/arm/errata/754327.h) \
+  arch/arm/include/asm/hw_breakpoint.h \
+  arch/arm/include/asm/unified.h \
+  arch/arm/include/asm/cache.h \
+    $(wildcard include/config/arm/l1/cache/shift.h) \
+    $(wildcard include/config/aeabi.h) \
+  arch/arm/include/asm/cmpxchg.h \
+    $(wildcard include/config/cpu/sa110.h) \
+    $(wildcard include/config/cpu/v6.h) \
+  include/asm-generic/cmpxchg-local.h \
+  include/asm-generic/atomic-long.h \
+  include/asm-generic/bitops/find.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+  include/asm-generic/bitops/le.h \
+  arch/arm/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/arm/include/asm/swab.h \
+  arch/arm/include/uapi/asm/swab.h \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/ext2-atomic-setbit.h \
+  arch/arm/include/asm/user.h \
+  include/uapi/linux/elf.h \
+  include/uapi/linux/elf-em.h \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/sysfs.h) \
+    $(wildcard include/config/modules/tree/lookup.h) \
+    $(wildcard include/config/livepatch.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/tracepoints.h) \
+    $(wildcard include/config/jump/label.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/function/error/injection.h) \
+    $(wildcard include/config/strict/module/rwx.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+    $(wildcard include/config/page/poisoning/zero.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/atomic/sleep.h) \
+    $(wildcard include/config/arch/has/refcount.h) \
+    $(wildcard include/config/panic/timeout.h) \
+  /usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
+  include/linux/linkage.h \
+  include/linux/stringify.h \
+  include/linux/export.h \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/module/rel/crcs.h) \
+    $(wildcard include/config/have/arch/prel32/relocations.h) \
+    $(wildcard include/config/trim/unused/ksyms.h) \
+  arch/arm/include/asm/linkage.h \
+  include/linux/printk.h \
+    $(wildcard include/config/message/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/quiet.h) \
+    $(wildcard include/config/early/printk.h) \
+    $(wildcard include/config/printk/nmi.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+  include/linux/init.h \
+    $(wildcard include/config/strict/kernel/rwx.h) \
+  include/linux/kern_levels.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  include/uapi/linux/kernel.h \
+  include/uapi/linux/sysinfo.h \
+  include/linux/build_bug.h \
+  arch/arm/include/asm/div64.h \
+  arch/arm/include/asm/compiler.h \
+  include/asm-generic/div64.h \
+  include/linux/stat.h \
+  arch/arm/include/uapi/asm/stat.h \
+  include/uapi/linux/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/count.h) \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/trace/preempt/toggle.h) \
+    $(wildcard include/config/preempt/notifiers.h) \
+  arch/arm/include/generated/asm/preempt.h \
+  include/asm-generic/preempt.h \
+  include/linux/thread_info.h \
+    $(wildcard include/config/thread/info/in/task.h) \
+    $(wildcard include/config/have/arch/within/stack/frames.h) \
+    $(wildcard include/config/hardened/usercopy.h) \
+  include/linux/bug.h \
+    $(wildcard include/config/bug/on/data/corruption.h) \
+  arch/arm/include/asm/bug.h \
+    $(wildcard include/config/debug/bugverbose.h) \
+  arch/arm/include/asm/opcodes.h \
+    $(wildcard include/config/cpu/endian/be32.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  include/linux/restart_block.h \
+  include/linux/time64.h \
+    $(wildcard include/config/64bit/time.h) \
+  include/linux/math64.h \
+    $(wildcard include/config/arch/supports/int128.h) \
+  include/uapi/linux/time.h \
+  arch/arm/include/asm/thread_info.h \
+    $(wildcard include/config/crunch.h) \
+    $(wildcard include/config/arm/thumbee.h) \
+  arch/arm/include/asm/fpstate.h \
+    $(wildcard include/config/vfpv3.h) \
+    $(wildcard include/config/iwmmxt.h) \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  arch/arm/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+  include/linux/rwlock_types.h \
+  arch/arm/include/asm/spinlock.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) \
+    $(wildcard include/config/generic/lockbreak.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/time32.h \
+  include/linux/uidgid.h \
+    $(wildcard include/config/multiuser.h) \
+    $(wildcard include/config/user/ns.h) \
+  include/linux/highuid.h \
+  include/linux/kmod.h \
+  include/linux/umh.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/zone/device.h) \
+    $(wildcard include/config/numa.h) \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/memory/isolation.h) \
+    $(wildcard include/config/compaction.h) \
+    $(wildcard include/config/cma.h) \
+  include/linux/mmdebug.h \
+    $(wildcard include/config/debug/vm.h) \
+    $(wildcard include/config/debug/vm/pgflags.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/zsmalloc.h) \
+    $(wildcard include/config/memcg.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/page/extension.h) \
+    $(wildcard include/config/no/bootmem.h) \
+    $(wildcard include/config/deferred/struct/page/init.h) \
+    $(wildcard include/config/transparent/hugepage.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/have/memoryless/nodes.h) \
+    $(wildcard include/config/have/memblock/node/map.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/memory/hotremove.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  arch/arm/include/generated/asm/current.h \
+  include/asm-generic/current.h \
+  include/uapi/linux/wait.h \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+    $(wildcard include/config/fortify/source.h) \
+  include/uapi/linux/string.h \
+  arch/arm/include/asm/string.h \
+    $(wildcard include/config/bcm2835/fast/memcpy.h) \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/page-flags-layout.h \
+    $(wildcard include/config/numa/balancing.h) \
+  include/generated/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/arch/has/add/pages.h) \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/have/bootmem/info/node.h) \
+  include/linux/notifier.h \
+    $(wildcard include/config/tree/srcu.h) \
+  include/linux/errno.h \
+  include/uapi/linux/errno.h \
+  arch/arm/include/generated/uapi/asm/errno.h \
+  include/uapi/asm-generic/errno.h \
+  include/uapi/asm-generic/errno-base.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/mutex/spin/on/owner.h) \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/osq_lock.h \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/spin/on/owner.h) \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  include/linux/err.h \
+  arch/arm/include/generated/asm/rwsem.h \
+  include/asm-generic/rwsem.h \
+  include/linux/srcu.h \
+    $(wildcard include/config/tiny/srcu.h) \
+    $(wildcard include/config/srcu.h) \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/preempt/rcu.h) \
+    $(wildcard include/config/rcu/stall/common.h) \
+    $(wildcard include/config/no/hz/full.h) \
+    $(wildcard include/config/rcu/nocb/cpu.h) \
+    $(wildcard include/config/tasks/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+    $(wildcard include/config/tiny/rcu.h) \
+    $(wildcard include/config/debug/objects/rcu/head.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/prove/rcu.h) \
+    $(wildcard include/config/rcu/boost.h) \
+    $(wildcard include/config/arch/weak/release/acquire.h) \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+  include/linux/rcutree.h \
+  include/linux/workqueue.h \
+    $(wildcard include/config/debug/objects/work.h) \
+    $(wildcard include/config/freezer.h) \
+    $(wildcard include/config/wq/watchdog.h) \
+  include/linux/timer.h \
+    $(wildcard include/config/debug/objects/timers.h) \
+    $(wildcard include/config/no/hz/common.h) \
+  include/linux/ktime.h \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+  include/uapi/linux/timex.h \
+  include/uapi/linux/param.h \
+  arch/arm/include/generated/uapi/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/uapi/asm-generic/param.h \
+  arch/arm/include/asm/timex.h \
+  include/generated/timeconst.h \
+  include/linux/timekeeping.h \
+  include/linux/timekeeping32.h \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  include/linux/rcu_segcblist.h \
+  include/linux/srcutree.h \
+  include/linux/rcu_node_tree.h \
+    $(wildcard include/config/rcu/fanout.h) \
+    $(wildcard include/config/rcu/fanout/leaf.h) \
+  include/linux/completion.h \
+  include/linux/topology.h \
+    $(wildcard include/config/use/percpu/numa/node/id.h) \
+    $(wildcard include/config/sched/smt.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/up/late/init.h) \
+  include/linux/llist.h \
+    $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
+  arch/arm/include/asm/smp.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) \
+  arch/arm/include/asm/percpu.h \
+  include/asm-generic/percpu.h \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+    $(wildcard include/config/virtualization.h) \
+    $(wildcard include/config/amd/mem/encrypt.h) \
+  arch/arm/include/asm/topology.h \
+    $(wildcard include/config/arm/cpu/topology.h) \
+  include/linux/arch_topology.h \
+  include/asm-generic/topology.h \
+  include/linux/sysctl.h \
+    $(wildcard include/config/sysctl.h) \
+  include/linux/rbtree.h \
+  include/uapi/linux/sysctl.h \
+  include/linux/kobject.h \
+    $(wildcard include/config/uevent/helper.h) \
+    $(wildcard include/config/debug/kobject/release.h) \
+  include/linux/sysfs.h \
+  include/linux/kernfs.h \
+    $(wildcard include/config/kernfs.h) \
+  include/linux/idr.h \
+  include/linux/radix-tree.h \
+    $(wildcard include/config/radix/tree/multiorder.h) \
+  include/linux/kobject_ns.h \
+  include/linux/kref.h \
+  include/linux/refcount.h \
+    $(wildcard include/config/refcount/full.h) \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/jump_label.h \
+  arch/arm/include/asm/jump_label.h \
+  include/linux/rbtree_latch.h \
+  include/linux/error-injection.h \
+  include/asm-generic/error-injection.h \
+  include/linux/tracepoint-defs.h \
+  include/linux/static_key.h \
+  arch/arm/include/asm/module.h \
+    $(wildcard include/config/arm/unwind.h) \
+    $(wildcard include/config/arm/module/plts.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 \
+
+/home/pi/Desktop/project/smoke/smoke_dev.mod.o: $(deps_/home/pi/Desktop/project/smoke/smoke_dev.mod.o)
+
+$(deps_/home/pi/Desktop/project/smoke/smoke_dev.mod.o):
diff --git a/smoke/.smoke_dev.o.cmd b/smoke/.smoke_dev.o.cmd
new file mode 100644
index 0000000..3a02742
--- /dev/null
+++ b/smoke/.smoke_dev.o.cmd
@@ -0,0 +1,720 @@
+cmd_/home/pi/Desktop/project/smoke/smoke_dev.o := gcc -Wp,-MD,/home/pi/Desktop/project/smoke/.smoke_dev.o.d  -nostdinc -isystem /usr/lib/gcc/arm-linux-gnueabihf/8/include -I./arch/arm/include -I./arch/arm/include/generated  -I./include -I./arch/arm/include/uapi -I./arch/arm/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-dwarf2-cfi-asm -fno-omit-frame-pointer -mapcs -mno-sched-prolog -fno-ipa-sra -mabi=aapcs-linux -mfpu=vfp -funwind-tables -marm -Wa,-mno-warn-deprecated -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned  -DMODULE  -DKBUILD_BASENAME='"smoke_dev"' -DKBUILD_MODNAME='"smoke_dev"' -c -o /home/pi/Desktop/project/smoke/.tmp_smoke_dev.o /home/pi/Desktop/project/smoke/smoke_dev.c
+
+source_/home/pi/Desktop/project/smoke/smoke_dev.o := /home/pi/Desktop/project/smoke/smoke_dev.c
+
+deps_/home/pi/Desktop/project/smoke/smoke_dev.o := \
+  include/linux/kconfig.h \
+    $(wildcard include/config/cpu/big/endian.h) \
+    $(wildcard include/config/booger.h) \
+    $(wildcard include/config/foo.h) \
+  include/linux/compiler_types.h \
+    $(wildcard include/config/have/arch/compiler/h.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/retpoline.h) \
+    $(wildcard include/config/arch/use/builtin/bswap.h) \
+  include/linux/init.h \
+    $(wildcard include/config/have/arch/prel32/relocations.h) \
+    $(wildcard include/config/strict/kernel/rwx.h) \
+    $(wildcard include/config/strict/module/rwx.h) \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/stack/validation.h) \
+    $(wildcard include/config/kasan.h) \
+  include/linux/compiler_types.h \
+  include/uapi/linux/types.h \
+  arch/arm/include/uapi/asm/types.h \
+  include/asm-generic/int-ll64.h \
+  include/uapi/asm-generic/int-ll64.h \
+  arch/arm/include/generated/uapi/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+    $(wildcard include/config/64bit.h) \
+  include/uapi/asm-generic/bitsperlong.h \
+  include/uapi/linux/posix_types.h \
+  include/linux/stddef.h \
+  include/uapi/linux/stddef.h \
+  arch/arm/include/uapi/asm/posix_types.h \
+  include/uapi/asm-generic/posix_types.h \
+  arch/arm/include/asm/barrier.h \
+    $(wildcard include/config/cpu/32v6k.h) \
+    $(wildcard include/config/thumb2/kernel.h) \
+    $(wildcard include/config/cpu/xsc3.h) \
+    $(wildcard include/config/cpu/fa526.h) \
+    $(wildcard include/config/arm/heavy/mb.h) \
+    $(wildcard include/config/arm/dma/mem/bufferable.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/cpu/spectre.h) \
+  include/asm-generic/barrier.h \
+  include/linux/kasan-checks.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) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/atomic/sleep.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/arch/has/refcount.h) \
+    $(wildcard include/config/panic/timeout.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+  /usr/lib/gcc/arm-linux-gnueabihf/8/include/stdarg.h \
+  include/linux/linkage.h \
+  include/linux/stringify.h \
+  include/linux/export.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/module/rel/crcs.h) \
+    $(wildcard include/config/trim/unused/ksyms.h) \
+    $(wildcard include/config/unused/symbols.h) \
+  arch/arm/include/asm/linkage.h \
+  include/linux/bitops.h \
+  include/linux/bits.h \
+  arch/arm/include/asm/bitops.h \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+  include/linux/typecheck.h \
+  arch/arm/include/asm/irqflags.h \
+    $(wildcard include/config/cpu/v7m.h) \
+  arch/arm/include/asm/ptrace.h \
+    $(wildcard include/config/arm/thumb.h) \
+  arch/arm/include/uapi/asm/ptrace.h \
+    $(wildcard include/config/cpu/endian/be8.h) \
+  arch/arm/include/asm/hwcap.h \
+  arch/arm/include/uapi/asm/hwcap.h \
+  include/asm-generic/irqflags.h \
+  include/asm-generic/bitops/non-atomic.h \
+  include/asm-generic/bitops/builtin-__fls.h \
+  include/asm-generic/bitops/builtin-__ffs.h \
+  include/asm-generic/bitops/builtin-fls.h \
+  include/asm-generic/bitops/builtin-ffs.h \
+  include/asm-generic/bitops/ffz.h \
+  include/asm-generic/bitops/fls64.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/linux/atomic.h \
+    $(wildcard include/config/generic/atomic64.h) \
+  arch/arm/include/asm/atomic.h \
+    $(wildcard include/config/arm/lpae.h) \
+  include/linux/prefetch.h \
+  arch/arm/include/asm/processor.h \
+    $(wildcard include/config/have/hw/breakpoint.h) \
+    $(wildcard include/config/binfmt/elf/fdpic.h) \
+    $(wildcard include/config/arm/errata/754327.h) \
+  arch/arm/include/asm/hw_breakpoint.h \
+  arch/arm/include/asm/unified.h \
+  arch/arm/include/asm/cache.h \
+    $(wildcard include/config/arm/l1/cache/shift.h) \
+    $(wildcard include/config/aeabi.h) \
+  arch/arm/include/asm/cmpxchg.h \
+    $(wildcard include/config/cpu/sa1100.h) \
+    $(wildcard include/config/cpu/sa110.h) \
+    $(wildcard include/config/cpu/v6.h) \
+  include/asm-generic/cmpxchg-local.h \
+  include/asm-generic/atomic-long.h \
+  include/asm-generic/bitops/find.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+  include/asm-generic/bitops/le.h \
+  arch/arm/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/arm/include/asm/swab.h \
+  arch/arm/include/uapi/asm/swab.h \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/ext2-atomic-setbit.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/printk.h \
+    $(wildcard include/config/message/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/default.h) \
+    $(wildcard include/config/console/loglevel/quiet.h) \
+    $(wildcard include/config/early/printk.h) \
+    $(wildcard include/config/printk/nmi.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+  include/linux/kern_levels.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  include/uapi/linux/kernel.h \
+  include/uapi/linux/sysinfo.h \
+  include/linux/build_bug.h \
+  arch/arm/include/asm/div64.h \
+  arch/arm/include/asm/compiler.h \
+  include/asm-generic/div64.h \
+  include/linux/module.h \
+    $(wildcard include/config/sysfs.h) \
+    $(wildcard include/config/modules/tree/lookup.h) \
+    $(wildcard include/config/livepatch.h) \
+    $(wildcard include/config/module/sig.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/jump/label.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/function/error/injection.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+    $(wildcard include/config/page/poisoning/zero.h) \
+  include/linux/const.h \
+  include/uapi/linux/const.h \
+  include/linux/stat.h \
+  arch/arm/include/uapi/asm/stat.h \
+  include/uapi/linux/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/count.h) \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/trace/preempt/toggle.h) \
+    $(wildcard include/config/preempt/notifiers.h) \
+  arch/arm/include/generated/asm/preempt.h \
+  include/asm-generic/preempt.h \
+  include/linux/thread_info.h \
+    $(wildcard include/config/thread/info/in/task.h) \
+    $(wildcard include/config/have/arch/within/stack/frames.h) \
+    $(wildcard include/config/hardened/usercopy.h) \
+  include/linux/bug.h \
+    $(wildcard include/config/bug/on/data/corruption.h) \
+  arch/arm/include/asm/bug.h \
+    $(wildcard include/config/debug/bugverbose.h) \
+  arch/arm/include/asm/opcodes.h \
+    $(wildcard include/config/cpu/endian/be32.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  include/linux/restart_block.h \
+  include/linux/time64.h \
+    $(wildcard include/config/64bit/time.h) \
+  include/linux/math64.h \
+    $(wildcard include/config/arch/supports/int128.h) \
+  include/uapi/linux/time.h \
+  arch/arm/include/asm/thread_info.h \
+    $(wildcard include/config/crunch.h) \
+    $(wildcard include/config/arm/thumbee.h) \
+  arch/arm/include/asm/fpstate.h \
+    $(wildcard include/config/vfpv3.h) \
+    $(wildcard include/config/iwmmxt.h) \
+  arch/arm/include/asm/page.h \
+    $(wildcard include/config/cpu/copy/v4wt.h) \
+    $(wildcard include/config/cpu/copy/v4wb.h) \
+    $(wildcard include/config/cpu/copy/feroceon.h) \
+    $(wildcard include/config/cpu/copy/fa.h) \
+    $(wildcard include/config/cpu/xscale.h) \
+    $(wildcard include/config/cpu/copy/v6.h) \
+    $(wildcard include/config/kuser/helpers.h) \
+    $(wildcard include/config/have/arch/pfn/valid.h) \
+  arch/arm/include/asm/glue.h \
+  arch/arm/include/asm/pgtable-2level-types.h \
+  arch/arm/include/asm/memory.h \
+    $(wildcard include/config/need/mach/memory/h.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/highmem.h) \
+    $(wildcard include/config/dram/base.h) \
+    $(wildcard include/config/dram/size.h) \
+    $(wildcard include/config/xip/kernel.h) \
+    $(wildcard include/config/have/tcm.h) \
+    $(wildcard include/config/arm/patch/phys/virt.h) \
+    $(wildcard include/config/phys/offset.h) \
+    $(wildcard include/config/xip/phys/addr.h) \
+    $(wildcard include/config/debug/virtual.h) \
+  include/linux/sizes.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/linux/pfn.h \
+  include/asm-generic/getorder.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  arch/arm/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+  include/linux/rwlock_types.h \
+  arch/arm/include/asm/spinlock.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) \
+    $(wildcard include/config/generic/lockbreak.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/time32.h \
+  include/linux/uidgid.h \
+    $(wildcard include/config/multiuser.h) \
+    $(wildcard include/config/user/ns.h) \
+  include/linux/highuid.h \
+  include/linux/kmod.h \
+  include/linux/umh.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/zone/device.h) \
+    $(wildcard include/config/numa.h) \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/memory/isolation.h) \
+    $(wildcard include/config/compaction.h) \
+    $(wildcard include/config/cma.h) \
+  include/linux/mmdebug.h \
+    $(wildcard include/config/debug/vm.h) \
+    $(wildcard include/config/debug/vm/pgflags.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/zsmalloc.h) \
+    $(wildcard include/config/memcg.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/page/extension.h) \
+    $(wildcard include/config/no/bootmem.h) \
+    $(wildcard include/config/deferred/struct/page/init.h) \
+    $(wildcard include/config/transparent/hugepage.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/have/memoryless/nodes.h) \
+    $(wildcard include/config/have/memblock/node/map.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/memory/hotremove.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  arch/arm/include/generated/asm/current.h \
+  include/asm-generic/current.h \
+  include/uapi/linux/wait.h \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+    $(wildcard include/config/fortify/source.h) \
+  include/uapi/linux/string.h \
+  arch/arm/include/asm/string.h \
+    $(wildcard include/config/bcm2835/fast/memcpy.h) \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/page-flags-layout.h \
+    $(wildcard include/config/numa/balancing.h) \
+  include/generated/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/arch/has/add/pages.h) \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/have/bootmem/info/node.h) \
+  include/linux/notifier.h \
+    $(wildcard include/config/tree/srcu.h) \
+  include/linux/errno.h \
+  include/uapi/linux/errno.h \
+  arch/arm/include/generated/uapi/asm/errno.h \
+  include/uapi/asm-generic/errno.h \
+  include/uapi/asm-generic/errno-base.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/mutex/spin/on/owner.h) \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/osq_lock.h \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/spin/on/owner.h) \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  include/linux/err.h \
+  arch/arm/include/generated/asm/rwsem.h \
+  include/asm-generic/rwsem.h \
+  include/linux/srcu.h \
+    $(wildcard include/config/tiny/srcu.h) \
+    $(wildcard include/config/srcu.h) \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/preempt/rcu.h) \
+    $(wildcard include/config/rcu/stall/common.h) \
+    $(wildcard include/config/no/hz/full.h) \
+    $(wildcard include/config/rcu/nocb/cpu.h) \
+    $(wildcard include/config/tasks/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+    $(wildcard include/config/tiny/rcu.h) \
+    $(wildcard include/config/debug/objects/rcu/head.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/prove/rcu.h) \
+    $(wildcard include/config/rcu/boost.h) \
+    $(wildcard include/config/arch/weak/release/acquire.h) \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+  include/linux/rcutree.h \
+  include/linux/workqueue.h \
+    $(wildcard include/config/debug/objects/work.h) \
+    $(wildcard include/config/freezer.h) \
+    $(wildcard include/config/wq/watchdog.h) \
+  include/linux/timer.h \
+    $(wildcard include/config/debug/objects/timers.h) \
+    $(wildcard include/config/no/hz/common.h) \
+  include/linux/ktime.h \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+  include/uapi/linux/timex.h \
+  include/uapi/linux/param.h \
+  arch/arm/include/generated/uapi/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/uapi/asm-generic/param.h \
+  arch/arm/include/asm/timex.h \
+  include/generated/timeconst.h \
+  include/linux/timekeeping.h \
+  include/linux/timekeeping32.h \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  include/linux/rcu_segcblist.h \
+  include/linux/srcutree.h \
+  include/linux/rcu_node_tree.h \
+    $(wildcard include/config/rcu/fanout.h) \
+    $(wildcard include/config/rcu/fanout/leaf.h) \
+  include/linux/completion.h \
+  include/linux/topology.h \
+    $(wildcard include/config/use/percpu/numa/node/id.h) \
+    $(wildcard include/config/sched/smt.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/up/late/init.h) \
+  include/linux/llist.h \
+    $(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \
+  arch/arm/include/asm/smp.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) \
+  arch/arm/include/asm/percpu.h \
+  include/asm-generic/percpu.h \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+    $(wildcard include/config/virtualization.h) \
+    $(wildcard include/config/amd/mem/encrypt.h) \
+  arch/arm/include/asm/topology.h \
+    $(wildcard include/config/arm/cpu/topology.h) \
+  include/linux/arch_topology.h \
+  include/asm-generic/topology.h \
+  include/linux/sysctl.h \
+    $(wildcard include/config/sysctl.h) \
+  include/linux/rbtree.h \
+  include/uapi/linux/sysctl.h \
+  include/linux/elf.h \
+  arch/arm/include/asm/elf.h \
+    $(wildcard include/config/vdso.h) \
+  arch/arm/include/asm/auxvec.h \
+  arch/arm/include/uapi/asm/auxvec.h \
+  arch/arm/include/asm/vdso_datapage.h \
+  arch/arm/include/asm/user.h \
+  include/uapi/linux/elf.h \
+  include/uapi/linux/elf-em.h \
+  include/linux/kobject.h \
+    $(wildcard include/config/uevent/helper.h) \
+    $(wildcard include/config/debug/kobject/release.h) \
+  include/linux/sysfs.h \
+  include/linux/kernfs.h \
+    $(wildcard include/config/kernfs.h) \
+  include/linux/idr.h \
+  include/linux/radix-tree.h \
+    $(wildcard include/config/radix/tree/multiorder.h) \
+  include/linux/kobject_ns.h \
+  include/linux/kref.h \
+  include/linux/refcount.h \
+    $(wildcard include/config/refcount/full.h) \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/jump_label.h \
+  arch/arm/include/asm/jump_label.h \
+  include/linux/rbtree_latch.h \
+  include/linux/error-injection.h \
+  include/asm-generic/error-injection.h \
+  include/linux/tracepoint-defs.h \
+  include/linux/static_key.h \
+  arch/arm/include/asm/module.h \
+    $(wildcard include/config/arm/unwind.h) \
+    $(wildcard include/config/arm/module/plts.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/fs.h \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/cgroup/writeback.h) \
+    $(wildcard include/config/ima.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/fs/encryption.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fs/dax.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/mandatory/file/locking.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/wait_bit.h \
+  include/linux/kdev_t.h \
+  include/uapi/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/rculist.h \
+  include/linux/rculist_bl.h \
+  include/linux/list_bl.h \
+  include/linux/bit_spinlock.h \
+  include/linux/lockref.h \
+    $(wildcard include/config/arch/use/cmpxchg/lockref.h) \
+  include/linux/stringhash.h \
+    $(wildcard include/config/dcache/word/access.h) \
+  include/linux/hash.h \
+    $(wildcard include/config/have/arch/hash.h) \
+  include/linux/path.h \
+  include/linux/list_lru.h \
+    $(wildcard include/config/memcg/kmem.h) \
+  include/linux/shrinker.h \
+  include/linux/xarray.h \
+  include/linux/pid.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/have/aligned/struct/page.h) \
+    $(wildcard include/config/userfaultfd.h) \
+    $(wildcard include/config/have/arch/compat/mmap/bases.h) \
+    $(wildcard include/config/membarrier.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+    $(wildcard include/config/arch/want/batched/unmap/tlb/flush.h) \
+    $(wildcard include/config/hmm.h) \
+  include/linux/mm_types_task.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/arch/enable/split/pmd/ptlock.h) \
+  include/linux/auxvec.h \
+  include/uapi/linux/auxvec.h \
+  include/linux/uprobes.h \
+    $(wildcard include/config/uprobes.h) \
+  arch/arm/include/asm/mmu.h \
+    $(wildcard include/config/cpu/has/asid.h) \
+  include/linux/capability.h \
+  include/uapi/linux/capability.h \
+  include/linux/semaphore.h \
+  include/linux/fcntl.h \
+  include/uapi/linux/fcntl.h \
+  arch/arm/include/uapi/asm/fcntl.h \
+  include/uapi/asm-generic/fcntl.h \
+  include/uapi/linux/fiemap.h \
+  include/linux/migrate_mode.h \
+  include/linux/percpu-rwsem.h \
+  include/linux/rcuwait.h \
+  include/linux/rcu_sync.h \
+  include/linux/delayed_call.h \
+  include/linux/uuid.h \
+  include/uapi/linux/uuid.h \
+  include/linux/errseq.h \
+  include/linux/ioprio.h \
+  include/linux/sched.h \
+    $(wildcard include/config/virt/cpu/accounting/native.h) \
+    $(wildcard include/config/sched/info.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/cgroup/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/compat/brk.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/blk/cgroup.h) \
+    $(wildcard include/config/stackprotector.h) \
+    $(wildcard include/config/arch/has/scaled/cputime.h) \
+    $(wildcard include/config/virt/cpu/accounting/gen.h) \
+    $(wildcard include/config/posix/timers.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/ubsan.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/intel/rdt.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/compat.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/rseq.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/kcov.h) \
+    $(wildcard include/config/bcache.h) \
+    $(wildcard include/config/vmap/stack.h) \
+    $(wildcard include/config/arch/task/struct/on/stack.h) \
+    $(wildcard include/config/debug/rseq.h) \
+  include/uapi/linux/sched.h \
+  include/linux/sem.h \
+  include/uapi/linux/sem.h \
+  include/linux/ipc.h \
+  include/linux/rhashtable-types.h \
+  include/uapi/linux/ipc.h \
+  arch/arm/include/generated/uapi/asm/ipcbuf.h \
+  include/uapi/asm-generic/ipcbuf.h \
+  arch/arm/include/generated/uapi/asm/sembuf.h \
+  include/uapi/asm-generic/sembuf.h \
+  include/linux/shm.h \
+  include/uapi/linux/shm.h \
+  include/uapi/asm-generic/hugetlb_encode.h \
+  arch/arm/include/generated/uapi/asm/shmbuf.h \
+  include/uapi/asm-generic/shmbuf.h \
+  arch/arm/include/asm/shmparam.h \
+  include/linux/kcov.h \
+  include/uapi/linux/kcov.h \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+    $(wildcard include/config/time/low/res.h) \
+    $(wildcard include/config/timerfd.h) \
+  include/linux/timerqueue.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+    $(wildcard include/config/have/arch/seccomp/filter.h) \
+    $(wildcard include/config/seccomp/filter.h) \
+    $(wildcard include/config/checkpoint/restore.h) \
+  include/uapi/linux/seccomp.h \
+  arch/arm/include/generated/asm/seccomp.h \
+  include/asm-generic/seccomp.h \
+  include/uapi/linux/unistd.h \
+  arch/arm/include/asm/unistd.h \
+    $(wildcard include/config/oabi/compat.h) \
+  arch/arm/include/uapi/asm/unistd.h \
+  arch/arm/include/generated/uapi/asm/unistd-eabi.h \
+  arch/arm/include/generated/uapi/asm/unistd-common.h \
+  arch/arm/include/generated/asm/unistd-nr.h \
+  include/linux/resource.h \
+  include/uapi/linux/resource.h \
+  arch/arm/include/generated/uapi/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/uapi/asm-generic/resource.h \
+  include/linux/latencytop.h \
+  include/linux/sched/prio.h \
+  include/linux/signal_types.h \
+    $(wildcard include/config/old/sigaction.h) \
+  include/uapi/linux/signal.h \
+  arch/arm/include/asm/signal.h \
+  arch/arm/include/uapi/asm/signal.h \
+  include/uapi/asm-generic/signal-defs.h \
+  arch/arm/include/uapi/asm/sigcontext.h \
+  arch/arm/include/generated/uapi/asm/siginfo.h \
+  include/uapi/asm-generic/siginfo.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/uapi/linux/rseq.h \
+  include/linux/sched/rt.h \
+  include/linux/iocontext.h \
+  include/uapi/linux/fs.h \
+  include/uapi/linux/limits.h \
+  include/uapi/linux/ioctl.h \
+  arch/arm/include/generated/uapi/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  include/uapi/asm-generic/ioctl.h \
+  include/linux/quota.h \
+    $(wildcard include/config/quota/netlink/interface.h) \
+  include/linux/percpu_counter.h \
+  include/uapi/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/projid.h \
+  include/uapi/linux/quota.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/uaccess.h \
+  arch/arm/include/asm/uaccess.h \
+    $(wildcard include/config/cpu/sw/domain/pan.h) \
+    $(wildcard include/config/cpu/use/domains.h) \
+    $(wildcard include/config/uaccess/with/memcpy.h) \
+  arch/arm/include/asm/domain.h \
+    $(wildcard include/config/io/36.h) \
+    $(wildcard include/config/cpu/cp15/mmu.h) \
+  arch/arm/include/generated/asm/extable.h \
+  include/asm-generic/extable.h \
+  include/linux/slab.h \
+    $(wildcard include/config/debug/slab.h) \
+    $(wildcard include/config/failslab.h) \
+    $(wildcard include/config/have/hardened/usercopy/allocator.h) \
+    $(wildcard include/config/slab.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+  include/linux/overflow.h \
+  include/linux/kasan.h \
+  include/linux/delay.h \
+  arch/arm/include/asm/delay.h \
+  arch/arm/include/asm/mach/map.h \
+    $(wildcard include/config/debug/ll.h) \
+  arch/arm/include/asm/io.h \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/need/mach/io/h.h) \
+    $(wildcard include/config/pcmcia/soc/common.h) \
+    $(wildcard include/config/isa.h) \
+    $(wildcard include/config/pccard.h) \
+  include/asm-generic/pci_iomap.h \
+    $(wildcard include/config/no/generic/pci/ioport/map.h) \
+    $(wildcard include/config/generic/pci/iomap.h) \
+  include/xen/xen.h \
+    $(wildcard include/config/xen.h) \
+    $(wildcard include/config/xen/pvh.h) \
+    $(wildcard include/config/xen/dom0.h) \
+  include/asm-generic/io.h \
+    $(wildcard include/config/generic/iomap.h) \
+    $(wildcard include/config/has/ioport/map.h) \
+    $(wildcard include/config/virt/to/bus.h) \
+  include/linux/logic_pio.h \
+    $(wildcard include/config/indirect/pio.h) \
+  include/linux/fwnode.h \
+  include/linux/vmalloc.h \
+
+/home/pi/Desktop/project/smoke/smoke_dev.o: $(deps_/home/pi/Desktop/project/smoke/smoke_dev.o)
+
+$(deps_/home/pi/Desktop/project/smoke/smoke_dev.o):
diff --git a/smoke/.tmp_versions/smoke_dev.mod b/smoke/.tmp_versions/smoke_dev.mod
new file mode 100644
index 0000000..2c47ad4
--- /dev/null
+++ b/smoke/.tmp_versions/smoke_dev.mod
@@ -0,0 +1,3 @@
+/home/pi/Desktop/project/smoke/smoke_dev.ko
+/home/pi/Desktop/project/smoke/smoke_dev.o
+
diff --git a/smoke/Makefile b/smoke/Makefile
new file mode 100644
index 0000000..3a223ae
--- /dev/null
+++ b/smoke/Makefile
@@ -0,0 +1,11 @@
+KERNEL_DIR = /lib/modules/4.19.97-v7+/build
+
+obj-m := smoke_dev.o
+
+PWD := $(shell pwd)
+
+all:
+	make -C $(KERNEL_DIR) M=$(PWD) modules
+
+clean:
+	make -C $(KERNEL_DIR) M=$(PWD) clean
diff --git a/smoke/Module.symvers b/smoke/Module.symvers
new file mode 100644
index 0000000..e69de29
diff --git a/smoke/modules.order b/smoke/modules.order
new file mode 100644
index 0000000..7118203
--- /dev/null
+++ b/smoke/modules.order
@@ -0,0 +1 @@
+kernel//home/pi/Desktop/project/smoke/smoke_dev.ko
diff --git a/smoke/smoke_dev.c b/smoke/smoke_dev.c
new file mode 100644
index 0000000..6437f39
--- /dev/null
+++ b/smoke/smoke_dev.c
@@ -0,0 +1,141 @@
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/fs.h>
+#include <linux/uaccess.h>
+#include <linux/slab.h>
+#include <linux/delay.h>
+
+#include <asm/mach/map.h>
+#include <asm/uaccess.h>
+
+#define SMOKE_MAJOR_NUMBER      500
+#define SMOKE_DEV_NAME         "/dev/smoke_dev"
+
+#define GPIO_BASE_ADDR      0x3F200000
+#define SPI_BASE_ADDR      0x3F204000
+
+#define GPFSEL0      0x00
+#define GPFSEL1      0x04
+#define SPI_CS      0x00
+#define SPI_FIFO   0x04
+
+static void __iomem *gpio_base;
+static void __iomem *spi_base;
+
+volatile unsigned int *gpfsel0, *gpfsel1;
+volatile unsigned int *spi_cs, *spi_fifo;
+
+int smoke_open(struct inode *inode, struct file *filp){
+   printk(KERN_ALERT "smoke detection sensor driver open!!\n");
+   
+   gpio_base = ioremap(GPIO_BASE_ADDR, 0xFF);
+   spi_base = ioremap(SPI_BASE_ADDR, 0xFF);
+   
+   gpfsel0 = (volatile unsigned int*)(gpio_base + GPFSEL0);
+   gpfsel1 = (volatile unsigned int*)(gpio_base + GPFSEL1);
+   spi_cs = (volatile unsigned int*)(spi_base + SPI_CS);
+   spi_fifo = (volatile unsigned int*)(spi_base + SPI_FIFO);
+ 
+   *gpfsel0 &= ~(0x1FF << 21);
+   *gpfsel0 |= (0x24 << 24);
+   *gpfsel1 &= ~(0x3F);   // 111111 = 0x3F
+   *gpfsel1 |= (0x24);      // 100100 = 0x24
+   
+   *spi_cs &= ~(0xFFFF);      // cs clear
+   
+   *spi_cs &= ~(0x01<<2);
+   *spi_cs &= ~(0x01<<3);      // spi(0,0)
+   *spi_cs |= (0x03<<4);      // clear FIFO
+ 
+   return 0;
+}
+   
+int smoke_release(struct inode *inode, struct file *filp){
+   printk(KERN_ALERT "smoke detection sensor driver closed!!\n");
+
+   *gpfsel0 &= ~(0x1FF << 21);
+   *gpfsel1 &= ~(0x3F);      // 111111 = 0x3F
+   *spi_cs &= ~(0xFFFF);      // cs clear
+   
+   iounmap((void*)gpio_base);
+   iounmap((void*)spi_base);
+   return 0;
+}
+
+ssize_t smoke_read(struct file* flip, char* buf, size_t count, loff_t* f_pos){
+   printk(KERN_ALERT "read function called!!\n");
+   unsigned char spi_tData[3];
+   unsigned char spi_rData[3];
+   int tCount = 0; 
+   int rCount = 0;
+   
+   spi_tData[0] = 1;
+   spi_tData[1] = (0x08) << 4;
+   spi_tData[2] = 0;      // start single d2 d1 d0
+   
+   *spi_cs |= (0x03<<4);   // clear FIFO
+   
+   *spi_cs |= (0x01<<7);      // TA = 1
+   
+   while((tCount < 3) || (rCount < 3)){
+      while((*spi_cs & (1<<18)) && (tCount < 3)){
+         *spi_fifo = spi_tData[tCount];
+         tCount++;
+      }
+      while((*spi_cs & (1<<17)) && (rCount < 3)){
+         spi_rData[rCount] = *spi_fifo;
+         rCount++;
+      }   
+   }   
+   
+   while((!(*spi_cs)) & (1<<16));
+   
+   *spi_cs |= (0x03<<4);   // clear FIFO
+   *spi_cs &= ~(1<<7);      // TA = 0
+   
+   int data = ((spi_rData[1]&0x03)<<8) + spi_rData[2];
+   
+   printk(KERN_ALERT "reading input : %d \n", data);
+   
+   copy_to_user(buf, &data, sizeof(int));
+   
+   return count;
+}
+
+static struct file_operations smoke_fops = {
+   .owner = THIS_MODULE,
+   .open = smoke_open,
+   .release = smoke_release,
+   .read = smoke_read
+};
+
+int __init smoke_init(void){
+   if(register_chrdev(SMOKE_MAJOR_NUMBER, SMOKE_DEV_NAME, &smoke_fops) < 0)
+      printk(KERN_ALERT "smoke detection sensor initialization failed!!\n");
+   else
+      printk(KERN_ALERT "smoke detection sensor initialization success!!!\n");
+   return 0;
+}
+
+void __exit smoke_exit(void){
+   unregister_chrdev(SMOKE_MAJOR_NUMBER, SMOKE_DEV_NAME);
+   printk(KERN_ALERT "smoke detection sensor driver exit done!!!!");
+}
+
+module_init(smoke_init);
+module_exit(smoke_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("joreka");
+MODULE_DESCRIPTION("smoke_dev");
+
+   
+   
+   
+   
+   
+   
+   
+   
+   
diff --git a/smoke/smoke_dev.ko b/smoke/smoke_dev.ko
new file mode 100644
index 0000000000000000000000000000000000000000..d3426e3644bf1b70182141c81eda0207f9356a1a
GIT binary patch
literal 7644
zcmb<-^>JflWMqH=Mg|QA1doA1L;@_sY67M-7*rWl7+4q>7(^Ht7?>Ft7~K6r83LF5
zo1=Dr1q;iT5O?11*IYYQvK`qN7$D{_GBEgL=9N}}^)oQ=9$4_u;D+u?mJL3SSRUv;
z{rCU>YX$~}#|#V(j~N^o9)tM*1r|JJU|8^2f!`U-XK-+M3=wO2%E*Z%t}x}P07J`D
z7K4UIA_gG3>Cq2`BM%t_7CdAynDi8628%$;)BmQ2A2XR9e#~Id^przk%2SXWr*Siw
z&jaP#8$je?d=&$TyZ}^Q*<!&%W($zHO;2HBEKof#J_j1#0BVN8in%Ya`rCowG01N)
z|AYJvb{_-8jmYkXxeMk_n4QS(0_kUAm;w#c1&?9&ez*+@Z-EQGh%iU9o55hpQ^tS=
z51A4cJk&7YhM1wi@R&it;W2~3g2y@r-cJP{OnS<6V8KIXQ1~*;duqVY@R)(2@2LR8
zq^H^sydN<tEO@M^;Qh2-;lX2F1@ET}3KO0-C^S80P-u86pfKkt6GPx*k%l=>844C0
zW-M56nSo)_Qw2`(2doSXTq+76{Y?)T1sWf5DFi)bQ0RF2@&Er<3=<|jWnu^hrH8|e
z3=1x=oFVXlfnkOyAH!jBMuTRdZ~y;GF)&Pj_zXmY<DB6!g8(S*9Uf~LL_akUXnf2d
z(DYP5V9rx!lLZeo4@5s@wqbt6pfK?%k3sW;28Bb985A0yg8XCx^*67<f`|3ChaZE&
zn!{l7Qx=7(kC+uM888?uFlJx~e$33kAjQhC;312`g2yHT-j6`xuAw0Pl#KzDKBhcn
zW(a!7z`(!-5?8t4{piDLNc=NE(>(`rJb=<VD4Y#oVeRmkL813)E&qbYj5-S->7OCs
zF#`j`W(Ed^#S9D%n;94!7K6+NrEi`K-j5id=?i8)NFRg1g2x~;7(nJ4I6%#T<TJ3|
z6?0#>%w}xdu%WpPlr@pr9$@kPU~!Nf2>)PUVBle3U?^Z@U;q^fPGB_+C~B~YrKA=o
z7iAWdWaj7D7U$+?r^ctGmN6ujmSp4?*=FSzrDi8G<YXqN<`t*fx(E0$6c;6zr4|)~
zl$*G^S-3honmSv$nz$M}nHU<G85o!wF)*a07Nq8-6x%Z7CFZ6gnOc@wl$)5InQUvK
zXK1NsX|7vluB{O48=#PzpAui1my@5E0%AhVFII32@+~u0C@?CsP+(v*1iMZlCAB0q
z8RS}p;?%t2{33;vqRg_?B8B{d)I3E+E`sWkbMlK*Q$Q*i7#IzUQWH}Y(n|9nCMGB5
z<e<uB=A|oS<`tBdC|D_|rYLYRFzBbGmg$3?0uCtL_GRW}mSiU8WL71DU7MDeiDWj|
z08GE2=_xKvPEIW@Rs^}0kpELFGD{Rv^7B#^6%`d37#IW?7#KJh85mj^A$7s~TB)_U
z`6;D2sqs09mHDM5phQCgKJfc+c6@wkUQud#W^qYsQG9Yn5h$e)YlLL;@$>QV<mzT%
zSjbv@J3hX+Br!QVJ~<;h9u%I$+6_`?9rEi-Vo`2<a(+Q&d`W(MX>n>1NSs*A-ksi$
zY=3%bVo?gQni&`vf-Mic&CD;&%S|jGK^H>lF@XrZ`1r)s#H7sl(!BD_yp;Ilf`a&h
zB1424d@N?inwOdRMXBW4|KWmBO+is+UP(4STX4%g&{(@MK0ZCKG(I;uzcjBTJ}()!
z;$bQS&h?ODW0?AI)LS$O0e5F-D+P_9#NvXa%)~qe3q4~!16?!iqJm6AO$d*Hfe1B@
z1`G@g;39;9QH_Ctfz@2sk%5hi-I0TllZlH-h)IM|lu?{nf>DxDib;-13Avwv&0oxr
z9t2#9nSlw;1~HhyJrEEJf|<cR69^kbGBbdBAs`k6Gc#~N7*LX#feXrlP|OV65C)WF
zX5fXgAQUqLAA|uVnZdOnlmqS$2_iUPzAzde)N4WrF*ArFIAHbSXnash3n9eJAcf$7
z)ytsqWzqO@Xnc7zz5*Iw5hcV~7(V_-^^p_<h!2Wph(=*>KM=%M2KV=b8FU#K7(y5r
z7&xJPI|c@ZSOx|LekebXfq@~1fq}sW$_JSTF$+X8F=T)!21px|k%0+pA5@5efkB)B
zR=XWw0`)J&8EO%d3?TP*BJmj*SQvUx_#zAwQTTFb=5wL(xfy0NFfeGq^@uPmfcg(2
zB*L&1)Fy^-z`bHr``H*)!R0^<35G2U3=AD0CK!t_>||hIm;q*k2oZ*T3=9lsKuj<e
zL30l;8lR5=)jke}!ytX|jD@aW08PIj8ef9p1V}#v149Eiek9Q3<rpqQ<w0Wrj0|!N
zcNsvT48b7&GpM{6SidkRk{Cd2P|jgw5M~f%WMEK%_9Z}k)c8ktuP~bZq72$lzd0~5
zFbFb8F<3(RAZtNwQg0|9G+rUZz`+m(<-_FTpnRBoE+eEZ3-XU3gB(K%R6c=$fkB9Y
zjiG@N((i%EcR=M~=FMbeU;y=vK;s)i3@i-G86kZnkU9{56I4A&4T!%N%7^JcipD>K
z#=ncke~ZTd&&U8S)nM*pM=Byg;UNd*!~CPk1Zl6s)EhzNVeVmoHzM?M^HcPa8B|gj
z;^Ra8JOe{r<2_yC5&bhmBZl~RXp<k>BSTRM>YN!Gq6on{Xodz1@p<_rsqtnE@$vET
zunrlL-N_6pi41x^&ISy6K8}9Q9{xcfma`#9%m_pn!zI9CCLl3W5Mc%)%%Mi5<rfq)
zq!(o7$0sEgr!o{5WI`CoK0@lDg1v<BE2Ni-<_BnJ7378Zl8nq^Xb>=9Hr^p23F<g8
zz*^?XIjM<xr3ElOAonB}Gl05fFroB<wBpnpP_Uu(MIfdXrRJo9eFE-EgSwYcpMv_Q
z46p_`v>}brA3<**V|JJz)*CS3=n6m_0dg-mEYmX6@)@xA+CXVfCJ2(&wACQxxsDnG
z1E|K*R%c)U)jTo*3=E*UL&l$h0hAwg)EO8&7#J8pd{EyKq@Rb8fdQmmfRTX#BrgKu
zYcViLfcRPr3^I%i3?Or2K(reJLkg4z^-DqeLHSVIg@K_5q~3*rVFF0MHUq;H5MP^t
zVFgHi00YAskhnSn!v>JJIs-!j69a>`4g*6569a>e4g<piCWt*(Ky)Aj!y6Fo4e=ky
z9<aakApX+Uhm>(TdXTz9N1uVg0_3k?1_lQP1_o^d1_l=pZ3ywNjsXLM4+8^(jv)g>
z07zW`B)mZ8fXoHy2ZvV##9VDtsJW&L3_4Ktp!}-^%G4l6D5N~rVuzFsAaT&x4Tukl
z7Z4xR5&`i+%C%TQBm)BjOdqK7W?*2@f;FFD;?U+16AQ$A5DjWkfoPEVOi*)}oFVoy
z`9k8A$q!QBGx;zu++bi}VDe;OU}0ilU~*?*V9+bB%q>YwV$drtDT2@$FczqY&`ZxN
z)k`YP%t_JBOkvOi3qi({^@>t+^h#1IO7u$eax$}1b1E6YLZH+M7Kd;_`47r<4D!`W
zttd%M0`t+dK_oL%D$pe%5+Ge@CPO4ZI*=qFf*{pM7K2<0kpQVilE}?Z$;?a3XV5Fk
zPf09E1cia2o(b6D@vx3;PJS{2QW**MBS<k=6*zcuGV`+Y^O95bkjo=Iu%ilcN*MH#
zii;WalJj$OQ}aroLFn!mstYb)81z66ODriV%1kOPNiBw^1fnQu1_lOpP<%pFgYqz_
zZijN=t#LgxbrI0^9lE*=;5GvTywwhC>%r8)s=iVz>V6>AW3X&s1#O3d@*K#F2oVN`
z7YqyxN=R)MQ2JesW?lv}0|ThO1nB``n0dZv<~fKmFo665G7pqhK<Yr|-9$6*1T!Qb
zfXo76kU9_@gJ#|gQAl|RG7n@9NF9g<4T*sK4)fw4W=J^zG6RG`>OeH8T?uM_G=Vq_
z3=9e^ka7ej52IVq>^&h0DW5?0g0eVB9mw8=P=CPewP1m?g`md6<98QCT>;Eq7ZynV
z2ZaepEyz3&y$#J?P{R<^!vWa~Y9E5sf$TjGF%RC`^TA;+C@zux8v(T!WCqASka-~b
z37WkUVvukF*$Zlag4BWZ{6(`jfrWu#1;_v>2B`xv*%-miS_UH!2Q&`K%D|upiXbQ-
zqz=TDgsOvw9~-2t2~`FUKTw+(ROG_aseu@z9s#)z)I$WB2Xdbpnt2{<3=E)t5W0D$
zP<5dBIglI&C!{?OVuLWqJP>Wj2<fN6><vJ&7Zfibbs&4~(abx*$-n?=e}l{bVVHhv
zH1i6?ApQmU1JrYcnFnfvgTe>oKCn4FknjYV1;QXX5FLqRuOkx!10xP~$<Q`1$UKlf
z79L3ag4iGovKK^WK+OZSIY4}nI#7E9#0FuIy&zl&RR<CSVINTC24X-lNDYYD$OxVT
zg%?vGb;!e|Fm)grmIgrj8h98OCa^LvfcnhN(6R_rFN4wm%nu-S0zwQ7Zb%wI=77XO
UX%<;sgBSzDM3^Kr4TIDH0P3x%b^rhX

literal 0
HcmV?d00001

diff --git a/smoke/smoke_dev.mod.c b/smoke/smoke_dev.mod.c
new file mode 100644
index 0000000..8d4065c
--- /dev/null
+++ b/smoke/smoke_dev.mod.c
@@ -0,0 +1,47 @@
+#include <linux/build-salt.h>
+#include <linux/module.h>
+#include <linux/vermagic.h>
+#include <linux/compiler.h>
+
+BUILD_SALT;
+
+MODULE_INFO(vermagic, VERMAGIC_STRING);
+MODULE_INFO(name, KBUILD_MODNAME);
+
+__visible 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,
+};
+
+#ifdef CONFIG_RETPOLINE
+MODULE_INFO(retpoline, "Y");
+#endif
+
+static const struct modversion_info ____versions[]
+__used
+__attribute__((section("__versions"))) = {
+	{ 0xad1a7def, "module_layout" },
+	{ 0x6bc3fbc0, "__unregister_chrdev" },
+	{ 0xcfc78319, "__register_chrdev" },
+	{ 0xdb7305a1, "__stack_chk_fail" },
+	{ 0xf4fa543b, "arm_copy_to_user" },
+	{ 0x8f678b07, "__stack_chk_guard" },
+	{ 0xedc03953, "iounmap" },
+	{ 0x2e5810c6, "__aeabi_unwind_cpp_pr1" },
+	{ 0xe97c4103, "ioremap" },
+	{ 0x7c32d0f0, "printk" },
+	{ 0xb1ad28e0, "__gnu_mcount_nc" },
+};
+
+static const char __module_depends[]
+__used
+__attribute__((section(".modinfo"))) =
+"depends=";
+
+
+MODULE_INFO(srcversion, "4EF8ECA5C9E4E3B41260072");
diff --git a/smoke/smoke_dev.mod.o b/smoke/smoke_dev.mod.o
new file mode 100644
index 0000000000000000000000000000000000000000..a5bf0ffe1d1a3593573eb5f966b21c8d804ae0ae
GIT binary patch
literal 2908
zcmb<-^>JflWMqH=Mg|QA1doA%g%d2pY67M-82B0Zz$|P;ac+KgYJ5s+88*pLvC$B~
z5(33V$z`cU#hLkewkED_7Ou{Yrp}hGCa%U#CWc041_tIv3=Ao$1*v%{#kLH2iMgq^
zh*VaVT9liZo|$ZGqGxESXKAimX0ELe>>Hqvo1YS2nwOKGm;z!#%`aAP4Du~AS12$l
zvru4QV_<-!b4CURpUk|{3aH!O*GjF;%}*)KNsZ4*tjsShfr=AL9r%4XJ3hWNuP8M=
zv$!O+C_Xu(h?E>5*?jzbd_1|j85kC_7T=DKFD^+;&W=yc$c|4-%*-Ly?I3m5A-}#P
z7Ujk#=NDAQm*mHn7N-`0#EHf1-Rb?v_NSL77NroYnSp^J*z&;J%>2^4+{6MBbRm=;
z6Nu1@k55cZOv;Qe%`4B$ONmb|D2Oj8GDN7s$6|J@d6}7CluEAsA1)Zx6clCVm1N_y
z1-IM-jkO!&<J0p><8zbqOY=(N^OA8Z#wO$L>};i=5tLY5kd&F2r(mIHtY@HWrd?E!
zX{ZU|F*q79Fff3Fh=Ea!fq{Y5T-T9-jf>rpgOQVoi%Ez{gi(}HoLPcVl2M9Dj!6l*
zK7d(?EXKm{@jpx)L^DHj7KjPP%nVFm8b&ZPFvFN&nwf!xK@iM>5iBqUm}X{RLz8D?
z5CO|DFerobF&l#}0|SE!0|Nu7x?*HtW3Xdj0E_WM<pUWQ7;K;zBoEaNrkEMn(adLO
z$N<YQFi3#)vqO0hikX1}O+5z#EVUkB0+lNq5QR{ZnSl$+f>6w0S3=kzl9_><p%%no
zU|?`yVqg$tU}5Nn@<EgU0|Uc!5Ce)qd<J+isF$0cqL<8|lEM%lAL{2B80s4D=@O49
zR}GCA;^U!38nh%uQ3)zk4GmF*U<Iq80YiLVeo1P)8AE)0d_1fmWr&Y2$;d2*8p@EF
zmstX1C+DOl=9Lz}xC{(87#J9s#2FY^m>3wCK!K@OT$x*vn8cu0Tv7y~GhnQe)QS=Y
zy_Cd~L<YU2;$jB9qSPF{^t@8NoXouJ{Ji8;J!ES^{?5!x%V*F7IZ+Q%h$A^tFF8Lq
zH#M&WD(~(WstYa_8T1^3eDxAbN{TX*N=s6Up@B*SB@Ips4B)y0q#V*F0<j<%mM0XU
z>R_oHmpXL@1_n?{A*2qJT|s8U)Hy)Y3B*<g1`r>_)`6yf7(ao7fdQ0Oco-NMKsgG8
zLH2n;-3QB+4NMFSu=)>V4oDq{4rX9r0Hu7Gx*trC`~Z>zVVJsjH1h<Q85ltM0Hg+l
zVd}D=>OlShiC<ua<XI3Kgh74;VNjHSXpk5Pe_;iY2n>^JW?%r7B(SW<08)os%)``y
zXqX>Brf9G+Fic=%VBlq7U=V|b4Je#AA?AUUfbkA?28Lx|7K8wq17d;7Dp*{A_yrsc
M43j|&D2Ay60D2i1rvLx|

literal 0
HcmV?d00001

diff --git a/smoke/smoke_dev.o b/smoke/smoke_dev.o
new file mode 100644
index 0000000000000000000000000000000000000000..766ff1abeb92f954689a61304006859c131ebcb6
GIT binary patch
literal 6688
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

literal 0
HcmV?d00001

-- 
GitLab