Написание функции обратного вызова для функции Xtensa simcall - PullRequest
0 голосов
/ 02 ноября 2018

Я пишу код на C ++ для виртуальной платформы Xtensa. Я хочу использовать функциональность simcall_callback , чтобы вернуть данные из внутреннего кода FW. Мой C ++ немного ржавый.

  1. Как мне построить функцию обратного вызова для следующего typedef обратного вызова:
typedef int(∗ simcall_callback)(xtsc_core &core, void ∗callback_arg, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
  1. Функция, используемая для установки этого обратного вызова:
simcall_callback set_simcall_callback (simcall_callback callback, void ∗callback_arg, void ∗∗ previous_arg = NULL)

Как мне правильно вызвать set_simcall_callback и каковы должны быть второй и третий аргументы?

Документацию о функциях обратного вызова Xtensa можно найти по следующей ссылке (Pg.282, 309)

1 Ответ

0 голосов
/ 03 ноября 2018

Если вам нужно объявить функцию, вы можете сделать это так:

simcall_callback simcall_callback_func;

Тогда вам нужно определить тело функции обратного вызова:

int simcall_callback_func (xtsc_core &core, void *callback_arg, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
 {
     // Do what you need
     return 0;
 }

тогда вы можете вызвать set_simcall_callback где первый параметр нашей объявленной функции. Все параметры описаны на странице 310 инструкции.

int main()
 {
     // If you need previouse function then hold returned value
     simcall_callback prev_func = set_simcall_callback (simcall_callback_func, NULL);
     return 0;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...