From 6bb080a18caaef58d249cc70e0421416fb570621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=98=95?= Date: Mon, 16 Sep 2019 17:01:25 +0800 Subject: [PATCH] =?UTF-8?q?Mod=20=20aaa-12=20=E5=85=B1=E4=BA=AB=E5=86=85?= =?UTF-8?q?=E5=AD=98=E7=AE=A1=E7=90=86=E9=A9=B1=E5=8A=A8=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=20RCA=EF=BC=9A=20SOL=EF=BC=9A=20=E4=BF=AE=E6=94=B9=E4=BA=BA?= =?UTF-8?q?=EF=BC=9Ahuangxin=20=E6=A3=80=E8=A7=86=E4=BA=BA=EF=BC=9Ahuangxi?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Product/build/module.shm.Makefile | 2 +- Product/modules/proc_api/proc_api.c | 6 ++--- Product/modules/proc_api/procapi_mod.c | 30 +++++++++++------------ Product/modules/shm_dev/Makefile | 6 ++--- Product/modules/shm_dev/shm_dev.c | 16 +++++++----- Product/modules/shm_dev/shmdev_mod.c | 34 +++++++++++++++++++++----- 6 files changed, 60 insertions(+), 34 deletions(-) diff --git a/Product/build/module.shm.Makefile b/Product/build/module.shm.Makefile index ec76bc958..f45fba63a 100755 --- a/Product/build/module.shm.Makefile +++ b/Product/build/module.shm.Makefile @@ -1,6 +1,6 @@ include ../../Common/def.Makefile # target name, the target name must have the same name of c source file -TARGET_NAME=shm_dev +TARGET_NAME=shmdev # target # for linux module driver: KO diff --git a/Product/modules/proc_api/proc_api.c b/Product/modules/proc_api/proc_api.c index 73ecf5e92..39c68c0c2 100644 --- a/Product/modules/proc_api/proc_api.c +++ b/Product/modules/proc_api/proc_api.c @@ -469,9 +469,9 @@ static const struct file_operations g_DbgSeq_fops = { #define VERSION ("v0.0.0.2") -static int api_module_init(void) +static int __init api_module_init(void) { - printk(KERN_ALERT "Hello ISG PROC API version: %s\n", VERSION); + printk(KERN_INFO "Hello ISG PROC API version: %s\n", VERSION); proc_api_init(PROC_API_DIR_NAME); if(proc_api_register(&g_ProcApi) != ERR_DBGFS_NO_ERROR) { @@ -484,7 +484,7 @@ module_init(api_module_init); static void __exit api_module_exit(void) { - printk(KERN_ALERT "Bye ISG PROC API version: %s\n", VERSION); + printk(KERN_INFO "Bye ISG PROC API version: %s\n", VERSION); proc_api_unregister(&g_ProcApi); proc_api_uninit(PROC_API_DIR_NAME); diff --git a/Product/modules/proc_api/procapi_mod.c b/Product/modules/proc_api/procapi_mod.c index e55ff161b..61b1db20f 100644 --- a/Product/modules/proc_api/procapi_mod.c +++ b/Product/modules/proc_api/procapi_mod.c @@ -22,27 +22,27 @@ MODULE_INFO(retpoline, "Y"); static const struct modversion_info ____versions[] __used __attribute__((section("__versions"))) = { - { 0x4bb34cb8, __VMLINUX_SYMBOL_STR(module_layout) }, - { 0x3b74fa7, __VMLINUX_SYMBOL_STR(kmalloc_caches) }, + { 0xe4d09796, __VMLINUX_SYMBOL_STR(module_layout) }, + { 0xeaedd2a4, __VMLINUX_SYMBOL_STR(kmalloc_caches) }, { 0xd2b09ce5, __VMLINUX_SYMBOL_STR(__kmalloc) }, - { 0x194d04a9, __VMLINUX_SYMBOL_STR(single_open) }, + { 0xe339346f, __VMLINUX_SYMBOL_STR(single_open) }, { 0x98cf60b3, __VMLINUX_SYMBOL_STR(strlen) }, { 0x1b17e06c, __VMLINUX_SYMBOL_STR(kstrtoll) }, - { 0x5a219335, __VMLINUX_SYMBOL_STR(single_release) }, - { 0x566494e1, __VMLINUX_SYMBOL_STR(seq_puts) }, + { 0x109f233d, __VMLINUX_SYMBOL_STR(single_release) }, + { 0x3caaf46c, __VMLINUX_SYMBOL_STR(seq_puts) }, { 0x7b6646bb, __VMLINUX_SYMBOL_STR(_raw_read_lock) }, { 0x84bc974b, __VMLINUX_SYMBOL_STR(__arch_copy_from_user) }, - { 0x1e4a66ce, __VMLINUX_SYMBOL_STR(seq_printf) }, - { 0x73948fc9, __VMLINUX_SYMBOL_STR(remove_proc_entry) }, + { 0x334b34ff, __VMLINUX_SYMBOL_STR(seq_printf) }, + { 0xa988ff28, __VMLINUX_SYMBOL_STR(remove_proc_entry) }, { 0x85df9b6c, __VMLINUX_SYMBOL_STR(strsep) }, { 0xa87cf413, __VMLINUX_SYMBOL_STR(clear_bit) }, { 0x91715312, __VMLINUX_SYMBOL_STR(sprintf) }, - { 0xbc070157, __VMLINUX_SYMBOL_STR(seq_read) }, + { 0x87d60b72, __VMLINUX_SYMBOL_STR(seq_read) }, { 0xe2d5255a, __VMLINUX_SYMBOL_STR(strcmp) }, - { 0x23639be4, __VMLINUX_SYMBOL_STR(PDE_DATA) }, + { 0x547a32b3, __VMLINUX_SYMBOL_STR(PDE_DATA) }, { 0x60ea2d6, __VMLINUX_SYMBOL_STR(kstrtoull) }, { 0xdcb764ad, __VMLINUX_SYMBOL_STR(memset) }, - { 0x8cc82f72, __VMLINUX_SYMBOL_STR(proc_mkdir) }, + { 0xb5c8f21d, __VMLINUX_SYMBOL_STR(proc_mkdir) }, { 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) }, { 0x449ad0a7, __VMLINUX_SYMBOL_STR(memcmp) }, { 0xa58dee99, __VMLINUX_SYMBOL_STR(_raw_write_unlock) }, @@ -50,10 +50,10 @@ __attribute__((section("__versions"))) = { { 0x9166fada, __VMLINUX_SYMBOL_STR(strncpy) }, { 0x5a921311, __VMLINUX_SYMBOL_STR(strncmp) }, { 0x1ea06663, __VMLINUX_SYMBOL_STR(_raw_write_lock) }, - { 0x4683a7cf, __VMLINUX_SYMBOL_STR(kmem_cache_alloc) }, - { 0xd417b009, __VMLINUX_SYMBOL_STR(remove_proc_subtree) }, - { 0x537c1b11, __VMLINUX_SYMBOL_STR(proc_create_data) }, - { 0x79ad9fc3, __VMLINUX_SYMBOL_STR(seq_lseek) }, + { 0xf2b9d238, __VMLINUX_SYMBOL_STR(kmem_cache_alloc) }, + { 0x2e1dbdc1, __VMLINUX_SYMBOL_STR(remove_proc_subtree) }, + { 0x11bedc8, __VMLINUX_SYMBOL_STR(proc_create_data) }, + { 0xa7acf2bc, __VMLINUX_SYMBOL_STR(seq_lseek) }, { 0x37a0cba, __VMLINUX_SYMBOL_STR(kfree) }, { 0x4829a47e, __VMLINUX_SYMBOL_STR(memcpy) }, { 0xae8c4d0c, __VMLINUX_SYMBOL_STR(set_bit) }, @@ -66,4 +66,4 @@ __attribute__((section(".modinfo"))) = "depends="; -MODULE_INFO(srcversion, "99A9F53ADADFBF43F95BFE5"); +MODULE_INFO(srcversion, "E39F884295B153011ADFF0C"); diff --git a/Product/modules/shm_dev/Makefile b/Product/modules/shm_dev/Makefile index dab43548a..d0751e681 100755 --- a/Product/modules/shm_dev/Makefile +++ b/Product/modules/shm_dev/Makefile @@ -1,7 +1,7 @@ ifneq ($(KERNELRELEASE), ) -obj-m := shm_dev.o -shm_dev-objs += shm_dev.o shm_proc.o -KBUILD_EXTMOD := /home/hx/secogateway/Product/modules/proc_api +obj-m := shmdev.o +shmdev-objs += shm_dev.o shm_proc.o +#KBUILD_EXTMOD := /home/hx/secogateway/Product/modules/proc_api else #KDIR ?= /opt/fsl-kernel/x86/linux-4.9.140 #KDIR ?= /home/hx/raspberrypi/linux diff --git a/Product/modules/shm_dev/shm_dev.c b/Product/modules/shm_dev/shm_dev.c index 76e8f700b..dea441b50 100644 --- a/Product/modules/shm_dev/shm_dev.c +++ b/Product/modules/shm_dev/shm_dev.c @@ -145,12 +145,12 @@ static struct file_operations shmdev_fops = { * @return * @date 2019/08/07 */ -static int shmdev_module_init(void) +static int __init shmdev_module_init(void) { struct page *p = NULL; dev_t dev = 0; - printk(KERN_INFO "Hello ISG objects manager version: %s\n", SHMDEV_VERSION); + printk(KERN_INFO "Hello ISG share memory manager version: %s\n", SHMDEV_VERSION); // 自动分配设备版本号 if(alloc_chrdev_region(&dev, 0, 1, SHM_DEV_NAME) != 0) { @@ -174,6 +174,9 @@ static int shmdev_module_init(void) g_shm_dev->mem_size = PAGE_ALIGN(SHM_MEM_SIZE); g_shm_dev->mem_buf = (unsigned char *)__get_free_pages(GFP_KERNEL, get_order(g_shm_dev->mem_size)); + //printk("1g_shm_dev->mem_buf(%u): %p\n", g_shm_dev->mem_size, g_shm_dev->mem_buf); + + if(g_shm_dev->mem_buf == NULL) { printk(KERN_ERR "Malloc %d pages error\n", get_order(g_shm_dev->mem_size)); kfree(g_shm_dev); @@ -184,7 +187,7 @@ static int shmdev_module_init(void) for(p = virt_to_page(g_shm_dev->mem_buf); p < virt_to_page(g_shm_dev->mem_buf + g_shm_dev->mem_size); p++) { - SetPageReserved(virt_to_page(p)); + SetPageReserved(p); } memset(g_shm_dev->mem_buf, 0, g_shm_dev->mem_size); @@ -194,7 +197,7 @@ static int shmdev_module_init(void) g_shm_dev->dev_class = class_create(THIS_MODULE, "obj"); // 创建字符设备节点 device_create(g_shm_dev->dev_class, NULL, MKDEV(g_shm_dev->dev_major, 0), - NULL, "isg_objs/dev%d", 0); + NULL, "isg_objs/shm%d", 0); // 初始化 proc 接口 shmdev_proc_init(); @@ -213,7 +216,7 @@ static void __exit shmdev_module_exit(void) { struct page *p = NULL; - printk(KERN_INFO "Bye ISG objects manager version: %s\n", SHMDEV_VERSION); + printk(KERN_INFO "Bye ISG share memory manager version: %s\n", SHMDEV_VERSION); shmdev_proc_uninit(); @@ -226,7 +229,7 @@ static void __exit shmdev_module_exit(void) for(p = virt_to_page(g_shm_dev->mem_buf); p < virt_to_page(g_shm_dev->mem_buf + g_shm_dev->mem_size); p++) { - ClearPageReserved(virt_to_page(g_shm_dev->mem_buf)); + ClearPageReserved(p); } free_pages((unsigned long)g_shm_dev->mem_buf, get_order(g_shm_dev->mem_size)); @@ -241,4 +244,5 @@ static void __exit shmdev_module_exit(void) module_exit(shmdev_module_exit); MODULE_LICENSE("Dual BSD/GPL"); +MODULE_VERSION("0.1"); #endif // __KERNEL__ diff --git a/Product/modules/shm_dev/shmdev_mod.c b/Product/modules/shm_dev/shmdev_mod.c index 60f3597f4..98706abef 100644 --- a/Product/modules/shm_dev/shmdev_mod.c +++ b/Product/modules/shm_dev/shmdev_mod.c @@ -8,6 +8,10 @@ MODULE_INFO(name, KBUILD_MODNAME); __visible struct module __this_module __attribute__((section(".gnu.linkonce.this_module"))) = { .name = KBUILD_MODNAME, + .init = init_module, +#ifdef CONFIG_MODULE_UNLOAD + .exit = cleanup_module, +#endif .arch = MODULE_ARCH_INIT, }; @@ -18,16 +22,34 @@ MODULE_INFO(retpoline, "Y"); static const struct modversion_info ____versions[] __used __attribute__((section("__versions"))) = { - { 0x4bb34cb8, __VMLINUX_SYMBOL_STR(module_layout) }, - { 0x566494e1, __VMLINUX_SYMBOL_STR(seq_puts) }, - { 0x1e4a66ce, __VMLINUX_SYMBOL_STR(seq_printf) }, + { 0xe4d09796, __VMLINUX_SYMBOL_STR(module_layout) }, + { 0x6bc3fbc0, __VMLINUX_SYMBOL_STR(__unregister_chrdev) }, + { 0xeaedd2a4, __VMLINUX_SYMBOL_STR(kmalloc_caches) }, + { 0x3caaf46c, __VMLINUX_SYMBOL_STR(seq_puts) }, + { 0x334b34ff, __VMLINUX_SYMBOL_STR(seq_printf) }, + { 0xd2ba756e, __VMLINUX_SYMBOL_STR(device_destroy) }, + { 0x2aeaa150, __VMLINUX_SYMBOL_STR(__register_chrdev) }, + { 0xa87cf413, __VMLINUX_SYMBOL_STR(clear_bit) }, + { 0xdcb764ad, __VMLINUX_SYMBOL_STR(memset) }, { 0x27e1a049, __VMLINUX_SYMBOL_STR(printk) }, - { 0x3fd8cea8, __VMLINUX_SYMBOL_STR(proc_api_register) }, - { 0x4f77ae3a, __VMLINUX_SYMBOL_STR(proc_api_unregister) }, + { 0xfadf2436, __VMLINUX_SYMBOL_STR(memstart_addr) }, + { 0x228f4555, __VMLINUX_SYMBOL_STR(kimage_voffset) }, + { 0xa4d920c2, __VMLINUX_SYMBOL_STR(device_create) }, + { 0xf2b9d238, __VMLINUX_SYMBOL_STR(kmem_cache_alloc) }, + { 0x93fca811, __VMLINUX_SYMBOL_STR(__get_free_pages) }, + { 0x4302d0eb, __VMLINUX_SYMBOL_STR(free_pages) }, + { 0x37a0cba, __VMLINUX_SYMBOL_STR(kfree) }, + { 0xd20eeceb, __VMLINUX_SYMBOL_STR(remap_pfn_range) }, + { 0xae8c4d0c, __VMLINUX_SYMBOL_STR(set_bit) }, + { 0x7ca7df01, __VMLINUX_SYMBOL_STR(class_destroy) }, + { 0x63bd414a, __VMLINUX_SYMBOL_STR(__class_create) }, + { 0x29537c9e, __VMLINUX_SYMBOL_STR(alloc_chrdev_region) }, }; static const char __module_depends[] __used __attribute__((section(".modinfo"))) = -"depends=procapi"; +"depends="; + +MODULE_INFO(srcversion, "B517C1CF2D4EBAC4C20ABF2");