Использование функции, написанной на другом языке, кроме C, в модуле ядра [закрыто]Linux

Ответить Пред. темаСлед. тема
Anonymous
 Использование функции, написанной на другом языке, кроме C, в модуле ядра [закрыто]

Сообщение Anonymous »

Редактировать: благодаря комментариям я смог решить проблему, так что осталось не «вопрос», а решение.
Мне нужно использовать (относительно простую) функцию написана на другом языке (не C/C++) в модуле ядра.
К сожалению, эта функция мне дается уже заполненной и я ничего не могу с этим поделать. Я уверен, что оно совместимо с ядром и не имеет внешних зависимостей.
Файл Kbuild:

Код: Выделить всё

obj-m   := mytest.o
mytest-objs += testsource.o privatemodule.o
Обратите внимание, что название модуля «mytest.ko» отличается от названия основного источника. Но это полезно, но не обязательно.
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);
pm.h:

Код: Выделить всё

#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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»