[REFACTOR] add parser module in build system
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Mon, 1 Jul 2013 07:18:59 +0000 (11:18 +0400)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Mon, 1 Jul 2013 07:18:59 +0000 (11:18 +0400)
parser/Kbuild
parser/Makefile [deleted file]
parser/Makefile.am [new file with mode: 0644]
parser/swap_message_parser.sh [new file with mode: 0755]
parser/swap_message_parser_module.c

index c2a3d2e..f457efe 100644 (file)
@@ -1,5 +1,6 @@
-EXTRA_CFLAGS :=
+EXTRA_CFLAGS := $(extra_cflags)
 
 obj-m := swap_message_parser.o
-
-swap_message_parser-y := swap_message_parser_module.o message_parser.o message_handler.o
+swap_message_parser-y := swap_message_parser_module.o \
+                         message_parser.o \
+                         message_handler.o
diff --git a/parser/Makefile b/parser/Makefile
deleted file mode 100644 (file)
index 2fe167c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-KERNEL_OBJECTS := swap_message_parser.o swap_message_parser.mod.c swap_message_parser.mod.o swap_message_parser_module.o message_parser.o message_handler.o
-#TOOLCHAIN :=/home/alexander/dev/u1_slp/arm-linux-gnueabi-gcc4.4.1-glibc2.11.1/bin/arm-none-linux-gnueabi-
-TOOLCHAIN := /home/alexander/dev/qemu/buildroot-2013.02/output/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-
-#KERNEL := /home/alexander/dev/u1_slp/kernel_20121005 
-#KERNEL := /home/alexander/vanilla_kernels/linux-3.8.6
-KERNEL := /home/alexander/dev/linux-3.4-exynos
-CC := /home/alexander/dev/u1_slp/arm-linux-gnueabi-gcc4.4.1-glibc2.11.1/bin/arm-none-linux-gnueabi-gcc
-obj-m := swap_parser_module.o
-
-all:
-       make ARCH=arm CROSS_COMPILE=$(TOOLCHAIN) -C $(KERNEL) SUBDIRS=$(PWD) modules
-
-clean:
-       rm $(KERNEL_OBJECTS)
diff --git a/parser/Makefile.am b/parser/Makefile.am
new file mode 100644 (file)
index 0000000..43c1221
--- /dev/null
@@ -0,0 +1,24 @@
+board_opt = -DBOARD_@BOARD@
+target_kernel_src = @KERNEL@
+target_arch = @ARCH@
+module_dir = $(realpath $(top_srcdir)/src/modules/parser)
+module_name = swap_message_parser
+cross_compiler = $(subst gcc,,$(CC))
+
+inlude_opt = -I$(realpath $(top_srcdir)/src/modules/)
+extra_cflags = "$(inlude_opt) $(board_opt)"
+
+all-local:
+       $(MAKE) CROSS_COMPILE=$(cross_compiler) ARCH=$(target_arch) extra_cflags=$(extra_cflags) \
+               $(AM_MAKEFLAGS) -C $(target_kernel_src) M=$(module_dir) modules
+
+       echo "generate data for version patching <$(OBJDUMP)><$(READELF)>"
+       PATH=$(PATH) $(top_srcdir)/src/modules/driver/patchko.sh -g $(module_dir)/$(module_name).ko $(OBJDUMP) $(READELF)
+
+clean-local:
+       $(MAKE) CROSS_COMPILE=$(cross_compiler) ARCH=$(target_arch) $(AM_MAKEFLAGS) -C $(target_kernel_src) M=$(module_dir) clean
+
+install-exec-local:
+       install -m 644 $(module_dir)/$(module_name).ko $(prefix)
+       install -m 644 $(module_dir)/$(module_name).ko.addr $(prefix)
+       install -m 755 $(module_dir)/$(module_name).sh $(prefix)
diff --git a/parser/swap_message_parser.sh b/parser/swap_message_parser.sh
new file mode 100755 (executable)
index 0000000..07f5117
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+MODULE_NAME=swap_message_parser
+
+# Check for running module in /proc/modules
+RUNNING=`sed "/${MODULE_NAME}/ ! d" /proc/modules`
+
+if [ "${RUNNING}" = "" ]; then
+    ./bin/insmod.sh ${MODULE_NAME}.ko
+    if [ $? -ne 0 ]; then
+            echo "Error: unable to load ${MODULE_NAME} module!"
+           exit 1
+    fi
+else
+       echo "${MODULE_NAME} module is already running!"
+       exit 1
+fi
index 981d8f6..4db839f 100644 (file)
@@ -4,8 +4,8 @@
 #include "message_handler.h"
 #include "swap_message_parser_errors.h"
 
-#include "/home/alexander/swap_driver/swap_driver_module.h" //TODO Remove hardcode
-#include "/home/alexander/swap_driver/ioctl_commands.h" // TODO Remove hardcode
+#include <driver_new/swap_driver_module.h>
+#include <driver_new/ioctl_commands.h>
 
 
 int swap_message_parser_handler(unsigned int cmd, void __user *msg)