如何获知SylixOS某API调用方法?

问题背景

SylixOS从2006年韩总在大学时开始开发,到今年2024年已走过18个年头,这18年一直在不断迭代更新,也经过无数实际项目的考验,SylixOS无论从功能还是性能上看,都毫无疑问是世界一流的大型实时操作系统。

但实时操作系统或嵌入式操作系统数量庞大,且没有任何一个能在市场上有垄断地位,锁片化定制化严重,所以也没有一个能像Linux、Windows那样具备深厚海量的技术生态,比如在技术文档上就多有欠缺。SylixOS也同样存在类似问题,官方文档还不能把所有细节的功能、特性、用法都一一写明。

如果我们在学习使用SylixOS某API查不到官方资料也找不到网络资料时该如何解决呢?一个简单有效的方法就是总系统源码里或者说base工程里找。因为内核里不仅有实现该接口的源码,操作系统本身也会大量使用系统接口。我们参考源码实现和调用举例就能分析出该接口的功能和用法。

操作步骤

以API_InterLock为例,在《SylixOS驱动开发手册》和《SylixOS应用开发手册》都找不到相关说明。网络搜索也没有有用信息,就更不要去问AI了。这时,我们可以在IDE下搜索API_InterLock来进行了解学习。

  1. IDE下点击小手电图标,进入全局搜索页面。

注意:编辑页面下ctrl+f进入的是页面搜索界面。

在这里插入图片描述
2. 选择C/C++Search标签页,填写API_InterLock到搜索框中,然后点击Search按钮查看搜索结果。
在这里插入图片描述

  • C/C++Search标签页搜索的是C/C++语言的各种表示符、关键字等。API_InterLock是一个函数或宏定义,所以要用C/C++Search来搜索。
  • File Search标签页是按文本内容来搜索,并不考虑C/C++语言相关特性,所以C/C++Search搜索的内容也能在这里搜索,但范围会扩大,非.c.h文件内,及注释内,字符串内的都会被搜索。所以如果是想搜索命令行打印的一些信息,就应该选择File Search标签页。
  1. 查看搜索结果。
    在这里插入图片描述
    可以看到共搜索到两处,一处定义一处声明,并没有调用的地方。
    查看源码实现可知,API_InterLock是借助宏KN_INT_DISABLE实现的,只是增加了参数检查。返回piregInterLevel的方式也不同罢了。API_InterLock功能就是关闭全局中断并返回嵌套层级。
    还不是很清楚的话,我们可以继续搜索KN_INT_DISABLE。

  2. 继续搜索KN_INT_DISABLE,并查看结果。
    在这里插入图片描述
    这次可以看到有大量的调用实例。观察可知,开关全局中断是要成对调用的,且要借助一个局部变量来记录嵌套层数。此时我们知道可以用KN_INT_DISABLE来替代API_InterLock来使用,如果确实要用API_InterLock那也可以参考KN_INT_DISABLE的调用套路来写。

同样实现_CpuGetNesting函数,使用API_InterLock接口如下:

ULONG  _CpuGetNesting (VOID)
{
#if LW_CFG_SMP_EN > 0INTREG          iregInterLevel;ULONG           ulNesting;API_InterLock(&iregInterLevel);                                  /*  关闭中断                    */ulNesting      = LW_CPU_GET_CUR()->CPU_ulInterNesting;API_InterUnlock(iregInterLevel);                                      /*  打开中断                    */return  (ulNesting);
#elsereturn  (LW_CPU_GET_CUR()->CPU_ulInterNesting);
#endif                                                                  /*  LW_CFG_SMP_EN > 0           */
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI大模型还没有到卷长文的时候

AI风口上,国内大模型技术突飞猛进,很多人都沉浸在用AI来辅助办公,辅助学习等等工具化应用落地,但也有趁着风口想大赚一笔,为了估值什么都敢说的。 前几天,Kimi对外宣称自己的技术狂飙到能读200万字甚至100…

标准发布 | 高氨氮废水厌氧氨氧化处理应用技术规范

高氨氮废水厌氧氨氧化处理应用技术规范 Technical specification for anammox treatment of high strength ammonia nitrogen wastewater 一、编制单位 本文件由中华环保联合会水环境治理专业委员会提出。 本文件由中华环保联合会归口。 本文件主编单位:北京城市…

SSRF思路及步骤

什么是SSRF? SERVER SIDE REQUEST FORGERY的简写 因为服务器本身提供了资源获取相关的服务,在资源地址能够被用户控制时,将可能导致攻击者利用服务器身份获取预期外的资源的后果 危害? 条件满足的情况下:突破网络防…

佛教祭拜小程序-寺庙小程序-纪念馆小程序

大家好,我是程序员小孟。 现在有很多的产品或者工具都开始信息话了,寺庙或者佛教也需要小程序吗? 当然了! 前面我们还开发了很多寺庙相关的小程序,都有相关的介绍: 1,优质的寺庙小程序-H5寺庙网页 今天…

机器学习多场景实战

机器学习已不再局限于理论探讨,而是广泛渗透到我们生活的方方面面,成为解决复杂问题、优化决策过程的强有力工具。从智能推荐系统个性化推送你可能喜爱的电影和商品,到金融风控领域精准识别欺诈交易;每一个应用场景都是机器学习技…

(学习笔记)数仓建模

数仓建模 OLAP数仓分层数据模型数据模型建设方法模型建设具体流程模型数据域事实表设计事实表拉链表 数据模型规范表命名(采用阿里one-data设计)字段命名(采用阿里one-data设计)数据模型标注规范 数据模型发展周期 OLAP OLTP:概念全称OnLine Transaction Processin…

实验七、创建小型实验拓扑《计算机网络》

早检到底是谁发明出来的。 一、实验目的 完成本实验后,您将能够: • 设计逻辑网络。 • 配置物理实验拓扑。 • 配置 LAN 逻辑拓扑。 • 验证 LAN 连通性。 二、实验任务 在本实验中,将要求您连接网络设备并配置主机实现基本的网络…

【YOLO系列】YOLOv10论文超详细解读(翻译 +学习笔记)

前言 研究AI的同学们面对的一个普遍痛点是,刚开始深入研究一项新技术,没等明白透彻,就又迎来了新的更新版本——就像我还在忙着逐行分析2月份发布的YOLOv9代码,5月底清华的大佬们就推出了全新的v10。。。 在繁忙之余&#xff0…

第101天:权限提升-Win 本地用户进程注入令牌窃取ATSCPS 服务命令

目录 思维导图 案例一: WIN-本地用户-AT&SC&PS 命令 AT命令 sc PS 案例二:WIN-本地用户-进程迁移注入获取 msf 案例三:WIN-本地&Web-令牌窃取&土豆溢出 令牌窃取 土豆溢出 案例四: uac原理与绕过 思维…

【Qt】Frame和Widget的区别

1. 这两个伙计有啥区别? 2. 区别 2.1 Frame继承自Widget,多了一些专有的功能 Frame Widget 2.2 Frame可以设置边框

C51学习归纳4 --- 矩阵键盘

一、开发板原理图 我们可以看到这个键盘是4*4的,行可以由4个数据接口接收(P1_4~7),列可以由4个数据接口接收(P1_0~3)。 所以我们可让行作为扫描方向,或者列作为扫描方向,进行按键扫描。如何扫描…

VS2017配置OpenCV4.5.1

VS2017配置OpenCV 一、下载OpenCV二、配置OpenCV的电脑环境变量三、配置visual Studio添加路径复制文件到C盘 四、如何使用注意运行时选择Debug x64 五、报错:VSOpencv出现:xxx处有未经处理的异常: Microsoft C 异常: cv::Exception,位于内存…

@vue-office/excel遇到的问题 error in ./src/components/gem-histogram.base.vue?vuetype=templateid=691572

下载后一直抱这个错误 10:39:39 - Building for production... 10:40:36 ERROR Failed to compile with 41 errors2:40:31 AM 10:40:36 10:40:36 error in ./src/components/gem-histogram.base.vue?vue&typetemplate&id691572bb&scopedtrue 10:40:36 …

GaussDB的数种形态

GaussDB作为一种新兴的关系型数据库产品,似乎有点让人摸不着头脑。有朋友问我GaussDB单机版怎么样,有人说GaussDB是分布式数据库,还有人说它是云数据库,还有人会把GaussDB和华为的数据仓库GaussDB DWS混为一谈。确实,公…

算法学习笔记——时间复杂度和空间复杂度

时间复杂度和空间复杂度 常数操作: 固定时间的操作,执行时间和数据量无关 位运算 > 算数运算 > 寻址 > 哈希运算,都是常数操作,哈希运算操作时间最慢 链表的get(i)方法不是常数操作,因为链表不是连续的存储…

颠沛流离学二叉树(完结撒花篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

MT2083 屠龙勇者

思路&#xff1a; 跟上题类似&#xff0c;贪心策略&#xff1a;w从小到大排序&#xff0c;每个头找到第一个>d的w 代码&#xff1a; #include <bits/stdc.h> using namespace std; #define ll long long const int N 1e5 10; int n, m; int d[N]; int w[N]; int …

Spring Security 注册过滤器关键点与最佳实践

在 Spring Security 框架中&#xff0c;注册过滤器是实现身份验证和授权的关键组件。正确配置和使用注册过滤器对于确保应用程序的安全性至关重要。以下是一些关于 Spring Security 注册过滤器的注意事项和最佳实践。 过滤器链顺序&#xff1a; 注册过滤器通常位于过滤器链的末…

[next.js]pwa缓存

配置Next.js (v14 App Router模式) 使其支持PWA缓存&#xff0c;配置server worker和mainfest.json&#xff0c;让项目支持离线访问和可安装。 安装依赖next-pwa npm i next-pwa配置next.config.js const path require(path);const withPWAInit require(next-pwa);// 判断…

想要成长就要持续地学习,而如何学习更有效率呢

为什么很多人学了知识&#xff0c;但是总感觉记不住&#xff0c;用不上呢&#xff1f; 在学习的过程中&#xff0c;为什么总感觉没什么进步呢&#xff1f; 看了很多书&#xff0c;为什么总感觉没什么用呢&#xff1f; 要说明这些问题&#xff0c;首先我们要知道一个好的、完整的…