news 2026/4/23 18:43:49

移远 api对应的内核映射函数地址解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
移远 api对应的内核映射函数地址解析

qos_app_api_map.c代码

static _api_qosa_task_sleep_ms_t m_qosa_task_sleep_ms = NULL; void qosa_task_sleep_ms(qosa_uint32_t ms ) { if(NULL ==m_qosa_task_sleep_ms) { int ptr =m_get_api_ptr((char *)__FUNCTION__); if(0 == ptr) { SDK_API_DEBUG_NOTSUP(); return; } m_qosa_task_sleep_ms = ( _api_qosa_task_sleep_ms_t)ptr; } m_qosa_task_sleep_ms(ms); }

ql_app_pre_init.c

_get_api_ptr_t m_get_api_ptr = NULL; int qos_app_preboot(void *argv) { qos_app_rw_section_init(); qos_app_zi_section_init(); ql_boot_para *boot_para = (ql_boot_para *)argv; ql_static_mapping* static_mapping = boot_para->static_maping; table_size = *((func_mapping *)boot_para->kernel_maping)->table_size; if(table_size !=0) { m_get_api_ptr=((func_mapping *)boot_para->kernel_maping)->get_fun_ptr_dep_name; } ql_trace = static_mapping->trace; ql_printf = static_mapping->printf; ql_trace("trace test\r\n"); return 1; }

unirtos_sys.h

extern void qosa_task_sleep_ms(qosa_uint32_t ms); typedef void (* _api_qosa_task_sleep_ms_t)(qosa_uint32_t ms);

ql_open_app_init.h

typedef struct func_map { uint32_t *table_size; void *get_fun_ptr_dep_name; //add system info here }func_mapping;

上面代码只贴了跟本文相关的代码片段

里面用到了ptr =m_get_api_ptr((char *)__FUNCTION__),AI解释如下:

先定位两件事:1)m_get_api_ptr 在哪里被“定义/赋值”(函数指针变量最终指向哪个函数);2)你选中那段里 ptr 的具体类型与用法(通过读 qos_app_api_map.c 的对应行)。

Searched regular expressions and read source code
我已经定位到了:m_get_api_ptr 不是一个普通函数,而是一个“函数指针变量”;它在启动预初始化阶段被赋值为“内核侧提供的符号查找函数”。你选中的 ptr 本质上是“查到的目标 API 的函数地址”。

下面把两个问题说清楚:实现在哪里、ptr 表示什么。1) m_get_api_ptr “实现/赋值”在哪里?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:01:39

【AI】Cursor 编辑器使用指南

Cursor 编辑器使用指南 📖 目录 简介核心功能AI 交互模式模型选择快捷工具栏Web 搜索功能引用功能详解快捷键大全Agent 高级功能使用建议总结参考资源 简介 Cursor 是一款由 AI 驱动的代码编辑器,能够理解你的代码库,并通过自然语言助你更…

作者头像 李华
网站建设 2026/4/23 13:58:37

数通设备堆叠技术:iStack与CSS方案对比及应用选型

在数通网络架构中,堆叠技术是提升设备扩展性、可靠性与管理效率的核心方案,其中iStack(华为设备堆叠协议)与CSS(集群交换系统,华为高端设备堆叠方案)是业界主流的两种堆叠实现方式。结合业务口堆叠、堆叠卡堆叠、免配置堆叠等不同部署形态,二者在技术原理、性能特性、适…

作者头像 李华
网站建设 2026/4/23 12:10:24

Java死锁原因剖析:面试必看的高薪技巧!

文章目录Java死锁原因剖析:面试必看的高薪技巧!一、死锁:线程界的“抢椅子游戏”死锁的四个必要条件二、常见死锁场景:代码中的“定时炸弹”场景一:不恰当的锁顺序场景二:数据库中的锁竞争场景三&#xff1…

作者头像 李华
网站建设 2026/4/23 12:24:11

Java面试必看!如何优雅唤醒阻塞线程?

文章目录Java面试必看!如何优雅唤醒阻塞线程?一、引言二、常见问题1. 为什么不能使用Thread.stop()方法?2. 阻塞线程的常见场景三、如何优雅唤醒阻塞线程?1. 使用Interrupt机制(1)基本使用(2&am…

作者头像 李华
网站建设 2026/4/23 11:25:14

uniapp富文本rich-text

1. uniapp富文本rich-text 官方文档:https://uniapp.dcloud.net.cn/component/rich-text.html 1.1. 示例 1.1.1. richText.vue <template><view ><view class"rich-layout" ><rich-text :nodes"richText"></rich-text>&l…

作者头像 李华
网站建设 2026/4/23 13:38:58

FunASR + speech_ngram_lm_zh-cn 语音识别实战|附WebUI部署指南

FunASR speech_ngram_lm_zh-cn 语音识别实战&#xff5c;附WebUI部署指南 1. 背景与技术选型 1.1 为什么选择 FunASR&#xff1f; 在当前中文语音识别领域&#xff0c;FunASR 是由阿里云推出的一套功能完整、支持端到端推理的开源语音识别工具包。它不仅支持离线和在线模式…

作者头像 李华