浏览一下stasfs( http://man7.org/linux/man-pages/man2/statfs.2.html)的手册页,我在文件系统类型SUPER_MAGIC、FS_MAGIC和TEST_MAGIC中看到它们。
Filesystem types:
ADFS_SUPER_MAGIC 0xadf5
.
.
.
BTRFS_SUPER_MAGIC 0x9123683e
BTRFS_TEST_MAGIC 0x73727279
BPF_FS_MAGIC 0xcafe4a11但SUPER_MAGIC、FS_MAGIC和TEST_MAGIC之间的区别是什么呢?
发布于 2018-04-09 16:50:32
为了回答您的问题,这些宏的名称和值是不同的。这些宏的用途没有区别,因为它们都用于标识文件系统的格式。
常量*_MAGIC是在linux内核的linux/magic.h文件中定义的。
因此,BPF_FS_MAGIC用于标识BPS文件系统,BTRFS_TEST_MAGIC用于标识一些测试btrfs文件系统,而BTRFS_MAGIC_NUMBER用于标识(生产就绪的) btrfs文件系统等等。这些宏的命名可能不一致,但它们都有相同的用途。
常量的命名对程序员来说可能是一个提示,并且/或者可能会让程序员感到困惑,因为我们都有不同的想法。我希望名为*_MAGIC的常量具有某种魔术数字常量的值,名为*_TEST_MAGIC的宏用来标识某种格式的测试文件系统,而名为*_FS_MAGIC和/或*_MAGIC_NUMBER的常量对我来说意义完全相同。因此,有人(可能是BPS内核驱动程序的作者)将BPS幻数宏命名为BPS_FS_MAGIC,这是他的选择,其他人则以不同的方式命名它们的幻数常量。
https://stackoverflow.com/questions/44920459
复制相似问题