* 前言
读Linux内核源码或者开源GPL程序源码时,看到各种英文首字母缩写满天飞,英文单词首字母缩写是Unix/Linux C 编程的一个历史习惯,部分英文首字母缩写结合上下文可以找到理解含义,但有的英文缩写怎么也找不到是什么含义,来自哪里仿佛天外飞来就在哪里嘲笑你。自己的一个怪癖时,当找不到一个源码中的英文首字母缩写时就百般抓狂,痛苦万分,难受想哭,源码也读不下去了。不知道有没有其他的人有我一样的感受和习惯。
*缘起
在开发网关设备是调试Linux 声卡驱动模块,接触到了Linux 设备树(Device Tree Source)的概念,之后再驱动的源码中看到了内核设备树操作的 'struct of_device_id', 'of_find_node_by_type'等函数。
对这些函数的用途,使用方法,在CSDN博客上都已经有很好的资料介绍:
然后我就有了疑惑,在这些 OF 设备的 OF API的函数都用前传'of_'开头,但‘of’是什么的缩写哪, 'of'表示的是什么意思?
在中文网站和英文Stackflow都没有找到答案,痛苦,抓狂。
*答案
读Linux 设备树的概念介绍的时候,有博客提到过ARM Linux 设备树最初是从 IBM 移植过来的。我再'Linux-4.14/include/linux/*'目录下搜索下所有的'of_'开头的文件。
找到了一个文件'linux-4.14.x/include/linux/of.h',使用vi编辑器打开,在文件的开头接提到
“Defindations for talking to the Open Firmware PROM on Powe Macitosh and other computers”,文件的作者是IBM,开发时间是1995-2006年。
至此得到结论,设备树OF API系列函数中的'of'是' Open Firmware'的缩写,最初是IBM定义的一种结束概念,后面由于习惯在设备树中就都是用'of_'开头的缩写了。
*结果
再读Linux驱动设备树的源码心情就好多了。
更新:2013-10-16
Open Firmware 是国际标准IEEE规范: IEEE 1275-1994
https://www.openfirmware.info/data/docs/of1275.pdf
Open Firmware
Open BIOS