Github: bitmap_full
Email: BuddyZhang1 buddy.zhang@aliyun.com
目录
源码分析
bitmap_full() 函数用于判断指定范围内,bitmap 是否全 1,如果是则返回 1,反之
返回 0. 参数 src 指向 bitmap;参数 nbits 指向查找的范围。函数首先调用
small_const_nbits() 函数判断 nbits 是否在 BITS_PER_LONG 范围内的常量,如果
是,则直接将 src 的值取反,然后与 BITMAP_LAST_WORD_MASK() 的掩码相与,如果
结果为 0,则代表全 1;反之表示不全为 1;如果 nbits 不符合条件,那么函数调用
find_first_zero_bit() 函数找到第一个 zero 的位置,如果该位置与 nbits 相同,
那么代表全 1。
实践
驱动源码
驱动安装
驱动的安装很简单,首先将驱动放到 drivers/BiscuitOS/ 目录下,命名为 bitmap.c,
然后修改 Kconfig 文件,添加内容参考如下:
接着修改 Makefile,请参考如下修改:
驱动配置
驱动配置请参考下面文章中关于驱动配置一节。在配置中,勾选如下选项,如下:
具体过程请参考:
Linux 5.0 开发环境搭建 – 驱动配置
驱动编译
驱动编译也请参考下面文章关于驱动编译一节:
Linux 5.0 开发环境搭建 – 驱动编译
驱动运行
驱动的运行,请参考下面文章中关于驱动运行一节:
Linux 5.0 开发环境搭建 – 驱动运行
启动内核,并打印如下信息:
驱动分析
检查 bitmap 指定范围是否全为 1.
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
搭建高效的 Linux 开发环境
赞赏一下吧 🙂