пак Linux:)

1 отговора 199 прегледа
#1

пак Linux:)

//first.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <asm/unistd.h>
#include <linux/config.h>
#include <linux/init.h>

extern void* sys_call_table[];
int (*orig_mkdir)(const char* path);

int own_mkdir(const char* path)
{
return 0;
}

static int __init init_first()
{
orig_mkdir = sys_call_table[__NR_mkdir];
sys_call_table[__NR_mkdir] = own_mkdir;
return 0;
}

static void __exit cleanup_first()
{
sys_call_table[__NR_mkdir] = orig_mkdir;
}

module_init(init_first);
module_cleanup(cleanup_first);
MODULE_LICENSE("GPL");

//Makefile
obj-m := first.o

//cmd line
make -C /usr/src/kernel-headers-2.6.6-1-686 SUBDIRS=$PWD modules

insmod first.ko
insmod: error inserting 'first.ko': -1 Unknown symbol in module

явно не му харесва own_mkdir:) обаче в примерите които гледам явно го харесва?! какво да правя:)?

Отговор
в отговор на bugicha #2

Re: примерите са за 2.0.x - 2.4.x

интересно какво се е променило в 2.6.x?

Отговор