正在为Xtensa simcall函数编写回调函数

Writing callback function for Xtensa simcall function

本文关键字:函数 回调 写回 simcall Xtensa      更新时间:2023-10-16

我正在用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)
li>用于设置此回调的函数为:
simcall_callback set_simcall_callback (simcall_callback callback, void ∗callback_arg, void ∗∗ previous_arg = NULL)

我应该如何正确调用set_simcall_callback,第二个和第三个参数应该是什么?

关于Xtensa回调函数的文档可以在以下链接中找到(第282309页(

如果您需要声明函数,可以这样做:

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;
}

然后您可以调用setsmacallcallback,其中第一个参数是我们声明的函数。说明书第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;
}