VxWorks 7 Wind River Workbench4: Как вызвать функцию в DKM из RTP?

У меня есть несколько функций в моем проекте DKM (пространство ядра), которые необходимо вызывать из RTP (пространство пользователя). Как я могу это сделать?

Я реализовал пользовательские системные вызовы для вызова API ядра только из RTP, но здесь я не могу реализовать пользовательские системные вызовы для этих функций в DKM, потому что он не является частью Project build Project.

Как мне решить эту проблему? Любая помощь высоко ценится. Спасибо!!

2

Решение

Пользовательские системные вызовы является ответ. Я знаю, ты сказал, что не можешь использовать это, но просто держись.

Существует два метода добавления системных вызовов. Первое, что, как кажется, вы уже использовали ранее, — это их статическое добавление в составе VxWorks Source Build. Это позволяет вам получать доступ к функциям точно так же, как и к любой другой части пользовательских библиотек, например, в вашем RTP:

#include <customSysCallHeader.h>

void foo()
{
customSysCall();
}

Как вы говорите, однако, это требует модификации исходной сборки. Сказав это, это меньше проблема в VxWorks 7, чем раньше.

Второй вариант, который более полезен, если вы не хотите добавлять к исходной сборке, — это использовать динамические системные вызовы. Они динамически регистрируются во время выполнения с помощью некоторого кода ядра. Однако они не так просты в использовании из приложения, так как все динамические системные вызовы должны вызываться через syscall():

#include <syscall.h> //This may not be correct

void foo()
{
syscall(CUSTOM_SYSCALL_NUM,1,2,3,4,5,6);
}

Я нашел полезным помещать вызовы этих динамических системных вызовов в отдельную библиотеку и заключать в них полезные имена функций.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]