root@ubuntu:~/test# cat 3-32.c#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/stat.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("PETER jAY sALZMAN");
static short int myshort = 1;
static int myint = 420;
static long int mylong = 9999;
static char *mystring = "blah";
static int myintArray[2] = {-1, -1};
static int arr_argc = 0;
module_param(myshort, short, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
MODULE_PARM_DESC(myshort, "A short integer");
module_param(myint, int, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
MODULE_PARM_DESC(myint, "An integer");
module_param(mylong, long, S_IRUSR);
MODULE_PARM_DESC(mylong, "A long integer");
module_param(mystring, charp, 0000);
MODULE_PARM_DESC(mystring, "A character string");
module_param_array(myintArray, int, &arr_argc, 0000);
MODULE_PARM_DESC(myintArray, "An array of integers");
static int __init init_hello_5(void)
{
int i;
printk(KERN_INFO "Hello world 5\n===========================\n");
printk(KERN_INFO "myshort is a short integer: %hd\n",myshort);
printk(KERN_INFO "myint is an integer: %d\n", myint);
printk(KERN_INFO "mylong is a long interger: %ld\n",mylong);
printk(KERN_INFO "mystring is a string: %s \n",mystring);
for (i=0; i<(sizeof myintArray / sizeof (int)); i++){
printk(KERN_INFO "myintArray[%d] = %d \n", i, myintArray[i]);
}
printk(KERN_INFO "got %d arguments for myintArray\n",arr_argc);
return 0;
}
static void __exit cleanup_hello_5(void)
{
printk(KERN_INFO "Goodbye world 5\n");
}
module_init(init_hello_5);
module_exit(cleanup_hello_5);
root@ubuntu:~/test# root@ubuntu:~/test# cat Makefile#obj-m += 3-21.o
#obj-m += 3-27.o
#obj-m += 3-28.o
obj-m += 3-32.o
KDIR := /lib/modules/2.6.20-16-generic/build
all:
make -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
make -C $(KDIR) SUBDIRS=$(PWD) clean
root@ubuntu:~/test#


