欢迎来到皮皮网网首页

【原子综合例程源码】【加油折扣app源码】【澳洲私彩源码】ocal源码解析

来源:手机充值精品源码 时间:2024-11-24 17:53:44

1.如何调用loginmodule

ocal源码解析

如何调用loginmodule

       åœ¨ç¼–写linux内核模块的时候,有时候我们需要调用一只内核模块里面的函数,然而如果是在不同目录下面编译生成的内核模块,此时A模块去调用B模块的函数时候会出现函数未定义,无法调用的情况。那么以前我是在同一个目录下面,先后写两个makefile,然后编译生成两个不同的内核模块,这种方式可以正常实现A模块调用B模块里面的函数,不过非常麻烦。本博文将会针对这种情况提出一种可以同时生成多个内核模块,不要再次编译的方面,下面贴出源码:

       å†…核模块cal.ko:

       #include <linux/module.h>

       #include <linux/init.h>

       MODULE_LICENSE("GPL");

       int add(int a,源码原子综合例程源码 int b) {

        return a+b;

       }

       int sub(int a, int b) {

        return a-b;

       }

       static int sym_init() {

        return 0;

       }

       static int sym_exit() {

        return 0;

       }

       module_init(sym_init);

       module_exit(sym_exit);

       EXPORT_SYMBOL(add);

       EXPORT_SYMBOL(sub);

       å†…核模块hello.ko

       #include <linux/module.h>

       #include <linux/init.h>

       MODULE_LICENSE("GPL");

       MODULE_AUTHOR("David Xie");

       MODULE_DESCRIPTION("Hello World Module");

       MODULE_ALIAS("a simplest module");

       static int age = ;

       module_param(age, int, S_IRUGO);//allow all user to use this param

       int add(int a, int b);

       int sub(int a, int b);

       static int hello_init(void)

       {

        printk("<0>"" Hello World! age = %d\n", add(, ));//调用内核模块cal.ko里面的add函数

        return 0;

       }

       static void hello_exit(void)

       {

        printk("<0>""hello exit %d\n", sub(,));//调用内核模块cal.ko里面的sub函数

       }

       module_init(hello_init);

       module_exit(hello_exit);

       å¯ä»¥ç”Ÿæˆå¤šä¸ªå†…核模块的makefile

       ifneq ($(KERNELRELEASE),)

       obj-m := cal.o hello.o

       cal-objs := operator.o

       hello-objs := main.o

       else

       KDIR := /lib/modules/2.6.--generic/build

       all:

        make -C $(KDIR) M=$(PWD) modules

       clean:

        rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order

       endif

       æ­¤æ—¶åœ¨å½“前目录执行make就会产生cal.ko和hello.ko两个内核模块