1.带参程序

这里传递的是字符串,argc表示有几个参数要被传递,其中可执行文件本身也会当做一个参数

#include "stdio.h"

int main(int argc, char **argv)
{
	int i = 0;

	for(i = 0; i < argc; i++)
	printf("argv[%d] = %s\n", i, argv[i]);
	return 0;
}

i.mx287学习笔记10-带参内核模块、程序_i.mx287

2.带变量的内核模块

这里是传递一个变量给到程序

基本类型有:
bool   :布尔类型
invbool:颠倒了值的bool类型;
charp  :字符指针类型,内存为用户提供的字符串分配;(char *)
int    :整型
long   :长整型
short  :短整型
uint   :无符号整型(unsigned int)
ulong  :无符号长整型(unsigned long)
ushort :无符号短整型(unsigned short)

指针类只能char*,对应名字 charp .

#include <linux/module.h>
#include <linux/init.h>

static int num = 5;

module_param(num, int, S_IRUGO);

static int __init sum_init(void)
{
	printk("num:%d\n",num);
	return 0;
}
static void __exit sum_exit(void)
{
	printk("I'll be leaving, bye!\n");
}

module_init(sum_init);
module_exit(sum_exit);
MODULE_LICENSE("GPL");

i.mx287学习笔记10-带参内核模块、程序_i.mx287_02

3.带数组的内核模块
#include <linux/module.h>
#include <linux/init.h>

static int para[8] = {1,2,3,4};
static int n_para = 3;

module_param_array(para , int , &n_para , S_IRUGO);

static int __init sum_init(void)
{
	int i;

	for (i = 0; i < 8; i++)
		printk(KERN_ALERT "para[%d] : %d \n", i, para[i]);

	for(i = 0; i < n_para; i++)
		printk(KERN_ALERT "para[%d] : %d \n", i, para[i]);

	return 0;
}
static void __exit sum_exit(void)
{
	printk("I'll be leaving, bye!\n");
}

module_init(sum_init);
module_exit(sum_exit);
MODULE_LICENSE("GPL");

i.mx287学习笔记10-带参内核模块、程序_i.mx287_03