diff --git a/.vscode-ctags b/.vscode-ctags
new file mode 100644
index 0000000..9ea3eee
--- /dev/null
+++ b/.vscode-ctags
@@ -0,0 +1,108 @@
+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/
+!_TAG_OUTPUT_FILESEP slash /slash or backslash/
+!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
+!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/
+!_TAG_PROC_CWD /home/pantoja/devtitans/Hands-On-Linux/ //
+!_TAG_PROGRAM_AUTHOR Universal Ctags Team //
+!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
+!_TAG_PROGRAM_URL https://ctags.io/ /official site/
+!_TAG_PROGRAM_VERSION 5.9.0 //
+LDR_value smartlamp-kernel-module/serial.c /^int LDR_value = 0;$/;" v typeref:typename:int
+LDR_value smartlamp-kernel-module/serial_write.c /^int LDR_value = 0;$/;" v typeref:typename:int
+LDR_value smartlamp-kernel-module/smartlamp.c /^int LDR_value = 0;$/;" v typeref:typename:int
+LDR_value smartlamp-kernel-module/sysfs.c /^int LDR_value = 0;$/;" v typeref:typename:int
+MAX_RECV_LINE smartlamp-kernel-module/probe.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE smartlamp-kernel-module/serial.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE smartlamp-kernel-module/serial_write.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE smartlamp-kernel-module/smartlamp.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE smartlamp-kernel-module/sysfs.c /^#define MAX_RECV_LINE /;" d file:
+PRODUCT_ID smartlamp-kernel-module/probe.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID smartlamp-kernel-module/serial.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID smartlamp-kernel-module/serial_write.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID smartlamp-kernel-module/smartlamp.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID smartlamp-kernel-module/sysfs.c /^#define PRODUCT_ID /;" d file:
+PWD smartlamp-kernel-module/Makefile /^PWD := $(CURDIR)$/;" m
+VENDOR_ID smartlamp-kernel-module/probe.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID smartlamp-kernel-module/serial.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID smartlamp-kernel-module/serial_write.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID smartlamp-kernel-module/smartlamp.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID smartlamp-kernel-module/sysfs.c /^#define VENDOR_ID /;" d file:
+all smartlamp-kernel-module/Makefile /^all:$/;" t
+attr_group smartlamp-kernel-module/smartlamp.c /^static struct attribute_group attr_group = { .attrs = attrs };$/;" v typeref:struct:attribute_group file:
+attr_group smartlamp-kernel-module/sysfs.c /^static struct attribute_group attr_group = { .attrs = attrs };$/;" v typeref:struct:attribute_group file:
+attr_show smartlamp-kernel-module/smartlamp.c /^static ssize_t attr_show(struct kobject *sys_obj, struct kobj_attribute *attr, char *buff) {$/;" f typeref:typename:ssize_t file:
+attr_show smartlamp-kernel-module/sysfs.c /^static ssize_t attr_show(struct kobject *sys_obj, struct kobj_attribute *attr, char *buff) {$/;" f typeref:typename:ssize_t file:
+attr_store smartlamp-kernel-module/smartlamp.c /^static ssize_t attr_store(struct kobject *sys_obj, struct kobj_attribute *attr, const char *buff/;" f typeref:typename:ssize_t file:
+attr_store smartlamp-kernel-module/sysfs.c /^static ssize_t attr_store(struct kobject *sys_obj, struct kobj_attribute *attr, const char *buff/;" f typeref:typename:ssize_t file:
+attrs smartlamp-kernel-module/smartlamp.c /^static struct attribute *attrs[] = { &led_attribute.attr, &ldr_attribute.attr, NULL }/;" v typeref:struct:attribute * [] file:
+attrs smartlamp-kernel-module/sysfs.c /^static struct attribute *attrs[] = { &led_attribute.attr, &ldr_attribute.attr, NULL }/;" v typeref:struct:attribute * [] file:
+clean smartlamp-kernel-module/Makefile /^clean:$/;" t
+id_table smartlamp-kernel-module/probe.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table smartlamp-kernel-module/serial.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table smartlamp-kernel-module/serial_write.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table smartlamp-kernel-module/smartlamp.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table smartlamp-kernel-module/sysfs.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+ignore smartlamp-kernel-module/probe.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore smartlamp-kernel-module/serial.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore smartlamp-kernel-module/serial_write.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore smartlamp-kernel-module/smartlamp.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore smartlamp-kernel-module/sysfs.c /^bool ignore = true;$/;" v typeref:typename:bool
+ldr_attribute smartlamp-kernel-module/smartlamp.c /^static struct kobj_attribute ldr_attribute = __ATTR(ldr, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+ldr_attribute smartlamp-kernel-module/sysfs.c /^static struct kobj_attribute ldr_attribute = __ATTR(ldr, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+led_attribute smartlamp-kernel-module/smartlamp.c /^static struct kobj_attribute led_attribute = __ATTR(led, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+led_attribute smartlamp-kernel-module/sysfs.c /^static struct kobj_attribute led_attribute = __ATTR(led, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+recv_line smartlamp-kernel-module/serial.c /^static char recv_line[MAX_RECV_LINE]; \/\/ Armazena dados vindos da USB até recebe/;" v typeref:typename:char[] file:
+recv_line smartlamp-kernel-module/smartlamp.c /^static char recv_line[MAX_RECV_LINE]; \/\/ Armazena dados vindos da USB até recebe/;" v typeref:typename:char[] file:
+smartlamp_device smartlamp-kernel-module/probe.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device smartlamp-kernel-module/serial.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device smartlamp-kernel-module/serial_write.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device smartlamp-kernel-module/smartlamp.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device smartlamp-kernel-module/sysfs.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_driver smartlamp-kernel-module/probe.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver smartlamp-kernel-module/serial.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver smartlamp-kernel-module/serial_write.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver smartlamp-kernel-module/smartlamp.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver smartlamp-kernel-module/sysfs.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+sys_obj smartlamp-kernel-module/smartlamp.c /^static struct kobject *sys_obj; \/\/ Executad/;" v typeref:struct:kobject * file:
+sys_obj smartlamp-kernel-module/sysfs.c /^static struct kobject *sys_obj; \/\/ Executad/;" v typeref:struct:kobject * file:
+usb_disconnect smartlamp-kernel-module/probe.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect smartlamp-kernel-module/serial.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect smartlamp-kernel-module/serial_write.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect smartlamp-kernel-module/smartlamp.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect smartlamp-kernel-module/sysfs.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_in smartlamp-kernel-module/probe.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in smartlamp-kernel-module/serial.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in smartlamp-kernel-module/serial_write.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in smartlamp-kernel-module/smartlamp.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in smartlamp-kernel-module/sysfs.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in_buffer smartlamp-kernel-module/probe.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer smartlamp-kernel-module/serial.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer smartlamp-kernel-module/serial_write.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer smartlamp-kernel-module/smartlamp.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer smartlamp-kernel-module/sysfs.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_max_size smartlamp-kernel-module/probe.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size smartlamp-kernel-module/serial.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size smartlamp-kernel-module/serial_write.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size smartlamp-kernel-module/smartlamp.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size smartlamp-kernel-module/sysfs.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_out smartlamp-kernel-module/probe.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out smartlamp-kernel-module/serial.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out smartlamp-kernel-module/serial_write.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out smartlamp-kernel-module/smartlamp.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out smartlamp-kernel-module/sysfs.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out_buffer smartlamp-kernel-module/probe.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer smartlamp-kernel-module/serial.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer smartlamp-kernel-module/serial_write.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer smartlamp-kernel-module/smartlamp.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer smartlamp-kernel-module/sysfs.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_probe smartlamp-kernel-module/probe.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe smartlamp-kernel-module/serial.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe smartlamp-kernel-module/serial_write.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe smartlamp-kernel-module/smartlamp.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe smartlamp-kernel-module/sysfs.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_read_serial smartlamp-kernel-module/serial.c /^static int usb_read_serial() {$/;" f typeref:typename:int file:
+usb_read_serial smartlamp-kernel-module/sysfs.c /^static int usb_read_serial() {$/;" f typeref:typename:int file:
+usb_send_cmd smartlamp-kernel-module/smartlamp.c /^static int usb_send_cmd(char *cmd, int param) {$/;" f typeref:typename:int file:
+usb_write_serial smartlamp-kernel-module/serial_write.c /^static int usb_write_serial(char *cmd, int param) {$/;" f typeref:typename:int file:
diff --git a/README.md b/README.md
index 36a4b9e..100e227 100644
--- a/README.md
+++ b/README.md
@@ -6,29 +6,34 @@ Bem-vindo ao repositório da Equipe 0X do HandsON de Linux do DevTITANS! Este pr
## Tabela de Conteúdos
-- [Contribuidores](#contribuidores)
-- [Introdução](#introdução)
-- [Recursos](#recursos)
-- [Requisitos](#requisitos)
-- [Configuração de Hardware](#configuração-de-hardware)
-- [Instalação](#instalação)
-- [Uso](#uso)
-- [Contato](#contato)
+- [DevTITANS 05 - HandsOn Linux - Equipe 0X](#devtitans-05---handson-linux---equipe-0x)
+ - [Tabela de Conteúdos](#tabela-de-conteúdos)
+ - [Contribuidores](#contribuidores)
+ - [Introdução](#introdução)
+ - [Recursos](#recursos)
+ - [Requisitos](#requisitos)
+ - [Configuração de Hardware](#configuração-de-hardware)
+ - [Instalação](#instalação)
+ - [Firmware ESP32](#firmware-esp32)
+ - [Driver Linux](#driver-linux)
+ - [Uso](#uso)
+
+ - [Contato](#contato)
+
## Contribuidores
+
+
+
+
+
-
-
-
-
-
-
-- **Nome do(a) Aluno(a) 01:** Desenvolvedor do Firmware e Mantenedor do Projeto
-- **Nome do(a) Aluno(a) 02:** Desenvolvedor do Firmware
-- **Nome do(a) Aluno(a) 03:** Desenvolvedor do Driver Linux
-- **Nome do(a) Aluno(a) 04:** Desenvolvedor do Driver Linux
-- **Nome do(a) Aluno(a) 05:** Desenvolvedor do Firmware e Escritor da Documentação
+- **Mateus Pantoja 01:** Desenvolvedor do Firmware e Mantenedor do Projeto
+- **Lahis Almeida 02:** Desenvolvedor do Firmware
+- **Nelson Villarreal 03:** Desenvolvedor do Driver Linux
+- **Wanderson Lima Ferreira 04:** Desenvolvedor do Driver Linux
+- **Itala Menezes 05:** Desenvolvedor do Firmware e Escritor da Documentação
## Introdução
@@ -141,4 +146,4 @@ Depois que o driver e o firmware estiverem configurados, você poderá interagir
## Contato
-Para perguntas, sugestões ou feedback, entre em contato com o mantenedor do projeto em [maintainer@example.com](mailto:maintainer@example.com).
\ No newline at end of file
+Para perguntas, sugestões ou feedback, entre em contato com o mantenedor do projeto em [maintainer@example.com](mailto:maintainer@example.com).
diff --git a/arduinoinstall.sh b/arduinoinstall.sh
old mode 100644
new mode 100755
index 783e1a4..49ad10d
--- a/arduinoinstall.sh
+++ b/arduinoinstall.sh
@@ -1,7 +1,7 @@
#!/bin/bash
-wget --continue https://downloads.arduino.cc/arduino-1.8.19-linux64.tar.xz
-tar -xf arduino-1.8.19-linux64.tar.xz
-mv arduino-1.8.19 ~/Downloads/
+#wget --continue https://downloads.arduino.cc/arduino-1.8.19-linux64.tar.xz
+#tar -xf arduino-1.8.19-linux64.tar.xz
+#mv arduino-1.8.19 ~/Downloads/
touch ~/.local/share/applications/arduino.desktop
cd ~/.local/share/applications/
cat < arduino.desktop
@@ -13,4 +13,4 @@ Icon=arduino-arduinoide
Terminal=false
Type=Application
Categories=Development;
-EOF
\ No newline at end of file
+EOF
diff --git a/esp32/Prototipo-montado-Espe32.jpeg b/esp32/Prototipo-montado-Espe32.jpeg
new file mode 100644
index 0000000..1358f26
Binary files /dev/null and b/esp32/Prototipo-montado-Espe32.jpeg differ
diff --git a/esp32/pinos.txt b/esp32/pinos.txt
index e69de29..d2f46a2 100644
--- a/esp32/pinos.txt
+++ b/esp32/pinos.txt
@@ -0,0 +1,11 @@
+###---Pinagem do Prototipo Montado---
+
+o pino 1 (à esquerda) do sensor a +3.3V
+
+o pino 2 do sensor ao seu DHTPIN
+
+o pino 3 (à direita) do sensor ao GROUND (se o seu sensor tiver 3 pinos)
+
+o pino 4 (à direita) do sensor ao TERRA e deixe o pino 3 VAZIO (se seu sensor tiver 4 pinos)
+
+resistor de 10K do pino 2 (dados) ao pino 1 (potência) do sensor
diff --git a/smartlamp-kernel-module/.Module.symvers.cmd b/smartlamp-kernel-module/.Module.symvers.cmd
new file mode 100644
index 0000000..7b16c05
--- /dev/null
+++ b/smartlamp-kernel-module/.Module.symvers.cmd
@@ -0,0 +1 @@
+cmd_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/Module.symvers := scripts/mod/modpost -m -a -o /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/Module.symvers -T /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/modules.order -i Module.symvers -e
diff --git a/smartlamp-kernel-module/.modules.order.cmd b/smartlamp-kernel-module/.modules.order.cmd
new file mode 100644
index 0000000..7decdec
--- /dev/null
+++ b/smartlamp-kernel-module/.modules.order.cmd
@@ -0,0 +1 @@
+cmd_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/modules.order := { echo /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o; :; } > /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/modules.order
diff --git a/smartlamp-kernel-module/.smartlamp.ko.cmd b/smartlamp-kernel-module/.smartlamp.ko.cmd
new file mode 100644
index 0000000..c6e0fb6
--- /dev/null
+++ b/smartlamp-kernel-module/.smartlamp.ko.cmd
@@ -0,0 +1 @@
+cmd_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.ko := ld -r -m elf_x86_64 -z noexecstack --build-id=sha1 -T scripts/module.lds -o /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.ko /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o; true
diff --git a/smartlamp-kernel-module/.smartlamp.mod.cmd b/smartlamp-kernel-module/.smartlamp.mod.cmd
new file mode 100644
index 0000000..3cb4d16
--- /dev/null
+++ b/smartlamp-kernel-module/.smartlamp.mod.cmd
@@ -0,0 +1 @@
+cmd_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod := printf '%s\n' smartlamp.o | awk '!x[$$0]++ { print("/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/"$$0) }' > /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod
diff --git a/smartlamp-kernel-module/.smartlamp.mod.o.cmd b/smartlamp-kernel-module/.smartlamp.mod.o.cmd
new file mode 100644
index 0000000..8f39386
--- /dev/null
+++ b/smartlamp-kernel-module/.smartlamp.mod.o.cmd
@@ -0,0 +1,880 @@
+cmd_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o := gcc-12 -Wp,-MMD,/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/.smartlamp.mod.o.d -nostdinc -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -funsigned-char -std=gnu11 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-dangling-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wcast-function-type -Wno-stringop-truncation -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -g -gdwarf-5 -fsanitize=bounds -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"smartlamp.mod"' -DKBUILD_MODNAME='"smartlamp"' -D__KBUILD_MODNAME=kmod_smartlamp -c -o /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.c
+
+source_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o := /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.c
+
+deps_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o := \
+ $(wildcard include/config/MODULE_UNLOAD) \
+ $(wildcard include/config/RETPOLINE) \
+ include/linux/compiler-version.h \
+ $(wildcard include/config/CC_VERSION_TEXT) \
+ include/linux/kconfig.h \
+ $(wildcard include/config/CPU_BIG_ENDIAN) \
+ $(wildcard include/config/BOOGER) \
+ $(wildcard include/config/FOO) \
+ include/linux/compiler_types.h \
+ $(wildcard include/config/DEBUG_INFO_BTF) \
+ $(wildcard include/config/PAHOLE_HAS_BTF_TAG) \
+ $(wildcard include/config/HAVE_ARCH_COMPILER_H) \
+ $(wildcard include/config/CC_HAS_ASM_INLINE) \
+ include/linux/compiler_attributes.h \
+ include/linux/compiler-gcc.h \
+ $(wildcard include/config/ARCH_USE_BUILTIN_BSWAP) \
+ $(wildcard include/config/SHADOW_CALL_STACK) \
+ $(wildcard include/config/KCOV) \
+ include/linux/module.h \
+ $(wildcard include/config/MODULES) \
+ $(wildcard include/config/SYSFS) \
+ $(wildcard include/config/MODULES_TREE_LOOKUP) \
+ $(wildcard include/config/LIVEPATCH) \
+ $(wildcard include/config/STACKTRACE_BUILD_ID) \
+ $(wildcard include/config/ARCH_USES_CFI_TRAPS) \
+ $(wildcard include/config/MODULE_SIG) \
+ $(wildcard include/config/ARCH_WANTS_MODULES_DATA_IN_VMALLOC) \
+ $(wildcard include/config/GENERIC_BUG) \
+ $(wildcard include/config/KALLSYMS) \
+ $(wildcard include/config/SMP) \
+ $(wildcard include/config/TRACEPOINTS) \
+ $(wildcard include/config/TREE_SRCU) \
+ $(wildcard include/config/BPF_EVENTS) \
+ $(wildcard include/config/DEBUG_INFO_BTF_MODULES) \
+ $(wildcard include/config/JUMP_LABEL) \
+ $(wildcard include/config/TRACING) \
+ $(wildcard include/config/EVENT_TRACING) \
+ $(wildcard include/config/FTRACE_MCOUNT_RECORD) \
+ $(wildcard include/config/KPROBES) \
+ $(wildcard include/config/HAVE_STATIC_CALL_INLINE) \
+ $(wildcard include/config/KUNIT) \
+ $(wildcard include/config/PRINTK_INDEX) \
+ $(wildcard include/config/CONSTRUCTORS) \
+ $(wildcard include/config/FUNCTION_ERROR_INJECTION) \
+ include/linux/list.h \
+ $(wildcard include/config/DEBUG_LIST) \
+ include/linux/container_of.h \
+ include/linux/build_bug.h \
+ include/linux/compiler.h \
+ $(wildcard include/config/TRACE_BRANCH_PROFILING) \
+ $(wildcard include/config/PROFILE_ALL_BRANCHES) \
+ $(wildcard include/config/OBJTOOL) \
+ include/linux/compiler_types.h \
+ arch/x86/include/generated/asm/rwonce.h \
+ include/asm-generic/rwonce.h \
+ include/linux/kasan-checks.h \
+ $(wildcard include/config/KASAN_GENERIC) \
+ $(wildcard include/config/KASAN_SW_TAGS) \
+ include/linux/types.h \
+ $(wildcard include/config/HAVE_UID16) \
+ $(wildcard include/config/UID16) \
+ $(wildcard include/config/ARCH_DMA_ADDR_T_64BIT) \
+ $(wildcard include/config/PHYS_ADDR_T_64BIT) \
+ $(wildcard include/config/64BIT) \
+ $(wildcard include/config/ARCH_32BIT_USTAT_F_TINODE) \
+ include/uapi/linux/types.h \
+ arch/x86/include/generated/uapi/asm/types.h \
+ include/uapi/asm-generic/types.h \
+ include/asm-generic/int-ll64.h \
+ include/uapi/asm-generic/int-ll64.h \
+ arch/x86/include/uapi/asm/bitsperlong.h \
+ include/asm-generic/bitsperlong.h \
+ include/uapi/asm-generic/bitsperlong.h \
+ include/uapi/linux/posix_types.h \
+ include/linux/stddef.h \
+ include/uapi/linux/stddef.h \
+ arch/x86/include/asm/posix_types.h \
+ $(wildcard include/config/X86_32) \
+ arch/x86/include/uapi/asm/posix_types_64.h \
+ include/uapi/asm-generic/posix_types.h \
+ include/linux/kcsan-checks.h \
+ $(wildcard include/config/KCSAN) \
+ $(wildcard include/config/KCSAN_WEAK_MEMORY) \
+ $(wildcard include/config/KCSAN_IGNORE_ATOMICS) \
+ include/linux/err.h \
+ arch/x86/include/generated/uapi/asm/errno.h \
+ include/uapi/asm-generic/errno.h \
+ include/uapi/asm-generic/errno-base.h \
+ include/linux/poison.h \
+ $(wildcard include/config/ILLEGAL_POINTER_VALUE) \
+ include/linux/const.h \
+ include/vdso/const.h \
+ include/uapi/linux/const.h \
+ arch/x86/include/asm/barrier.h \
+ arch/x86/include/asm/alternative.h \
+ $(wildcard include/config/CALL_THUNKS) \
+ include/linux/stringify.h \
+ arch/x86/include/asm/asm.h \
+ arch/x86/include/asm/extable_fixup_types.h \
+ arch/x86/include/asm/nops.h \
+ include/asm-generic/barrier.h \
+ include/linux/stat.h \
+ arch/x86/include/uapi/asm/stat.h \
+ include/uapi/linux/stat.h \
+ include/linux/time.h \
+ $(wildcard include/config/POSIX_TIMERS) \
+ include/linux/cache.h \
+ $(wildcard include/config/ARCH_HAS_CACHE_LINE_SIZE) \
+ include/uapi/linux/kernel.h \
+ include/uapi/linux/sysinfo.h \
+ arch/x86/include/asm/cache.h \
+ $(wildcard include/config/X86_L1_CACHE_SHIFT) \
+ $(wildcard include/config/X86_INTERNODE_CACHE_SHIFT) \
+ $(wildcard include/config/X86_VSMP) \
+ include/linux/linkage.h \
+ $(wildcard include/config/FUNCTION_ALIGNMENT) \
+ $(wildcard include/config/ARCH_USE_SYM_ANNOTATIONS) \
+ include/linux/export.h \
+ $(wildcard include/config/MODVERSIONS) \
+ $(wildcard include/config/HAVE_ARCH_PREL32_RELOCATIONS) \
+ $(wildcard include/config/TRIM_UNUSED_KSYMS) \
+ arch/x86/include/asm/linkage.h \
+ $(wildcard include/config/CALL_PADDING) \
+ $(wildcard include/config/RETHUNK) \
+ $(wildcard include/config/SLS) \
+ $(wildcard include/config/FUNCTION_PADDING_BYTES) \
+ arch/x86/include/asm/ibt.h \
+ $(wildcard include/config/X86_KERNEL_IBT) \
+ $(wildcard include/config/X86_64) \
+ include/linux/math64.h \
+ $(wildcard include/config/ARCH_SUPPORTS_INT128) \
+ include/linux/math.h \
+ arch/x86/include/asm/div64.h \
+ include/asm-generic/div64.h \
+ include/vdso/math64.h \
+ include/linux/time64.h \
+ include/vdso/time64.h \
+ include/uapi/linux/time.h \
+ include/uapi/linux/time_types.h \
+ include/linux/time32.h \
+ include/linux/timex.h \
+ include/uapi/linux/timex.h \
+ include/uapi/linux/param.h \
+ arch/x86/include/generated/uapi/asm/param.h \
+ include/asm-generic/param.h \
+ $(wildcard include/config/HZ) \
+ include/uapi/asm-generic/param.h \
+ arch/x86/include/asm/timex.h \
+ $(wildcard include/config/X86_TSC) \
+ arch/x86/include/asm/processor.h \
+ $(wildcard include/config/X86_VMX_FEATURE_NAMES) \
+ $(wildcard include/config/X86_IOPL_IOPERM) \
+ $(wildcard include/config/STACKPROTECTOR) \
+ $(wildcard include/config/VM86) \
+ $(wildcard include/config/PARAVIRT_XXL) \
+ $(wildcard include/config/X86_DEBUGCTLMSR) \
+ $(wildcard include/config/CPU_SUP_AMD) \
+ $(wildcard include/config/XEN) \
+ $(wildcard include/config/X86_SGX) \
+ arch/x86/include/asm/processor-flags.h \
+ $(wildcard include/config/PAGE_TABLE_ISOLATION) \
+ arch/x86/include/uapi/asm/processor-flags.h \
+ include/linux/mem_encrypt.h \
+ $(wildcard include/config/ARCH_HAS_MEM_ENCRYPT) \
+ $(wildcard include/config/AMD_MEM_ENCRYPT) \
+ arch/x86/include/asm/mem_encrypt.h \
+ include/linux/init.h \
+ $(wildcard include/config/STRICT_KERNEL_RWX) \
+ $(wildcard include/config/STRICT_MODULE_RWX) \
+ $(wildcard include/config/LTO_CLANG) \
+ include/linux/cc_platform.h \
+ $(wildcard include/config/ARCH_HAS_CC_PLATFORM) \
+ arch/x86/include/uapi/asm/bootparam.h \
+ include/linux/screen_info.h \
+ include/uapi/linux/screen_info.h \
+ include/linux/apm_bios.h \
+ include/uapi/linux/apm_bios.h \
+ include/uapi/linux/ioctl.h \
+ arch/x86/include/generated/uapi/asm/ioctl.h \
+ include/asm-generic/ioctl.h \
+ include/uapi/asm-generic/ioctl.h \
+ include/linux/edd.h \
+ include/uapi/linux/edd.h \
+ arch/x86/include/asm/ist.h \
+ arch/x86/include/uapi/asm/ist.h \
+ include/video/edid.h \
+ $(wildcard include/config/X86) \
+ include/uapi/video/edid.h \
+ arch/x86/include/asm/math_emu.h \
+ arch/x86/include/asm/ptrace.h \
+ $(wildcard include/config/PARAVIRT) \
+ $(wildcard include/config/IA32_EMULATION) \
+ arch/x86/include/asm/segment.h \
+ $(wildcard include/config/XEN_PV) \
+ arch/x86/include/asm/page_types.h \
+ $(wildcard include/config/PHYSICAL_START) \
+ $(wildcard include/config/PHYSICAL_ALIGN) \
+ $(wildcard include/config/DYNAMIC_PHYSICAL_MASK) \
+ arch/x86/include/asm/page_64_types.h \
+ $(wildcard include/config/KASAN) \
+ $(wildcard include/config/DYNAMIC_MEMORY_LAYOUT) \
+ $(wildcard include/config/X86_5LEVEL) \
+ $(wildcard include/config/RANDOMIZE_BASE) \
+ arch/x86/include/asm/kaslr.h \
+ $(wildcard include/config/RANDOMIZE_MEMORY) \
+ arch/x86/include/uapi/asm/ptrace.h \
+ arch/x86/include/uapi/asm/ptrace-abi.h \
+ arch/x86/include/asm/paravirt_types.h \
+ $(wildcard include/config/PGTABLE_LEVELS) \
+ $(wildcard include/config/ZERO_CALL_USED_REGS) \
+ $(wildcard include/config/PARAVIRT_DEBUG) \
+ arch/x86/include/asm/desc_defs.h \
+ arch/x86/include/asm/pgtable_types.h \
+ $(wildcard include/config/X86_INTEL_MEMORY_PROTECTION_KEYS) \
+ $(wildcard include/config/X86_PAE) \
+ $(wildcard include/config/MEM_SOFT_DIRTY) \
+ $(wildcard include/config/HAVE_ARCH_USERFAULTFD_WP) \
+ $(wildcard include/config/PROC_FS) \
+ arch/x86/include/asm/pgtable_64_types.h \
+ $(wildcard include/config/KMSAN) \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL_FORCE_MAP) \
+ arch/x86/include/asm/sparsemem.h \
+ $(wildcard include/config/SPARSEMEM) \
+ $(wildcard include/config/NUMA_KEEP_MEMINFO) \
+ arch/x86/include/asm/nospec-branch.h \
+ $(wildcard include/config/CALL_THUNKS_DEBUG) \
+ $(wildcard include/config/CALL_DEPTH_TRACKING) \
+ $(wildcard include/config/DEBUG_ENTRY) \
+ $(wildcard include/config/CPU_UNRET_ENTRY) \
+ $(wildcard include/config/CPU_IBPB_ENTRY) \
+ include/linux/static_key.h \
+ include/linux/jump_label.h \
+ $(wildcard include/config/HAVE_ARCH_JUMP_LABEL_RELATIVE) \
+ arch/x86/include/asm/jump_label.h \
+ $(wildcard include/config/HAVE_JUMP_LABEL_HACK) \
+ include/linux/objtool.h \
+ $(wildcard include/config/FRAME_POINTER) \
+ arch/x86/include/asm/cpufeatures.h \
+ arch/x86/include/asm/required-features.h \
+ $(wildcard include/config/X86_MINIMUM_CPU_FAMILY) \
+ $(wildcard include/config/MATH_EMULATION) \
+ $(wildcard include/config/X86_CMPXCHG64) \
+ $(wildcard include/config/X86_CMOV) \
+ $(wildcard include/config/X86_P6_NOP) \
+ $(wildcard include/config/MATOM) \
+ arch/x86/include/asm/disabled-features.h \
+ $(wildcard include/config/X86_UMIP) \
+ $(wildcard include/config/INTEL_IOMMU_SVM) \
+ $(wildcard include/config/INTEL_TDX_GUEST) \
+ arch/x86/include/asm/msr-index.h \
+ include/linux/bits.h \
+ include/vdso/bits.h \
+ arch/x86/include/asm/unwind_hints.h \
+ arch/x86/include/asm/orc_types.h \
+ arch/x86/include/uapi/asm/byteorder.h \
+ include/linux/byteorder/little_endian.h \
+ include/uapi/linux/byteorder/little_endian.h \
+ include/linux/swab.h \
+ include/uapi/linux/swab.h \
+ arch/x86/include/uapi/asm/swab.h \
+ include/linux/byteorder/generic.h \
+ arch/x86/include/asm/percpu.h \
+ $(wildcard include/config/X86_64_SMP) \
+ include/linux/kernel.h \
+ $(wildcard include/config/PREEMPT_VOLUNTARY_BUILD) \
+ $(wildcard include/config/PREEMPT_DYNAMIC) \
+ $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_CALL) \
+ $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_KEY) \
+ $(wildcard include/config/PREEMPT_) \
+ $(wildcard include/config/DEBUG_ATOMIC_SLEEP) \
+ $(wildcard include/config/MMU) \
+ $(wildcard include/config/PROVE_LOCKING) \
+ include/linux/stdarg.h \
+ include/linux/align.h \
+ include/linux/limits.h \
+ include/uapi/linux/limits.h \
+ include/vdso/limits.h \
+ include/linux/bitops.h \
+ include/linux/typecheck.h \
+ include/asm-generic/bitops/generic-non-atomic.h \
+ arch/x86/include/asm/bitops.h \
+ arch/x86/include/asm/rmwcc.h \
+ include/asm-generic/bitops/sched.h \
+ arch/x86/include/asm/arch_hweight.h \
+ include/asm-generic/bitops/const_hweight.h \
+ include/asm-generic/bitops/instrumented-atomic.h \
+ include/linux/instrumented.h \
+ include/linux/kmsan-checks.h \
+ include/asm-generic/bitops/instrumented-non-atomic.h \
+ $(wildcard include/config/KCSAN_ASSUME_PLAIN_WRITES_ATOMIC) \
+ include/asm-generic/bitops/instrumented-lock.h \
+ include/asm-generic/bitops/le.h \
+ include/asm-generic/bitops/ext2-atomic-setbit.h \
+ include/linux/kstrtox.h \
+ include/linux/log2.h \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U32) \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U64) \
+ include/linux/minmax.h \
+ include/linux/panic.h \
+ $(wildcard include/config/PANIC_TIMEOUT) \
+ include/linux/printk.h \
+ $(wildcard include/config/MESSAGE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_QUIET) \
+ $(wildcard include/config/EARLY_PRINTK) \
+ $(wildcard include/config/PRINTK) \
+ $(wildcard include/config/DYNAMIC_DEBUG) \
+ $(wildcard include/config/DYNAMIC_DEBUG_CORE) \
+ include/linux/kern_levels.h \
+ include/linux/ratelimit_types.h \
+ include/linux/spinlock_types_raw.h \
+ $(wildcard include/config/DEBUG_SPINLOCK) \
+ $(wildcard include/config/DEBUG_LOCK_ALLOC) \
+ arch/x86/include/asm/spinlock_types.h \
+ include/asm-generic/qspinlock_types.h \
+ $(wildcard include/config/NR_CPUS) \
+ include/asm-generic/qrwlock_types.h \
+ include/linux/lockdep_types.h \
+ $(wildcard include/config/PROVE_RAW_LOCK_NESTING) \
+ $(wildcard include/config/LOCKDEP) \
+ $(wildcard include/config/LOCK_STAT) \
+ include/linux/once_lite.h \
+ include/linux/dynamic_debug.h \
+ include/linux/static_call_types.h \
+ $(wildcard include/config/HAVE_STATIC_CALL) \
+ include/linux/instruction_pointer.h \
+ include/asm-generic/percpu.h \
+ $(wildcard include/config/DEBUG_PREEMPT) \
+ $(wildcard include/config/HAVE_SETUP_PER_CPU_AREA) \
+ include/linux/threads.h \
+ $(wildcard include/config/BASE_SMALL) \
+ include/linux/percpu-defs.h \
+ $(wildcard include/config/DEBUG_FORCE_WEAK_PER_CPU) \
+ arch/x86/include/asm/current.h \
+ arch/x86/include/asm/asm-offsets.h \
+ include/generated/asm-offsets.h \
+ arch/x86/include/asm/GEN-for-each-reg.h \
+ arch/x86/include/asm/proto.h \
+ arch/x86/include/uapi/asm/ldt.h \
+ arch/x86/include/uapi/asm/sigcontext.h \
+ arch/x86/include/asm/cpuid.h \
+ arch/x86/include/asm/string.h \
+ arch/x86/include/asm/string_64.h \
+ $(wildcard include/config/ARCH_HAS_UACCESS_FLUSHCACHE) \
+ arch/x86/include/asm/paravirt.h \
+ $(wildcard include/config/PARAVIRT_SPINLOCKS) \
+ include/linux/bug.h \
+ $(wildcard include/config/BUG_ON_DATA_CORRUPTION) \
+ arch/x86/include/asm/bug.h \
+ $(wildcard include/config/DEBUG_BUGVERBOSE) \
+ include/linux/instrumentation.h \
+ $(wildcard include/config/NOINSTR_VALIDATION) \
+ include/asm-generic/bug.h \
+ $(wildcard include/config/BUG) \
+ $(wildcard include/config/GENERIC_BUG_RELATIVE_POINTERS) \
+ include/linux/cpumask.h \
+ $(wildcard include/config/FORCE_NR_CPUS) \
+ $(wildcard include/config/HOTPLUG_CPU) \
+ $(wildcard include/config/DEBUG_PER_CPU_MAPS) \
+ $(wildcard include/config/CPUMASK_OFFSTACK) \
+ include/linux/bitmap.h \
+ include/linux/find.h \
+ include/linux/string.h \
+ $(wildcard include/config/BINARY_PRINTF) \
+ $(wildcard include/config/FORTIFY_SOURCE) \
+ include/linux/errno.h \
+ include/uapi/linux/errno.h \
+ include/uapi/linux/string.h \
+ include/linux/fortify-string.h \
+ include/linux/atomic.h \
+ arch/x86/include/asm/atomic.h \
+ arch/x86/include/asm/cmpxchg.h \
+ arch/x86/include/asm/cmpxchg_64.h \
+ arch/x86/include/asm/atomic64_64.h \
+ include/linux/atomic/atomic-arch-fallback.h \
+ $(wildcard include/config/GENERIC_ATOMIC64) \
+ include/linux/atomic/atomic-long.h \
+ include/linux/atomic/atomic-instrumented.h \
+ include/linux/gfp_types.h \
+ $(wildcard include/config/KASAN_HW_TAGS) \
+ include/linux/numa.h \
+ $(wildcard include/config/NODES_SHIFT) \
+ $(wildcard include/config/NUMA) \
+ $(wildcard include/config/HAVE_ARCH_NODE_DEV_GROUP) \
+ arch/x86/include/asm/frame.h \
+ arch/x86/include/asm/page.h \
+ arch/x86/include/asm/page_64.h \
+ $(wildcard include/config/DEBUG_VIRTUAL) \
+ $(wildcard include/config/FLATMEM) \
+ $(wildcard include/config/X86_VSYSCALL_EMULATION) \
+ include/linux/range.h \
+ include/asm-generic/memory_model.h \
+ $(wildcard include/config/SPARSEMEM_VMEMMAP) \
+ include/linux/pfn.h \
+ include/asm-generic/getorder.h \
+ arch/x86/include/asm/msr.h \
+ arch/x86/include/asm/msr-index.h \
+ arch/x86/include/asm/cpumask.h \
+ arch/x86/include/uapi/asm/msr.h \
+ arch/x86/include/asm/shared/msr.h \
+ include/linux/tracepoint-defs.h \
+ arch/x86/include/asm/special_insns.h \
+ include/linux/irqflags.h \
+ $(wildcard include/config/TRACE_IRQFLAGS) \
+ $(wildcard include/config/PREEMPT_RT) \
+ $(wildcard include/config/IRQSOFF_TRACER) \
+ $(wildcard include/config/PREEMPT_TRACER) \
+ $(wildcard include/config/DEBUG_IRQFLAGS) \
+ $(wildcard include/config/TRACE_IRQFLAGS_SUPPORT) \
+ arch/x86/include/asm/irqflags.h \
+ arch/x86/include/asm/fpu/types.h \
+ arch/x86/include/asm/vmxfeatures.h \
+ arch/x86/include/asm/vdso/processor.h \
+ include/linux/personality.h \
+ include/uapi/linux/personality.h \
+ arch/x86/include/asm/tsc.h \
+ arch/x86/include/asm/cpufeature.h \
+ $(wildcard include/config/X86_FEATURE_NAMES) \
+ include/vdso/time32.h \
+ include/vdso/time.h \
+ include/linux/uidgid.h \
+ $(wildcard include/config/MULTIUSER) \
+ $(wildcard include/config/USER_NS) \
+ include/linux/highuid.h \
+ include/linux/buildid.h \
+ $(wildcard include/config/CRASH_CORE) \
+ include/linux/mm_types.h \
+ $(wildcard include/config/HAVE_ALIGNED_STRUCT_PAGE) \
+ $(wildcard include/config/MEMCG) \
+ $(wildcard include/config/USERFAULTFD) \
+ $(wildcard include/config/ANON_VMA_NAME) \
+ $(wildcard include/config/SWAP) \
+ $(wildcard include/config/HAVE_ARCH_COMPAT_MMAP_BASES) \
+ $(wildcard include/config/MEMBARRIER) \
+ $(wildcard include/config/AIO) \
+ $(wildcard include/config/MMU_NOTIFIER) \
+ $(wildcard include/config/TRANSPARENT_HUGEPAGE) \
+ $(wildcard include/config/NUMA_BALANCING) \
+ $(wildcard include/config/ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) \
+ $(wildcard include/config/HUGETLB_PAGE) \
+ $(wildcard include/config/IOMMU_SVA) \
+ $(wildcard include/config/KSM) \
+ $(wildcard include/config/LRU_GEN) \
+ include/linux/mm_types_task.h \
+ $(wildcard include/config/SPLIT_PTLOCK_CPUS) \
+ $(wildcard include/config/ARCH_ENABLE_SPLIT_PMD_PTLOCK) \
+ arch/x86/include/asm/tlbbatch.h \
+ include/linux/auxvec.h \
+ include/uapi/linux/auxvec.h \
+ arch/x86/include/uapi/asm/auxvec.h \
+ include/linux/kref.h \
+ include/linux/spinlock.h \
+ $(wildcard include/config/PREEMPTION) \
+ include/linux/preempt.h \
+ $(wildcard include/config/PREEMPT_COUNT) \
+ $(wildcard include/config/TRACE_PREEMPT_TOGGLE) \
+ $(wildcard include/config/PREEMPT_NOTIFIERS) \
+ arch/x86/include/asm/preempt.h \
+ include/linux/thread_info.h \
+ $(wildcard include/config/THREAD_INFO_IN_TASK) \
+ $(wildcard include/config/GENERIC_ENTRY) \
+ $(wildcard include/config/HAVE_ARCH_WITHIN_STACK_FRAMES) \
+ $(wildcard include/config/HARDENED_USERCOPY) \
+ include/linux/restart_block.h \
+ arch/x86/include/asm/thread_info.h \
+ $(wildcard include/config/COMPAT) \
+ include/linux/bottom_half.h \
+ include/linux/lockdep.h \
+ $(wildcard include/config/DEBUG_LOCKING_API_SELFTESTS) \
+ include/linux/smp.h \
+ $(wildcard include/config/UP_LATE_INIT) \
+ include/linux/smp_types.h \
+ include/linux/llist.h \
+ $(wildcard include/config/ARCH_HAVE_NMI_SAFE_CMPXCHG) \
+ arch/x86/include/asm/smp.h \
+ $(wildcard include/config/X86_LOCAL_APIC) \
+ $(wildcard include/config/DEBUG_NMI_SELFTEST) \
+ arch/x86/include/generated/asm/mmiowb.h \
+ include/asm-generic/mmiowb.h \
+ $(wildcard include/config/MMIOWB) \
+ include/linux/spinlock_types.h \
+ include/linux/rwlock_types.h \
+ arch/x86/include/asm/spinlock.h \
+ arch/x86/include/asm/qspinlock.h \
+ include/asm-generic/qspinlock.h \
+ arch/x86/include/asm/qrwlock.h \
+ include/asm-generic/qrwlock.h \
+ include/linux/rwlock.h \
+ $(wildcard include/config/PREEMPT) \
+ include/linux/spinlock_api_smp.h \
+ $(wildcard include/config/INLINE_SPIN_LOCK) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK_BH) \
+ $(wildcard include/config/UNINLINE_SPIN_UNLOCK) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/GENERIC_LOCKBREAK) \
+ include/linux/rwlock_api_smp.h \
+ $(wildcard include/config/INLINE_READ_LOCK) \
+ $(wildcard include/config/INLINE_WRITE_LOCK) \
+ $(wildcard include/config/INLINE_READ_LOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_BH) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_READ_TRYLOCK) \
+ $(wildcard include/config/INLINE_WRITE_TRYLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQRESTORE) \
+ include/linux/refcount.h \
+ include/linux/rbtree.h \
+ include/linux/rbtree_types.h \
+ include/linux/rcupdate.h \
+ $(wildcard include/config/PREEMPT_RCU) \
+ $(wildcard include/config/TINY_RCU) \
+ $(wildcard include/config/RCU_STRICT_GRACE_PERIOD) \
+ $(wildcard include/config/RCU_LAZY) \
+ $(wildcard include/config/TASKS_RCU_GENERIC) \
+ $(wildcard include/config/RCU_STALL_COMMON) \
+ $(wildcard include/config/NO_HZ_FULL) \
+ $(wildcard include/config/KVM_XFER_TO_GUEST_WORK) \
+ $(wildcard include/config/RCU_NOCB_CPU) \
+ $(wildcard include/config/TASKS_RCU) \
+ $(wildcard include/config/TASKS_TRACE_RCU) \
+ $(wildcard include/config/TASKS_RUDE_RCU) \
+ $(wildcard include/config/TREE_RCU) \
+ $(wildcard include/config/DEBUG_OBJECTS_RCU_HEAD) \
+ $(wildcard include/config/PROVE_RCU) \
+ $(wildcard include/config/ARCH_WEAK_RELEASE_ACQUIRE) \
+ include/linux/context_tracking_irq.h \
+ $(wildcard include/config/CONTEXT_TRACKING_IDLE) \
+ include/linux/rcutree.h \
+ include/linux/maple_tree.h \
+ $(wildcard include/config/MAPLE_RCU_DISABLED) \
+ $(wildcard include/config/DEBUG_MAPLE_TREE_VERBOSE) \
+ $(wildcard include/config/DEBUG_MAPLE_TREE) \
+ include/linux/rwsem.h \
+ $(wildcard include/config/RWSEM_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_RWSEMS) \
+ include/linux/osq_lock.h \
+ include/linux/completion.h \
+ include/linux/swait.h \
+ include/linux/wait.h \
+ include/uapi/linux/wait.h \
+ include/linux/uprobes.h \
+ $(wildcard include/config/UPROBES) \
+ arch/x86/include/asm/uprobes.h \
+ include/linux/notifier.h \
+ include/linux/mutex.h \
+ $(wildcard include/config/MUTEX_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_MUTEXES) \
+ include/linux/debug_locks.h \
+ include/linux/srcu.h \
+ $(wildcard include/config/TINY_SRCU) \
+ $(wildcard include/config/NEED_SRCU_NMI_SAFE) \
+ include/linux/workqueue.h \
+ $(wildcard include/config/DEBUG_OBJECTS_WORK) \
+ $(wildcard include/config/FREEZER) \
+ $(wildcard include/config/WQ_WATCHDOG) \
+ include/linux/timer.h \
+ $(wildcard include/config/DEBUG_OBJECTS_TIMERS) \
+ include/linux/ktime.h \
+ include/linux/jiffies.h \
+ include/vdso/jiffies.h \
+ include/generated/timeconst.h \
+ include/vdso/ktime.h \
+ include/linux/timekeeping.h \
+ $(wildcard include/config/GENERIC_CMOS_UPDATE) \
+ include/linux/clocksource_ids.h \
+ include/linux/debugobjects.h \
+ $(wildcard include/config/DEBUG_OBJECTS) \
+ $(wildcard include/config/DEBUG_OBJECTS_FREE) \
+ include/linux/rcu_segcblist.h \
+ include/linux/srcutree.h \
+ include/linux/rcu_node_tree.h \
+ $(wildcard include/config/RCU_FANOUT) \
+ $(wildcard include/config/RCU_FANOUT_LEAF) \
+ include/linux/page-flags-layout.h \
+ include/generated/bounds.h \
+ include/linux/seqlock.h \
+ include/linux/percpu_counter.h \
+ include/linux/percpu.h \
+ $(wildcard include/config/NEED_PER_CPU_EMBED_FIRST_CHUNK) \
+ $(wildcard include/config/NEED_PER_CPU_PAGE_FIRST_CHUNK) \
+ include/linux/mmdebug.h \
+ $(wildcard include/config/DEBUG_VM) \
+ $(wildcard include/config/DEBUG_VM_IRQSOFF) \
+ $(wildcard include/config/DEBUG_VM_PGFLAGS) \
+ arch/x86/include/asm/mmu.h \
+ $(wildcard include/config/MODIFY_LDT_SYSCALL) \
+ include/linux/kmod.h \
+ include/linux/umh.h \
+ include/linux/gfp.h \
+ $(wildcard include/config/HIGHMEM) \
+ $(wildcard include/config/ZONE_DMA) \
+ $(wildcard include/config/ZONE_DMA32) \
+ $(wildcard include/config/ZONE_DEVICE) \
+ $(wildcard include/config/PM_SLEEP) \
+ $(wildcard include/config/CONTIG_ALLOC) \
+ $(wildcard include/config/CMA) \
+ include/linux/mmzone.h \
+ $(wildcard include/config/ARCH_FORCE_MAX_ORDER) \
+ $(wildcard include/config/MEMORY_ISOLATION) \
+ $(wildcard include/config/ZSMALLOC) \
+ $(wildcard include/config/LRU_GEN_STATS) \
+ $(wildcard include/config/MEMORY_HOTPLUG) \
+ $(wildcard include/config/COMPACTION) \
+ $(wildcard include/config/PAGE_EXTENSION) \
+ $(wildcard include/config/DEFERRED_STRUCT_PAGE_INIT) \
+ $(wildcard include/config/HAVE_MEMORYLESS_NODES) \
+ $(wildcard include/config/SPARSEMEM_EXTREME) \
+ $(wildcard include/config/HAVE_ARCH_PFN_VALID) \
+ include/linux/nodemask.h \
+ include/linux/random.h \
+ $(wildcard include/config/VMGENID) \
+ include/uapi/linux/random.h \
+ include/linux/irqnr.h \
+ include/uapi/linux/irqnr.h \
+ include/linux/prandom.h \
+ include/linux/once.h \
+ include/linux/pageblock-flags.h \
+ $(wildcard include/config/HUGETLB_PAGE_SIZE_VARIABLE) \
+ include/linux/page-flags.h \
+ $(wildcard include/config/ARCH_USES_PG_UNCACHED) \
+ $(wildcard include/config/MEMORY_FAILURE) \
+ $(wildcard include/config/PAGE_IDLE_FLAG) \
+ $(wildcard include/config/ARCH_USES_PG_ARCH_X) \
+ $(wildcard include/config/HUGETLB_PAGE_OPTIMIZE_VMEMMAP) \
+ include/linux/local_lock.h \
+ include/linux/local_lock_internal.h \
+ include/linux/memory_hotplug.h \
+ $(wildcard include/config/HAVE_ARCH_NODEDATA_EXTENSION) \
+ $(wildcard include/config/ARCH_HAS_ADD_PAGES) \
+ $(wildcard include/config/MEMORY_HOTREMOVE) \
+ arch/x86/include/asm/mmzone.h \
+ arch/x86/include/asm/mmzone_64.h \
+ include/linux/topology.h \
+ $(wildcard include/config/USE_PERCPU_NUMA_NODE_ID) \
+ $(wildcard include/config/SCHED_SMT) \
+ include/linux/arch_topology.h \
+ $(wildcard include/config/ACPI_CPPC_LIB) \
+ $(wildcard include/config/GENERIC_ARCH_TOPOLOGY) \
+ arch/x86/include/asm/topology.h \
+ $(wildcard include/config/SCHED_MC_PRIO) \
+ arch/x86/include/asm/mpspec.h \
+ $(wildcard include/config/EISA) \
+ $(wildcard include/config/X86_MPPARSE) \
+ arch/x86/include/asm/mpspec_def.h \
+ arch/x86/include/asm/x86_init.h \
+ arch/x86/include/asm/apicdef.h \
+ include/asm-generic/topology.h \
+ include/linux/sysctl.h \
+ $(wildcard include/config/SYSCTL) \
+ include/uapi/linux/sysctl.h \
+ include/linux/elf.h \
+ $(wildcard include/config/ARCH_USE_GNU_PROPERTY) \
+ $(wildcard include/config/ARCH_HAVE_ELF_PROT) \
+ arch/x86/include/asm/elf.h \
+ $(wildcard include/config/X86_X32_ABI) \
+ arch/x86/include/asm/user.h \
+ arch/x86/include/asm/user_64.h \
+ arch/x86/include/asm/fsgsbase.h \
+ arch/x86/include/asm/vdso.h \
+ include/uapi/linux/elf.h \
+ include/uapi/linux/elf-em.h \
+ include/linux/kobject.h \
+ $(wildcard include/config/UEVENT_HELPER) \
+ $(wildcard include/config/DEBUG_KOBJECT_RELEASE) \
+ include/linux/sysfs.h \
+ include/linux/kernfs.h \
+ $(wildcard include/config/KERNFS) \
+ include/linux/idr.h \
+ include/linux/radix-tree.h \
+ include/linux/xarray.h \
+ $(wildcard include/config/XARRAY_MULTI) \
+ include/linux/kconfig.h \
+ include/linux/sched/mm.h \
+ $(wildcard include/config/ARCH_HAS_MEMBARRIER_CALLBACKS) \
+ include/linux/sched.h \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_NATIVE) \
+ $(wildcard include/config/SCHED_INFO) \
+ $(wildcard include/config/SCHEDSTATS) \
+ $(wildcard include/config/SCHED_CORE) \
+ $(wildcard include/config/FAIR_GROUP_SCHED) \
+ $(wildcard include/config/RT_GROUP_SCHED) \
+ $(wildcard include/config/RT_MUTEXES) \
+ $(wildcard include/config/UCLAMP_TASK) \
+ $(wildcard include/config/UCLAMP_BUCKETS_COUNT) \
+ $(wildcard include/config/KMAP_LOCAL) \
+ $(wildcard include/config/CGROUP_SCHED) \
+ $(wildcard include/config/BLK_DEV_IO_TRACE) \
+ $(wildcard include/config/COMPAT_BRK) \
+ $(wildcard include/config/CGROUPS) \
+ $(wildcard include/config/BLK_CGROUP) \
+ $(wildcard include/config/PSI) \
+ $(wildcard include/config/PAGE_OWNER) \
+ $(wildcard include/config/EVENTFD) \
+ $(wildcard include/config/CPU_SUP_INTEL) \
+ $(wildcard include/config/TASK_DELAY_ACCT) \
+ $(wildcard include/config/ARCH_HAS_SCALED_CPUTIME) \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_GEN) \
+ $(wildcard include/config/POSIX_CPUTIMERS) \
+ $(wildcard include/config/POSIX_CPU_TIMERS_TASK_WORK) \
+ $(wildcard include/config/KEYS) \
+ $(wildcard include/config/SYSVIPC) \
+ $(wildcard include/config/DETECT_HUNG_TASK) \
+ $(wildcard include/config/IO_URING) \
+ $(wildcard include/config/AUDIT) \
+ $(wildcard include/config/AUDITSYSCALL) \
+ $(wildcard include/config/UBSAN) \
+ $(wildcard include/config/UBSAN_TRAP) \
+ $(wildcard include/config/TASK_XACCT) \
+ $(wildcard include/config/CPUSETS) \
+ $(wildcard include/config/X86_CPU_RESCTRL) \
+ $(wildcard include/config/FUTEX) \
+ $(wildcard include/config/PERF_EVENTS) \
+ $(wildcard include/config/RSEQ) \
+ $(wildcard include/config/FAULT_INJECTION) \
+ $(wildcard include/config/LATENCYTOP) \
+ $(wildcard include/config/FUNCTION_GRAPH_TRACER) \
+ $(wildcard include/config/BCACHE) \
+ $(wildcard include/config/VMAP_STACK) \
+ $(wildcard include/config/SECURITY) \
+ $(wildcard include/config/BPF_SYSCALL) \
+ $(wildcard include/config/GCC_PLUGIN_STACKLEAK) \
+ $(wildcard include/config/X86_MCE) \
+ $(wildcard include/config/KRETPROBES) \
+ $(wildcard include/config/RETHOOK) \
+ $(wildcard include/config/ARCH_HAS_PARANOID_L1D_FLUSH) \
+ $(wildcard include/config/RV) \
+ $(wildcard include/config/ARCH_TASK_STRUCT_ON_STACK) \
+ $(wildcard include/config/PREEMPT_NONE) \
+ $(wildcard include/config/PREEMPT_VOLUNTARY) \
+ $(wildcard include/config/DEBUG_RSEQ) \
+ include/uapi/linux/sched.h \
+ include/linux/pid.h \
+ include/linux/rculist.h \
+ $(wildcard include/config/PROVE_RCU_LIST) \
+ include/linux/sem.h \
+ include/uapi/linux/sem.h \
+ include/linux/ipc.h \
+ include/linux/rhashtable-types.h \
+ include/uapi/linux/ipc.h \
+ arch/x86/include/generated/uapi/asm/ipcbuf.h \
+ include/uapi/asm-generic/ipcbuf.h \
+ arch/x86/include/uapi/asm/sembuf.h \
+ include/linux/shm.h \
+ include/uapi/linux/shm.h \
+ include/uapi/asm-generic/hugetlb_encode.h \
+ arch/x86/include/uapi/asm/shmbuf.h \
+ include/uapi/asm-generic/shmbuf.h \
+ arch/x86/include/asm/shmparam.h \
+ include/linux/kmsan_types.h \
+ include/linux/plist.h \
+ $(wildcard include/config/DEBUG_PLIST) \
+ include/linux/hrtimer.h \
+ $(wildcard include/config/HIGH_RES_TIMERS) \
+ $(wildcard include/config/TIME_LOW_RES) \
+ $(wildcard include/config/TIMERFD) \
+ include/linux/hrtimer_defs.h \
+ include/linux/timerqueue.h \
+ include/linux/seccomp.h \
+ $(wildcard include/config/SECCOMP) \
+ $(wildcard include/config/HAVE_ARCH_SECCOMP_FILTER) \
+ $(wildcard include/config/SECCOMP_FILTER) \
+ $(wildcard include/config/CHECKPOINT_RESTORE) \
+ $(wildcard include/config/SECCOMP_CACHE_DEBUG) \
+ include/uapi/linux/seccomp.h \
+ arch/x86/include/asm/seccomp.h \
+ arch/x86/include/asm/unistd.h \
+ arch/x86/include/uapi/asm/unistd.h \
+ arch/x86/include/generated/uapi/asm/unistd_64.h \
+ arch/x86/include/generated/asm/unistd_64_x32.h \
+ arch/x86/include/generated/asm/unistd_32_ia32.h \
+ arch/x86/include/asm/ia32_unistd.h \
+ include/asm-generic/seccomp.h \
+ include/uapi/linux/unistd.h \
+ include/linux/resource.h \
+ include/uapi/linux/resource.h \
+ arch/x86/include/generated/uapi/asm/resource.h \
+ include/asm-generic/resource.h \
+ include/uapi/asm-generic/resource.h \
+ include/linux/latencytop.h \
+ include/linux/sched/prio.h \
+ include/linux/sched/types.h \
+ include/linux/signal_types.h \
+ $(wildcard include/config/OLD_SIGACTION) \
+ include/uapi/linux/signal.h \
+ arch/x86/include/asm/signal.h \
+ arch/x86/include/uapi/asm/signal.h \
+ include/uapi/asm-generic/signal-defs.h \
+ arch/x86/include/uapi/asm/siginfo.h \
+ include/uapi/asm-generic/siginfo.h \
+ include/linux/syscall_user_dispatch.h \
+ include/linux/task_io_accounting.h \
+ $(wildcard include/config/TASK_IO_ACCOUNTING) \
+ include/linux/posix-timers.h \
+ include/linux/alarmtimer.h \
+ $(wildcard include/config/RTC_CLASS) \
+ include/uapi/linux/rseq.h \
+ include/linux/kcsan.h \
+ include/linux/rv.h \
+ $(wildcard include/config/RV_REACTORS) \
+ arch/x86/include/generated/asm/kmap_size.h \
+ include/asm-generic/kmap_size.h \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL) \
+ include/linux/sync_core.h \
+ $(wildcard include/config/ARCH_HAS_SYNC_CORE_BEFORE_USERMODE) \
+ arch/x86/include/asm/sync_core.h \
+ include/linux/ioasid.h \
+ $(wildcard include/config/IOASID) \
+ include/linux/kobject_ns.h \
+ include/linux/moduleparam.h \
+ $(wildcard include/config/ALPHA) \
+ $(wildcard include/config/IA64) \
+ $(wildcard include/config/PPC64) \
+ include/linux/rbtree_latch.h \
+ include/linux/error-injection.h \
+ include/asm-generic/error-injection.h \
+ arch/x86/include/asm/module.h \
+ $(wildcard include/config/UNWINDER_ORC) \
+ include/asm-generic/module.h \
+ $(wildcard include/config/HAVE_MOD_ARCH_SPECIFIC) \
+ $(wildcard include/config/MODULES_USE_ELF_REL) \
+ $(wildcard include/config/MODULES_USE_ELF_RELA) \
+ arch/x86/include/asm/orc_types.h \
+ include/linux/build-salt.h \
+ $(wildcard include/config/BUILD_SALT) \
+ include/linux/elfnote.h \
+ include/linux/elfnote-lto.h \
+ $(wildcard include/config/LTO) \
+ include/linux/export-internal.h \
+ include/linux/vermagic.h \
+ $(wildcard include/config/PREEMPT_BUILD) \
+ include/generated/utsrelease.h \
+ arch/x86/include/asm/vermagic.h \
+ $(wildcard include/config/M486SX) \
+ $(wildcard include/config/M486) \
+ $(wildcard include/config/M586) \
+ $(wildcard include/config/M586TSC) \
+ $(wildcard include/config/M586MMX) \
+ $(wildcard include/config/MCORE2) \
+ $(wildcard include/config/M686) \
+ $(wildcard include/config/MPENTIUMII) \
+ $(wildcard include/config/MPENTIUMIII) \
+ $(wildcard include/config/MPENTIUMM) \
+ $(wildcard include/config/MPENTIUM4) \
+ $(wildcard include/config/MK6) \
+ $(wildcard include/config/MK7) \
+ $(wildcard include/config/MK8) \
+ $(wildcard include/config/MELAN) \
+ $(wildcard include/config/MCRUSOE) \
+ $(wildcard include/config/MEFFICEON) \
+ $(wildcard include/config/MWINCHIPC6) \
+ $(wildcard include/config/MWINCHIP3D) \
+ $(wildcard include/config/MCYRIXIII) \
+ $(wildcard include/config/MVIAC3_2) \
+ $(wildcard include/config/MVIAC7) \
+ $(wildcard include/config/MGEODEGX1) \
+ $(wildcard include/config/MGEODE_LX) \
+
+/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o: $(deps_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o)
+
+$(deps_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.mod.o):
diff --git a/smartlamp-kernel-module/.smartlamp.o.cmd b/smartlamp-kernel-module/.smartlamp.o.cmd
new file mode 100644
index 0000000..cfe495c
--- /dev/null
+++ b/smartlamp-kernel-module/.smartlamp.o.cmd
@@ -0,0 +1,1049 @@
+cmd_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o := gcc-12 -Wp,-MMD,/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/.smartlamp.o.d -nostdinc -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -funsigned-char -std=gnu11 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-dangling-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wcast-function-type -Wno-stringop-truncation -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -Wno-array-bounds -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -g -gdwarf-5 -fsanitize=bounds -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"smartlamp"' -DKBUILD_MODNAME='"smartlamp"' -D__KBUILD_MODNAME=kmod_smartlamp -c -o /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.c ; ./tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --retpoline --rethunk --sls --stackval --static-call --uaccess --prefix=16 --module /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o
+
+source_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o := /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.c
+
+deps_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o := \
+ include/linux/compiler-version.h \
+ $(wildcard include/config/CC_VERSION_TEXT) \
+ include/linux/kconfig.h \
+ $(wildcard include/config/CPU_BIG_ENDIAN) \
+ $(wildcard include/config/BOOGER) \
+ $(wildcard include/config/FOO) \
+ include/linux/compiler_types.h \
+ $(wildcard include/config/DEBUG_INFO_BTF) \
+ $(wildcard include/config/PAHOLE_HAS_BTF_TAG) \
+ $(wildcard include/config/HAVE_ARCH_COMPILER_H) \
+ $(wildcard include/config/CC_HAS_ASM_INLINE) \
+ include/linux/compiler_attributes.h \
+ include/linux/compiler-gcc.h \
+ $(wildcard include/config/RETPOLINE) \
+ $(wildcard include/config/ARCH_USE_BUILTIN_BSWAP) \
+ $(wildcard include/config/SHADOW_CALL_STACK) \
+ $(wildcard include/config/KCOV) \
+ include/linux/module.h \
+ $(wildcard include/config/MODULES) \
+ $(wildcard include/config/SYSFS) \
+ $(wildcard include/config/MODULES_TREE_LOOKUP) \
+ $(wildcard include/config/LIVEPATCH) \
+ $(wildcard include/config/STACKTRACE_BUILD_ID) \
+ $(wildcard include/config/ARCH_USES_CFI_TRAPS) \
+ $(wildcard include/config/MODULE_SIG) \
+ $(wildcard include/config/ARCH_WANTS_MODULES_DATA_IN_VMALLOC) \
+ $(wildcard include/config/GENERIC_BUG) \
+ $(wildcard include/config/KALLSYMS) \
+ $(wildcard include/config/SMP) \
+ $(wildcard include/config/TRACEPOINTS) \
+ $(wildcard include/config/TREE_SRCU) \
+ $(wildcard include/config/BPF_EVENTS) \
+ $(wildcard include/config/DEBUG_INFO_BTF_MODULES) \
+ $(wildcard include/config/JUMP_LABEL) \
+ $(wildcard include/config/TRACING) \
+ $(wildcard include/config/EVENT_TRACING) \
+ $(wildcard include/config/FTRACE_MCOUNT_RECORD) \
+ $(wildcard include/config/KPROBES) \
+ $(wildcard include/config/HAVE_STATIC_CALL_INLINE) \
+ $(wildcard include/config/KUNIT) \
+ $(wildcard include/config/PRINTK_INDEX) \
+ $(wildcard include/config/MODULE_UNLOAD) \
+ $(wildcard include/config/CONSTRUCTORS) \
+ $(wildcard include/config/FUNCTION_ERROR_INJECTION) \
+ include/linux/list.h \
+ $(wildcard include/config/DEBUG_LIST) \
+ include/linux/container_of.h \
+ include/linux/build_bug.h \
+ include/linux/compiler.h \
+ $(wildcard include/config/TRACE_BRANCH_PROFILING) \
+ $(wildcard include/config/PROFILE_ALL_BRANCHES) \
+ $(wildcard include/config/OBJTOOL) \
+ include/linux/compiler_types.h \
+ arch/x86/include/generated/asm/rwonce.h \
+ include/asm-generic/rwonce.h \
+ include/linux/kasan-checks.h \
+ $(wildcard include/config/KASAN_GENERIC) \
+ $(wildcard include/config/KASAN_SW_TAGS) \
+ include/linux/types.h \
+ $(wildcard include/config/HAVE_UID16) \
+ $(wildcard include/config/UID16) \
+ $(wildcard include/config/ARCH_DMA_ADDR_T_64BIT) \
+ $(wildcard include/config/PHYS_ADDR_T_64BIT) \
+ $(wildcard include/config/64BIT) \
+ $(wildcard include/config/ARCH_32BIT_USTAT_F_TINODE) \
+ include/uapi/linux/types.h \
+ arch/x86/include/generated/uapi/asm/types.h \
+ include/uapi/asm-generic/types.h \
+ include/asm-generic/int-ll64.h \
+ include/uapi/asm-generic/int-ll64.h \
+ arch/x86/include/uapi/asm/bitsperlong.h \
+ include/asm-generic/bitsperlong.h \
+ include/uapi/asm-generic/bitsperlong.h \
+ include/uapi/linux/posix_types.h \
+ include/linux/stddef.h \
+ include/uapi/linux/stddef.h \
+ arch/x86/include/asm/posix_types.h \
+ $(wildcard include/config/X86_32) \
+ arch/x86/include/uapi/asm/posix_types_64.h \
+ include/uapi/asm-generic/posix_types.h \
+ include/linux/kcsan-checks.h \
+ $(wildcard include/config/KCSAN) \
+ $(wildcard include/config/KCSAN_WEAK_MEMORY) \
+ $(wildcard include/config/KCSAN_IGNORE_ATOMICS) \
+ include/linux/err.h \
+ arch/x86/include/generated/uapi/asm/errno.h \
+ include/uapi/asm-generic/errno.h \
+ include/uapi/asm-generic/errno-base.h \
+ include/linux/poison.h \
+ $(wildcard include/config/ILLEGAL_POINTER_VALUE) \
+ include/linux/const.h \
+ include/vdso/const.h \
+ include/uapi/linux/const.h \
+ arch/x86/include/asm/barrier.h \
+ arch/x86/include/asm/alternative.h \
+ $(wildcard include/config/CALL_THUNKS) \
+ include/linux/stringify.h \
+ arch/x86/include/asm/asm.h \
+ arch/x86/include/asm/extable_fixup_types.h \
+ arch/x86/include/asm/nops.h \
+ include/asm-generic/barrier.h \
+ include/linux/stat.h \
+ arch/x86/include/uapi/asm/stat.h \
+ include/uapi/linux/stat.h \
+ include/linux/time.h \
+ $(wildcard include/config/POSIX_TIMERS) \
+ include/linux/cache.h \
+ $(wildcard include/config/ARCH_HAS_CACHE_LINE_SIZE) \
+ include/uapi/linux/kernel.h \
+ include/uapi/linux/sysinfo.h \
+ arch/x86/include/asm/cache.h \
+ $(wildcard include/config/X86_L1_CACHE_SHIFT) \
+ $(wildcard include/config/X86_INTERNODE_CACHE_SHIFT) \
+ $(wildcard include/config/X86_VSMP) \
+ include/linux/linkage.h \
+ $(wildcard include/config/FUNCTION_ALIGNMENT) \
+ $(wildcard include/config/ARCH_USE_SYM_ANNOTATIONS) \
+ include/linux/export.h \
+ $(wildcard include/config/MODVERSIONS) \
+ $(wildcard include/config/HAVE_ARCH_PREL32_RELOCATIONS) \
+ $(wildcard include/config/TRIM_UNUSED_KSYMS) \
+ arch/x86/include/asm/linkage.h \
+ $(wildcard include/config/CALL_PADDING) \
+ $(wildcard include/config/RETHUNK) \
+ $(wildcard include/config/SLS) \
+ $(wildcard include/config/FUNCTION_PADDING_BYTES) \
+ arch/x86/include/asm/ibt.h \
+ $(wildcard include/config/X86_KERNEL_IBT) \
+ $(wildcard include/config/X86_64) \
+ include/linux/math64.h \
+ $(wildcard include/config/ARCH_SUPPORTS_INT128) \
+ include/linux/math.h \
+ arch/x86/include/asm/div64.h \
+ include/asm-generic/div64.h \
+ include/vdso/math64.h \
+ include/linux/time64.h \
+ include/vdso/time64.h \
+ include/uapi/linux/time.h \
+ include/uapi/linux/time_types.h \
+ include/linux/time32.h \
+ include/linux/timex.h \
+ include/uapi/linux/timex.h \
+ include/uapi/linux/param.h \
+ arch/x86/include/generated/uapi/asm/param.h \
+ include/asm-generic/param.h \
+ $(wildcard include/config/HZ) \
+ include/uapi/asm-generic/param.h \
+ arch/x86/include/asm/timex.h \
+ $(wildcard include/config/X86_TSC) \
+ arch/x86/include/asm/processor.h \
+ $(wildcard include/config/X86_VMX_FEATURE_NAMES) \
+ $(wildcard include/config/X86_IOPL_IOPERM) \
+ $(wildcard include/config/STACKPROTECTOR) \
+ $(wildcard include/config/VM86) \
+ $(wildcard include/config/PARAVIRT_XXL) \
+ $(wildcard include/config/X86_DEBUGCTLMSR) \
+ $(wildcard include/config/CPU_SUP_AMD) \
+ $(wildcard include/config/XEN) \
+ $(wildcard include/config/X86_SGX) \
+ arch/x86/include/asm/processor-flags.h \
+ $(wildcard include/config/PAGE_TABLE_ISOLATION) \
+ arch/x86/include/uapi/asm/processor-flags.h \
+ include/linux/mem_encrypt.h \
+ $(wildcard include/config/ARCH_HAS_MEM_ENCRYPT) \
+ $(wildcard include/config/AMD_MEM_ENCRYPT) \
+ arch/x86/include/asm/mem_encrypt.h \
+ include/linux/init.h \
+ $(wildcard include/config/STRICT_KERNEL_RWX) \
+ $(wildcard include/config/STRICT_MODULE_RWX) \
+ $(wildcard include/config/LTO_CLANG) \
+ include/linux/cc_platform.h \
+ $(wildcard include/config/ARCH_HAS_CC_PLATFORM) \
+ arch/x86/include/uapi/asm/bootparam.h \
+ include/linux/screen_info.h \
+ include/uapi/linux/screen_info.h \
+ include/linux/apm_bios.h \
+ include/uapi/linux/apm_bios.h \
+ include/uapi/linux/ioctl.h \
+ arch/x86/include/generated/uapi/asm/ioctl.h \
+ include/asm-generic/ioctl.h \
+ include/uapi/asm-generic/ioctl.h \
+ include/linux/edd.h \
+ include/uapi/linux/edd.h \
+ arch/x86/include/asm/ist.h \
+ arch/x86/include/uapi/asm/ist.h \
+ include/video/edid.h \
+ $(wildcard include/config/X86) \
+ include/uapi/video/edid.h \
+ arch/x86/include/asm/math_emu.h \
+ arch/x86/include/asm/ptrace.h \
+ $(wildcard include/config/PARAVIRT) \
+ $(wildcard include/config/IA32_EMULATION) \
+ arch/x86/include/asm/segment.h \
+ $(wildcard include/config/XEN_PV) \
+ arch/x86/include/asm/page_types.h \
+ $(wildcard include/config/PHYSICAL_START) \
+ $(wildcard include/config/PHYSICAL_ALIGN) \
+ $(wildcard include/config/DYNAMIC_PHYSICAL_MASK) \
+ arch/x86/include/asm/page_64_types.h \
+ $(wildcard include/config/KASAN) \
+ $(wildcard include/config/DYNAMIC_MEMORY_LAYOUT) \
+ $(wildcard include/config/X86_5LEVEL) \
+ $(wildcard include/config/RANDOMIZE_BASE) \
+ arch/x86/include/asm/kaslr.h \
+ $(wildcard include/config/RANDOMIZE_MEMORY) \
+ arch/x86/include/uapi/asm/ptrace.h \
+ arch/x86/include/uapi/asm/ptrace-abi.h \
+ arch/x86/include/asm/paravirt_types.h \
+ $(wildcard include/config/PGTABLE_LEVELS) \
+ $(wildcard include/config/ZERO_CALL_USED_REGS) \
+ $(wildcard include/config/PARAVIRT_DEBUG) \
+ arch/x86/include/asm/desc_defs.h \
+ arch/x86/include/asm/pgtable_types.h \
+ $(wildcard include/config/X86_INTEL_MEMORY_PROTECTION_KEYS) \
+ $(wildcard include/config/X86_PAE) \
+ $(wildcard include/config/MEM_SOFT_DIRTY) \
+ $(wildcard include/config/HAVE_ARCH_USERFAULTFD_WP) \
+ $(wildcard include/config/PROC_FS) \
+ arch/x86/include/asm/pgtable_64_types.h \
+ $(wildcard include/config/KMSAN) \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL_FORCE_MAP) \
+ arch/x86/include/asm/sparsemem.h \
+ $(wildcard include/config/SPARSEMEM) \
+ $(wildcard include/config/NUMA_KEEP_MEMINFO) \
+ arch/x86/include/asm/nospec-branch.h \
+ $(wildcard include/config/CALL_THUNKS_DEBUG) \
+ $(wildcard include/config/CALL_DEPTH_TRACKING) \
+ $(wildcard include/config/DEBUG_ENTRY) \
+ $(wildcard include/config/CPU_UNRET_ENTRY) \
+ $(wildcard include/config/CPU_IBPB_ENTRY) \
+ include/linux/static_key.h \
+ include/linux/jump_label.h \
+ $(wildcard include/config/HAVE_ARCH_JUMP_LABEL_RELATIVE) \
+ arch/x86/include/asm/jump_label.h \
+ $(wildcard include/config/HAVE_JUMP_LABEL_HACK) \
+ include/linux/objtool.h \
+ $(wildcard include/config/FRAME_POINTER) \
+ arch/x86/include/asm/cpufeatures.h \
+ arch/x86/include/asm/required-features.h \
+ $(wildcard include/config/X86_MINIMUM_CPU_FAMILY) \
+ $(wildcard include/config/MATH_EMULATION) \
+ $(wildcard include/config/X86_CMPXCHG64) \
+ $(wildcard include/config/X86_CMOV) \
+ $(wildcard include/config/X86_P6_NOP) \
+ $(wildcard include/config/MATOM) \
+ arch/x86/include/asm/disabled-features.h \
+ $(wildcard include/config/X86_UMIP) \
+ $(wildcard include/config/INTEL_IOMMU_SVM) \
+ $(wildcard include/config/INTEL_TDX_GUEST) \
+ arch/x86/include/asm/msr-index.h \
+ include/linux/bits.h \
+ include/vdso/bits.h \
+ arch/x86/include/asm/unwind_hints.h \
+ arch/x86/include/asm/orc_types.h \
+ arch/x86/include/uapi/asm/byteorder.h \
+ include/linux/byteorder/little_endian.h \
+ include/uapi/linux/byteorder/little_endian.h \
+ include/linux/swab.h \
+ include/uapi/linux/swab.h \
+ arch/x86/include/uapi/asm/swab.h \
+ include/linux/byteorder/generic.h \
+ arch/x86/include/asm/percpu.h \
+ $(wildcard include/config/X86_64_SMP) \
+ include/linux/kernel.h \
+ $(wildcard include/config/PREEMPT_VOLUNTARY_BUILD) \
+ $(wildcard include/config/PREEMPT_DYNAMIC) \
+ $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_CALL) \
+ $(wildcard include/config/HAVE_PREEMPT_DYNAMIC_KEY) \
+ $(wildcard include/config/PREEMPT_) \
+ $(wildcard include/config/DEBUG_ATOMIC_SLEEP) \
+ $(wildcard include/config/MMU) \
+ $(wildcard include/config/PROVE_LOCKING) \
+ include/linux/stdarg.h \
+ include/linux/align.h \
+ include/linux/limits.h \
+ include/uapi/linux/limits.h \
+ include/vdso/limits.h \
+ include/linux/bitops.h \
+ include/linux/typecheck.h \
+ include/asm-generic/bitops/generic-non-atomic.h \
+ arch/x86/include/asm/bitops.h \
+ arch/x86/include/asm/rmwcc.h \
+ include/asm-generic/bitops/sched.h \
+ arch/x86/include/asm/arch_hweight.h \
+ include/asm-generic/bitops/const_hweight.h \
+ include/asm-generic/bitops/instrumented-atomic.h \
+ include/linux/instrumented.h \
+ include/linux/kmsan-checks.h \
+ include/asm-generic/bitops/instrumented-non-atomic.h \
+ $(wildcard include/config/KCSAN_ASSUME_PLAIN_WRITES_ATOMIC) \
+ include/asm-generic/bitops/instrumented-lock.h \
+ include/asm-generic/bitops/le.h \
+ include/asm-generic/bitops/ext2-atomic-setbit.h \
+ include/linux/kstrtox.h \
+ include/linux/log2.h \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U32) \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U64) \
+ include/linux/minmax.h \
+ include/linux/panic.h \
+ $(wildcard include/config/PANIC_TIMEOUT) \
+ include/linux/printk.h \
+ $(wildcard include/config/MESSAGE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_QUIET) \
+ $(wildcard include/config/EARLY_PRINTK) \
+ $(wildcard include/config/PRINTK) \
+ $(wildcard include/config/DYNAMIC_DEBUG) \
+ $(wildcard include/config/DYNAMIC_DEBUG_CORE) \
+ include/linux/kern_levels.h \
+ include/linux/ratelimit_types.h \
+ include/linux/spinlock_types_raw.h \
+ $(wildcard include/config/DEBUG_SPINLOCK) \
+ $(wildcard include/config/DEBUG_LOCK_ALLOC) \
+ arch/x86/include/asm/spinlock_types.h \
+ include/asm-generic/qspinlock_types.h \
+ $(wildcard include/config/NR_CPUS) \
+ include/asm-generic/qrwlock_types.h \
+ include/linux/lockdep_types.h \
+ $(wildcard include/config/PROVE_RAW_LOCK_NESTING) \
+ $(wildcard include/config/LOCKDEP) \
+ $(wildcard include/config/LOCK_STAT) \
+ include/linux/once_lite.h \
+ include/linux/dynamic_debug.h \
+ include/linux/static_call_types.h \
+ $(wildcard include/config/HAVE_STATIC_CALL) \
+ include/linux/instruction_pointer.h \
+ include/asm-generic/percpu.h \
+ $(wildcard include/config/DEBUG_PREEMPT) \
+ $(wildcard include/config/HAVE_SETUP_PER_CPU_AREA) \
+ include/linux/threads.h \
+ $(wildcard include/config/BASE_SMALL) \
+ include/linux/percpu-defs.h \
+ $(wildcard include/config/DEBUG_FORCE_WEAK_PER_CPU) \
+ arch/x86/include/asm/current.h \
+ arch/x86/include/asm/asm-offsets.h \
+ include/generated/asm-offsets.h \
+ arch/x86/include/asm/GEN-for-each-reg.h \
+ arch/x86/include/asm/proto.h \
+ arch/x86/include/uapi/asm/ldt.h \
+ arch/x86/include/uapi/asm/sigcontext.h \
+ arch/x86/include/asm/cpuid.h \
+ arch/x86/include/asm/string.h \
+ arch/x86/include/asm/string_64.h \
+ $(wildcard include/config/ARCH_HAS_UACCESS_FLUSHCACHE) \
+ arch/x86/include/asm/paravirt.h \
+ $(wildcard include/config/PARAVIRT_SPINLOCKS) \
+ include/linux/bug.h \
+ $(wildcard include/config/BUG_ON_DATA_CORRUPTION) \
+ arch/x86/include/asm/bug.h \
+ $(wildcard include/config/DEBUG_BUGVERBOSE) \
+ include/linux/instrumentation.h \
+ $(wildcard include/config/NOINSTR_VALIDATION) \
+ include/asm-generic/bug.h \
+ $(wildcard include/config/BUG) \
+ $(wildcard include/config/GENERIC_BUG_RELATIVE_POINTERS) \
+ include/linux/cpumask.h \
+ $(wildcard include/config/FORCE_NR_CPUS) \
+ $(wildcard include/config/HOTPLUG_CPU) \
+ $(wildcard include/config/DEBUG_PER_CPU_MAPS) \
+ $(wildcard include/config/CPUMASK_OFFSTACK) \
+ include/linux/bitmap.h \
+ include/linux/find.h \
+ include/linux/string.h \
+ $(wildcard include/config/BINARY_PRINTF) \
+ $(wildcard include/config/FORTIFY_SOURCE) \
+ include/linux/errno.h \
+ include/uapi/linux/errno.h \
+ include/uapi/linux/string.h \
+ include/linux/fortify-string.h \
+ include/linux/atomic.h \
+ arch/x86/include/asm/atomic.h \
+ arch/x86/include/asm/cmpxchg.h \
+ arch/x86/include/asm/cmpxchg_64.h \
+ arch/x86/include/asm/atomic64_64.h \
+ include/linux/atomic/atomic-arch-fallback.h \
+ $(wildcard include/config/GENERIC_ATOMIC64) \
+ include/linux/atomic/atomic-long.h \
+ include/linux/atomic/atomic-instrumented.h \
+ include/linux/gfp_types.h \
+ $(wildcard include/config/KASAN_HW_TAGS) \
+ include/linux/numa.h \
+ $(wildcard include/config/NODES_SHIFT) \
+ $(wildcard include/config/NUMA) \
+ $(wildcard include/config/HAVE_ARCH_NODE_DEV_GROUP) \
+ arch/x86/include/asm/frame.h \
+ arch/x86/include/asm/page.h \
+ arch/x86/include/asm/page_64.h \
+ $(wildcard include/config/DEBUG_VIRTUAL) \
+ $(wildcard include/config/FLATMEM) \
+ $(wildcard include/config/X86_VSYSCALL_EMULATION) \
+ include/linux/range.h \
+ include/asm-generic/memory_model.h \
+ $(wildcard include/config/SPARSEMEM_VMEMMAP) \
+ include/linux/pfn.h \
+ include/asm-generic/getorder.h \
+ arch/x86/include/asm/msr.h \
+ arch/x86/include/asm/msr-index.h \
+ arch/x86/include/asm/cpumask.h \
+ arch/x86/include/uapi/asm/msr.h \
+ arch/x86/include/asm/shared/msr.h \
+ include/linux/tracepoint-defs.h \
+ arch/x86/include/asm/special_insns.h \
+ include/linux/irqflags.h \
+ $(wildcard include/config/TRACE_IRQFLAGS) \
+ $(wildcard include/config/PREEMPT_RT) \
+ $(wildcard include/config/IRQSOFF_TRACER) \
+ $(wildcard include/config/PREEMPT_TRACER) \
+ $(wildcard include/config/DEBUG_IRQFLAGS) \
+ $(wildcard include/config/TRACE_IRQFLAGS_SUPPORT) \
+ arch/x86/include/asm/irqflags.h \
+ arch/x86/include/asm/fpu/types.h \
+ arch/x86/include/asm/vmxfeatures.h \
+ arch/x86/include/asm/vdso/processor.h \
+ include/linux/personality.h \
+ include/uapi/linux/personality.h \
+ arch/x86/include/asm/tsc.h \
+ arch/x86/include/asm/cpufeature.h \
+ $(wildcard include/config/X86_FEATURE_NAMES) \
+ include/vdso/time32.h \
+ include/vdso/time.h \
+ include/linux/uidgid.h \
+ $(wildcard include/config/MULTIUSER) \
+ $(wildcard include/config/USER_NS) \
+ include/linux/highuid.h \
+ include/linux/buildid.h \
+ $(wildcard include/config/CRASH_CORE) \
+ include/linux/mm_types.h \
+ $(wildcard include/config/HAVE_ALIGNED_STRUCT_PAGE) \
+ $(wildcard include/config/MEMCG) \
+ $(wildcard include/config/USERFAULTFD) \
+ $(wildcard include/config/ANON_VMA_NAME) \
+ $(wildcard include/config/SWAP) \
+ $(wildcard include/config/HAVE_ARCH_COMPAT_MMAP_BASES) \
+ $(wildcard include/config/MEMBARRIER) \
+ $(wildcard include/config/AIO) \
+ $(wildcard include/config/MMU_NOTIFIER) \
+ $(wildcard include/config/TRANSPARENT_HUGEPAGE) \
+ $(wildcard include/config/NUMA_BALANCING) \
+ $(wildcard include/config/ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) \
+ $(wildcard include/config/HUGETLB_PAGE) \
+ $(wildcard include/config/IOMMU_SVA) \
+ $(wildcard include/config/KSM) \
+ $(wildcard include/config/LRU_GEN) \
+ include/linux/mm_types_task.h \
+ $(wildcard include/config/SPLIT_PTLOCK_CPUS) \
+ $(wildcard include/config/ARCH_ENABLE_SPLIT_PMD_PTLOCK) \
+ arch/x86/include/asm/tlbbatch.h \
+ include/linux/auxvec.h \
+ include/uapi/linux/auxvec.h \
+ arch/x86/include/uapi/asm/auxvec.h \
+ include/linux/kref.h \
+ include/linux/spinlock.h \
+ $(wildcard include/config/PREEMPTION) \
+ include/linux/preempt.h \
+ $(wildcard include/config/PREEMPT_COUNT) \
+ $(wildcard include/config/TRACE_PREEMPT_TOGGLE) \
+ $(wildcard include/config/PREEMPT_NOTIFIERS) \
+ arch/x86/include/asm/preempt.h \
+ include/linux/thread_info.h \
+ $(wildcard include/config/THREAD_INFO_IN_TASK) \
+ $(wildcard include/config/GENERIC_ENTRY) \
+ $(wildcard include/config/HAVE_ARCH_WITHIN_STACK_FRAMES) \
+ $(wildcard include/config/HARDENED_USERCOPY) \
+ include/linux/restart_block.h \
+ arch/x86/include/asm/thread_info.h \
+ $(wildcard include/config/COMPAT) \
+ include/linux/bottom_half.h \
+ include/linux/lockdep.h \
+ $(wildcard include/config/DEBUG_LOCKING_API_SELFTESTS) \
+ include/linux/smp.h \
+ $(wildcard include/config/UP_LATE_INIT) \
+ include/linux/smp_types.h \
+ include/linux/llist.h \
+ $(wildcard include/config/ARCH_HAVE_NMI_SAFE_CMPXCHG) \
+ arch/x86/include/asm/smp.h \
+ $(wildcard include/config/X86_LOCAL_APIC) \
+ $(wildcard include/config/DEBUG_NMI_SELFTEST) \
+ arch/x86/include/generated/asm/mmiowb.h \
+ include/asm-generic/mmiowb.h \
+ $(wildcard include/config/MMIOWB) \
+ include/linux/spinlock_types.h \
+ include/linux/rwlock_types.h \
+ arch/x86/include/asm/spinlock.h \
+ arch/x86/include/asm/qspinlock.h \
+ include/asm-generic/qspinlock.h \
+ arch/x86/include/asm/qrwlock.h \
+ include/asm-generic/qrwlock.h \
+ include/linux/rwlock.h \
+ $(wildcard include/config/PREEMPT) \
+ include/linux/spinlock_api_smp.h \
+ $(wildcard include/config/INLINE_SPIN_LOCK) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK_BH) \
+ $(wildcard include/config/UNINLINE_SPIN_UNLOCK) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/GENERIC_LOCKBREAK) \
+ include/linux/rwlock_api_smp.h \
+ $(wildcard include/config/INLINE_READ_LOCK) \
+ $(wildcard include/config/INLINE_WRITE_LOCK) \
+ $(wildcard include/config/INLINE_READ_LOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_BH) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_READ_TRYLOCK) \
+ $(wildcard include/config/INLINE_WRITE_TRYLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQRESTORE) \
+ include/linux/refcount.h \
+ include/linux/rbtree.h \
+ include/linux/rbtree_types.h \
+ include/linux/rcupdate.h \
+ $(wildcard include/config/PREEMPT_RCU) \
+ $(wildcard include/config/TINY_RCU) \
+ $(wildcard include/config/RCU_STRICT_GRACE_PERIOD) \
+ $(wildcard include/config/RCU_LAZY) \
+ $(wildcard include/config/TASKS_RCU_GENERIC) \
+ $(wildcard include/config/RCU_STALL_COMMON) \
+ $(wildcard include/config/NO_HZ_FULL) \
+ $(wildcard include/config/KVM_XFER_TO_GUEST_WORK) \
+ $(wildcard include/config/RCU_NOCB_CPU) \
+ $(wildcard include/config/TASKS_RCU) \
+ $(wildcard include/config/TASKS_TRACE_RCU) \
+ $(wildcard include/config/TASKS_RUDE_RCU) \
+ $(wildcard include/config/TREE_RCU) \
+ $(wildcard include/config/DEBUG_OBJECTS_RCU_HEAD) \
+ $(wildcard include/config/PROVE_RCU) \
+ $(wildcard include/config/ARCH_WEAK_RELEASE_ACQUIRE) \
+ include/linux/context_tracking_irq.h \
+ $(wildcard include/config/CONTEXT_TRACKING_IDLE) \
+ include/linux/rcutree.h \
+ include/linux/maple_tree.h \
+ $(wildcard include/config/MAPLE_RCU_DISABLED) \
+ $(wildcard include/config/DEBUG_MAPLE_TREE_VERBOSE) \
+ $(wildcard include/config/DEBUG_MAPLE_TREE) \
+ include/linux/rwsem.h \
+ $(wildcard include/config/RWSEM_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_RWSEMS) \
+ include/linux/osq_lock.h \
+ include/linux/completion.h \
+ include/linux/swait.h \
+ include/linux/wait.h \
+ include/uapi/linux/wait.h \
+ include/linux/uprobes.h \
+ $(wildcard include/config/UPROBES) \
+ arch/x86/include/asm/uprobes.h \
+ include/linux/notifier.h \
+ include/linux/mutex.h \
+ $(wildcard include/config/MUTEX_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_MUTEXES) \
+ include/linux/debug_locks.h \
+ include/linux/srcu.h \
+ $(wildcard include/config/TINY_SRCU) \
+ $(wildcard include/config/NEED_SRCU_NMI_SAFE) \
+ include/linux/workqueue.h \
+ $(wildcard include/config/DEBUG_OBJECTS_WORK) \
+ $(wildcard include/config/FREEZER) \
+ $(wildcard include/config/WQ_WATCHDOG) \
+ include/linux/timer.h \
+ $(wildcard include/config/DEBUG_OBJECTS_TIMERS) \
+ include/linux/ktime.h \
+ include/linux/jiffies.h \
+ include/vdso/jiffies.h \
+ include/generated/timeconst.h \
+ include/vdso/ktime.h \
+ include/linux/timekeeping.h \
+ $(wildcard include/config/GENERIC_CMOS_UPDATE) \
+ include/linux/clocksource_ids.h \
+ include/linux/debugobjects.h \
+ $(wildcard include/config/DEBUG_OBJECTS) \
+ $(wildcard include/config/DEBUG_OBJECTS_FREE) \
+ include/linux/rcu_segcblist.h \
+ include/linux/srcutree.h \
+ include/linux/rcu_node_tree.h \
+ $(wildcard include/config/RCU_FANOUT) \
+ $(wildcard include/config/RCU_FANOUT_LEAF) \
+ include/linux/page-flags-layout.h \
+ include/generated/bounds.h \
+ include/linux/seqlock.h \
+ include/linux/percpu_counter.h \
+ include/linux/percpu.h \
+ $(wildcard include/config/NEED_PER_CPU_EMBED_FIRST_CHUNK) \
+ $(wildcard include/config/NEED_PER_CPU_PAGE_FIRST_CHUNK) \
+ include/linux/mmdebug.h \
+ $(wildcard include/config/DEBUG_VM) \
+ $(wildcard include/config/DEBUG_VM_IRQSOFF) \
+ $(wildcard include/config/DEBUG_VM_PGFLAGS) \
+ arch/x86/include/asm/mmu.h \
+ $(wildcard include/config/MODIFY_LDT_SYSCALL) \
+ include/linux/kmod.h \
+ include/linux/umh.h \
+ include/linux/gfp.h \
+ $(wildcard include/config/HIGHMEM) \
+ $(wildcard include/config/ZONE_DMA) \
+ $(wildcard include/config/ZONE_DMA32) \
+ $(wildcard include/config/ZONE_DEVICE) \
+ $(wildcard include/config/PM_SLEEP) \
+ $(wildcard include/config/CONTIG_ALLOC) \
+ $(wildcard include/config/CMA) \
+ include/linux/mmzone.h \
+ $(wildcard include/config/ARCH_FORCE_MAX_ORDER) \
+ $(wildcard include/config/MEMORY_ISOLATION) \
+ $(wildcard include/config/ZSMALLOC) \
+ $(wildcard include/config/LRU_GEN_STATS) \
+ $(wildcard include/config/MEMORY_HOTPLUG) \
+ $(wildcard include/config/COMPACTION) \
+ $(wildcard include/config/PAGE_EXTENSION) \
+ $(wildcard include/config/DEFERRED_STRUCT_PAGE_INIT) \
+ $(wildcard include/config/HAVE_MEMORYLESS_NODES) \
+ $(wildcard include/config/SPARSEMEM_EXTREME) \
+ $(wildcard include/config/HAVE_ARCH_PFN_VALID) \
+ include/linux/nodemask.h \
+ include/linux/random.h \
+ $(wildcard include/config/VMGENID) \
+ include/uapi/linux/random.h \
+ include/linux/irqnr.h \
+ include/uapi/linux/irqnr.h \
+ include/linux/prandom.h \
+ include/linux/once.h \
+ include/linux/pageblock-flags.h \
+ $(wildcard include/config/HUGETLB_PAGE_SIZE_VARIABLE) \
+ include/linux/page-flags.h \
+ $(wildcard include/config/ARCH_USES_PG_UNCACHED) \
+ $(wildcard include/config/MEMORY_FAILURE) \
+ $(wildcard include/config/PAGE_IDLE_FLAG) \
+ $(wildcard include/config/ARCH_USES_PG_ARCH_X) \
+ $(wildcard include/config/HUGETLB_PAGE_OPTIMIZE_VMEMMAP) \
+ include/linux/local_lock.h \
+ include/linux/local_lock_internal.h \
+ include/linux/memory_hotplug.h \
+ $(wildcard include/config/HAVE_ARCH_NODEDATA_EXTENSION) \
+ $(wildcard include/config/ARCH_HAS_ADD_PAGES) \
+ $(wildcard include/config/MEMORY_HOTREMOVE) \
+ arch/x86/include/asm/mmzone.h \
+ arch/x86/include/asm/mmzone_64.h \
+ include/linux/topology.h \
+ $(wildcard include/config/USE_PERCPU_NUMA_NODE_ID) \
+ $(wildcard include/config/SCHED_SMT) \
+ include/linux/arch_topology.h \
+ $(wildcard include/config/ACPI_CPPC_LIB) \
+ $(wildcard include/config/GENERIC_ARCH_TOPOLOGY) \
+ arch/x86/include/asm/topology.h \
+ $(wildcard include/config/SCHED_MC_PRIO) \
+ arch/x86/include/asm/mpspec.h \
+ $(wildcard include/config/EISA) \
+ $(wildcard include/config/X86_MPPARSE) \
+ arch/x86/include/asm/mpspec_def.h \
+ arch/x86/include/asm/x86_init.h \
+ arch/x86/include/asm/apicdef.h \
+ include/asm-generic/topology.h \
+ include/linux/sysctl.h \
+ $(wildcard include/config/SYSCTL) \
+ include/uapi/linux/sysctl.h \
+ include/linux/elf.h \
+ $(wildcard include/config/ARCH_USE_GNU_PROPERTY) \
+ $(wildcard include/config/ARCH_HAVE_ELF_PROT) \
+ arch/x86/include/asm/elf.h \
+ $(wildcard include/config/X86_X32_ABI) \
+ arch/x86/include/asm/user.h \
+ arch/x86/include/asm/user_64.h \
+ arch/x86/include/asm/fsgsbase.h \
+ arch/x86/include/asm/vdso.h \
+ include/uapi/linux/elf.h \
+ include/uapi/linux/elf-em.h \
+ include/linux/kobject.h \
+ $(wildcard include/config/UEVENT_HELPER) \
+ $(wildcard include/config/DEBUG_KOBJECT_RELEASE) \
+ include/linux/sysfs.h \
+ include/linux/kernfs.h \
+ $(wildcard include/config/KERNFS) \
+ include/linux/idr.h \
+ include/linux/radix-tree.h \
+ include/linux/xarray.h \
+ $(wildcard include/config/XARRAY_MULTI) \
+ include/linux/kconfig.h \
+ include/linux/sched/mm.h \
+ $(wildcard include/config/ARCH_HAS_MEMBARRIER_CALLBACKS) \
+ include/linux/sched.h \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_NATIVE) \
+ $(wildcard include/config/SCHED_INFO) \
+ $(wildcard include/config/SCHEDSTATS) \
+ $(wildcard include/config/SCHED_CORE) \
+ $(wildcard include/config/FAIR_GROUP_SCHED) \
+ $(wildcard include/config/RT_GROUP_SCHED) \
+ $(wildcard include/config/RT_MUTEXES) \
+ $(wildcard include/config/UCLAMP_TASK) \
+ $(wildcard include/config/UCLAMP_BUCKETS_COUNT) \
+ $(wildcard include/config/KMAP_LOCAL) \
+ $(wildcard include/config/CGROUP_SCHED) \
+ $(wildcard include/config/BLK_DEV_IO_TRACE) \
+ $(wildcard include/config/COMPAT_BRK) \
+ $(wildcard include/config/CGROUPS) \
+ $(wildcard include/config/BLK_CGROUP) \
+ $(wildcard include/config/PSI) \
+ $(wildcard include/config/PAGE_OWNER) \
+ $(wildcard include/config/EVENTFD) \
+ $(wildcard include/config/CPU_SUP_INTEL) \
+ $(wildcard include/config/TASK_DELAY_ACCT) \
+ $(wildcard include/config/ARCH_HAS_SCALED_CPUTIME) \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_GEN) \
+ $(wildcard include/config/POSIX_CPUTIMERS) \
+ $(wildcard include/config/POSIX_CPU_TIMERS_TASK_WORK) \
+ $(wildcard include/config/KEYS) \
+ $(wildcard include/config/SYSVIPC) \
+ $(wildcard include/config/DETECT_HUNG_TASK) \
+ $(wildcard include/config/IO_URING) \
+ $(wildcard include/config/AUDIT) \
+ $(wildcard include/config/AUDITSYSCALL) \
+ $(wildcard include/config/UBSAN) \
+ $(wildcard include/config/UBSAN_TRAP) \
+ $(wildcard include/config/TASK_XACCT) \
+ $(wildcard include/config/CPUSETS) \
+ $(wildcard include/config/X86_CPU_RESCTRL) \
+ $(wildcard include/config/FUTEX) \
+ $(wildcard include/config/PERF_EVENTS) \
+ $(wildcard include/config/RSEQ) \
+ $(wildcard include/config/FAULT_INJECTION) \
+ $(wildcard include/config/LATENCYTOP) \
+ $(wildcard include/config/FUNCTION_GRAPH_TRACER) \
+ $(wildcard include/config/BCACHE) \
+ $(wildcard include/config/VMAP_STACK) \
+ $(wildcard include/config/SECURITY) \
+ $(wildcard include/config/BPF_SYSCALL) \
+ $(wildcard include/config/GCC_PLUGIN_STACKLEAK) \
+ $(wildcard include/config/X86_MCE) \
+ $(wildcard include/config/KRETPROBES) \
+ $(wildcard include/config/RETHOOK) \
+ $(wildcard include/config/ARCH_HAS_PARANOID_L1D_FLUSH) \
+ $(wildcard include/config/RV) \
+ $(wildcard include/config/ARCH_TASK_STRUCT_ON_STACK) \
+ $(wildcard include/config/PREEMPT_NONE) \
+ $(wildcard include/config/PREEMPT_VOLUNTARY) \
+ $(wildcard include/config/DEBUG_RSEQ) \
+ include/uapi/linux/sched.h \
+ include/linux/pid.h \
+ include/linux/rculist.h \
+ $(wildcard include/config/PROVE_RCU_LIST) \
+ include/linux/sem.h \
+ include/uapi/linux/sem.h \
+ include/linux/ipc.h \
+ include/linux/rhashtable-types.h \
+ include/uapi/linux/ipc.h \
+ arch/x86/include/generated/uapi/asm/ipcbuf.h \
+ include/uapi/asm-generic/ipcbuf.h \
+ arch/x86/include/uapi/asm/sembuf.h \
+ include/linux/shm.h \
+ include/uapi/linux/shm.h \
+ include/uapi/asm-generic/hugetlb_encode.h \
+ arch/x86/include/uapi/asm/shmbuf.h \
+ include/uapi/asm-generic/shmbuf.h \
+ arch/x86/include/asm/shmparam.h \
+ include/linux/kmsan_types.h \
+ include/linux/plist.h \
+ $(wildcard include/config/DEBUG_PLIST) \
+ include/linux/hrtimer.h \
+ $(wildcard include/config/HIGH_RES_TIMERS) \
+ $(wildcard include/config/TIME_LOW_RES) \
+ $(wildcard include/config/TIMERFD) \
+ include/linux/hrtimer_defs.h \
+ include/linux/timerqueue.h \
+ include/linux/seccomp.h \
+ $(wildcard include/config/SECCOMP) \
+ $(wildcard include/config/HAVE_ARCH_SECCOMP_FILTER) \
+ $(wildcard include/config/SECCOMP_FILTER) \
+ $(wildcard include/config/CHECKPOINT_RESTORE) \
+ $(wildcard include/config/SECCOMP_CACHE_DEBUG) \
+ include/uapi/linux/seccomp.h \
+ arch/x86/include/asm/seccomp.h \
+ arch/x86/include/asm/unistd.h \
+ arch/x86/include/uapi/asm/unistd.h \
+ arch/x86/include/generated/uapi/asm/unistd_64.h \
+ arch/x86/include/generated/asm/unistd_64_x32.h \
+ arch/x86/include/generated/asm/unistd_32_ia32.h \
+ arch/x86/include/asm/ia32_unistd.h \
+ include/asm-generic/seccomp.h \
+ include/uapi/linux/unistd.h \
+ include/linux/resource.h \
+ include/uapi/linux/resource.h \
+ arch/x86/include/generated/uapi/asm/resource.h \
+ include/asm-generic/resource.h \
+ include/uapi/asm-generic/resource.h \
+ include/linux/latencytop.h \
+ include/linux/sched/prio.h \
+ include/linux/sched/types.h \
+ include/linux/signal_types.h \
+ $(wildcard include/config/OLD_SIGACTION) \
+ include/uapi/linux/signal.h \
+ arch/x86/include/asm/signal.h \
+ arch/x86/include/uapi/asm/signal.h \
+ include/uapi/asm-generic/signal-defs.h \
+ arch/x86/include/uapi/asm/siginfo.h \
+ include/uapi/asm-generic/siginfo.h \
+ include/linux/syscall_user_dispatch.h \
+ include/linux/task_io_accounting.h \
+ $(wildcard include/config/TASK_IO_ACCOUNTING) \
+ include/linux/posix-timers.h \
+ include/linux/alarmtimer.h \
+ $(wildcard include/config/RTC_CLASS) \
+ include/uapi/linux/rseq.h \
+ include/linux/kcsan.h \
+ include/linux/rv.h \
+ $(wildcard include/config/RV_REACTORS) \
+ arch/x86/include/generated/asm/kmap_size.h \
+ include/asm-generic/kmap_size.h \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL) \
+ include/linux/sync_core.h \
+ $(wildcard include/config/ARCH_HAS_SYNC_CORE_BEFORE_USERMODE) \
+ arch/x86/include/asm/sync_core.h \
+ include/linux/ioasid.h \
+ $(wildcard include/config/IOASID) \
+ include/linux/kobject_ns.h \
+ include/linux/moduleparam.h \
+ $(wildcard include/config/ALPHA) \
+ $(wildcard include/config/IA64) \
+ $(wildcard include/config/PPC64) \
+ include/linux/rbtree_latch.h \
+ include/linux/error-injection.h \
+ include/asm-generic/error-injection.h \
+ arch/x86/include/asm/module.h \
+ $(wildcard include/config/UNWINDER_ORC) \
+ include/asm-generic/module.h \
+ $(wildcard include/config/HAVE_MOD_ARCH_SPECIFIC) \
+ $(wildcard include/config/MODULES_USE_ELF_REL) \
+ $(wildcard include/config/MODULES_USE_ELF_RELA) \
+ arch/x86/include/asm/orc_types.h \
+ include/linux/usb.h \
+ $(wildcard include/config/USB_MON) \
+ $(wildcard include/config/PM) \
+ $(wildcard include/config/ACPI) \
+ $(wildcard include/config/USB_LED_TRIG) \
+ include/linux/mod_devicetable.h \
+ include/linux/uuid.h \
+ include/uapi/linux/uuid.h \
+ include/linux/usb/ch9.h \
+ include/uapi/linux/usb/ch9.h \
+ include/linux/delay.h \
+ arch/x86/include/asm/delay.h \
+ include/asm-generic/delay.h \
+ include/linux/interrupt.h \
+ $(wildcard include/config/IRQ_FORCED_THREADING) \
+ $(wildcard include/config/GENERIC_IRQ_PROBE) \
+ $(wildcard include/config/IRQ_TIMINGS) \
+ include/linux/irqreturn.h \
+ include/linux/hardirq.h \
+ include/linux/context_tracking_state.h \
+ $(wildcard include/config/CONTEXT_TRACKING_USER) \
+ $(wildcard include/config/CONTEXT_TRACKING) \
+ include/linux/ftrace_irq.h \
+ $(wildcard include/config/HWLAT_TRACER) \
+ $(wildcard include/config/OSNOISE_TRACER) \
+ include/linux/vtime.h \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING) \
+ $(wildcard include/config/IRQ_TIME_ACCOUNTING) \
+ arch/x86/include/asm/hardirq.h \
+ $(wildcard include/config/KVM_INTEL) \
+ $(wildcard include/config/HAVE_KVM) \
+ $(wildcard include/config/X86_THERMAL_VECTOR) \
+ $(wildcard include/config/X86_MCE_THRESHOLD) \
+ $(wildcard include/config/X86_MCE_AMD) \
+ $(wildcard include/config/X86_HV_CALLBACK_VECTOR) \
+ $(wildcard include/config/HYPERV) \
+ arch/x86/include/asm/irq.h \
+ arch/x86/include/asm/irq_vectors.h \
+ $(wildcard include/config/X86_IO_APIC) \
+ $(wildcard include/config/PCI_MSI) \
+ arch/x86/include/asm/sections.h \
+ include/asm-generic/sections.h \
+ $(wildcard include/config/HAVE_FUNCTION_DESCRIPTORS) \
+ arch/x86/include/asm/extable.h \
+ $(wildcard include/config/BPF_JIT) \
+ include/linux/device.h \
+ $(wildcard include/config/GENERIC_MSI_IRQ) \
+ $(wildcard include/config/ENERGY_MODEL) \
+ $(wildcard include/config/PINCTRL) \
+ $(wildcard include/config/DMA_OPS) \
+ $(wildcard include/config/DMA_DECLARE_COHERENT) \
+ $(wildcard include/config/DMA_CMA) \
+ $(wildcard include/config/SWIOTLB) \
+ $(wildcard include/config/ARCH_HAS_SYNC_DMA_FOR_DEVICE) \
+ $(wildcard include/config/ARCH_HAS_SYNC_DMA_FOR_CPU) \
+ $(wildcard include/config/ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) \
+ $(wildcard include/config/DMA_OPS_BYPASS) \
+ $(wildcard include/config/OF) \
+ $(wildcard include/config/DEVTMPFS) \
+ $(wildcard include/config/SYSFS_DEPRECATED) \
+ include/linux/dev_printk.h \
+ include/linux/ratelimit.h \
+ include/linux/energy_model.h \
+ include/linux/sched/cpufreq.h \
+ $(wildcard include/config/CPU_FREQ) \
+ include/linux/sched/topology.h \
+ $(wildcard include/config/SCHED_DEBUG) \
+ $(wildcard include/config/SCHED_CLUSTER) \
+ $(wildcard include/config/SCHED_MC) \
+ $(wildcard include/config/CPU_FREQ_GOV_SCHEDUTIL) \
+ include/linux/sched/idle.h \
+ include/linux/sched/sd_flags.h \
+ include/linux/ioport.h \
+ include/linux/klist.h \
+ include/linux/pm.h \
+ $(wildcard include/config/VT_CONSOLE_SLEEP) \
+ $(wildcard include/config/CXL_SUSPEND) \
+ $(wildcard include/config/PM_CLK) \
+ $(wildcard include/config/PM_GENERIC_DOMAINS) \
+ include/linux/overflow.h \
+ include/linux/device/bus.h \
+ include/linux/device/class.h \
+ include/linux/device/driver.h \
+ arch/x86/include/asm/device.h \
+ include/linux/pm_wakeup.h \
+ include/linux/fs.h \
+ $(wildcard include/config/READ_ONLY_THP_FOR_FS) \
+ $(wildcard include/config/FS_POSIX_ACL) \
+ $(wildcard include/config/CGROUP_WRITEBACK) \
+ $(wildcard include/config/IMA) \
+ $(wildcard include/config/FILE_LOCKING) \
+ $(wildcard include/config/FSNOTIFY) \
+ $(wildcard include/config/FS_ENCRYPTION) \
+ $(wildcard include/config/FS_VERITY) \
+ $(wildcard include/config/EPOLL) \
+ $(wildcard include/config/UNICODE) \
+ $(wildcard include/config/QUOTA) \
+ $(wildcard include/config/FS_DAX) \
+ $(wildcard include/config/BLOCK) \
+ include/linux/wait_bit.h \
+ include/linux/kdev_t.h \
+ include/uapi/linux/kdev_t.h \
+ include/linux/dcache.h \
+ include/linux/rculist_bl.h \
+ include/linux/list_bl.h \
+ include/linux/bit_spinlock.h \
+ include/linux/lockref.h \
+ $(wildcard include/config/ARCH_USE_CMPXCHG_LOCKREF) \
+ include/linux/stringhash.h \
+ $(wildcard include/config/DCACHE_WORD_ACCESS) \
+ include/linux/hash.h \
+ $(wildcard include/config/HAVE_ARCH_HASH) \
+ include/linux/path.h \
+ include/linux/list_lru.h \
+ $(wildcard include/config/MEMCG_KMEM) \
+ include/linux/shrinker.h \
+ $(wildcard include/config/SHRINKER_DEBUG) \
+ include/linux/capability.h \
+ include/uapi/linux/capability.h \
+ include/linux/semaphore.h \
+ include/linux/fcntl.h \
+ $(wildcard include/config/ARCH_32BIT_OFF_T) \
+ include/uapi/linux/fcntl.h \
+ arch/x86/include/generated/uapi/asm/fcntl.h \
+ include/uapi/asm-generic/fcntl.h \
+ include/uapi/linux/openat2.h \
+ include/linux/migrate_mode.h \
+ include/linux/percpu-rwsem.h \
+ include/linux/rcuwait.h \
+ include/linux/sched/signal.h \
+ $(wildcard include/config/SCHED_AUTOGROUP) \
+ $(wildcard include/config/BSD_PROCESS_ACCT) \
+ $(wildcard include/config/TASKSTATS) \
+ $(wildcard include/config/STACK_GROWSUP) \
+ include/linux/signal.h \
+ $(wildcard include/config/DYNAMIC_SIGFRAME) \
+ include/linux/sched/jobctl.h \
+ include/linux/sched/task.h \
+ $(wildcard include/config/HAVE_EXIT_THREAD) \
+ $(wildcard include/config/ARCH_WANTS_DYNAMIC_TASK_STRUCT) \
+ $(wildcard include/config/HAVE_ARCH_THREAD_STRUCT_WHITELIST) \
+ include/linux/uaccess.h \
+ $(wildcard include/config/ARCH_HAS_SUBPAGE_FAULTS) \
+ include/linux/fault-inject-usercopy.h \
+ $(wildcard include/config/FAULT_INJECTION_USERCOPY) \
+ arch/x86/include/asm/uaccess.h \
+ $(wildcard include/config/CC_HAS_ASM_GOTO_OUTPUT) \
+ $(wildcard include/config/CC_HAS_ASM_GOTO_TIED_OUTPUT) \
+ $(wildcard include/config/ARCH_HAS_COPY_MC) \
+ $(wildcard include/config/X86_INTEL_USERCOPY) \
+ arch/x86/include/asm/smap.h \
+ include/asm-generic/access_ok.h \
+ $(wildcard include/config/ALTERNATE_USER_ADDRESS_SPACE) \
+ arch/x86/include/asm/uaccess_64.h \
+ include/linux/cred.h \
+ $(wildcard include/config/DEBUG_CREDENTIALS) \
+ include/linux/key.h \
+ $(wildcard include/config/KEY_NOTIFICATIONS) \
+ $(wildcard include/config/NET) \
+ include/linux/assoc_array.h \
+ $(wildcard include/config/ASSOCIATIVE_ARRAY) \
+ include/linux/sched/user.h \
+ $(wildcard include/config/VFIO_PCI_ZDEV_KVM) \
+ $(wildcard include/config/IOMMUFD) \
+ $(wildcard include/config/WATCH_QUEUE) \
+ include/linux/rcu_sync.h \
+ include/linux/delayed_call.h \
+ include/linux/errseq.h \
+ include/linux/ioprio.h \
+ include/linux/sched/rt.h \
+ include/linux/iocontext.h \
+ $(wildcard include/config/BLK_ICQ) \
+ include/uapi/linux/ioprio.h \
+ include/linux/fs_types.h \
+ include/linux/mount.h \
+ include/linux/mnt_idmapping.h \
+ include/linux/slab.h \
+ $(wildcard include/config/DEBUG_SLAB) \
+ $(wildcard include/config/FAILSLAB) \
+ $(wildcard include/config/KFENCE) \
+ $(wildcard include/config/SLUB_TINY) \
+ $(wildcard include/config/SLAB) \
+ $(wildcard include/config/SLUB) \
+ $(wildcard include/config/SLOB) \
+ include/linux/percpu-refcount.h \
+ include/linux/kasan.h \
+ $(wildcard include/config/KASAN_STACK) \
+ $(wildcard include/config/KASAN_VMALLOC) \
+ $(wildcard include/config/KASAN_INLINE) \
+ include/linux/kasan-enabled.h \
+ include/uapi/linux/fs.h \
+ include/linux/quota.h \
+ $(wildcard include/config/QUOTA_NETLINK_INTERFACE) \
+ 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/pm_runtime.h \
+
+/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o: $(deps_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o)
+
+$(deps_/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o):
+
+/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o: $(wildcard ./tools/objtool/objtool)
diff --git a/smartlamp-kernel-module/.sysfs.ko.cmd b/smartlamp-kernel-module/.sysfs.ko.cmd
new file mode 100644
index 0000000..ca667ed
--- /dev/null
+++ b/smartlamp-kernel-module/.sysfs.ko.cmd
@@ -0,0 +1 @@
+cmd_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.ko := ld -r -m elf_x86_64 -z noexecstack --build-id=sha1 -T scripts/module.lds -o /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.ko /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o; true
diff --git a/smartlamp-kernel-module/.sysfs.mod.cmd b/smartlamp-kernel-module/.sysfs.mod.cmd
new file mode 100644
index 0000000..8617994
--- /dev/null
+++ b/smartlamp-kernel-module/.sysfs.mod.cmd
@@ -0,0 +1 @@
+cmd_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod := { echo /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o; echo; } > /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod
diff --git a/smartlamp-kernel-module/.sysfs.mod.o.cmd b/smartlamp-kernel-module/.sysfs.mod.o.cmd
new file mode 100644
index 0000000..1e2cc02
--- /dev/null
+++ b/smartlamp-kernel-module/.sysfs.mod.o.cmd
@@ -0,0 +1,706 @@
+cmd_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o := gcc -Wp,-MMD,/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/.sysfs.mod.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/11/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -I./ubuntu/include -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wimplicit-fallthrough=5 -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -g -gdwarf-5 -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -Wno-alloc-size-larger-than -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -fsanitize=bounds -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"sysfs.mod"' -DKBUILD_MODNAME='"sysfs"' -D__KBUILD_MODNAME=kmod_sysfs -c -o /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.c
+
+source_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o := /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.c
+
+deps_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o := \
+ $(wildcard include/config/MODULE_UNLOAD) \
+ $(wildcard include/config/RETPOLINE) \
+ include/linux/compiler-version.h \
+ $(wildcard include/config/CC_VERSION_TEXT) \
+ include/linux/kconfig.h \
+ $(wildcard include/config/CPU_BIG_ENDIAN) \
+ $(wildcard include/config/BOOGER) \
+ $(wildcard include/config/FOO) \
+ include/linux/compiler_types.h \
+ $(wildcard include/config/HAVE_ARCH_COMPILER_H) \
+ $(wildcard include/config/CC_HAS_ASM_INLINE) \
+ include/linux/compiler_attributes.h \
+ include/linux/compiler-gcc.h \
+ $(wildcard include/config/ARCH_USE_BUILTIN_BSWAP) \
+ $(wildcard include/config/KCOV) \
+ include/linux/module.h \
+ $(wildcard include/config/MODULES) \
+ $(wildcard include/config/SYSFS) \
+ $(wildcard include/config/MODULES_TREE_LOOKUP) \
+ $(wildcard include/config/LIVEPATCH) \
+ $(wildcard include/config/STACKTRACE_BUILD_ID) \
+ $(wildcard include/config/CFI_CLANG) \
+ $(wildcard include/config/MODULE_SIG) \
+ $(wildcard include/config/GENERIC_BUG) \
+ $(wildcard include/config/KALLSYMS) \
+ $(wildcard include/config/SMP) \
+ $(wildcard include/config/TRACEPOINTS) \
+ $(wildcard include/config/TREE_SRCU) \
+ $(wildcard include/config/BPF_EVENTS) \
+ $(wildcard include/config/DEBUG_INFO_BTF_MODULES) \
+ $(wildcard include/config/JUMP_LABEL) \
+ $(wildcard include/config/TRACING) \
+ $(wildcard include/config/EVENT_TRACING) \
+ $(wildcard include/config/FTRACE_MCOUNT_RECORD) \
+ $(wildcard include/config/KPROBES) \
+ $(wildcard include/config/HAVE_STATIC_CALL_INLINE) \
+ $(wildcard include/config/PRINTK_INDEX) \
+ $(wildcard include/config/CONSTRUCTORS) \
+ $(wildcard include/config/FUNCTION_ERROR_INJECTION) \
+ include/linux/list.h \
+ $(wildcard include/config/DEBUG_LIST) \
+ include/linux/types.h \
+ $(wildcard include/config/HAVE_UID16) \
+ $(wildcard include/config/UID16) \
+ $(wildcard include/config/ARCH_DMA_ADDR_T_64BIT) \
+ $(wildcard include/config/PHYS_ADDR_T_64BIT) \
+ $(wildcard include/config/64BIT) \
+ $(wildcard include/config/ARCH_32BIT_USTAT_F_TINODE) \
+ include/uapi/linux/types.h \
+ arch/x86/include/generated/uapi/asm/types.h \
+ include/uapi/asm-generic/types.h \
+ include/asm-generic/int-ll64.h \
+ include/uapi/asm-generic/int-ll64.h \
+ arch/x86/include/uapi/asm/bitsperlong.h \
+ include/asm-generic/bitsperlong.h \
+ include/uapi/asm-generic/bitsperlong.h \
+ include/uapi/linux/posix_types.h \
+ include/linux/stddef.h \
+ include/uapi/linux/stddef.h \
+ include/linux/compiler_types.h \
+ arch/x86/include/asm/posix_types.h \
+ $(wildcard include/config/X86_32) \
+ arch/x86/include/uapi/asm/posix_types_64.h \
+ include/uapi/asm-generic/posix_types.h \
+ include/linux/poison.h \
+ $(wildcard include/config/ILLEGAL_POINTER_VALUE) \
+ include/linux/const.h \
+ include/vdso/const.h \
+ include/uapi/linux/const.h \
+ include/linux/kernel.h \
+ $(wildcard include/config/PREEMPT_VOLUNTARY) \
+ $(wildcard include/config/PREEMPT_DYNAMIC) \
+ $(wildcard include/config/PREEMPT_) \
+ $(wildcard include/config/DEBUG_ATOMIC_SLEEP) \
+ $(wildcard include/config/MMU) \
+ $(wildcard include/config/PROVE_LOCKING) \
+ include/linux/stdarg.h \
+ include/linux/align.h \
+ include/linux/limits.h \
+ include/uapi/linux/limits.h \
+ include/vdso/limits.h \
+ include/linux/linkage.h \
+ $(wildcard include/config/FUNCTION_ALIGNMENT) \
+ $(wildcard include/config/ARCH_USE_SYM_ANNOTATIONS) \
+ include/linux/stringify.h \
+ include/linux/export.h \
+ $(wildcard include/config/MODVERSIONS) \
+ $(wildcard include/config/MODULE_REL_CRCS) \
+ $(wildcard include/config/HAVE_ARCH_PREL32_RELOCATIONS) \
+ $(wildcard include/config/TRIM_UNUSED_KSYMS) \
+ include/linux/compiler.h \
+ $(wildcard include/config/TRACE_BRANCH_PROFILING) \
+ $(wildcard include/config/PROFILE_ALL_BRANCHES) \
+ $(wildcard include/config/STACK_VALIDATION) \
+ arch/x86/include/generated/asm/rwonce.h \
+ include/asm-generic/rwonce.h \
+ include/linux/kasan-checks.h \
+ $(wildcard include/config/KASAN_GENERIC) \
+ $(wildcard include/config/KASAN_SW_TAGS) \
+ include/linux/kcsan-checks.h \
+ $(wildcard include/config/KCSAN) \
+ $(wildcard include/config/KCSAN_IGNORE_ATOMICS) \
+ arch/x86/include/asm/linkage.h \
+ $(wildcard include/config/RETHUNK) \
+ $(wildcard include/config/SLS) \
+ include/linux/bitops.h \
+ include/linux/bits.h \
+ include/vdso/bits.h \
+ include/linux/build_bug.h \
+ include/linux/typecheck.h \
+ include/uapi/linux/kernel.h \
+ include/uapi/linux/sysinfo.h \
+ arch/x86/include/asm/bitops.h \
+ $(wildcard include/config/X86_64) \
+ $(wildcard include/config/X86_CMOV) \
+ arch/x86/include/asm/alternative.h \
+ arch/x86/include/asm/asm.h \
+ arch/x86/include/asm/extable_fixup_types.h \
+ arch/x86/include/asm/rmwcc.h \
+ $(wildcard include/config/CC_HAS_ASM_GOTO) \
+ arch/x86/include/asm/barrier.h \
+ arch/x86/include/asm/nops.h \
+ include/asm-generic/barrier.h \
+ include/asm-generic/bitops/find.h \
+ $(wildcard include/config/GENERIC_FIND_FIRST_BIT) \
+ include/asm-generic/bitops/sched.h \
+ arch/x86/include/asm/arch_hweight.h \
+ arch/x86/include/asm/cpufeatures.h \
+ arch/x86/include/asm/required-features.h \
+ $(wildcard include/config/X86_MINIMUM_CPU_FAMILY) \
+ $(wildcard include/config/MATH_EMULATION) \
+ $(wildcard include/config/X86_PAE) \
+ $(wildcard include/config/X86_CMPXCHG64) \
+ $(wildcard include/config/X86_USE_3DNOW) \
+ $(wildcard include/config/X86_P6_NOP) \
+ $(wildcard include/config/MATOM) \
+ $(wildcard include/config/PARAVIRT_XXL) \
+ arch/x86/include/asm/disabled-features.h \
+ $(wildcard include/config/X86_SMAP) \
+ $(wildcard include/config/X86_UMIP) \
+ $(wildcard include/config/X86_INTEL_MEMORY_PROTECTION_KEYS) \
+ $(wildcard include/config/X86_5LEVEL) \
+ $(wildcard include/config/PAGE_TABLE_ISOLATION) \
+ $(wildcard include/config/CPU_UNRET_ENTRY) \
+ $(wildcard include/config/X86_SGX) \
+ include/asm-generic/bitops/const_hweight.h \
+ include/asm-generic/bitops/instrumented-atomic.h \
+ include/linux/instrumented.h \
+ include/asm-generic/bitops/instrumented-non-atomic.h \
+ $(wildcard include/config/KCSAN_ASSUME_PLAIN_WRITES_ATOMIC) \
+ include/asm-generic/bitops/instrumented-lock.h \
+ include/asm-generic/bitops/le.h \
+ arch/x86/include/uapi/asm/byteorder.h \
+ include/linux/byteorder/little_endian.h \
+ include/uapi/linux/byteorder/little_endian.h \
+ include/linux/swab.h \
+ include/uapi/linux/swab.h \
+ arch/x86/include/uapi/asm/swab.h \
+ include/linux/byteorder/generic.h \
+ include/asm-generic/bitops/ext2-atomic-setbit.h \
+ include/linux/kstrtox.h \
+ include/linux/log2.h \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U32) \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U64) \
+ include/linux/math.h \
+ arch/x86/include/asm/div64.h \
+ include/asm-generic/div64.h \
+ include/linux/minmax.h \
+ include/linux/panic.h \
+ $(wildcard include/config/PANIC_TIMEOUT) \
+ include/linux/printk.h \
+ $(wildcard include/config/MESSAGE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_QUIET) \
+ $(wildcard include/config/EARLY_PRINTK) \
+ $(wildcard include/config/PRINTK) \
+ $(wildcard include/config/DYNAMIC_DEBUG) \
+ $(wildcard include/config/DYNAMIC_DEBUG_CORE) \
+ include/linux/init.h \
+ $(wildcard include/config/STRICT_KERNEL_RWX) \
+ $(wildcard include/config/STRICT_MODULE_RWX) \
+ $(wildcard include/config/LTO_CLANG) \
+ include/linux/kern_levels.h \
+ include/linux/cache.h \
+ $(wildcard include/config/ARCH_HAS_CACHE_LINE_SIZE) \
+ arch/x86/include/asm/cache.h \
+ $(wildcard include/config/X86_L1_CACHE_SHIFT) \
+ $(wildcard include/config/X86_INTERNODE_CACHE_SHIFT) \
+ $(wildcard include/config/X86_VSMP) \
+ include/linux/ratelimit_types.h \
+ include/uapi/linux/param.h \
+ arch/x86/include/generated/uapi/asm/param.h \
+ include/asm-generic/param.h \
+ $(wildcard include/config/HZ) \
+ include/uapi/asm-generic/param.h \
+ include/linux/spinlock_types.h \
+ $(wildcard include/config/PREEMPT_RT) \
+ $(wildcard include/config/DEBUG_LOCK_ALLOC) \
+ include/linux/spinlock_types_raw.h \
+ $(wildcard include/config/DEBUG_SPINLOCK) \
+ arch/x86/include/asm/spinlock_types.h \
+ include/asm-generic/qspinlock_types.h \
+ $(wildcard include/config/NR_CPUS) \
+ include/asm-generic/qrwlock_types.h \
+ include/linux/lockdep_types.h \
+ $(wildcard include/config/PROVE_RAW_LOCK_NESTING) \
+ $(wildcard include/config/PREEMPT_LOCK) \
+ $(wildcard include/config/LOCKDEP) \
+ $(wildcard include/config/LOCK_STAT) \
+ include/linux/rwlock_types.h \
+ include/linux/once_lite.h \
+ include/linux/dynamic_debug.h \
+ include/linux/jump_label.h \
+ $(wildcard include/config/HAVE_ARCH_JUMP_LABEL_RELATIVE) \
+ arch/x86/include/asm/jump_label.h \
+ include/linux/static_call_types.h \
+ $(wildcard include/config/HAVE_STATIC_CALL) \
+ include/linux/stat.h \
+ arch/x86/include/uapi/asm/stat.h \
+ include/uapi/linux/stat.h \
+ include/linux/time.h \
+ $(wildcard include/config/POSIX_TIMERS) \
+ include/linux/math64.h \
+ $(wildcard include/config/ARCH_SUPPORTS_INT128) \
+ include/vdso/math64.h \
+ include/linux/time64.h \
+ include/vdso/time64.h \
+ include/uapi/linux/time.h \
+ include/uapi/linux/time_types.h \
+ include/linux/time32.h \
+ include/linux/timex.h \
+ include/uapi/linux/timex.h \
+ arch/x86/include/asm/timex.h \
+ $(wildcard include/config/X86_TSC) \
+ arch/x86/include/asm/processor.h \
+ $(wildcard include/config/X86_VMX_FEATURE_NAMES) \
+ $(wildcard include/config/X86_IOPL_IOPERM) \
+ $(wildcard include/config/STACKPROTECTOR) \
+ $(wildcard include/config/VM86) \
+ $(wildcard include/config/X86_DEBUGCTLMSR) \
+ $(wildcard include/config/CPU_SUP_AMD) \
+ $(wildcard include/config/XEN) \
+ arch/x86/include/asm/processor-flags.h \
+ arch/x86/include/uapi/asm/processor-flags.h \
+ include/linux/mem_encrypt.h \
+ $(wildcard include/config/ARCH_HAS_MEM_ENCRYPT) \
+ $(wildcard include/config/AMD_MEM_ENCRYPT) \
+ arch/x86/include/asm/mem_encrypt.h \
+ include/linux/cc_platform.h \
+ $(wildcard include/config/ARCH_HAS_CC_PLATFORM) \
+ arch/x86/include/uapi/asm/bootparam.h \
+ include/linux/screen_info.h \
+ include/uapi/linux/screen_info.h \
+ include/linux/apm_bios.h \
+ include/uapi/linux/apm_bios.h \
+ include/uapi/linux/ioctl.h \
+ arch/x86/include/generated/uapi/asm/ioctl.h \
+ include/asm-generic/ioctl.h \
+ include/uapi/asm-generic/ioctl.h \
+ include/linux/edd.h \
+ include/uapi/linux/edd.h \
+ arch/x86/include/asm/ist.h \
+ arch/x86/include/uapi/asm/ist.h \
+ include/video/edid.h \
+ $(wildcard include/config/X86) \
+ include/uapi/video/edid.h \
+ arch/x86/include/asm/math_emu.h \
+ arch/x86/include/asm/ptrace.h \
+ $(wildcard include/config/PARAVIRT) \
+ $(wildcard include/config/IA32_EMULATION) \
+ arch/x86/include/asm/segment.h \
+ $(wildcard include/config/XEN_PV) \
+ arch/x86/include/asm/page_types.h \
+ $(wildcard include/config/PHYSICAL_START) \
+ $(wildcard include/config/PHYSICAL_ALIGN) \
+ $(wildcard include/config/DYNAMIC_PHYSICAL_MASK) \
+ arch/x86/include/asm/page_64_types.h \
+ $(wildcard include/config/KASAN) \
+ $(wildcard include/config/DYNAMIC_MEMORY_LAYOUT) \
+ $(wildcard include/config/RANDOMIZE_BASE) \
+ arch/x86/include/asm/kaslr.h \
+ $(wildcard include/config/RANDOMIZE_MEMORY) \
+ arch/x86/include/uapi/asm/ptrace.h \
+ arch/x86/include/uapi/asm/ptrace-abi.h \
+ arch/x86/include/asm/paravirt_types.h \
+ $(wildcard include/config/PGTABLE_LEVELS) \
+ $(wildcard include/config/PARAVIRT_DEBUG) \
+ arch/x86/include/asm/desc_defs.h \
+ arch/x86/include/asm/pgtable_types.h \
+ $(wildcard include/config/MEM_SOFT_DIRTY) \
+ $(wildcard include/config/HAVE_ARCH_USERFAULTFD_WP) \
+ $(wildcard include/config/PROC_FS) \
+ arch/x86/include/asm/pgtable_64_types.h \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL_FORCE_MAP) \
+ arch/x86/include/asm/sparsemem.h \
+ $(wildcard include/config/SPARSEMEM) \
+ $(wildcard include/config/NUMA_KEEP_MEMINFO) \
+ arch/x86/include/asm/nospec-branch.h \
+ $(wildcard include/config/CPU_SRSO) \
+ $(wildcard include/config/CPU_IBPB_ENTRY) \
+ include/linux/static_key.h \
+ include/linux/objtool.h \
+ $(wildcard include/config/FRAME_POINTER) \
+ arch/x86/include/asm/msr-index.h \
+ arch/x86/include/asm/unwind_hints.h \
+ arch/x86/include/asm/orc_types.h \
+ arch/x86/include/asm/percpu.h \
+ $(wildcard include/config/X86_64_SMP) \
+ include/asm-generic/percpu.h \
+ $(wildcard include/config/DEBUG_PREEMPT) \
+ $(wildcard include/config/HAVE_SETUP_PER_CPU_AREA) \
+ include/linux/threads.h \
+ $(wildcard include/config/BASE_SMALL) \
+ include/linux/percpu-defs.h \
+ $(wildcard include/config/DEBUG_FORCE_WEAK_PER_CPU) \
+ arch/x86/include/asm/GEN-for-each-reg.h \
+ arch/x86/include/asm/proto.h \
+ arch/x86/include/uapi/asm/ldt.h \
+ arch/x86/include/uapi/asm/sigcontext.h \
+ arch/x86/include/asm/current.h \
+ arch/x86/include/asm/page.h \
+ arch/x86/include/asm/page_64.h \
+ $(wildcard include/config/DEBUG_VIRTUAL) \
+ $(wildcard include/config/FLATMEM) \
+ $(wildcard include/config/X86_VSYSCALL_EMULATION) \
+ include/linux/range.h \
+ include/asm-generic/memory_model.h \
+ $(wildcard include/config/SPARSEMEM_VMEMMAP) \
+ include/linux/pfn.h \
+ include/asm-generic/getorder.h \
+ arch/x86/include/asm/msr.h \
+ arch/x86/include/asm/msr-index.h \
+ arch/x86/include/generated/uapi/asm/errno.h \
+ include/uapi/asm-generic/errno.h \
+ include/uapi/asm-generic/errno-base.h \
+ arch/x86/include/asm/cpumask.h \
+ include/linux/cpumask.h \
+ $(wildcard include/config/CPUMASK_OFFSTACK) \
+ $(wildcard include/config/HOTPLUG_CPU) \
+ $(wildcard include/config/DEBUG_PER_CPU_MAPS) \
+ include/linux/bitmap.h \
+ include/linux/string.h \
+ $(wildcard include/config/BINARY_PRINTF) \
+ $(wildcard include/config/FORTIFY_SOURCE) \
+ include/linux/err.h \
+ include/linux/errno.h \
+ include/uapi/linux/errno.h \
+ include/linux/overflow.h \
+ include/uapi/linux/string.h \
+ arch/x86/include/asm/string.h \
+ arch/x86/include/asm/string_64.h \
+ $(wildcard include/config/ARCH_HAS_UACCESS_FLUSHCACHE) \
+ include/linux/fortify-string.h \
+ include/linux/atomic.h \
+ arch/x86/include/asm/atomic.h \
+ arch/x86/include/asm/cmpxchg.h \
+ arch/x86/include/asm/cmpxchg_64.h \
+ arch/x86/include/asm/atomic64_64.h \
+ include/linux/atomic/atomic-arch-fallback.h \
+ $(wildcard include/config/GENERIC_ATOMIC64) \
+ include/linux/atomic/atomic-long.h \
+ include/linux/atomic/atomic-instrumented.h \
+ include/linux/bug.h \
+ $(wildcard include/config/BUG_ON_DATA_CORRUPTION) \
+ arch/x86/include/asm/bug.h \
+ $(wildcard include/config/DEBUG_BUGVERBOSE) \
+ include/linux/instrumentation.h \
+ $(wildcard include/config/DEBUG_ENTRY) \
+ include/asm-generic/bug.h \
+ $(wildcard include/config/BUG) \
+ $(wildcard include/config/GENERIC_BUG_RELATIVE_POINTERS) \
+ arch/x86/include/uapi/asm/msr.h \
+ include/linux/tracepoint-defs.h \
+ arch/x86/include/asm/paravirt.h \
+ $(wildcard include/config/PARAVIRT_SPINLOCKS) \
+ arch/x86/include/asm/frame.h \
+ arch/x86/include/asm/special_insns.h \
+ include/linux/irqflags.h \
+ $(wildcard include/config/TRACE_IRQFLAGS) \
+ $(wildcard include/config/IRQSOFF_TRACER) \
+ $(wildcard include/config/PREEMPT_TRACER) \
+ $(wildcard include/config/DEBUG_IRQFLAGS) \
+ $(wildcard include/config/TRACE_IRQFLAGS_SUPPORT) \
+ arch/x86/include/asm/irqflags.h \
+ arch/x86/include/asm/fpu/types.h \
+ arch/x86/include/asm/vmxfeatures.h \
+ arch/x86/include/asm/vdso/processor.h \
+ include/linux/personality.h \
+ include/uapi/linux/personality.h \
+ arch/x86/include/asm/tsc.h \
+ arch/x86/include/asm/cpufeature.h \
+ $(wildcard include/config/X86_FEATURE_NAMES) \
+ include/vdso/time32.h \
+ include/vdso/time.h \
+ include/linux/uidgid.h \
+ $(wildcard include/config/MULTIUSER) \
+ $(wildcard include/config/USER_NS) \
+ include/linux/highuid.h \
+ include/linux/buildid.h \
+ $(wildcard include/config/CRASH_CORE) \
+ include/linux/mm_types.h \
+ $(wildcard include/config/HAVE_ALIGNED_STRUCT_PAGE) \
+ $(wildcard include/config/MEMCG) \
+ $(wildcard include/config/USERFAULTFD) \
+ $(wildcard include/config/SWAP) \
+ $(wildcard include/config/NUMA) \
+ $(wildcard include/config/HAVE_ARCH_COMPAT_MMAP_BASES) \
+ $(wildcard include/config/MEMBARRIER) \
+ $(wildcard include/config/AIO) \
+ $(wildcard include/config/MMU_NOTIFIER) \
+ $(wildcard include/config/TRANSPARENT_HUGEPAGE) \
+ $(wildcard include/config/NUMA_BALANCING) \
+ $(wildcard include/config/ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) \
+ $(wildcard include/config/HUGETLB_PAGE) \
+ $(wildcard include/config/IOMMU_SUPPORT) \
+ include/linux/mm_types_task.h \
+ $(wildcard include/config/SPLIT_PTLOCK_CPUS) \
+ $(wildcard include/config/ARCH_ENABLE_SPLIT_PMD_PTLOCK) \
+ arch/x86/include/asm/tlbbatch.h \
+ include/linux/auxvec.h \
+ include/uapi/linux/auxvec.h \
+ arch/x86/include/uapi/asm/auxvec.h \
+ include/linux/spinlock.h \
+ $(wildcard include/config/PREEMPTION) \
+ include/linux/preempt.h \
+ $(wildcard include/config/PREEMPT_COUNT) \
+ $(wildcard include/config/TRACE_PREEMPT_TOGGLE) \
+ $(wildcard include/config/PREEMPT_NOTIFIERS) \
+ arch/x86/include/asm/preempt.h \
+ include/linux/thread_info.h \
+ $(wildcard include/config/THREAD_INFO_IN_TASK) \
+ $(wildcard include/config/GENERIC_ENTRY) \
+ $(wildcard include/config/HAVE_ARCH_WITHIN_STACK_FRAMES) \
+ $(wildcard include/config/HARDENED_USERCOPY) \
+ include/linux/restart_block.h \
+ arch/x86/include/asm/thread_info.h \
+ $(wildcard include/config/COMPAT) \
+ include/linux/bottom_half.h \
+ include/linux/lockdep.h \
+ $(wildcard include/config/DEBUG_LOCKING_API_SELFTESTS) \
+ include/linux/smp.h \
+ $(wildcard include/config/UP_LATE_INIT) \
+ include/linux/smp_types.h \
+ include/linux/llist.h \
+ $(wildcard include/config/ARCH_HAVE_NMI_SAFE_CMPXCHG) \
+ arch/x86/include/asm/smp.h \
+ $(wildcard include/config/X86_LOCAL_APIC) \
+ $(wildcard include/config/DEBUG_NMI_SELFTEST) \
+ arch/x86/include/generated/asm/mmiowb.h \
+ include/asm-generic/mmiowb.h \
+ $(wildcard include/config/MMIOWB) \
+ arch/x86/include/asm/spinlock.h \
+ arch/x86/include/asm/qspinlock.h \
+ include/asm-generic/qspinlock.h \
+ arch/x86/include/asm/qrwlock.h \
+ include/asm-generic/qrwlock.h \
+ include/linux/rwlock.h \
+ $(wildcard include/config/PREEMPT) \
+ include/linux/spinlock_api_smp.h \
+ $(wildcard include/config/INLINE_SPIN_LOCK) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK_BH) \
+ $(wildcard include/config/UNINLINE_SPIN_UNLOCK) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/GENERIC_LOCKBREAK) \
+ include/linux/rwlock_api_smp.h \
+ $(wildcard include/config/INLINE_READ_LOCK) \
+ $(wildcard include/config/INLINE_WRITE_LOCK) \
+ $(wildcard include/config/INLINE_READ_LOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_BH) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_READ_TRYLOCK) \
+ $(wildcard include/config/INLINE_WRITE_TRYLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQRESTORE) \
+ include/linux/rbtree.h \
+ include/linux/rbtree_types.h \
+ include/linux/rcupdate.h \
+ $(wildcard include/config/PREEMPT_RCU) \
+ $(wildcard include/config/TINY_RCU) \
+ $(wildcard include/config/TASKS_RCU_GENERIC) \
+ $(wildcard include/config/RCU_STALL_COMMON) \
+ $(wildcard include/config/NO_HZ_FULL) \
+ $(wildcard include/config/RCU_NOCB_CPU) \
+ $(wildcard include/config/TASKS_RCU) \
+ $(wildcard include/config/TASKS_TRACE_RCU) \
+ $(wildcard include/config/TASKS_RUDE_RCU) \
+ $(wildcard include/config/TREE_RCU) \
+ $(wildcard include/config/DEBUG_OBJECTS_RCU_HEAD) \
+ $(wildcard include/config/PROVE_RCU) \
+ $(wildcard include/config/ARCH_WEAK_RELEASE_ACQUIRE) \
+ include/linux/rcutree.h \
+ include/linux/rwsem.h \
+ $(wildcard include/config/RWSEM_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_RWSEMS) \
+ include/linux/osq_lock.h \
+ include/linux/completion.h \
+ include/linux/swait.h \
+ include/linux/wait.h \
+ include/uapi/linux/wait.h \
+ include/linux/uprobes.h \
+ $(wildcard include/config/UPROBES) \
+ arch/x86/include/asm/uprobes.h \
+ include/linux/notifier.h \
+ include/linux/mutex.h \
+ $(wildcard include/config/MUTEX_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_MUTEXES) \
+ include/linux/debug_locks.h \
+ include/linux/srcu.h \
+ $(wildcard include/config/TINY_SRCU) \
+ $(wildcard include/config/SRCU) \
+ include/linux/workqueue.h \
+ $(wildcard include/config/DEBUG_OBJECTS_WORK) \
+ $(wildcard include/config/FREEZER) \
+ $(wildcard include/config/WQ_WATCHDOG) \
+ include/linux/timer.h \
+ $(wildcard include/config/DEBUG_OBJECTS_TIMERS) \
+ $(wildcard include/config/NO_HZ_COMMON) \
+ include/linux/ktime.h \
+ include/linux/jiffies.h \
+ include/vdso/jiffies.h \
+ include/generated/timeconst.h \
+ include/vdso/ktime.h \
+ include/linux/timekeeping.h \
+ $(wildcard include/config/GENERIC_CMOS_UPDATE) \
+ include/linux/clocksource_ids.h \
+ include/linux/debugobjects.h \
+ $(wildcard include/config/DEBUG_OBJECTS) \
+ $(wildcard include/config/DEBUG_OBJECTS_FREE) \
+ include/linux/rcu_segcblist.h \
+ include/linux/srcutree.h \
+ include/linux/rcu_node_tree.h \
+ $(wildcard include/config/RCU_FANOUT) \
+ $(wildcard include/config/RCU_FANOUT_LEAF) \
+ include/linux/page-flags-layout.h \
+ $(wildcard include/config/KASAN_HW_TAGS) \
+ include/linux/numa.h \
+ $(wildcard include/config/NODES_SHIFT) \
+ include/generated/bounds.h \
+ include/linux/seqlock.h \
+ include/linux/ww_mutex.h \
+ $(wildcard include/config/DEBUG_RT_MUTEXES) \
+ $(wildcard include/config/DEBUG_WW_MUTEX_SLOWPATH) \
+ include/linux/rtmutex.h \
+ arch/x86/include/asm/mmu.h \
+ $(wildcard include/config/MODIFY_LDT_SYSCALL) \
+ include/linux/kmod.h \
+ include/linux/umh.h \
+ include/linux/gfp.h \
+ $(wildcard include/config/HIGHMEM) \
+ $(wildcard include/config/ZONE_DMA) \
+ $(wildcard include/config/ZONE_DMA32) \
+ $(wildcard include/config/ZONE_DEVICE) \
+ $(wildcard include/config/COMPACTION) \
+ $(wildcard include/config/PM_SLEEP) \
+ $(wildcard include/config/CONTIG_ALLOC) \
+ $(wildcard include/config/CMA) \
+ include/linux/mmdebug.h \
+ $(wildcard include/config/DEBUG_VM) \
+ $(wildcard include/config/DEBUG_VM_PGFLAGS) \
+ include/linux/mmzone.h \
+ $(wildcard include/config/FORCE_MAX_ZONEORDER) \
+ $(wildcard include/config/MEMORY_ISOLATION) \
+ $(wildcard include/config/ZSMALLOC) \
+ $(wildcard include/config/SHADOW_CALL_STACK) \
+ $(wildcard include/config/MEMORY_HOTPLUG) \
+ $(wildcard include/config/PAGE_EXTENSION) \
+ $(wildcard include/config/DEFERRED_STRUCT_PAGE_INIT) \
+ $(wildcard include/config/HAVE_MEMORYLESS_NODES) \
+ $(wildcard include/config/SPARSEMEM_EXTREME) \
+ $(wildcard include/config/HAVE_ARCH_PFN_VALID) \
+ include/linux/nodemask.h \
+ include/linux/pageblock-flags.h \
+ $(wildcard include/config/HUGETLB_PAGE_SIZE_VARIABLE) \
+ include/linux/page-flags.h \
+ $(wildcard include/config/ARCH_USES_PG_UNCACHED) \
+ $(wildcard include/config/MEMORY_FAILURE) \
+ $(wildcard include/config/PAGE_IDLE_FLAG) \
+ $(wildcard include/config/THP_SWAP) \
+ $(wildcard include/config/KSM) \
+ include/linux/local_lock.h \
+ include/linux/local_lock_internal.h \
+ include/linux/memory_hotplug.h \
+ $(wildcard include/config/ARCH_HAS_ADD_PAGES) \
+ $(wildcard include/config/HAVE_ARCH_NODEDATA_EXTENSION) \
+ $(wildcard include/config/MEMORY_HOTREMOVE) \
+ arch/x86/include/asm/mmzone.h \
+ arch/x86/include/asm/mmzone_64.h \
+ include/linux/topology.h \
+ $(wildcard include/config/USE_PERCPU_NUMA_NODE_ID) \
+ $(wildcard include/config/SCHED_SMT) \
+ include/linux/arch_topology.h \
+ $(wildcard include/config/GENERIC_ARCH_TOPOLOGY) \
+ include/linux/percpu.h \
+ $(wildcard include/config/NEED_PER_CPU_EMBED_FIRST_CHUNK) \
+ $(wildcard include/config/NEED_PER_CPU_PAGE_FIRST_CHUNK) \
+ arch/x86/include/asm/topology.h \
+ $(wildcard include/config/SCHED_MC_PRIO) \
+ $(wildcard include/config/ACPI_CPPC_LIB) \
+ arch/x86/include/asm/mpspec.h \
+ $(wildcard include/config/EISA) \
+ $(wildcard include/config/X86_MPPARSE) \
+ arch/x86/include/asm/mpspec_def.h \
+ arch/x86/include/asm/x86_init.h \
+ arch/x86/include/asm/apicdef.h \
+ include/asm-generic/topology.h \
+ include/linux/sysctl.h \
+ $(wildcard include/config/SYSCTL) \
+ include/uapi/linux/sysctl.h \
+ include/linux/elf.h \
+ $(wildcard include/config/ARCH_USE_GNU_PROPERTY) \
+ $(wildcard include/config/ARCH_HAVE_ELF_PROT) \
+ arch/x86/include/asm/elf.h \
+ $(wildcard include/config/X86_X32_ABI) \
+ arch/x86/include/asm/user.h \
+ arch/x86/include/asm/user_64.h \
+ arch/x86/include/asm/fsgsbase.h \
+ arch/x86/include/asm/vdso.h \
+ $(wildcard include/config/X86_X32) \
+ include/uapi/linux/elf.h \
+ include/uapi/linux/elf-em.h \
+ include/linux/kobject.h \
+ $(wildcard include/config/UEVENT_HELPER) \
+ $(wildcard include/config/DEBUG_KOBJECT_RELEASE) \
+ include/linux/sysfs.h \
+ include/linux/kernfs.h \
+ $(wildcard include/config/KERNFS) \
+ include/linux/idr.h \
+ include/linux/radix-tree.h \
+ include/linux/xarray.h \
+ $(wildcard include/config/XARRAY_MULTI) \
+ include/linux/kconfig.h \
+ include/linux/kobject_ns.h \
+ include/linux/kref.h \
+ include/linux/refcount.h \
+ include/linux/moduleparam.h \
+ $(wildcard include/config/ALPHA) \
+ $(wildcard include/config/IA64) \
+ $(wildcard include/config/PPC64) \
+ include/linux/rbtree_latch.h \
+ include/linux/error-injection.h \
+ include/asm-generic/error-injection.h \
+ include/linux/cfi.h \
+ $(wildcard include/config/CFI_CLANG_SHADOW) \
+ arch/x86/include/asm/module.h \
+ $(wildcard include/config/UNWINDER_ORC) \
+ include/asm-generic/module.h \
+ $(wildcard include/config/HAVE_MOD_ARCH_SPECIFIC) \
+ $(wildcard include/config/MODULES_USE_ELF_REL) \
+ $(wildcard include/config/MODULES_USE_ELF_RELA) \
+ arch/x86/include/asm/orc_types.h \
+ include/linux/build-salt.h \
+ $(wildcard include/config/BUILD_SALT) \
+ include/linux/elfnote.h \
+ include/linux/elfnote-lto.h \
+ $(wildcard include/config/LTO) \
+ include/linux/vermagic.h \
+ include/generated/utsrelease.h \
+ arch/x86/include/asm/vermagic.h \
+ $(wildcard include/config/M486SX) \
+ $(wildcard include/config/M486) \
+ $(wildcard include/config/M586) \
+ $(wildcard include/config/M586TSC) \
+ $(wildcard include/config/M586MMX) \
+ $(wildcard include/config/MCORE2) \
+ $(wildcard include/config/M686) \
+ $(wildcard include/config/MPENTIUMII) \
+ $(wildcard include/config/MPENTIUMIII) \
+ $(wildcard include/config/MPENTIUMM) \
+ $(wildcard include/config/MPENTIUM4) \
+ $(wildcard include/config/MK6) \
+ $(wildcard include/config/MK7) \
+ $(wildcard include/config/MK8) \
+ $(wildcard include/config/MELAN) \
+ $(wildcard include/config/MCRUSOE) \
+ $(wildcard include/config/MEFFICEON) \
+ $(wildcard include/config/MWINCHIPC6) \
+ $(wildcard include/config/MWINCHIP3D) \
+ $(wildcard include/config/MCYRIXIII) \
+ $(wildcard include/config/MVIAC3_2) \
+ $(wildcard include/config/MVIAC7) \
+ $(wildcard include/config/MGEODEGX1) \
+ $(wildcard include/config/MGEODE_LX) \
+
+/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o: $(deps_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o)
+
+$(deps_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.mod.o):
diff --git a/smartlamp-kernel-module/.sysfs.o.cmd b/smartlamp-kernel-module/.sysfs.o.cmd
new file mode 100644
index 0000000..f36b9d6
--- /dev/null
+++ b/smartlamp-kernel-module/.sysfs.o.cmd
@@ -0,0 +1,994 @@
+cmd_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o := gcc -Wp,-MMD,/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/.sysfs.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/11/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -I./ubuntu/include -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wimplicit-fallthrough=5 -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -g -gdwarf-5 -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -falign-functions=16 -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -Wno-alloc-size-larger-than -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -fsanitize=bounds -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"sysfs"' -DKBUILD_MODNAME='"sysfs"' -D__KBUILD_MODNAME=kmod_sysfs -c -o /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.c
+
+source_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o := /home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.c
+
+deps_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o := \
+ include/linux/compiler-version.h \
+ $(wildcard include/config/CC_VERSION_TEXT) \
+ include/linux/kconfig.h \
+ $(wildcard include/config/CPU_BIG_ENDIAN) \
+ $(wildcard include/config/BOOGER) \
+ $(wildcard include/config/FOO) \
+ include/linux/compiler_types.h \
+ $(wildcard include/config/HAVE_ARCH_COMPILER_H) \
+ $(wildcard include/config/CC_HAS_ASM_INLINE) \
+ include/linux/compiler_attributes.h \
+ include/linux/compiler-gcc.h \
+ $(wildcard include/config/RETPOLINE) \
+ $(wildcard include/config/ARCH_USE_BUILTIN_BSWAP) \
+ $(wildcard include/config/KCOV) \
+ include/linux/module.h \
+ $(wildcard include/config/MODULES) \
+ $(wildcard include/config/SYSFS) \
+ $(wildcard include/config/MODULES_TREE_LOOKUP) \
+ $(wildcard include/config/LIVEPATCH) \
+ $(wildcard include/config/STACKTRACE_BUILD_ID) \
+ $(wildcard include/config/CFI_CLANG) \
+ $(wildcard include/config/MODULE_SIG) \
+ $(wildcard include/config/GENERIC_BUG) \
+ $(wildcard include/config/KALLSYMS) \
+ $(wildcard include/config/SMP) \
+ $(wildcard include/config/TRACEPOINTS) \
+ $(wildcard include/config/TREE_SRCU) \
+ $(wildcard include/config/BPF_EVENTS) \
+ $(wildcard include/config/DEBUG_INFO_BTF_MODULES) \
+ $(wildcard include/config/JUMP_LABEL) \
+ $(wildcard include/config/TRACING) \
+ $(wildcard include/config/EVENT_TRACING) \
+ $(wildcard include/config/FTRACE_MCOUNT_RECORD) \
+ $(wildcard include/config/KPROBES) \
+ $(wildcard include/config/HAVE_STATIC_CALL_INLINE) \
+ $(wildcard include/config/PRINTK_INDEX) \
+ $(wildcard include/config/MODULE_UNLOAD) \
+ $(wildcard include/config/CONSTRUCTORS) \
+ $(wildcard include/config/FUNCTION_ERROR_INJECTION) \
+ include/linux/list.h \
+ $(wildcard include/config/DEBUG_LIST) \
+ include/linux/types.h \
+ $(wildcard include/config/HAVE_UID16) \
+ $(wildcard include/config/UID16) \
+ $(wildcard include/config/ARCH_DMA_ADDR_T_64BIT) \
+ $(wildcard include/config/PHYS_ADDR_T_64BIT) \
+ $(wildcard include/config/64BIT) \
+ $(wildcard include/config/ARCH_32BIT_USTAT_F_TINODE) \
+ include/uapi/linux/types.h \
+ arch/x86/include/generated/uapi/asm/types.h \
+ include/uapi/asm-generic/types.h \
+ include/asm-generic/int-ll64.h \
+ include/uapi/asm-generic/int-ll64.h \
+ arch/x86/include/uapi/asm/bitsperlong.h \
+ include/asm-generic/bitsperlong.h \
+ include/uapi/asm-generic/bitsperlong.h \
+ include/uapi/linux/posix_types.h \
+ include/linux/stddef.h \
+ include/uapi/linux/stddef.h \
+ include/linux/compiler_types.h \
+ arch/x86/include/asm/posix_types.h \
+ $(wildcard include/config/X86_32) \
+ arch/x86/include/uapi/asm/posix_types_64.h \
+ include/uapi/asm-generic/posix_types.h \
+ include/linux/poison.h \
+ $(wildcard include/config/ILLEGAL_POINTER_VALUE) \
+ include/linux/const.h \
+ include/vdso/const.h \
+ include/uapi/linux/const.h \
+ include/linux/kernel.h \
+ $(wildcard include/config/PREEMPT_VOLUNTARY) \
+ $(wildcard include/config/PREEMPT_DYNAMIC) \
+ $(wildcard include/config/PREEMPT_) \
+ $(wildcard include/config/DEBUG_ATOMIC_SLEEP) \
+ $(wildcard include/config/MMU) \
+ $(wildcard include/config/PROVE_LOCKING) \
+ include/linux/stdarg.h \
+ include/linux/align.h \
+ include/linux/limits.h \
+ include/uapi/linux/limits.h \
+ include/vdso/limits.h \
+ include/linux/linkage.h \
+ $(wildcard include/config/FUNCTION_ALIGNMENT) \
+ $(wildcard include/config/ARCH_USE_SYM_ANNOTATIONS) \
+ include/linux/stringify.h \
+ include/linux/export.h \
+ $(wildcard include/config/MODVERSIONS) \
+ $(wildcard include/config/MODULE_REL_CRCS) \
+ $(wildcard include/config/HAVE_ARCH_PREL32_RELOCATIONS) \
+ $(wildcard include/config/TRIM_UNUSED_KSYMS) \
+ include/linux/compiler.h \
+ $(wildcard include/config/TRACE_BRANCH_PROFILING) \
+ $(wildcard include/config/PROFILE_ALL_BRANCHES) \
+ $(wildcard include/config/STACK_VALIDATION) \
+ arch/x86/include/generated/asm/rwonce.h \
+ include/asm-generic/rwonce.h \
+ include/linux/kasan-checks.h \
+ $(wildcard include/config/KASAN_GENERIC) \
+ $(wildcard include/config/KASAN_SW_TAGS) \
+ include/linux/kcsan-checks.h \
+ $(wildcard include/config/KCSAN) \
+ $(wildcard include/config/KCSAN_IGNORE_ATOMICS) \
+ arch/x86/include/asm/linkage.h \
+ $(wildcard include/config/RETHUNK) \
+ $(wildcard include/config/SLS) \
+ include/linux/bitops.h \
+ include/linux/bits.h \
+ include/vdso/bits.h \
+ include/linux/build_bug.h \
+ include/linux/typecheck.h \
+ include/uapi/linux/kernel.h \
+ include/uapi/linux/sysinfo.h \
+ arch/x86/include/asm/bitops.h \
+ $(wildcard include/config/X86_64) \
+ $(wildcard include/config/X86_CMOV) \
+ arch/x86/include/asm/alternative.h \
+ arch/x86/include/asm/asm.h \
+ arch/x86/include/asm/extable_fixup_types.h \
+ arch/x86/include/asm/rmwcc.h \
+ $(wildcard include/config/CC_HAS_ASM_GOTO) \
+ arch/x86/include/asm/barrier.h \
+ arch/x86/include/asm/nops.h \
+ include/asm-generic/barrier.h \
+ include/asm-generic/bitops/find.h \
+ $(wildcard include/config/GENERIC_FIND_FIRST_BIT) \
+ include/asm-generic/bitops/sched.h \
+ arch/x86/include/asm/arch_hweight.h \
+ arch/x86/include/asm/cpufeatures.h \
+ arch/x86/include/asm/required-features.h \
+ $(wildcard include/config/X86_MINIMUM_CPU_FAMILY) \
+ $(wildcard include/config/MATH_EMULATION) \
+ $(wildcard include/config/X86_PAE) \
+ $(wildcard include/config/X86_CMPXCHG64) \
+ $(wildcard include/config/X86_USE_3DNOW) \
+ $(wildcard include/config/X86_P6_NOP) \
+ $(wildcard include/config/MATOM) \
+ $(wildcard include/config/PARAVIRT_XXL) \
+ arch/x86/include/asm/disabled-features.h \
+ $(wildcard include/config/X86_SMAP) \
+ $(wildcard include/config/X86_UMIP) \
+ $(wildcard include/config/X86_INTEL_MEMORY_PROTECTION_KEYS) \
+ $(wildcard include/config/X86_5LEVEL) \
+ $(wildcard include/config/PAGE_TABLE_ISOLATION) \
+ $(wildcard include/config/CPU_UNRET_ENTRY) \
+ $(wildcard include/config/X86_SGX) \
+ include/asm-generic/bitops/const_hweight.h \
+ include/asm-generic/bitops/instrumented-atomic.h \
+ include/linux/instrumented.h \
+ include/asm-generic/bitops/instrumented-non-atomic.h \
+ $(wildcard include/config/KCSAN_ASSUME_PLAIN_WRITES_ATOMIC) \
+ include/asm-generic/bitops/instrumented-lock.h \
+ include/asm-generic/bitops/le.h \
+ arch/x86/include/uapi/asm/byteorder.h \
+ include/linux/byteorder/little_endian.h \
+ include/uapi/linux/byteorder/little_endian.h \
+ include/linux/swab.h \
+ include/uapi/linux/swab.h \
+ arch/x86/include/uapi/asm/swab.h \
+ include/linux/byteorder/generic.h \
+ include/asm-generic/bitops/ext2-atomic-setbit.h \
+ include/linux/kstrtox.h \
+ include/linux/log2.h \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U32) \
+ $(wildcard include/config/ARCH_HAS_ILOG2_U64) \
+ include/linux/math.h \
+ arch/x86/include/asm/div64.h \
+ include/asm-generic/div64.h \
+ include/linux/minmax.h \
+ include/linux/panic.h \
+ $(wildcard include/config/PANIC_TIMEOUT) \
+ include/linux/printk.h \
+ $(wildcard include/config/MESSAGE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_DEFAULT) \
+ $(wildcard include/config/CONSOLE_LOGLEVEL_QUIET) \
+ $(wildcard include/config/EARLY_PRINTK) \
+ $(wildcard include/config/PRINTK) \
+ $(wildcard include/config/DYNAMIC_DEBUG) \
+ $(wildcard include/config/DYNAMIC_DEBUG_CORE) \
+ include/linux/init.h \
+ $(wildcard include/config/STRICT_KERNEL_RWX) \
+ $(wildcard include/config/STRICT_MODULE_RWX) \
+ $(wildcard include/config/LTO_CLANG) \
+ include/linux/kern_levels.h \
+ include/linux/cache.h \
+ $(wildcard include/config/ARCH_HAS_CACHE_LINE_SIZE) \
+ arch/x86/include/asm/cache.h \
+ $(wildcard include/config/X86_L1_CACHE_SHIFT) \
+ $(wildcard include/config/X86_INTERNODE_CACHE_SHIFT) \
+ $(wildcard include/config/X86_VSMP) \
+ include/linux/ratelimit_types.h \
+ include/uapi/linux/param.h \
+ arch/x86/include/generated/uapi/asm/param.h \
+ include/asm-generic/param.h \
+ $(wildcard include/config/HZ) \
+ include/uapi/asm-generic/param.h \
+ include/linux/spinlock_types.h \
+ $(wildcard include/config/PREEMPT_RT) \
+ $(wildcard include/config/DEBUG_LOCK_ALLOC) \
+ include/linux/spinlock_types_raw.h \
+ $(wildcard include/config/DEBUG_SPINLOCK) \
+ arch/x86/include/asm/spinlock_types.h \
+ include/asm-generic/qspinlock_types.h \
+ $(wildcard include/config/NR_CPUS) \
+ include/asm-generic/qrwlock_types.h \
+ include/linux/lockdep_types.h \
+ $(wildcard include/config/PROVE_RAW_LOCK_NESTING) \
+ $(wildcard include/config/PREEMPT_LOCK) \
+ $(wildcard include/config/LOCKDEP) \
+ $(wildcard include/config/LOCK_STAT) \
+ include/linux/rwlock_types.h \
+ include/linux/once_lite.h \
+ include/linux/dynamic_debug.h \
+ include/linux/jump_label.h \
+ $(wildcard include/config/HAVE_ARCH_JUMP_LABEL_RELATIVE) \
+ arch/x86/include/asm/jump_label.h \
+ include/linux/static_call_types.h \
+ $(wildcard include/config/HAVE_STATIC_CALL) \
+ include/linux/stat.h \
+ arch/x86/include/uapi/asm/stat.h \
+ include/uapi/linux/stat.h \
+ include/linux/time.h \
+ $(wildcard include/config/POSIX_TIMERS) \
+ include/linux/math64.h \
+ $(wildcard include/config/ARCH_SUPPORTS_INT128) \
+ include/vdso/math64.h \
+ include/linux/time64.h \
+ include/vdso/time64.h \
+ include/uapi/linux/time.h \
+ include/uapi/linux/time_types.h \
+ include/linux/time32.h \
+ include/linux/timex.h \
+ include/uapi/linux/timex.h \
+ arch/x86/include/asm/timex.h \
+ $(wildcard include/config/X86_TSC) \
+ arch/x86/include/asm/processor.h \
+ $(wildcard include/config/X86_VMX_FEATURE_NAMES) \
+ $(wildcard include/config/X86_IOPL_IOPERM) \
+ $(wildcard include/config/STACKPROTECTOR) \
+ $(wildcard include/config/VM86) \
+ $(wildcard include/config/X86_DEBUGCTLMSR) \
+ $(wildcard include/config/CPU_SUP_AMD) \
+ $(wildcard include/config/XEN) \
+ arch/x86/include/asm/processor-flags.h \
+ arch/x86/include/uapi/asm/processor-flags.h \
+ include/linux/mem_encrypt.h \
+ $(wildcard include/config/ARCH_HAS_MEM_ENCRYPT) \
+ $(wildcard include/config/AMD_MEM_ENCRYPT) \
+ arch/x86/include/asm/mem_encrypt.h \
+ include/linux/cc_platform.h \
+ $(wildcard include/config/ARCH_HAS_CC_PLATFORM) \
+ arch/x86/include/uapi/asm/bootparam.h \
+ include/linux/screen_info.h \
+ include/uapi/linux/screen_info.h \
+ include/linux/apm_bios.h \
+ include/uapi/linux/apm_bios.h \
+ include/uapi/linux/ioctl.h \
+ arch/x86/include/generated/uapi/asm/ioctl.h \
+ include/asm-generic/ioctl.h \
+ include/uapi/asm-generic/ioctl.h \
+ include/linux/edd.h \
+ include/uapi/linux/edd.h \
+ arch/x86/include/asm/ist.h \
+ arch/x86/include/uapi/asm/ist.h \
+ include/video/edid.h \
+ $(wildcard include/config/X86) \
+ include/uapi/video/edid.h \
+ arch/x86/include/asm/math_emu.h \
+ arch/x86/include/asm/ptrace.h \
+ $(wildcard include/config/PARAVIRT) \
+ $(wildcard include/config/IA32_EMULATION) \
+ arch/x86/include/asm/segment.h \
+ $(wildcard include/config/XEN_PV) \
+ arch/x86/include/asm/page_types.h \
+ $(wildcard include/config/PHYSICAL_START) \
+ $(wildcard include/config/PHYSICAL_ALIGN) \
+ $(wildcard include/config/DYNAMIC_PHYSICAL_MASK) \
+ arch/x86/include/asm/page_64_types.h \
+ $(wildcard include/config/KASAN) \
+ $(wildcard include/config/DYNAMIC_MEMORY_LAYOUT) \
+ $(wildcard include/config/RANDOMIZE_BASE) \
+ arch/x86/include/asm/kaslr.h \
+ $(wildcard include/config/RANDOMIZE_MEMORY) \
+ arch/x86/include/uapi/asm/ptrace.h \
+ arch/x86/include/uapi/asm/ptrace-abi.h \
+ arch/x86/include/asm/paravirt_types.h \
+ $(wildcard include/config/PGTABLE_LEVELS) \
+ $(wildcard include/config/PARAVIRT_DEBUG) \
+ arch/x86/include/asm/desc_defs.h \
+ arch/x86/include/asm/pgtable_types.h \
+ $(wildcard include/config/MEM_SOFT_DIRTY) \
+ $(wildcard include/config/HAVE_ARCH_USERFAULTFD_WP) \
+ $(wildcard include/config/PROC_FS) \
+ arch/x86/include/asm/pgtable_64_types.h \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL_FORCE_MAP) \
+ arch/x86/include/asm/sparsemem.h \
+ $(wildcard include/config/SPARSEMEM) \
+ $(wildcard include/config/NUMA_KEEP_MEMINFO) \
+ arch/x86/include/asm/nospec-branch.h \
+ $(wildcard include/config/CPU_SRSO) \
+ $(wildcard include/config/CPU_IBPB_ENTRY) \
+ include/linux/static_key.h \
+ include/linux/objtool.h \
+ $(wildcard include/config/FRAME_POINTER) \
+ arch/x86/include/asm/msr-index.h \
+ arch/x86/include/asm/unwind_hints.h \
+ arch/x86/include/asm/orc_types.h \
+ arch/x86/include/asm/percpu.h \
+ $(wildcard include/config/X86_64_SMP) \
+ include/asm-generic/percpu.h \
+ $(wildcard include/config/DEBUG_PREEMPT) \
+ $(wildcard include/config/HAVE_SETUP_PER_CPU_AREA) \
+ include/linux/threads.h \
+ $(wildcard include/config/BASE_SMALL) \
+ include/linux/percpu-defs.h \
+ $(wildcard include/config/DEBUG_FORCE_WEAK_PER_CPU) \
+ arch/x86/include/asm/GEN-for-each-reg.h \
+ arch/x86/include/asm/proto.h \
+ arch/x86/include/uapi/asm/ldt.h \
+ arch/x86/include/uapi/asm/sigcontext.h \
+ arch/x86/include/asm/current.h \
+ arch/x86/include/asm/page.h \
+ arch/x86/include/asm/page_64.h \
+ $(wildcard include/config/DEBUG_VIRTUAL) \
+ $(wildcard include/config/FLATMEM) \
+ $(wildcard include/config/X86_VSYSCALL_EMULATION) \
+ include/linux/range.h \
+ include/asm-generic/memory_model.h \
+ $(wildcard include/config/SPARSEMEM_VMEMMAP) \
+ include/linux/pfn.h \
+ include/asm-generic/getorder.h \
+ arch/x86/include/asm/msr.h \
+ arch/x86/include/asm/msr-index.h \
+ arch/x86/include/generated/uapi/asm/errno.h \
+ include/uapi/asm-generic/errno.h \
+ include/uapi/asm-generic/errno-base.h \
+ arch/x86/include/asm/cpumask.h \
+ include/linux/cpumask.h \
+ $(wildcard include/config/CPUMASK_OFFSTACK) \
+ $(wildcard include/config/HOTPLUG_CPU) \
+ $(wildcard include/config/DEBUG_PER_CPU_MAPS) \
+ include/linux/bitmap.h \
+ include/linux/string.h \
+ $(wildcard include/config/BINARY_PRINTF) \
+ $(wildcard include/config/FORTIFY_SOURCE) \
+ include/linux/err.h \
+ include/linux/errno.h \
+ include/uapi/linux/errno.h \
+ include/linux/overflow.h \
+ include/uapi/linux/string.h \
+ arch/x86/include/asm/string.h \
+ arch/x86/include/asm/string_64.h \
+ $(wildcard include/config/ARCH_HAS_UACCESS_FLUSHCACHE) \
+ include/linux/fortify-string.h \
+ include/linux/atomic.h \
+ arch/x86/include/asm/atomic.h \
+ arch/x86/include/asm/cmpxchg.h \
+ arch/x86/include/asm/cmpxchg_64.h \
+ arch/x86/include/asm/atomic64_64.h \
+ include/linux/atomic/atomic-arch-fallback.h \
+ $(wildcard include/config/GENERIC_ATOMIC64) \
+ include/linux/atomic/atomic-long.h \
+ include/linux/atomic/atomic-instrumented.h \
+ include/linux/bug.h \
+ $(wildcard include/config/BUG_ON_DATA_CORRUPTION) \
+ arch/x86/include/asm/bug.h \
+ $(wildcard include/config/DEBUG_BUGVERBOSE) \
+ include/linux/instrumentation.h \
+ $(wildcard include/config/DEBUG_ENTRY) \
+ include/asm-generic/bug.h \
+ $(wildcard include/config/BUG) \
+ $(wildcard include/config/GENERIC_BUG_RELATIVE_POINTERS) \
+ arch/x86/include/uapi/asm/msr.h \
+ include/linux/tracepoint-defs.h \
+ arch/x86/include/asm/paravirt.h \
+ $(wildcard include/config/PARAVIRT_SPINLOCKS) \
+ arch/x86/include/asm/frame.h \
+ arch/x86/include/asm/special_insns.h \
+ include/linux/irqflags.h \
+ $(wildcard include/config/TRACE_IRQFLAGS) \
+ $(wildcard include/config/IRQSOFF_TRACER) \
+ $(wildcard include/config/PREEMPT_TRACER) \
+ $(wildcard include/config/DEBUG_IRQFLAGS) \
+ $(wildcard include/config/TRACE_IRQFLAGS_SUPPORT) \
+ arch/x86/include/asm/irqflags.h \
+ arch/x86/include/asm/fpu/types.h \
+ arch/x86/include/asm/vmxfeatures.h \
+ arch/x86/include/asm/vdso/processor.h \
+ include/linux/personality.h \
+ include/uapi/linux/personality.h \
+ arch/x86/include/asm/tsc.h \
+ arch/x86/include/asm/cpufeature.h \
+ $(wildcard include/config/X86_FEATURE_NAMES) \
+ include/vdso/time32.h \
+ include/vdso/time.h \
+ include/linux/uidgid.h \
+ $(wildcard include/config/MULTIUSER) \
+ $(wildcard include/config/USER_NS) \
+ include/linux/highuid.h \
+ include/linux/buildid.h \
+ $(wildcard include/config/CRASH_CORE) \
+ include/linux/mm_types.h \
+ $(wildcard include/config/HAVE_ALIGNED_STRUCT_PAGE) \
+ $(wildcard include/config/MEMCG) \
+ $(wildcard include/config/USERFAULTFD) \
+ $(wildcard include/config/SWAP) \
+ $(wildcard include/config/NUMA) \
+ $(wildcard include/config/HAVE_ARCH_COMPAT_MMAP_BASES) \
+ $(wildcard include/config/MEMBARRIER) \
+ $(wildcard include/config/AIO) \
+ $(wildcard include/config/MMU_NOTIFIER) \
+ $(wildcard include/config/TRANSPARENT_HUGEPAGE) \
+ $(wildcard include/config/NUMA_BALANCING) \
+ $(wildcard include/config/ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH) \
+ $(wildcard include/config/HUGETLB_PAGE) \
+ $(wildcard include/config/IOMMU_SUPPORT) \
+ include/linux/mm_types_task.h \
+ $(wildcard include/config/SPLIT_PTLOCK_CPUS) \
+ $(wildcard include/config/ARCH_ENABLE_SPLIT_PMD_PTLOCK) \
+ arch/x86/include/asm/tlbbatch.h \
+ include/linux/auxvec.h \
+ include/uapi/linux/auxvec.h \
+ arch/x86/include/uapi/asm/auxvec.h \
+ include/linux/spinlock.h \
+ $(wildcard include/config/PREEMPTION) \
+ include/linux/preempt.h \
+ $(wildcard include/config/PREEMPT_COUNT) \
+ $(wildcard include/config/TRACE_PREEMPT_TOGGLE) \
+ $(wildcard include/config/PREEMPT_NOTIFIERS) \
+ arch/x86/include/asm/preempt.h \
+ include/linux/thread_info.h \
+ $(wildcard include/config/THREAD_INFO_IN_TASK) \
+ $(wildcard include/config/GENERIC_ENTRY) \
+ $(wildcard include/config/HAVE_ARCH_WITHIN_STACK_FRAMES) \
+ $(wildcard include/config/HARDENED_USERCOPY) \
+ include/linux/restart_block.h \
+ arch/x86/include/asm/thread_info.h \
+ $(wildcard include/config/COMPAT) \
+ include/linux/bottom_half.h \
+ include/linux/lockdep.h \
+ $(wildcard include/config/DEBUG_LOCKING_API_SELFTESTS) \
+ include/linux/smp.h \
+ $(wildcard include/config/UP_LATE_INIT) \
+ include/linux/smp_types.h \
+ include/linux/llist.h \
+ $(wildcard include/config/ARCH_HAVE_NMI_SAFE_CMPXCHG) \
+ arch/x86/include/asm/smp.h \
+ $(wildcard include/config/X86_LOCAL_APIC) \
+ $(wildcard include/config/DEBUG_NMI_SELFTEST) \
+ arch/x86/include/generated/asm/mmiowb.h \
+ include/asm-generic/mmiowb.h \
+ $(wildcard include/config/MMIOWB) \
+ arch/x86/include/asm/spinlock.h \
+ arch/x86/include/asm/qspinlock.h \
+ include/asm-generic/qspinlock.h \
+ arch/x86/include/asm/qrwlock.h \
+ include/asm-generic/qrwlock.h \
+ include/linux/rwlock.h \
+ $(wildcard include/config/PREEMPT) \
+ include/linux/spinlock_api_smp.h \
+ $(wildcard include/config/INLINE_SPIN_LOCK) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK) \
+ $(wildcard include/config/INLINE_SPIN_TRYLOCK_BH) \
+ $(wildcard include/config/UNINLINE_SPIN_UNLOCK) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_SPIN_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/GENERIC_LOCKBREAK) \
+ include/linux/rwlock_api_smp.h \
+ $(wildcard include/config/INLINE_READ_LOCK) \
+ $(wildcard include/config/INLINE_WRITE_LOCK) \
+ $(wildcard include/config/INLINE_READ_LOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_BH) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_WRITE_LOCK_IRQSAVE) \
+ $(wildcard include/config/INLINE_READ_TRYLOCK) \
+ $(wildcard include/config/INLINE_WRITE_TRYLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_BH) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQ) \
+ $(wildcard include/config/INLINE_READ_UNLOCK_IRQRESTORE) \
+ $(wildcard include/config/INLINE_WRITE_UNLOCK_IRQRESTORE) \
+ include/linux/rbtree.h \
+ include/linux/rbtree_types.h \
+ include/linux/rcupdate.h \
+ $(wildcard include/config/PREEMPT_RCU) \
+ $(wildcard include/config/TINY_RCU) \
+ $(wildcard include/config/TASKS_RCU_GENERIC) \
+ $(wildcard include/config/RCU_STALL_COMMON) \
+ $(wildcard include/config/NO_HZ_FULL) \
+ $(wildcard include/config/RCU_NOCB_CPU) \
+ $(wildcard include/config/TASKS_RCU) \
+ $(wildcard include/config/TASKS_TRACE_RCU) \
+ $(wildcard include/config/TASKS_RUDE_RCU) \
+ $(wildcard include/config/TREE_RCU) \
+ $(wildcard include/config/DEBUG_OBJECTS_RCU_HEAD) \
+ $(wildcard include/config/PROVE_RCU) \
+ $(wildcard include/config/ARCH_WEAK_RELEASE_ACQUIRE) \
+ include/linux/rcutree.h \
+ include/linux/rwsem.h \
+ $(wildcard include/config/RWSEM_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_RWSEMS) \
+ include/linux/osq_lock.h \
+ include/linux/completion.h \
+ include/linux/swait.h \
+ include/linux/wait.h \
+ include/uapi/linux/wait.h \
+ include/linux/uprobes.h \
+ $(wildcard include/config/UPROBES) \
+ arch/x86/include/asm/uprobes.h \
+ include/linux/notifier.h \
+ include/linux/mutex.h \
+ $(wildcard include/config/MUTEX_SPIN_ON_OWNER) \
+ $(wildcard include/config/DEBUG_MUTEXES) \
+ include/linux/debug_locks.h \
+ include/linux/srcu.h \
+ $(wildcard include/config/TINY_SRCU) \
+ $(wildcard include/config/SRCU) \
+ include/linux/workqueue.h \
+ $(wildcard include/config/DEBUG_OBJECTS_WORK) \
+ $(wildcard include/config/FREEZER) \
+ $(wildcard include/config/WQ_WATCHDOG) \
+ include/linux/timer.h \
+ $(wildcard include/config/DEBUG_OBJECTS_TIMERS) \
+ $(wildcard include/config/NO_HZ_COMMON) \
+ include/linux/ktime.h \
+ include/linux/jiffies.h \
+ include/vdso/jiffies.h \
+ include/generated/timeconst.h \
+ include/vdso/ktime.h \
+ include/linux/timekeeping.h \
+ $(wildcard include/config/GENERIC_CMOS_UPDATE) \
+ include/linux/clocksource_ids.h \
+ include/linux/debugobjects.h \
+ $(wildcard include/config/DEBUG_OBJECTS) \
+ $(wildcard include/config/DEBUG_OBJECTS_FREE) \
+ include/linux/rcu_segcblist.h \
+ include/linux/srcutree.h \
+ include/linux/rcu_node_tree.h \
+ $(wildcard include/config/RCU_FANOUT) \
+ $(wildcard include/config/RCU_FANOUT_LEAF) \
+ include/linux/page-flags-layout.h \
+ $(wildcard include/config/KASAN_HW_TAGS) \
+ include/linux/numa.h \
+ $(wildcard include/config/NODES_SHIFT) \
+ include/generated/bounds.h \
+ include/linux/seqlock.h \
+ include/linux/ww_mutex.h \
+ $(wildcard include/config/DEBUG_RT_MUTEXES) \
+ $(wildcard include/config/DEBUG_WW_MUTEX_SLOWPATH) \
+ include/linux/rtmutex.h \
+ arch/x86/include/asm/mmu.h \
+ $(wildcard include/config/MODIFY_LDT_SYSCALL) \
+ include/linux/kmod.h \
+ include/linux/umh.h \
+ include/linux/gfp.h \
+ $(wildcard include/config/HIGHMEM) \
+ $(wildcard include/config/ZONE_DMA) \
+ $(wildcard include/config/ZONE_DMA32) \
+ $(wildcard include/config/ZONE_DEVICE) \
+ $(wildcard include/config/COMPACTION) \
+ $(wildcard include/config/PM_SLEEP) \
+ $(wildcard include/config/CONTIG_ALLOC) \
+ $(wildcard include/config/CMA) \
+ include/linux/mmdebug.h \
+ $(wildcard include/config/DEBUG_VM) \
+ $(wildcard include/config/DEBUG_VM_PGFLAGS) \
+ include/linux/mmzone.h \
+ $(wildcard include/config/FORCE_MAX_ZONEORDER) \
+ $(wildcard include/config/MEMORY_ISOLATION) \
+ $(wildcard include/config/ZSMALLOC) \
+ $(wildcard include/config/SHADOW_CALL_STACK) \
+ $(wildcard include/config/MEMORY_HOTPLUG) \
+ $(wildcard include/config/PAGE_EXTENSION) \
+ $(wildcard include/config/DEFERRED_STRUCT_PAGE_INIT) \
+ $(wildcard include/config/HAVE_MEMORYLESS_NODES) \
+ $(wildcard include/config/SPARSEMEM_EXTREME) \
+ $(wildcard include/config/HAVE_ARCH_PFN_VALID) \
+ include/linux/nodemask.h \
+ include/linux/pageblock-flags.h \
+ $(wildcard include/config/HUGETLB_PAGE_SIZE_VARIABLE) \
+ include/linux/page-flags.h \
+ $(wildcard include/config/ARCH_USES_PG_UNCACHED) \
+ $(wildcard include/config/MEMORY_FAILURE) \
+ $(wildcard include/config/PAGE_IDLE_FLAG) \
+ $(wildcard include/config/THP_SWAP) \
+ $(wildcard include/config/KSM) \
+ include/linux/local_lock.h \
+ include/linux/local_lock_internal.h \
+ include/linux/memory_hotplug.h \
+ $(wildcard include/config/ARCH_HAS_ADD_PAGES) \
+ $(wildcard include/config/HAVE_ARCH_NODEDATA_EXTENSION) \
+ $(wildcard include/config/MEMORY_HOTREMOVE) \
+ arch/x86/include/asm/mmzone.h \
+ arch/x86/include/asm/mmzone_64.h \
+ include/linux/topology.h \
+ $(wildcard include/config/USE_PERCPU_NUMA_NODE_ID) \
+ $(wildcard include/config/SCHED_SMT) \
+ include/linux/arch_topology.h \
+ $(wildcard include/config/GENERIC_ARCH_TOPOLOGY) \
+ include/linux/percpu.h \
+ $(wildcard include/config/NEED_PER_CPU_EMBED_FIRST_CHUNK) \
+ $(wildcard include/config/NEED_PER_CPU_PAGE_FIRST_CHUNK) \
+ arch/x86/include/asm/topology.h \
+ $(wildcard include/config/SCHED_MC_PRIO) \
+ $(wildcard include/config/ACPI_CPPC_LIB) \
+ arch/x86/include/asm/mpspec.h \
+ $(wildcard include/config/EISA) \
+ $(wildcard include/config/X86_MPPARSE) \
+ arch/x86/include/asm/mpspec_def.h \
+ arch/x86/include/asm/x86_init.h \
+ arch/x86/include/asm/apicdef.h \
+ include/asm-generic/topology.h \
+ include/linux/sysctl.h \
+ $(wildcard include/config/SYSCTL) \
+ include/uapi/linux/sysctl.h \
+ include/linux/elf.h \
+ $(wildcard include/config/ARCH_USE_GNU_PROPERTY) \
+ $(wildcard include/config/ARCH_HAVE_ELF_PROT) \
+ arch/x86/include/asm/elf.h \
+ $(wildcard include/config/X86_X32_ABI) \
+ arch/x86/include/asm/user.h \
+ arch/x86/include/asm/user_64.h \
+ arch/x86/include/asm/fsgsbase.h \
+ arch/x86/include/asm/vdso.h \
+ $(wildcard include/config/X86_X32) \
+ include/uapi/linux/elf.h \
+ include/uapi/linux/elf-em.h \
+ include/linux/kobject.h \
+ $(wildcard include/config/UEVENT_HELPER) \
+ $(wildcard include/config/DEBUG_KOBJECT_RELEASE) \
+ include/linux/sysfs.h \
+ include/linux/kernfs.h \
+ $(wildcard include/config/KERNFS) \
+ include/linux/idr.h \
+ include/linux/radix-tree.h \
+ include/linux/xarray.h \
+ $(wildcard include/config/XARRAY_MULTI) \
+ include/linux/kconfig.h \
+ include/linux/kobject_ns.h \
+ include/linux/kref.h \
+ include/linux/refcount.h \
+ include/linux/moduleparam.h \
+ $(wildcard include/config/ALPHA) \
+ $(wildcard include/config/IA64) \
+ $(wildcard include/config/PPC64) \
+ include/linux/rbtree_latch.h \
+ include/linux/error-injection.h \
+ include/asm-generic/error-injection.h \
+ include/linux/cfi.h \
+ $(wildcard include/config/CFI_CLANG_SHADOW) \
+ arch/x86/include/asm/module.h \
+ $(wildcard include/config/UNWINDER_ORC) \
+ include/asm-generic/module.h \
+ $(wildcard include/config/HAVE_MOD_ARCH_SPECIFIC) \
+ $(wildcard include/config/MODULES_USE_ELF_REL) \
+ $(wildcard include/config/MODULES_USE_ELF_RELA) \
+ arch/x86/include/asm/orc_types.h \
+ include/linux/usb.h \
+ $(wildcard include/config/USB_MON) \
+ $(wildcard include/config/PM) \
+ $(wildcard include/config/ACPI) \
+ $(wildcard include/config/USB) \
+ $(wildcard include/config/USB_LED_TRIG) \
+ include/linux/mod_devicetable.h \
+ include/linux/uuid.h \
+ include/uapi/linux/uuid.h \
+ include/linux/usb/ch9.h \
+ include/linux/device.h \
+ $(wildcard include/config/ENERGY_MODEL) \
+ $(wildcard include/config/GENERIC_MSI_IRQ_DOMAIN) \
+ $(wildcard include/config/PINCTRL) \
+ $(wildcard include/config/GENERIC_MSI_IRQ) \
+ $(wildcard include/config/DMA_OPS) \
+ $(wildcard include/config/DMA_DECLARE_COHERENT) \
+ $(wildcard include/config/DMA_CMA) \
+ $(wildcard include/config/SWIOTLB) \
+ $(wildcard include/config/ARCH_HAS_SYNC_DMA_FOR_DEVICE) \
+ $(wildcard include/config/ARCH_HAS_SYNC_DMA_FOR_CPU) \
+ $(wildcard include/config/ARCH_HAS_SYNC_DMA_FOR_CPU_ALL) \
+ $(wildcard include/config/DMA_OPS_BYPASS) \
+ $(wildcard include/config/OF) \
+ $(wildcard include/config/DEVTMPFS) \
+ $(wildcard include/config/SYSFS_DEPRECATED) \
+ include/linux/dev_printk.h \
+ include/linux/ratelimit.h \
+ include/linux/sched.h \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_NATIVE) \
+ $(wildcard include/config/SCHED_INFO) \
+ $(wildcard include/config/SCHEDSTATS) \
+ $(wildcard include/config/FAIR_GROUP_SCHED) \
+ $(wildcard include/config/RT_GROUP_SCHED) \
+ $(wildcard include/config/RT_MUTEXES) \
+ $(wildcard include/config/UCLAMP_TASK) \
+ $(wildcard include/config/UCLAMP_BUCKETS_COUNT) \
+ $(wildcard include/config/KMAP_LOCAL) \
+ $(wildcard include/config/SCHED_CORE) \
+ $(wildcard include/config/CGROUP_SCHED) \
+ $(wildcard include/config/BLK_DEV_IO_TRACE) \
+ $(wildcard include/config/PSI) \
+ $(wildcard include/config/COMPAT_BRK) \
+ $(wildcard include/config/CGROUPS) \
+ $(wildcard include/config/BLK_CGROUP) \
+ $(wildcard include/config/PAGE_OWNER) \
+ $(wildcard include/config/EVENTFD) \
+ $(wildcard include/config/ARCH_HAS_SCALED_CPUTIME) \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING_GEN) \
+ $(wildcard include/config/POSIX_CPUTIMERS) \
+ $(wildcard include/config/POSIX_CPU_TIMERS_TASK_WORK) \
+ $(wildcard include/config/KEYS) \
+ $(wildcard include/config/SYSVIPC) \
+ $(wildcard include/config/DETECT_HUNG_TASK) \
+ $(wildcard include/config/IO_URING) \
+ $(wildcard include/config/AUDIT) \
+ $(wildcard include/config/AUDITSYSCALL) \
+ $(wildcard include/config/UBSAN) \
+ $(wildcard include/config/UBSAN_TRAP) \
+ $(wildcard include/config/BLOCK) \
+ $(wildcard include/config/TASK_XACCT) \
+ $(wildcard include/config/CPUSETS) \
+ $(wildcard include/config/X86_CPU_RESCTRL) \
+ $(wildcard include/config/FUTEX) \
+ $(wildcard include/config/PERF_EVENTS) \
+ $(wildcard include/config/RSEQ) \
+ $(wildcard include/config/TASK_DELAY_ACCT) \
+ $(wildcard include/config/FAULT_INJECTION) \
+ $(wildcard include/config/LATENCYTOP) \
+ $(wildcard include/config/KUNIT) \
+ $(wildcard include/config/FUNCTION_GRAPH_TRACER) \
+ $(wildcard include/config/BCACHE) \
+ $(wildcard include/config/VMAP_STACK) \
+ $(wildcard include/config/SECURITY) \
+ $(wildcard include/config/BPF_SYSCALL) \
+ $(wildcard include/config/GCC_PLUGIN_STACKLEAK) \
+ $(wildcard include/config/X86_MCE) \
+ $(wildcard include/config/KRETPROBES) \
+ $(wildcard include/config/ARCH_HAS_PARANOID_L1D_FLUSH) \
+ $(wildcard include/config/ARCH_TASK_STRUCT_ON_STACK) \
+ $(wildcard include/config/DEBUG_RSEQ) \
+ include/uapi/linux/sched.h \
+ include/linux/pid.h \
+ include/linux/rculist.h \
+ $(wildcard include/config/PROVE_RCU_LIST) \
+ include/linux/sem.h \
+ include/uapi/linux/sem.h \
+ include/linux/ipc.h \
+ include/linux/rhashtable-types.h \
+ include/uapi/linux/ipc.h \
+ arch/x86/include/generated/uapi/asm/ipcbuf.h \
+ include/uapi/asm-generic/ipcbuf.h \
+ arch/x86/include/uapi/asm/sembuf.h \
+ include/linux/shm.h \
+ include/uapi/linux/shm.h \
+ include/uapi/asm-generic/hugetlb_encode.h \
+ arch/x86/include/uapi/asm/shmbuf.h \
+ include/uapi/asm-generic/shmbuf.h \
+ arch/x86/include/asm/shmparam.h \
+ include/linux/plist.h \
+ $(wildcard include/config/DEBUG_PLIST) \
+ include/linux/hrtimer.h \
+ $(wildcard include/config/HIGH_RES_TIMERS) \
+ $(wildcard include/config/TIME_LOW_RES) \
+ $(wildcard include/config/TIMERFD) \
+ include/linux/hrtimer_defs.h \
+ include/linux/timerqueue.h \
+ include/linux/seccomp.h \
+ $(wildcard include/config/SECCOMP) \
+ $(wildcard include/config/HAVE_ARCH_SECCOMP_FILTER) \
+ $(wildcard include/config/SECCOMP_FILTER) \
+ $(wildcard include/config/CHECKPOINT_RESTORE) \
+ $(wildcard include/config/SECCOMP_CACHE_DEBUG) \
+ include/uapi/linux/seccomp.h \
+ arch/x86/include/asm/seccomp.h \
+ arch/x86/include/asm/unistd.h \
+ arch/x86/include/uapi/asm/unistd.h \
+ arch/x86/include/generated/uapi/asm/unistd_64.h \
+ arch/x86/include/generated/asm/unistd_64_x32.h \
+ arch/x86/include/generated/asm/unistd_32_ia32.h \
+ arch/x86/include/asm/ia32_unistd.h \
+ include/asm-generic/seccomp.h \
+ include/uapi/linux/unistd.h \
+ include/linux/resource.h \
+ include/uapi/linux/resource.h \
+ arch/x86/include/generated/uapi/asm/resource.h \
+ include/asm-generic/resource.h \
+ include/uapi/asm-generic/resource.h \
+ include/linux/latencytop.h \
+ include/linux/sched/prio.h \
+ include/linux/sched/types.h \
+ include/linux/signal_types.h \
+ $(wildcard include/config/OLD_SIGACTION) \
+ include/uapi/linux/signal.h \
+ arch/x86/include/asm/signal.h \
+ arch/x86/include/uapi/asm/signal.h \
+ include/uapi/asm-generic/signal-defs.h \
+ arch/x86/include/uapi/asm/siginfo.h \
+ include/uapi/asm-generic/siginfo.h \
+ include/linux/syscall_user_dispatch.h \
+ include/linux/task_io_accounting.h \
+ $(wildcard include/config/TASK_IO_ACCOUNTING) \
+ include/linux/posix-timers.h \
+ include/linux/alarmtimer.h \
+ $(wildcard include/config/RTC_CLASS) \
+ include/linux/task_work.h \
+ include/uapi/linux/rseq.h \
+ include/linux/kcsan.h \
+ arch/x86/include/generated/asm/kmap_size.h \
+ include/asm-generic/kmap_size.h \
+ $(wildcard include/config/DEBUG_KMAP_LOCAL) \
+ include/linux/energy_model.h \
+ include/linux/sched/cpufreq.h \
+ $(wildcard include/config/CPU_FREQ) \
+ include/linux/sched/topology.h \
+ $(wildcard include/config/SCHED_DEBUG) \
+ $(wildcard include/config/SCHED_MC) \
+ $(wildcard include/config/CPU_FREQ_GOV_SCHEDUTIL) \
+ include/linux/sched/idle.h \
+ include/linux/sched/sd_flags.h \
+ include/linux/ioport.h \
+ include/linux/klist.h \
+ include/linux/pm.h \
+ $(wildcard include/config/VT_CONSOLE_SLEEP) \
+ $(wildcard include/config/PM_CLK) \
+ $(wildcard include/config/PM_GENERIC_DOMAINS) \
+ include/linux/device/bus.h \
+ include/linux/device/class.h \
+ include/linux/device/driver.h \
+ arch/x86/include/asm/device.h \
+ include/linux/pm_wakeup.h \
+ include/uapi/linux/usb/ch9.h \
+ include/linux/delay.h \
+ arch/x86/include/asm/delay.h \
+ include/asm-generic/delay.h \
+ include/linux/interrupt.h \
+ $(wildcard include/config/IRQ_FORCED_THREADING) \
+ $(wildcard include/config/GENERIC_IRQ_PROBE) \
+ $(wildcard include/config/IRQ_TIMINGS) \
+ include/linux/irqreturn.h \
+ include/linux/irqnr.h \
+ include/uapi/linux/irqnr.h \
+ include/linux/hardirq.h \
+ include/linux/context_tracking_state.h \
+ $(wildcard include/config/CONTEXT_TRACKING) \
+ include/linux/ftrace_irq.h \
+ $(wildcard include/config/HWLAT_TRACER) \
+ $(wildcard include/config/OSNOISE_TRACER) \
+ include/linux/vtime.h \
+ $(wildcard include/config/VIRT_CPU_ACCOUNTING) \
+ $(wildcard include/config/IRQ_TIME_ACCOUNTING) \
+ arch/x86/include/asm/hardirq.h \
+ $(wildcard include/config/KVM_INTEL) \
+ $(wildcard include/config/HAVE_KVM) \
+ $(wildcard include/config/X86_THERMAL_VECTOR) \
+ $(wildcard include/config/X86_MCE_THRESHOLD) \
+ $(wildcard include/config/X86_MCE_AMD) \
+ $(wildcard include/config/X86_HV_CALLBACK_VECTOR) \
+ $(wildcard include/config/HYPERV) \
+ arch/x86/include/asm/irq.h \
+ arch/x86/include/asm/irq_vectors.h \
+ $(wildcard include/config/X86_IO_APIC) \
+ $(wildcard include/config/PCI_MSI) \
+ arch/x86/include/asm/sections.h \
+ include/asm-generic/sections.h \
+ arch/x86/include/asm/extable.h \
+ $(wildcard include/config/BPF_JIT) \
+ include/linux/fs.h \
+ $(wildcard include/config/READ_ONLY_THP_FOR_FS) \
+ $(wildcard include/config/FS_POSIX_ACL) \
+ $(wildcard include/config/CGROUP_WRITEBACK) \
+ $(wildcard include/config/IMA) \
+ $(wildcard include/config/FILE_LOCKING) \
+ $(wildcard include/config/FSNOTIFY) \
+ $(wildcard include/config/FS_ENCRYPTION) \
+ $(wildcard include/config/FS_VERITY) \
+ $(wildcard include/config/EPOLL) \
+ $(wildcard include/config/UNICODE) \
+ $(wildcard include/config/QUOTA) \
+ $(wildcard include/config/BLK_DEV_LOOP) \
+ $(wildcard include/config/FS_DAX) \
+ $(wildcard include/config/MIGRATION) \
+ include/linux/wait_bit.h \
+ include/linux/kdev_t.h \
+ include/uapi/linux/kdev_t.h \
+ include/linux/dcache.h \
+ include/linux/rculist_bl.h \
+ include/linux/list_bl.h \
+ include/linux/bit_spinlock.h \
+ include/linux/lockref.h \
+ $(wildcard include/config/ARCH_USE_CMPXCHG_LOCKREF) \
+ include/linux/stringhash.h \
+ $(wildcard include/config/DCACHE_WORD_ACCESS) \
+ include/linux/hash.h \
+ $(wildcard include/config/HAVE_ARCH_HASH) \
+ include/linux/path.h \
+ include/linux/list_lru.h \
+ $(wildcard include/config/MEMCG_KMEM) \
+ include/linux/shrinker.h \
+ include/linux/capability.h \
+ include/uapi/linux/capability.h \
+ include/linux/semaphore.h \
+ include/linux/fcntl.h \
+ $(wildcard include/config/ARCH_32BIT_OFF_T) \
+ include/uapi/linux/fcntl.h \
+ arch/x86/include/generated/uapi/asm/fcntl.h \
+ include/uapi/asm-generic/fcntl.h \
+ include/uapi/linux/openat2.h \
+ include/linux/migrate_mode.h \
+ include/linux/percpu-rwsem.h \
+ include/linux/rcuwait.h \
+ include/linux/sched/signal.h \
+ $(wildcard include/config/SCHED_AUTOGROUP) \
+ $(wildcard include/config/BSD_PROCESS_ACCT) \
+ $(wildcard include/config/TASKSTATS) \
+ $(wildcard include/config/STACK_GROWSUP) \
+ include/linux/signal.h \
+ $(wildcard include/config/DYNAMIC_SIGFRAME) \
+ include/linux/sched/jobctl.h \
+ include/linux/sched/task.h \
+ $(wildcard include/config/HAVE_EXIT_THREAD) \
+ $(wildcard include/config/ARCH_WANTS_DYNAMIC_TASK_STRUCT) \
+ $(wildcard include/config/HAVE_ARCH_THREAD_STRUCT_WHITELIST) \
+ include/linux/uaccess.h \
+ $(wildcard include/config/SET_FS) \
+ include/linux/fault-inject-usercopy.h \
+ $(wildcard include/config/FAULT_INJECTION_USERCOPY) \
+ arch/x86/include/asm/uaccess.h \
+ $(wildcard include/config/CC_HAS_ASM_GOTO_OUTPUT) \
+ $(wildcard include/config/CC_ASM_GOTO_OUTPUT) \
+ $(wildcard include/config/CC_HAS_ASM_GOTO_TIED_OUTPUT) \
+ $(wildcard include/config/ARCH_HAS_COPY_MC) \
+ $(wildcard include/config/X86_INTEL_USERCOPY) \
+ arch/x86/include/asm/smap.h \
+ arch/x86/include/asm/uaccess_64.h \
+ include/linux/cred.h \
+ $(wildcard include/config/DEBUG_CREDENTIALS) \
+ include/linux/key.h \
+ $(wildcard include/config/KEY_NOTIFICATIONS) \
+ $(wildcard include/config/NET) \
+ include/linux/assoc_array.h \
+ $(wildcard include/config/ASSOCIATIVE_ARRAY) \
+ include/linux/sched/user.h \
+ $(wildcard include/config/VFIO_PCI_ZDEV_KVM) \
+ $(wildcard include/config/WATCH_QUEUE) \
+ include/linux/percpu_counter.h \
+ include/linux/rcu_sync.h \
+ include/linux/delayed_call.h \
+ include/linux/errseq.h \
+ include/linux/ioprio.h \
+ include/linux/sched/rt.h \
+ include/linux/iocontext.h \
+ include/uapi/linux/ioprio.h \
+ include/linux/fs_types.h \
+ include/linux/mount.h \
+ include/linux/mnt_idmapping.h \
+ include/uapi/linux/fs.h \
+ include/linux/quota.h \
+ $(wildcard include/config/QUOTA_NETLINK_INTERFACE) \
+ 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/pm_runtime.h \
+ include/linux/slab.h \
+ $(wildcard include/config/DEBUG_SLAB) \
+ $(wildcard include/config/FAILSLAB) \
+ $(wildcard include/config/HAVE_HARDENED_USERCOPY_ALLOCATOR) \
+ $(wildcard include/config/SLAB) \
+ $(wildcard include/config/SLUB) \
+ $(wildcard include/config/SLOB) \
+ $(wildcard include/config/CC_IS_GCC) \
+ $(wildcard include/config/CLANG_VERSION) \
+ include/linux/percpu-refcount.h \
+ include/linux/kasan.h \
+ $(wildcard include/config/KASAN_STACK) \
+ $(wildcard include/config/KASAN_VMALLOC) \
+
+/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o: $(deps_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o)
+
+$(deps_/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o):
diff --git a/smartlamp-kernel-module/.vscode-ctags b/smartlamp-kernel-module/.vscode-ctags
new file mode 100644
index 0000000..ffadcde
--- /dev/null
+++ b/smartlamp-kernel-module/.vscode-ctags
@@ -0,0 +1,109 @@
+!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
+!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
+!_TAG_OUTPUT_EXCMD mixed /number, pattern, mixed, or combineV2/
+!_TAG_OUTPUT_FILESEP slash /slash or backslash/
+!_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
+!_TAG_PATTERN_LENGTH_LIMIT 96 /0 for no limit/
+!_TAG_PROC_CWD /home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/ //
+!_TAG_PROGRAM_AUTHOR Universal Ctags Team //
+!_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
+!_TAG_PROGRAM_URL https://ctags.io/ /official site/
+!_TAG_PROGRAM_VERSION 5.9.0 //
+INCLUDE_VERMAGIC probe.mod.c /^#define INCLUDE_VERMAGIC$/;" d file:
+LDR_value serial.c /^int LDR_value = 0;$/;" v typeref:typename:int
+LDR_value serial_write.c /^int LDR_value = 0;$/;" v typeref:typename:int
+LDR_value smartlamp.c /^int LDR_value = 0;$/;" v typeref:typename:int
+LDR_value sysfs.c /^int LDR_value = 0;$/;" v typeref:typename:int
+MAX_RECV_LINE probe.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE serial.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE serial_write.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE smartlamp.c /^#define MAX_RECV_LINE /;" d file:
+MAX_RECV_LINE sysfs.c /^#define MAX_RECV_LINE /;" d file:
+PRODUCT_ID probe.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID serial.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID serial_write.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID smartlamp.c /^#define PRODUCT_ID /;" d file:
+PRODUCT_ID sysfs.c /^#define PRODUCT_ID /;" d file:
+PWD Makefile /^PWD := $(CURDIR)$/;" m
+VENDOR_ID probe.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID serial.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID serial_write.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID smartlamp.c /^#define VENDOR_ID /;" d file:
+VENDOR_ID sysfs.c /^#define VENDOR_ID /;" d file:
+____versions probe.mod.c /^static const struct modversion_info ____versions[]$/;" v typeref:typename:const struct modversion_info[]__used __section ("__versions") file:
+all Makefile /^all:$/;" t
+attr_group smartlamp.c /^static struct attribute_group attr_group = { .attrs = attrs };$/;" v typeref:struct:attribute_group file:
+attr_group sysfs.c /^static struct attribute_group attr_group = { .attrs = attrs };$/;" v typeref:struct:attribute_group file:
+attr_show smartlamp.c /^static ssize_t attr_show(struct kobject *sys_obj, struct kobj_attribute *attr, char *buff) {$/;" f typeref:typename:ssize_t file:
+attr_show sysfs.c /^static ssize_t attr_show(struct kobject *sys_obj, struct kobj_attribute *attr, char *buff) {$/;" f typeref:typename:ssize_t file:
+attr_store smartlamp.c /^static ssize_t attr_store(struct kobject *sys_obj, struct kobj_attribute *attr, const char *buff/;" f typeref:typename:ssize_t file:
+attr_store sysfs.c /^static ssize_t attr_store(struct kobject *sys_obj, struct kobj_attribute *attr, const char *buff/;" f typeref:typename:ssize_t file:
+attrs smartlamp.c /^static struct attribute *attrs[] = { &led_attribute.attr, &ldr_attribute.attr, NULL }/;" v typeref:struct:attribute * [] file:
+attrs sysfs.c /^static struct attribute *attrs[] = { &led_attribute.attr, &ldr_attribute.attr, NULL }/;" v typeref:struct:attribute * [] file:
+clean Makefile /^clean:$/;" t
+id_table probe.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table serial.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table serial_write.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table smartlamp.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+id_table sysfs.c /^static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };$/;" v typeref:typename:const struct usb_device_id[] file:
+ignore probe.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore serial.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore serial_write.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore smartlamp.c /^bool ignore = true;$/;" v typeref:typename:bool
+ignore sysfs.c /^bool ignore = true;$/;" v typeref:typename:bool
+ldr_attribute smartlamp.c /^static struct kobj_attribute ldr_attribute = __ATTR(ldr, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+ldr_attribute sysfs.c /^static struct kobj_attribute ldr_attribute = __ATTR(ldr, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+led_attribute smartlamp.c /^static struct kobj_attribute led_attribute = __ATTR(led, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+led_attribute sysfs.c /^static struct kobj_attribute led_attribute = __ATTR(led, S_IRUGO | S_IWUSR, attr_show, attr_sto/;" v typeref:struct:kobj_attribute file:
+recv_line smartlamp.c /^static char recv_line[MAX_RECV_LINE]; \/\/ Armazena dados vindos da USB até recebe/;" v typeref:typename:char[] file:
+smartlamp_device probe.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device serial.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device serial_write.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device smartlamp.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_device sysfs.c /^static struct usb_device *smartlamp_device; \/\/ Referência para o dispositivo USB$/;" v typeref:struct:usb_device * file:
+smartlamp_driver probe.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver serial.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver serial_write.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver smartlamp.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+smartlamp_driver sysfs.c /^static struct usb_driver smartlamp_driver = {$/;" v typeref:struct:usb_driver file:
+sys_obj smartlamp.c /^static struct kobject *sys_obj; \/\/ Executad/;" v typeref:struct:kobject * file:
+sys_obj sysfs.c /^static struct kobject *sys_obj; \/\/ Executad/;" v typeref:struct:kobject * file:
+usb_disconnect probe.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect serial.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect serial_write.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect smartlamp.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_disconnect sysfs.c /^static void usb_disconnect(struct usb_interface *interface) {$/;" f typeref:typename:void file:
+usb_in probe.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in serial.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in serial_write.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in smartlamp.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in sysfs.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_in_buffer probe.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer serial.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer serial_write.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer smartlamp.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_in_buffer sysfs.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_max_size probe.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size serial.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size serial_write.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size smartlamp.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_max_size sysfs.c /^static int usb_max_size; \/\/ Tamanho máximo de uma mensagem USB$/;" v typeref:typename:int file:
+usb_out probe.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out serial.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out serial_write.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out smartlamp.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out sysfs.c /^static uint usb_in, usb_out; \/\/ Endereços das portas de entrada e saida/;" v typeref:typename:uint file:
+usb_out_buffer probe.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer serial.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer serial_write.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer smartlamp.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_out_buffer sysfs.c /^static char *usb_in_buffer, *usb_out_buffer; \/\/ Buffers de entrada e saída da USB$/;" v typeref:typename:char * file:
+usb_probe probe.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe serial.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe serial_write.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe smartlamp.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_probe sysfs.c /^static int usb_probe(struct usb_interface *interface, const struct usb_device_id *id) {$/;" f typeref:typename:int file:
+usb_read_serial serial.c /^static int usb_read_serial() {$/;" f typeref:typename:int file:
+usb_read_serial sysfs.c /^static int usb_read_serial() {$/;" f typeref:typename:int file:
+usb_send_cmd smartlamp.c /^static int usb_send_cmd(char *cmd, int param) {$/;" f typeref:typename:int file:
+usb_write_serial serial_write.c /^static int usb_write_serial(char *cmd, int param) {$/;" f typeref:typename:int file:
diff --git a/smartlamp-kernel-module/Makefile b/smartlamp-kernel-module/Makefile
index be05f47..4564247 100644
--- a/smartlamp-kernel-module/Makefile
+++ b/smartlamp-kernel-module/Makefile
@@ -1,4 +1,5 @@
-obj-m += SUBISTITUA_PELO_NOME_DO_MODULO.o
+obj-m += smartlamp.o
+
PWD := $(CURDIR)
all:
diff --git a/smartlamp-kernel-module/Module.symvers b/smartlamp-kernel-module/Module.symvers
new file mode 100644
index 0000000..e69de29
diff --git a/smartlamp-kernel-module/chaveia_modulo.sh b/smartlamp-kernel-module/chaveia_modulo.sh
new file mode 100755
index 0000000..dfe84b9
--- /dev/null
+++ b/smartlamp-kernel-module/chaveia_modulo.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Função para verificar se um módulo está carregado
+is_module_loaded() {
+ # Verifica se o módulo está carregado
+ lsmod | awk '{print $1}' | grep -q "^$1$"
+}
+
+# Remover o módulo cp210x se estiver carregado
+if is_module_loaded "cp210x"; then
+ echo "Removendo módulo cp210x..."
+ sudo rmmod cp210x
+else
+ echo "Módulo cp210x não está carregado."
+fi
+
+# Inserir o módulo serial se não estiver carregado
+if ! is_module_loaded "serial"; then
+ echo "Inserindo módulo serial..."
+ sudo insmod serial.ko
+else
+ echo "Módulo serial já está carregado."
+ echo "Removendo módulo serial..."
+ sudo rmmod serial
+
+ # Após remover o módulo serial, inserir o módulo cp210x
+ echo "Inserindo módulo cp210x..."
+ sudo modprobe cp210x
+fi
diff --git a/smartlamp-kernel-module/cp21x.sh b/smartlamp-kernel-module/cp21x.sh
new file mode 100755
index 0000000..37f8533
--- /dev/null
+++ b/smartlamp-kernel-module/cp21x.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+rmmod cp210x
+# Defina o nome do módulo que você deseja remover e reinserir
+MODULE_NAME="serial"
+MODULE_FILE="${MODULE_NAME}.ko"
+
+# Verifique se o módulo está carregado
+if lsmod | grep "$MODULE_NAME" &> /dev/null; then
+ echo "Removendo o módulo $MODULE_NAME..."
+ sudo rmmod "$MODULE_NAME"
+ if [ $? -ne 0 ]; then
+ echo "Falha ao remover o módulo $MODULE_NAME. Saindo..."
+ exit 1
+ fi
+else
+ echo "Módulo $MODULE_NAME não está carregado."
+fi
+
+# Execute o make
+echo "Executando 'make'..."
+make
+if [ $? -ne 0 ]; then
+ echo "Falha na execução do 'make'. Saindo..."
+ exit 1
+fi
+
+# Insira novamente o módulo
+echo "Inserindo novamente o módulo $MODULE_NAME..."
+sudo insmod "$MODULE_FILE"
+if [ $? -ne 0 ]; then
+ echo "Falha ao inserir o módulo $MODULE_NAME. Saindo..."
+ exit 1
+fi
+
+echo "Módulo $MODULE_NAME reinserido com sucesso."
diff --git a/smartlamp-kernel-module/modules.order b/smartlamp-kernel-module/modules.order
new file mode 100644
index 0000000..894589b
--- /dev/null
+++ b/smartlamp-kernel-module/modules.order
@@ -0,0 +1,2 @@
+/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o
+]
\ No newline at end of file
diff --git a/smartlamp-kernel-module/modulo.sh b/smartlamp-kernel-module/modulo.sh
new file mode 100755
index 0000000..37f8533
--- /dev/null
+++ b/smartlamp-kernel-module/modulo.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+rmmod cp210x
+# Defina o nome do módulo que você deseja remover e reinserir
+MODULE_NAME="serial"
+MODULE_FILE="${MODULE_NAME}.ko"
+
+# Verifique se o módulo está carregado
+if lsmod | grep "$MODULE_NAME" &> /dev/null; then
+ echo "Removendo o módulo $MODULE_NAME..."
+ sudo rmmod "$MODULE_NAME"
+ if [ $? -ne 0 ]; then
+ echo "Falha ao remover o módulo $MODULE_NAME. Saindo..."
+ exit 1
+ fi
+else
+ echo "Módulo $MODULE_NAME não está carregado."
+fi
+
+# Execute o make
+echo "Executando 'make'..."
+make
+if [ $? -ne 0 ]; then
+ echo "Falha na execução do 'make'. Saindo..."
+ exit 1
+fi
+
+# Insira novamente o módulo
+echo "Inserindo novamente o módulo $MODULE_NAME..."
+sudo insmod "$MODULE_FILE"
+if [ $? -ne 0 ]; then
+ echo "Falha ao inserir o módulo $MODULE_NAME. Saindo..."
+ exit 1
+fi
+
+echo "Módulo $MODULE_NAME reinserido com sucesso."
diff --git a/smartlamp-kernel-module/probe.c b/smartlamp-kernel-module/probe.c
index 7374e5c..2a3c309 100644
--- a/smartlamp-kernel-module/probe.c
+++ b/smartlamp-kernel-module/probe.c
@@ -14,8 +14,8 @@ static uint usb_in, usb_out; // Endereços das portas de e
static char *usb_in_buffer, *usb_out_buffer; // Buffers de entrada e saída da USB
static int usb_max_size; // Tamanho máximo de uma mensagem USB
-#define VENDOR_ID SUBSTITUA_PELO_VENDORID /* Encontre o VendorID do smartlamp */
-#define PRODUCT_ID SUBSTITUA_PELO_PRODUCTID /* Encontre o ProductID do smartlamp */
+#define VENDOR_ID 0x10c4 /* Encontre o VendorID do smartlamp */
+#define PRODUCT_ID 0xea60 /* Encontre o ProductID do smartlamp */
static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };
static int usb_probe(struct usb_interface *ifce, const struct usb_device_id *id); // Executado quando o dispositivo é conectado na USB
diff --git a/smartlamp-kernel-module/serial.c b/smartlamp-kernel-module/serial.c
index fe2b79a..26b4b5c 100644
--- a/smartlamp-kernel-module/serial.c
+++ b/smartlamp-kernel-module/serial.c
@@ -9,14 +9,14 @@ MODULE_LICENSE("GPL");
#define MAX_RECV_LINE 100 // Tamanho máximo de uma linha de resposta do dispositvo USB
-
+static char recv_line[MAX_RECV_LINE]; // Armazena dados vindos da USB até receber um caractere de nova linha '\n'
static struct usb_device *smartlamp_device; // Referência para o dispositivo USB
static uint usb_in, usb_out; // Endereços das portas de entrada e saida da USB
static char *usb_in_buffer, *usb_out_buffer; // Buffers de entrada e saída da USB
static int usb_max_size; // Tamanho máximo de uma mensagem USB
-#define VENDOR_ID SUBSTITUA_PELO_VENDORID /* Encontre o VendorID do smartlamp */
-#define PRODUCT_ID SUBSTITUA_PELO_PRODUCTID /* Encontre o ProductID do smartlamp */
+#define VENDOR_ID 0x10c4 /* Encontre o VendorID do smartlamp */
+#define PRODUCT_ID 0xea60 /* Encontre o ProductID do smartlamp */
static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };
static int usb_probe(struct usb_interface *ifce, const struct usb_device_id *id); // Executado quando o dispositivo é conectado na USB
@@ -65,25 +65,47 @@ static void usb_disconnect(struct usb_interface *interface) {
kfree(usb_out_buffer);
}
-static int usb_read_serial() {
int ret, actual_size;
- int retries = 10; // Tenta algumas vezes receber uma resposta da USB. Depois desiste.
+ int retries = 10; // Tenta várias vezes antes de desistir
+ char usb_in_buffer[MAX_RECV_LINE]; // Buffer para armazenar a resposta do dispositivo
+ int ldr_value; // Valor do LDR a ser retornado
+ char *pos; //Ponteiro para armazenar a posição na string onde uma substring é encontrada.
+
- // Espera pela resposta correta do dispositivo (desiste depois de várias tentativas)
while (retries > 0) {
- // Lê os dados da porta serial e armazena em usb_in_buffer
- // usb_in_buffer - contem a resposta em string do dispositivo
- // actual_size - contem o tamanho da resposta em bytes
- ret = usb_bulk_msg(smartlamp_device, usb_rcvbulkpipe(smartlamp_device, usb_in), usb_in_buffer, min(usb_max_size, MAX_RECV_LINE), &actual_size, 1000);
- if (ret) {
- printk(KERN_ERR "SmartLamp: Erro ao ler dados da USB (tentativa %d). Codigo: %d\n", ret, retries--);
+ // Lê os dados da porta serial
+ ret = usb_bulk_msg(smartlamp_device, usb_rcvbulkpipe(smartlamp_device, usb_in), usb_in_buffer, sizeof(usb_in_buffer), &actual_size, 2000); // Aumenta o tempo de espera
+ if (ret) { //Se a leitura falhar (retorna um código de erro), é impresso um erro e a função tenta novamente, decrementando retries.
+ printk(KERN_ERR "SmartLamp: Erro ao ler dados da USB (tentativa %d). Codigo: %d\n", retries, ret);
+ retries--;
continue;
}
//caso tenha recebido a mensagem 'RES_LDR X' via serial acesse o buffer 'usb_in_buffer' e retorne apenas o valor da resposta X
//retorne o valor de X em inteiro
- return 0;
+
+ for(i=0; i< actual_size; i++){
+ // printk(KERN_INFO "usb_in_buffer[%d] = %c\n", i, usb_in_buffer[i]);
+
+ if(usb_in_buffer[i] == '\n') {
+ // recv_line[count] = '\0';
+ printk(KERN_INFO "SmartLamp: Recebido uma linha: '%s'\n", recv_line);
+ printk(KERN_INFO "fim de linha\n");
+
+ if(sscanf(recv_line, "%*s %*s %d", &ret) == 1) return ret;
+ else return 0;
+
+ }
+ else{
+ recv_line[count] = usb_in_buffer[i];
+ printk(KERN_INFO "SmartLamp: Recebido uma linha: '%s'\n", recv_line);
+ count ++;
+ }
+
+ }
+
}
return -1;
-}
\ No newline at end of file
+
+}
diff --git a/smartlamp-kernel-module/serial_write.c b/smartlamp-kernel-module/serial_write.c
index 41e4e79..c0aedb3 100644
--- a/smartlamp-kernel-module/serial_write.c
+++ b/smartlamp-kernel-module/serial_write.c
@@ -1,6 +1,10 @@
#include
#include
#include
+#include // Para msleep e ssleep
+
+
+
MODULE_AUTHOR("DevTITANS ");
MODULE_DESCRIPTION("Driver de acesso ao SmartLamp (ESP32 com Chip Serial CP2102");
@@ -15,13 +19,14 @@ static uint usb_in, usb_out; // Endereços das portas de e
static char *usb_in_buffer, *usb_out_buffer; // Buffers de entrada e saída da USB
static int usb_max_size; // Tamanho máximo de uma mensagem USB
-#define VENDOR_ID SUBSTITUA_PELO_VENDORID /* Encontre o VendorID do smartlamp */
-#define PRODUCT_ID SUBSTITUA_PELO_PRODUCTID /* Encontre o ProductID do smartlamp */
+#define VENDOR_ID 0x10c4 /* Encontre o VendorID do smartlamp */
+#define PRODUCT_ID 0xea60 /* Encontre o ProductID do smartlamp */
static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };
static int usb_probe(struct usb_interface *ifce, const struct usb_device_id *id); // Executado quando o dispositivo é conectado na USB
static void usb_disconnect(struct usb_interface *ifce); // Executado quando o dispositivo USB é desconectado da USB
-static int usb_read_serial(void); // Executado para ler a saida da porta serial
+static int usb_read_serial(void);
+static int usb_write_serial(char *cmd, int param);
MODULE_DEVICE_TABLE(usb, id_table);
bool ignore = true;
@@ -51,11 +56,14 @@ static int usb_probe(struct usb_interface *interface, const struct usb_device_id
usb_in_buffer = kmalloc(usb_max_size, GFP_KERNEL);
usb_out_buffer = kmalloc(usb_max_size, GFP_KERNEL);
-
- usb_write_serial(COMANDO_SMARTLAMP, VALOR);
+ ssleep(1);
+ usb_write_serial("SET_LED", 100);
printk("LDR Value: %d\n", LDR_value);
+ ssleep(2);
+ usb_write_serial("SET_LED", 0);
+
return 0;
}
@@ -72,7 +80,14 @@ static int usb_write_serial(char *cmd, int param) {
// use a variavel usb_out_buffer para armazernar o comando em formato de texto que o firmware reconheça
+ // Concatena a string (cmd) e o número (param)
+ //usb_out_buffer = "SET_LED 0\n";
+ snprintf(usb_out_buffer, usb_max_size, "%s %d\r\n", cmd, param);
+
// Grave o valor de usb_out_buffer com printk
+ // printk(KERN_INFO "SmartLamp: Dispositivo desconectado.\n");
+ printk("Command: %s\n", usb_out_buffer);
+
// Envie o comando pela porta Serial
ret = usb_bulk_msg(smartlamp_device, usb_sndbulkpipe(smartlamp_device, usb_out), usb_out_buffer, strlen(usb_out_buffer), &actual_size, 1000*HZ);
@@ -83,7 +98,10 @@ static int usb_write_serial(char *cmd, int param) {
// Use essa variavel para fazer a integração com a função usb_read_serial
// resp_expected deve conter a resposta esperada do comando enviado e deve ser comparada com a resposta recebida
+
sprintf(resp_expected, "RES %s", cmd);
+ // free(usb_out_buffer);
+
return -1;
-}
\ No newline at end of file
+}
diff --git a/smartlamp-kernel-module/smartlamp.c b/smartlamp-kernel-module/smartlamp.c
index 91362ca..88e9f76 100644
--- a/smartlamp-kernel-module/smartlamp.c
+++ b/smartlamp-kernel-module/smartlamp.c
@@ -16,13 +16,15 @@ static uint usb_in, usb_out; // Endereços das portas de e
static char *usb_in_buffer, *usb_out_buffer; // Buffers de entrada e saída da USB
static int usb_max_size; // Tamanho máximo de uma mensagem USB
-#define VENDOR_ID SUBSTITUA_PELO_VENDORID /* Encontre o VendorID do smartlamp */
-#define PRODUCT_ID SUBSTITUA_PELO_PRODUCTID /* Encontre o ProductID do smartlamp */
+#define VENDOR_ID 0x10c4 /* Encontre o VendorID do smartlamp */
+#define PRODUCT_ID 0xea60 /* Encontre o ProductID do smartlamp */
+
static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };
static int usb_probe(struct usb_interface *ifce, const struct usb_device_id *id); // Executado quando o dispositivo é conectado na USB
static void usb_disconnect(struct usb_interface *ifce); // Executado quando o dispositivo USB é desconectado da USB
-static int usb_read_serial(void);
+static int usb_send_cmd(char *cmd, int param);
+// static int usb_read_serial(void);
// Executado quando o arquivo /sys/kernel/smartlamp/{led, ldr} é lido (e.g., cat /sys/kernel/smartlamp/led)
static ssize_t attr_show(struct kobject *sys_obj, struct kobj_attribute *attr, char *buff);
@@ -31,7 +33,10 @@ static ssize_t attr_store(struct kobject *sys_obj, struct kobj_attribute *attr,
// Variáveis para criar os arquivos no /sys/kernel/smartlamp/{led, ldr}
static struct kobj_attribute led_attribute = __ATTR(led, S_IRUGO | S_IWUSR, attr_show, attr_store);
static struct kobj_attribute ldr_attribute = __ATTR(ldr, S_IRUGO | S_IWUSR, attr_show, attr_store);
-static struct attribute *attrs[] = { &led_attribute.attr, &ldr_attribute.attr, NULL };
+static struct kobj_attribute temp_attribute = __ATTR(temp, S_IRUGO | S_IWUSR, attr_show, attr_store);
+static struct kobj_attribute hum_attribute = __ATTR(hum, S_IRUGO | S_IWUSR, attr_show, attr_store);
+
+static struct attribute *attrs[] = { &led_attribute.attr, &ldr_attribute.attr, &temp_attribute.attr, &hum_attribute.attr, NULL };
static struct attribute_group attr_group = { .attrs = attrs };
static struct kobject *sys_obj; // Executado para ler a saida da porta serial
@@ -68,7 +73,7 @@ static int usb_probe(struct usb_interface *interface, const struct usb_device_id
usb_in_buffer = kmalloc(usb_max_size, GFP_KERNEL);
usb_out_buffer = kmalloc(usb_max_size, GFP_KERNEL);
- LDR_value = usb_read_serial();
+ // LDR_value = usb_read_serial();
printk("LDR Value: %d\n", LDR_value);
@@ -94,22 +99,32 @@ static int usb_send_cmd(char *cmd, int param) {
char resp_expected[MAX_RECV_LINE]; // Resposta esperada do comando
char *resp_pos; // Posição na linha lida que contém o número retornado pelo dispositivo
long resp_number = -1; // Número retornado pelo dispositivo (e.g., valor do led, valor do ldr)
+ int count = 0;
printk(KERN_INFO "SmartLamp: Enviando comando: %s\n", cmd);
// preencha o buffer // Caso contrário, é só o comando mesmo
-
+
+ memset(usb_out_buffer, 0, sizeof(usb_out_buffer));
+
+ if(param < 0){
+ sprintf(usb_out_buffer, "%s\r\n", cmd);
+ }else if (param >= 0 & param <= 100) {
+ sprintf(usb_out_buffer, "%s %d\r\n", cmd, param);
+ }
// Envia o comando (usb_out_buffer) para a USB
// Procure a documentação da função usb_bulk_msg para entender os parâmetros
- ret = usb_bulk_msg(smartlamp_device, usb_sndbulkpipe(smartlamp_device, usb_out), BUFFER, ?, &actual_size, 1000);
+ ret = usb_bulk_msg(smartlamp_device, usb_sndbulkpipe(smartlamp_device, usb_out), usb_out_buffer, strlen(usb_out_buffer), &actual_size, 1000);
if (ret) {
printk(KERN_ERR "SmartLamp: Erro de codigo %d ao enviar comando!\n", ret);
return -1;
}
- sprintf(resp_expected, "RES %s", cmd); // Resposta esperada. Ficará lendo linhas até receber essa resposta.
+ // sprintf(resp_expected, "RES %s", cmd); // Resposta esperada. Ficará lendo linhas até receber essa resposta.
// Espera pela resposta correta do dispositivo (desiste depois de várias tentativas)
+ memset(recv_line, 0, sizeof(recv_line));
+
while (retries > 0) {
// Lê dados da USB
ret = usb_bulk_msg(smartlamp_device, usb_rcvbulkpipe(smartlamp_device, usb_in), usb_in_buffer, min(usb_max_size, MAX_RECV_LINE), &actual_size, 1000);
@@ -119,22 +134,55 @@ static int usb_send_cmd(char *cmd, int param) {
}
// adicione a sua implementação do médodo usb_read_serial
+ for(i=0; i< actual_size; i++){
+
+ if(usb_in_buffer[i] == '\n') {
+ // recv_line[count] = '\0';
+ printk(KERN_INFO "SmartLamp: Recebido uma linha: '%s'\n", recv_line);
+ printk(KERN_INFO "fim de linha\n");
+
+ if(sscanf(recv_line, "%*s %*s %d", &ret) == 1) return ret;
+ else return 0;
+
+ }
+ else{
+ recv_line[count] = usb_in_buffer[i];
+ printk(KERN_INFO "SmartLamp: Recebido um caractere: '%s'\n", recv_line);
+ count ++;
+ }
+
+ }
+
}
+
return -1; // Não recebi a resposta esperada do dispositivo
}
// Executado quando o arquivo /sys/kernel/smartlamp/{led, ldr} é lido (e.g., cat /sys/kernel/smartlamp/led)
static ssize_t attr_show(struct kobject *sys_obj, struct kobj_attribute *attr, char *buff) {
// value representa o valor do led ou ldr
- int value;
+ int value = -1;
// attr_name representa o nome do arquivo que está sendo lido (ldr ou led)
const char *attr_name = attr->attr.name;
// printk indicando qual arquivo está sendo lido
printk(KERN_INFO "SmartLamp: Lendo %s ...\n", attr_name);
+
+
// Implemente a leitura do valor do led ou ldr usando a função usb_send_cmd()
+ if(attr_name == "ldr"){
+ value = usb_send_cmd("GET_LDR", -1);
+ } else if(attr_name == "led") {
+ value = usb_send_cmd("GET_LED", -1);
+ } else if (attr_name == "temp") {
+ value = usb_send_cmd("GET_TEMP", -1);
+ } else if (attr_name == "hum") {
+ value = usb_send_cmd("GET_HUM", -1);
+ }
+
+
sprintf(buff, "%d\n", value); // Cria a mensagem com o valor do led, ldr
return strlen(buff);
}
@@ -157,6 +205,13 @@ static ssize_t attr_store(struct kobject *sys_obj, struct kobj_attribute *attr,
// utilize a função usb_send_cmd para enviar o comando SET_LED X
+ if(attr_name == "led"){
+ ret = usb_send_cmd("SET_LED", (int)value);
+ } else {
+ printk(KERN_ALERT "SmartLamp: %s não permite comando SET.\n", attr_name);
+ ret = -1;
+ }
+
if (ret < 0) {
printk(KERN_ALERT "SmartLamp: erro ao setar o valor do %s.\n", attr_name);
return -EACCES;
diff --git a/smartlamp-kernel-module/smartlamp.ko b/smartlamp-kernel-module/smartlamp.ko
new file mode 100644
index 0000000..9693d05
Binary files /dev/null and b/smartlamp-kernel-module/smartlamp.ko differ
diff --git a/smartlamp-kernel-module/smartlamp.mod b/smartlamp-kernel-module/smartlamp.mod
new file mode 100644
index 0000000..59c8034
--- /dev/null
+++ b/smartlamp-kernel-module/smartlamp.mod
@@ -0,0 +1 @@
+/home/pantoja/devtitans/Hands-On-Linux/smartlamp-kernel-module/smartlamp.o
diff --git a/smartlamp-kernel-module/smartlamp.mod.c b/smartlamp-kernel-module/smartlamp.mod.c
new file mode 100644
index 0000000..34ff651
--- /dev/null
+++ b/smartlamp-kernel-module/smartlamp.mod.c
@@ -0,0 +1,58 @@
+#include
+#define INCLUDE_VERMAGIC
+#include
+#include
+#include
+#include
+#include
+
+BUILD_SALT;
+BUILD_LTO_INFO;
+
+MODULE_INFO(vermagic, VERMAGIC_STRING);
+MODULE_INFO(name, KBUILD_MODNAME);
+
+__visible struct module __this_module
+__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 __section("__versions") = {
+ { 0x92997ed8, "_printk" },
+ { 0x76b74ec3, "kobject_put" },
+ { 0x37a0cba, "kfree" },
+ { 0x3c3ff9fd, "sprintf" },
+ { 0x754d539c, "strlen" },
+ { 0x499cbaef, "usb_bulk_msg" },
+ { 0xbcab6ee6, "sscanf" },
+ { 0x87a21cb3, "__ubsan_handle_out_of_bounds" },
+ { 0xa19b956, "__stack_chk_fail" },
+ { 0x3854774b, "kstrtoll" },
+ { 0x41daf981, "kernel_kobj" },
+ { 0x5b7fa4b9, "kobject_create_and_add" },
+ { 0x1af1895d, "sysfs_create_group" },
+ { 0x93c7edeb, "usb_find_common_endpoints" },
+ { 0xeb233a45, "__kmalloc" },
+ { 0xdf6dd88f, "usb_deregister" },
+ { 0xbdfb6dbb, "__fentry__" },
+ { 0xe7444c51, "usb_register_driver" },
+ { 0x5b8239ca, "__x86_return_thunk" },
+ { 0xb3debb2c, "module_layout" },
+};
+
+MODULE_INFO(depends, "");
+
+MODULE_ALIAS("usb:v10C4pEA60d*dc*dsc*dp*ic*isc*ip*in*");
+
+MODULE_INFO(srcversion, "D28D7B8E9E398633526D256");
diff --git a/smartlamp-kernel-module/smartlamp.mod.o b/smartlamp-kernel-module/smartlamp.mod.o
new file mode 100644
index 0000000..3e4cb92
Binary files /dev/null and b/smartlamp-kernel-module/smartlamp.mod.o differ
diff --git a/smartlamp-kernel-module/smartlamp.o b/smartlamp-kernel-module/smartlamp.o
new file mode 100644
index 0000000..2a94aff
Binary files /dev/null and b/smartlamp-kernel-module/smartlamp.o differ
diff --git a/smartlamp-kernel-module/sysfs.c b/smartlamp-kernel-module/sysfs.c
index 385d5db..76c065f 100644
--- a/smartlamp-kernel-module/sysfs.c
+++ b/smartlamp-kernel-module/sysfs.c
@@ -15,8 +15,8 @@ static uint usb_in, usb_out; // Endereços das portas de e
static char *usb_in_buffer, *usb_out_buffer; // Buffers de entrada e saída da USB
static int usb_max_size; // Tamanho máximo de uma mensagem USB
-#define VENDOR_ID SUBSTITUA_PELO_VENDORID /* Encontre o VendorID do smartlamp */
-#define PRODUCT_ID SUBSTITUA_PELO_PRODUCTID /* Encontre o ProductID do smartlamp */
+#define VENDOR_ID 0x10c4 /* Encontre o VendorID do smartlamp */
+#define PRODUCT_ID 0xea60 /* Encontre o ProductID do smartlamp */
static const struct usb_device_id id_table[] = { { USB_DEVICE(VENDOR_ID, PRODUCT_ID) }, {} };
static int usb_probe(struct usb_interface *ifce, const struct usb_device_id *id); // Executado quando o dispositivo é conectado na USB
diff --git a/smartlamp-kernel-module/sysfs.ko b/smartlamp-kernel-module/sysfs.ko
new file mode 100644
index 0000000..68629f2
Binary files /dev/null and b/smartlamp-kernel-module/sysfs.ko differ
diff --git a/smartlamp-kernel-module/sysfs.mod b/smartlamp-kernel-module/sysfs.mod
new file mode 100644
index 0000000..2c6aa2b
--- /dev/null
+++ b/smartlamp-kernel-module/sysfs.mod
@@ -0,0 +1,2 @@
+/home/devtitans-2/Hands-On-Linux/smartlamp-kernel-module/sysfs.o
+
diff --git a/smartlamp-kernel-module/sysfs.mod.c b/smartlamp-kernel-module/sysfs.mod.c
new file mode 100644
index 0000000..9239d36
--- /dev/null
+++ b/smartlamp-kernel-module/sysfs.mod.c
@@ -0,0 +1,54 @@
+#include
+#define INCLUDE_VERMAGIC
+#include
+#include
+#include
+#include
+
+BUILD_SALT;
+BUILD_LTO_INFO;
+
+MODULE_INFO(vermagic, VERMAGIC_STRING);
+MODULE_INFO(name, KBUILD_MODNAME);
+
+__visible struct module __this_module
+__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 __section("__versions") = {
+ { 0x367fcc51, "module_layout" },
+ { 0x4e89151d, "usb_deregister" },
+ { 0xf0fca0ae, "usb_register_driver" },
+ { 0xb341d9ba, "usb_bulk_msg" },
+ { 0xeb233a45, "__kmalloc" },
+ { 0x93c7edeb, "usb_find_common_endpoints" },
+ { 0x97f953e0, "sysfs_create_group" },
+ { 0x6fabae87, "kobject_create_and_add" },
+ { 0x7bdf274f, "kernel_kobj" },
+ { 0x3c3ff9fd, "sprintf" },
+ { 0xd0da656b, "__stack_chk_fail" },
+ { 0x754d539c, "strlen" },
+ { 0x3854774b, "kstrtoll" },
+ { 0x5b8239ca, "__x86_return_thunk" },
+ { 0x37a0cba, "kfree" },
+ { 0x4a165127, "kobject_put" },
+ { 0x92997ed8, "_printk" },
+ { 0xbdfb6dbb, "__fentry__" },
+};
+
+MODULE_INFO(depends, "");
+
+MODULE_ALIAS("usb:v10C4pEA60d*dc*dsc*dp*ic*isc*ip*in*");
+
+MODULE_INFO(srcversion, "81A5737E5C79F8B43F8CB54");
diff --git a/smartlamp-kernel-module/sysfs.mod.o b/smartlamp-kernel-module/sysfs.mod.o
new file mode 100644
index 0000000..5374249
Binary files /dev/null and b/smartlamp-kernel-module/sysfs.mod.o differ
diff --git a/smartlamp-kernel-module/sysfs.o b/smartlamp-kernel-module/sysfs.o
new file mode 100644
index 0000000..f3ff57f
Binary files /dev/null and b/smartlamp-kernel-module/sysfs.o differ
diff --git a/smartlamp-kernel-module/teste b/smartlamp-kernel-module/teste
new file mode 100755
index 0000000..51b22e8
Binary files /dev/null and b/smartlamp-kernel-module/teste differ
diff --git a/smartlamp-kernel-module/teste.c b/smartlamp-kernel-module/teste.c
new file mode 100644
index 0000000..4c36a91
--- /dev/null
+++ b/smartlamp-kernel-module/teste.c
@@ -0,0 +1,16 @@
+#include
+#include
+
+char *usb_out_buffer;
+
+void teste(char *cmd, int param){
+ sprintf(usb_out_buffer, "%s %d", cmd, param);
+}
+
+int main() {
+ usb_out_buffer = malloc(100);
+
+ teste("Mateus", 1);
+ printf("%s\n", usb_out_buffer);
+ return 0;
+}
\ No newline at end of file
diff --git a/smartlamp.ino b/smartlamp.ino
deleted file mode 100644
index 62349a3..0000000
--- a/smartlamp.ino
+++ /dev/null
@@ -1,44 +0,0 @@
-// Defina os pinos de LED e LDR
-// Defina uma variável com valor máximo do LDR (4000)
-// Defina uma variável para guardar o valor atual do LED (10)
-int ledPin;
-int ledValue;
-
-int ldrPin;
-// Faça testes no sensor ldr para encontrar o valor maximo e atribua a variável ldrMax
-int ldrMax;
-
-void setup() {
- Serial.begin(9600);
-
- pinMode(ledPin, OUTPUT);
- pinMode(ldrPin, INPUT);
-
- Serial.printf("SmartLamp Initialized.\n");
-
-
-}
-
-// Função loop será executada infinitamente pelo ESP32
-void loop() {
- //Obtenha os comandos enviados pela serial
- //e processe-os com a função processCommand
-}
-
-
-void processCommand(String command) {
- // compare o comando com os comandos possíveis e execute a ação correspondente
-}
-
-// Função para atualizar o valor do LED
-void ledUpdate() {
- // Valor deve convertar o valor recebido pelo comando SET_LED para 0 e 255
- // Normalize o valor do LED antes de enviar para a porta correspondente
-}
-
-// Função para ler o valor do LDR
-int ldrGetValue() {
- // Leia o sensor LDR e retorne o valor normalizado entre 0 e 100
- // faça testes para encontrar o valor maximo do ldr (exemplo: aponte a lanterna do celular para o sensor)
- // Atribua o valor para a variável ldrMax e utilize esse valor para a normalização
-}
\ No newline at end of file
diff --git a/smartlamp/smartlamp.ino b/smartlamp/smartlamp.ino
new file mode 100644
index 0000000..2338f94
--- /dev/null
+++ b/smartlamp/smartlamp.ino
@@ -0,0 +1,183 @@
+/**
+ * @file smartlamp.ino
+ * @author Mateus Pantoja
+ * @author Lahis Almeida (lahis.gomes.almeida@gmail.com)
+ * @author Nelson (to do)
+ * @author Pedro Mendes (to do)
+ * @author Wanderson (to do)
+ *
+ * @brief Main code of ESP32 smartlamp firmware. This code is responsible for (... to do)
+ *
+ * @version 1.0
+ * @date 2024-10-08
+ *
+ * @copyright Copyright (c) 2024
+ *
+ */
+// --- Definação de includes
+ #include "DHT.h"
+
+ // --- Definação de defines
+#define DHTTYPE DHT11
+#define DHTPIN 14
+
+// --- Definação de variáveis
+int ledPin = 26;
+int ledValue = 0;
+
+int ldrPin = 27;
+int ldrValue = 10;
+int ldrMax = 4045;
+
+
+DHT dht(DHTPIN, DHTTYPE);
+
+// Função setup de configuração
+void setup() {
+ Serial.begin(9600);
+
+ pinMode(ledPin, OUTPUT);
+ pinMode(ldrPin, INPUT);
+
+
+ analogWrite(ledPin, 0);
+ dht.begin();
+
+
+// Serial.printf("SmartLamp Initialized.\n");
+ processCommand("GET_TEMP");
+
+
+ // Uncomment line bellow to recalibrate LDR max value
+ // calibrate_ldrMax();
+ //Chamando o processo command para realizar tarefa 3. Ao final da tarefa apenas comentar a linha
+
+
+
+}
+
+// Função loop será executada infinitamente pelo ESP32
+void loop() {
+ delay(2000);
+
+ // Fica a espera de comandos seriais
+ while (Serial.available() > 0)
+ {
+ // Lê o comando até que o timeout padrão (to do) seja esgotado
+ String command = Serial.readString();
+ processCommand(command);
+ //delay(2000);
+ }
+
+}
+
+// Função responsável por processar comandos
+void processCommand(String command)
+{
+ // Remove qualquer eventual caracter \r\n no final do comando serial
+ String driver_command = command;
+ driver_command.trim();
+
+ // ---- Condições que comparam comandos pré-estabelecidos e executam ações correspondentes
+ // Checa se o comando SET_LED foi recebido na serial
+ if (driver_command.indexOf("SET_LED") == 0)
+ {
+ int index = driver_command.indexOf("SET_LED");
+ ledValue = driver_command.substring(index + 8).toInt();
+ if (ledValue >= 0 && ledValue <= 100)
+ {
+ ledUpdate(ledValue);
+ Serial.printf("RES SET_LED %d\r\n", 1);
+ }
+ else
+ {
+ Serial.printf("RES SET_LED %d\r\n", -1);
+ }
+ }
+ // Checa se o comando GET_LED foi recebido na serial
+ else if (driver_command == "GET_LED")
+ {
+ Serial.printf("RES GET_LED %d\r\n", ledValue);
+ }
+ // Checa se o comando GET_LDR foi recebido na serial
+ else if (driver_command == "GET_LDR")
+ {
+ ldrValue = ldrGetValue();
+ Serial.printf("RES GET_LDR %d\r\n", ldrValue);
+ }
+
+ // Checa se o comando GET_TEMP foi recebido na serial
+ else if (driver_command == "GET_TEMP")
+ {
+ float tempValue = tempGetValue();
+ Serial.printf("RES GET_TEMP %.2f\r\n", tempValue);
+ }
+ // Checa se o comando GET_TEMP foi recebido na serial
+ else if (driver_command == "GET_HUM")
+ {
+ float humiValue = humiGetValue();
+ Serial.printf("RES GET_HUM %.2f\r\n", humiValue);
+ }
+ // Checa se o comando qualquer outro comando diferente dos pre-estabelecidos foi recebido na serial
+ else
+ {
+ Serial.println("ERR Unknown command");
+ }
+}
+
+// Função para atualizar o valor do LED
+void ledUpdate(int ledValue) {
+ // Normalizeação do valor do LED antes de envio para a porta correspondente
+ int ledValueNormalized = map(ledValue, 0, 100, 0, 255);
+
+ // Envio de valor normazliado para a porta correspondente
+ analogWrite(ledPin, ledValueNormalized); //ledValueNormalized
+
+ delay(50);
+
+}
+
+// Função para ler o valor do LDR
+int ldrGetValue() {
+ // Leitura do sensor LDR
+ int value = analogRead(ldrPin);
+ //Serial.printf("LDR sensor value: %d\n", value);
+
+ // Normalização do valor do sensor LDR para a faixa de 0 a 100
+ int ldrNormalizedValue = map(value, 0, 4045, 0, 100);
+ return ldrNormalizedValue;
+}
+
+
+// Função para ler o valor do DHT Temperatura
+float tempGetValue() {
+ // Leitura do sensor DHT Temperatura
+ float temp = dht.readTemperature();
+ //Serial.printf("TEMP sensor value: %.2f\n", temp);
+ return temp;
+}
+
+// Função para ler o valor do DHT Humidity
+float humiGetValue() {
+ // Leitura do sensor DHT Humidity
+
+ float humi = dht.readHumidity();
+ //Serial.printf("HUMI sensor value: %d\n", humi);
+
+ return humi;
+}
+
+// Função responsável por calibrar o valor máximo do LDR
+void calibrate_ldrMax()
+{
+ // O Loop abaixo é utilizado para encontrar o valor maximo do LDR ao
+ // se apontar, por exemplo, a lanterna do celular para o sensor)
+ while (true)
+ {
+ // Leitura de valor do sensor LDR
+ int value = analogRead(ldrPin);
+ Serial.printf("LDR sensor value: %d\n", value);
+ delay(500);
+ }
+
+}