这篇文章给大家介绍Linux内核代码,传参数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
一、源代码
1.1 temp_main.c
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/inetdevice.h>
#include <linux/string.h>
#include <net/route.h>
#include <linux/inet.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/inetdevice.h>
#include <linux/string.h>
#include <net/route.h>
#include <linux/inet.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <net/checksum.h>
#include <net/tcp.h>
#include <net/ip.h>
#define LOG_INFO(fmt,args...) printk(KERN_INFO fmt, ##args)
static int int_var = 0;
static const char *str_var = "default";
static int int_arr[6];
int narr;
module_param(int_var, int, 0644);
MODULE_PARM_DESC(int_var, "A integer variable");
module_param(str_var, charp, 0644);
MODULE_PARM_DESC(str_var, "A string variable");
module_param_array(int_arr, int, &narr, 0644);
MODULE_PARM_DESC(int_arr, "A integer array");
static int init_marker(void)
{
int i;
LOG_INFO("int_var: %d.\n", int_var);
LOG_INFO("str_var: %s.\n", str_var);
for (i=0; i<narr; ++i)
{
LOG_INFO("int_arr[%d]: %d.\n", i, int_arr[i]);
}
return 0;
}
static void exit_marker(void)
{
}
module_init(init_marker);
module_exit(exit_marker);
1.2 Makefile
obj-m := temp.o
temp-objs := temp_main.o
KERNELDIR = /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
install:
cp temp.ko ../
二、运行
insmod temp.ko int_var=123 str_var=helloworld int_arr=100,200,300
三、运行结果
关于Linux内核代码,传参数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.xuebuyuan.com/3255749.html