为 Xtensa simcall 函数编写回调函数
Writing callback function for Xtensa simcall function
我正在用 C++ 为 Xtensa 虚拟平台编写代码。我想使用 simcall_callback 的功能从内部固件代码中获取 return 数据。
我的 C++ 有点生疏了。
- 如何为回调的以下 typedef 构建回调函数:
typedef int(∗ simcall_callback)(xtsc_core &core, void ∗callback_arg, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
- 用于设置该回调的函数为:
simcall_callback set_simcall_callback (simcall_callback callback, void ∗callback_arg, void ∗∗ previous_arg = NULL)
如何正确调用set_simcall_callback,第二个和第三个参数应该是什么?
有关 Xtensa 回调函数的文档可在以下位置找到 link(第 282、309 页)
如果你需要声明函数,你可以这样做:
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;
}
我正在用 C++ 为 Xtensa 虚拟平台编写代码。我想使用 simcall_callback 的功能从内部固件代码中获取 return 数据。 我的 C++ 有点生疏了。
- 如何为回调的以下 typedef 构建回调函数:
typedef int(∗ simcall_callback)(xtsc_core &core, void ∗callback_arg, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
- 用于设置该回调的函数为:
simcall_callback set_simcall_callback (simcall_callback callback, void ∗callback_arg, void ∗∗ previous_arg = NULL)
如何正确调用set_simcall_callback,第二个和第三个参数应该是什么?
有关 Xtensa 回调函数的文档可在以下位置找到 link(第 282、309 页)
如果你需要声明函数,你可以这样做:
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;
}