501_linux内核学习_skip_atoi函数分析
全部学习汇总: https://github.com/GreyZhang/little_bits_of_linux
最近在看一个老版本的Linux内核源代码,为了快速了解内核中的一些实现机制,快速过掉了几个汇编文件。现在开始看C文件,感觉舒服了很多。而且,由于代码实现的功能跟我平时的嵌入式开发相差很大,看起来还是很有意思的。
今天看代码的时候遇到了一个skip_atoi函数,其实基本上猜测的出来这个是字符转整形的意思。有点类似atoi这样的函数,不过前面又来了一个skip,还是去弄清楚这个函数究竟是想做什么。
这个函数并不是一个库函数,在这个版本的内核代码中存在源代码。简单看了下,很简单但又让我稍微有了点疑惑。主要的疑惑还是来自于经验,经验误我啊!平时接触大端的MCU多了,忘了intel的这个CPU其实默认是小端模式的。一下子弄清楚了这一点,其实就好懂了。我在代码上也增加了一部分我自己的注释,纯中文,但是这是学习,讲啥规范不规范呢!

其实,这个也蛮简单了。就是从相应的存储开始的位置找到最多的数字,并计算连成块的数字的数值。
关于这个函数,也可以做一个简单的测试。

以上是测试代码,编译后运行的效果如下:

跟我自己的猜测还是一致的,我还测试了字符串中增加\0的情况,效果是一样的。我看到的代码中,这个被用于了vsprintf中输出格式中宽度的判断。感觉第一次距离这种常用的底层函数这么近,的确是很有意思。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)