From 12a0e05357046e18cfe523bd5f58ca1da9232749 Mon Sep 17 00:00:00 2001 From: gatieme Date: Mon, 8 May 2017 13:44:10 +0800 Subject: [PATCH] hello... --- .../1-3register_chrdev/test/test | Bin 0 -> 8910 bytes .../3-components_of_a_systemTap_script/1.stp | 16 ++++ study/debug/tools/systemtap/1.stp | 22 +++++ study/debug/tools/systemtap/m.stp | 9 ++ study/debug/tools/systemtap/t.c | 21 +++++ study/driver/00-code/android/hello/hello.c | 1 + study/driver/00-code/export_symbol/Makefile | 80 ++++++++++++++++++ study/driver/00-code/export_symbol/add_sub.c | 21 +++++ study/driver/00-code/export_symbol/add_sub.h | 8 ++ study/driver/00-code/export_symbol/test.c | 52 ++++++++++++ 10 files changed, 230 insertions(+) create mode 100755 books/fengguojin/src/1-drivermodel/1-3register_chrdev/test/test create mode 100644 study/debug/tools/systemtap/00-code/3-components_of_a_systemTap_script/1.stp create mode 100644 study/debug/tools/systemtap/1.stp create mode 100644 study/debug/tools/systemtap/m.stp create mode 100644 study/debug/tools/systemtap/t.c create mode 100644 study/driver/00-code/export_symbol/Makefile create mode 100644 study/driver/00-code/export_symbol/add_sub.c create mode 100644 study/driver/00-code/export_symbol/add_sub.h create mode 100644 study/driver/00-code/export_symbol/test.c diff --git a/books/fengguojin/src/1-drivermodel/1-3register_chrdev/test/test b/books/fengguojin/src/1-drivermodel/1-3register_chrdev/test/test new file mode 100755 index 0000000000000000000000000000000000000000..42dc9ddaf04a0803cbac6c2140c3359351087ca5 GIT binary patch literal 8910 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 File Name: t.c + > Author: gatieme + > Created Time: Thu 13 Apr 2017 06:13:39 PM CST + ************************************************************************/ + +#include +#include + + +void fun() +{ + malloc(1000); +} + +int main(int argc, char *argv[]) +{ + fun(); + + return 0; +} diff --git a/study/driver/00-code/android/hello/hello.c b/study/driver/00-code/android/hello/hello.c index 2d22a1a..e99ec2d 100644 --- a/study/driver/00-code/android/hello/hello.c +++ b/study/driver/00-code/android/hello/hello.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "hello.h" diff --git a/study/driver/00-code/export_symbol/Makefile b/study/driver/00-code/export_symbol/Makefile new file mode 100644 index 0000000..b14b45c --- /dev/null +++ b/study/driver/00-code/export_symbol/Makefile @@ -0,0 +1,80 @@ +# ------------------------------------------------------------------------------ +# +# Makefile for the LDD-LinuxDeviceDrivers. +# +# Author: gatieme +# Create: 2016-07-29 15:50:46 +# Last modified: 2016-07-29 16:10:29 +# Description: +# This program is loaded as a kernel(v2.6.18 or later) module. +# Use "make install" to load it into kernel. +# Use "make remove" to remove the module out of kernel. +# +# ------------------------------------------------------------------------------ + + +ROOT=.. +#PLATFORM=$(shell $(ROOT)/systype.sh) +#include $(ROOT)/Make.defines.$(PLATFORM) + +# my driver description +DRIVER_VERSION := "1.0.0" +DRIVER_AUTHOR := "Gatieme @ AderStep Inc..." +DRIVER_DESC := "Linux input module for Elo MultiTouch(MT) devices" +DRIVER_LICENSE := "Dual BSD/GPL" + + +#MODCFLAGS:=-O2 -Wall -DMODULE -D__KERNEL__ -DLINUX -std=c99 +#EXTRA_CFLAGS += $(MODULE_FLAGS) $(CFG_INC) $(CFG_INC) + + + +ifneq ($(KERNELRELEASE),) # kernelspace + +obj-m += add_sub.o +obj-m += test.o + +else # userspace + + +CURRENT_PATH ?= $(shell pwd) +LINUX_KERNEL ?= $(shell uname -r) +LINUX_KERNEL_PATH ?= /lib/modules/$(LINUX_KERNEL)/build + +CURRENT_PATH := $(shell pwd) + +modules: + make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules + +modules_install: + make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules_install + + + +insmod: + sudo insmod $(MODULE_NAME).ko + +reinsmod: + sudo rmmod $(MODULE_NAME) + sudo insmod $(MODULE_NAME).ko + +github: + cd $(ROOT) && make github + +rmmod: + sudo rmmod $(MODULE_NAME) + +test : + sudo ../injector/memInjector -l stack -m random -t word_0 --time 1 --timeout 3 -p 1 + +clean: + make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean + rm -f modules.order Module.symvers Module.markers + +.PHNOY: + modules modules_install clean + + + +endif + diff --git a/study/driver/00-code/export_symbol/add_sub.c b/study/driver/00-code/export_symbol/add_sub.c new file mode 100644 index 0000000..fca0130 --- /dev/null +++ b/study/driver/00-code/export_symbol/add_sub.c @@ -0,0 +1,21 @@ +#include +#include + + +/* 函数返回 a 和 a 的和 */ +long add_integer(int a, int b) +{ + return a + b; +} +EXPORT_SYMBOL(add_integer); + + +/* 函数返回 a 和 b 的差 */ +long sub_integer(int a, int b) +{ + return a - b; +} +EXPORT_SYMBOL_GPL(sub_integer); + + +MODULE_LICENSE("Dual BSD/GPL"); diff --git a/study/driver/00-code/export_symbol/add_sub.h b/study/driver/00-code/export_symbol/add_sub.h new file mode 100644 index 0000000..212ebc5 --- /dev/null +++ b/study/driver/00-code/export_symbol/add_sub.h @@ -0,0 +1,8 @@ +#ifndef _ADD_SUB_H_ +#define _ADD_SUB_H_ + +long add_integer(long a, long b); + +long sub_integer(long a, long b); + +#endif diff --git a/study/driver/00-code/export_symbol/test.c b/study/driver/00-code/export_symbol/test.c new file mode 100644 index 0000000..1830b79 --- /dev/null +++ b/study/driver/00-code/export_symbol/test.c @@ -0,0 +1,52 @@ +#include +#include + +#include "add_sub.h" + + +/* 定义模块传递的参数 a, b */ +static long a = 1; +module_param(a, long, S_IRUGO); + +static long b = 1; +module_param(b, long, S_IRUGO); + +static int add_or_sub = 1; +module_param(add_or_sub, int, S_IRUGO); + + +static int test_init(void) +{ + long result = 0; + printk(KERN_ALERT "test init\n"); + + if(add_or_sub == 1) + { + result = add_integer(a, b); + } + else + { + result = sub_integer(a, b); + } + + printk(KERN_ALERT "The %s result is %ld\n", + add_or_sub == 1 ? "ADD" : "SUB", result); + + + return 0; +} + + +static void test_exit(void) +{ + printk(KERN_ALERT "test exit\n"); +} + +module_init(test_init); +module_exit(test_exit); + +/* 描述信息 */ +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_AUTHOR("Zheng Qiang"); +MODULE_DESCRIPTION("A module for testing module param and EXPORT_SYMBOL"); +MODULE_VERSION("V1.0");