Мне нужно использовать (относительно простую) функцию написана на другом языке (не C/C++) в модуле ядра.
К сожалению, эта функция мне дается уже заполненной и я ничего не могу с этим поделать. Я уверен, что оно совместимо с ядром и не имеет внешних зависимостей.
Файл Kbuild:
Код: Выделить всё
obj-m := mytest.o
mytest-objs += testsource.o privatemodule.o
Makefile:
Код: Выделить всё
KDIR := /lib/modules/$(shell uname -r)/build
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
testsource.c:
Код: Выделить всё
#include
#include
#include
#include
#include
#include "pm.h"
MODULE_LICENSE("GPL 3.0");
MODULE_DESCRIPTION("Test module 3");
static int __init testthree_init(void)
{
int a, b, c = 0;
a = 0x1234;
b = 0x2468;
c = privatefunc(a, b);
printk(KERN_INFO "Result of %d + %d = %d\n", a, b, c);
return 0;
}
static void __exit testthree_exit(void)
{
printk(KERN_INFO "Unloading module\n");
}
module_init(testthree_init);
module_exit(testthree_exit);
Код: Выделить всё
#ifndef PM_H
#define PM_H
int privatefunc(int a, int b);
#endif
Рядом с исходными файлами, которые я предоставил
privatemodule.o_shipped (уже скомпилированная функция ) и пустой файл Privatemodule.c. Это было самое главное: наличие файла .c говорит о том, что все есть, а расширение "_shipped" говорит о том, что исходный код НЕ НУЖЕН компилироваться, потому что он уже здесь.
Протестировано с ядром 6.1.21 на Raspberry PI.
Подробнее здесь: https://stackoverflow.com/questions/792 ... nel-module