当前位置: 首页 > news >正文

嵌入式linux学习记录十三

  1. 这是 Linux 驱动开发中利用原子变量(Atomic Variable)实现“互斥锁(设备只能被一个进程打开)”的经典逻辑。
    /* 通过判断原子变量的值来检查LED 有没有被别的应用使用 */

    if (!atomic_dec_and_test(&gpioled.lock)) {

    atomic_inc(&gpioled.lock);/* 小于0 的话就加1,使其原子变量等于0 */

    return -EBUSY; /* LED 被使用,返回忙 */

    }
    /* 执行需要保护的资源 */
    /* 完成对资源操作后,把锁加1,恢复成资源可以使用的状态 */
    atomic_inc(&gpioled.lock);

  2. 这展示了在 Linux 驱动开发中,利用自旋锁(Spinlock)+ 普通变量(dev_stats)实现设备互斥访问(只允许一个进程打开)的另一种标准写法。
    spin_lock_irqsave(&gpioled.lock, flags); /* 上锁 */

    if (gpioled.dev_stats)

    { /* 如果设备被使用了 */

    spin_unlock_irqrestore(&gpioled.lock, flags); /* 解锁 */

    return -EBUSY;

    }

    gpioled.dev_stats++; /* 如果设备没有打开,那么就标记已经打开了 */

    spin_unlock_irqrestore(&gpioled.lock, flags); /* 解锁 */
    /* 对受保护资源进行操作 */
    /* 资源操作完成后,需要把普通变量(dev_stats)变成0,以恢复资源可操作性 */

    spin_lock_irqsave(&gpioled.lock, flags); /* 上锁 */

    if (gpioled.dev_stats) {

    gpioled.dev_stats--;

    }

    spin_unlock_irqrestore(&gpioled.lock, flags);/* 解锁 */


    解释:

    1. 自旋锁的角色(保镖):它的任务非常短命。它的存在仅仅是为了保护if (gpioled.dev_stats)dev_stats++这两行代码在多核并行时不被打扰。它就像一个保镖,护送进程安全地完成“检查并登记”这个动作。

    2. dev_stats的角色(登记簿):它的任务非常长命。一旦被写成1,它就会一直保持为1,直到用户层主动调用close()关闭设备。它负责长达几小时、甚至几天的硬件资源占有标记。

http://www.zskr.cn/news/1512571.html

相关文章:

  • 3种方法彻底解决音乐平台加密文件:Unlock-Music全攻略
  • GBase 8s数据库安装包脚本核心配置文件init.ini解析
  • 如何快速修复系统组件和依赖库修复:VisualCppRedist AIO 终极解决方案
  • 实用指南:3步完成LaTeX PDF到PowerPoint的专业转换
  • 【信息科学与工程学】【物理/化学和工程技术】第一百五十八篇 微纳米下的力学/电磁学/光学/声学01
  • 7步掌握AI视频修复革命:从模糊到高清的魔法蜕变指南
  • 告别卡顿!用MPTCP/MPQUIC调度算法,让你的手机5G+WiFi网速飞起来
  • 预算有限建站工具哪家好?先把钱花在哪看清,再决定选哪种工具
  • 2026江门纳税申报代办机构推荐|四强高口碑靠谱机构甄选指南 - 信息热点
  • 2026年6月|广州鱼池过滤公司TOP8推荐智能生态水处理 - 资讯报道
  • 3个实用技巧:用Mem Reduct高效管理Windows系统内存
  • Trae CN 2026 完全指南:AI辅助开发工具链从入门到实战
  • 2026年,来开封开启一场零基础汉服妆造沉浸式体验之旅! - 信息热点
  • 告别手动分层:layerdivider如何用AI技术解放设计师的创造力
  • FlicFlac:重新定义Windows音频格式转换的轻量级革新方案
  • AI 电动摩托车升降台智能功率 MOSFET 完整选型方案
  • 电子制造服务业2026年增长态势:OEM代工模式重构产业链 - 资讯报道
  • 河源龙川黄金奢侈品回收不踩坑!5家机构实测,龙川源奢汇稳坐头把交椅 - 行走在冷风中。
  • 精准避坑!2026粉体混合设备国内外金牌厂商大起底,多行业采购必备 - 信息热点
  • 基于开闭原则重构 CRM 图表系统基于单一职责原则重构登录模块
  • 2026广州工厂实用新型专利深度测评|生产设备/工装夹具/精密治具/模具辅助组件专利申请、结构优化、AI同质化筛查规避、初审实质审查风控、工厂专属配套代理服务机构TOP3 - 信息热点
  • Windows和Office激活难题终极解决方案:KMS智能激活工具完整指南
  • 别再死记硬背了!用Wireshark抓包实战,5分钟搞懂TCP确认与重传机制
  • 深度解析 kill-douyin-watermark-online:如何优雅实现短视频无水印提取
  • 2026 上海屋顶防水公司综合实力 TOP5 排行榜(6月最新)排名 - 信息热点
  • 景观水质护理之道:智能转鼓过滤技术的突破实践 - 资讯报道
  • 武汉亮化工程选择指南:众晨光电一体化服务如何解决行业难题 - 资讯报道
  • 游击队灌浆当时好、后来漏:青岛防水行业这个坑,99%业主踩过 - 青岛防水品牌推荐
  • 基于MCF523x eTPU的机器人运动控制系统设计与实践
  • 电脑文件管理zs 2026年6月12日