【零基础学习03】嵌入式linux驱动中自旋锁功能基本实现

        大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。

        今天给大家分享一下,linux系统里面自旋锁操作的具体实现,操作硬件为I.MX6ULL开发板。

第一:自旋锁基本简介

        ①、自旋锁保护的临界区要尽可能的短,可以使用一个变量来表示设备的使用情况,如果设备被 使用了那么变量就加一,设备被释放以后变量就减 1,我们只需要使用自旋锁保护这个变量即 可。

        ②、考虑驱动的兼容性,合理的选择 API 函数。

        综上所述,我们通过定义一个变量 dev_stats 表示设备的使用情况,dev_stats 为 0 的时候表示设备没有被使用,dev_stats 大于 0 的时候表示设备被使用。驱动 open 函数中先 判断 dev_stats 是否为 0,也就是判断设备是否可用,如果为 0 的话就使用设备,并且将 dev_stats 加 1,表示设备被使用了。使用完以后在 release 函数中将 dev_stats 减 1,表示设备没有被使用 了。因此真正实现设备互斥访问的是变量 dev_stats,但是我们要使用自旋锁对 dev_stats 来做保 护。

第二:驱动程序实现

#include <linux/types.h>

#include <linux/kernel.h>

#include <linux/delay.h>

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-13 03:06:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-13 03:06:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-13 03:06:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-13 03:06:01       18 阅读

热门阅读

  1. mysql根据时间段生成时间

    2024-03-13 03:06:01       19 阅读
  2. Mysql数据库的优点

    2024-03-13 03:06:01       21 阅读
  3. 嵌入式36——TCP

    2024-03-13 03:06:01       18 阅读
  4. 数组的数据输入

    2024-03-13 03:06:01       19 阅读
  5. python | 类与对象

    2024-03-13 03:06:01       17 阅读
  6. 算法学习日记 1 BFS算法 宽度优先算法 简介

    2024-03-13 03:06:01       21 阅读
  7. 路由算法与路由协议

    2024-03-13 03:06:01       17 阅读
  8. C++和rust的比较

    2024-03-13 03:06:01       20 阅读
  9. Vue中Class绑定和style绑定的方式

    2024-03-13 03:06:01       20 阅读
  10. 面试如何介绍MVCC

    2024-03-13 03:06:01       20 阅读