04 2023 档案
摘要:1 简介 semaphore信号量;需要注意的是信号量不是信号。 信号量是一种同步、互斥机制 2 semaphore的结构和API 2.1 semaphore结构 struct semaphore sem; struct semaphore { raw_spinlock_t lock; // sem
阅读全文
摘要:1 简介 自旋锁:通俗的说就是自己在原地打转,一直等待资源可用。不会休眠 对临界资源的访问时,因为自旋锁的存在,某段临界资源被占用后。其他事件将无法访问,即进行所谓的自旋,“原地打转” 注意: 在自旋锁的临界区不能使用可能引起进程调度的函数(因为抢占已经被禁止了)。 示例: copy_to_user
阅读全文
摘要:1 简介 原子操作此操作是不会被打断的 2 ldrex、strex、teq ldrex 相对ldr而言此命令多了ex(exclude排除),意为独占 eg: 将会对ldr r0, r1命令中的r1标记为独占 strex 相较于str基本功能而言多出清除独占标记 eg: strex r2, r0, r
阅读全文
摘要:中断处理流程 1 简介 中断屏蔽是一种可以防止并发导致竞态的方法。 在进入临界区之前屏蔽系统中断可以保证正在执行的内核路径不被打断(进程调度也依赖于中断)。 不过在驱动编程中此方法并不值得推荐。因为驱动并不一定运行在单核上,面对SMP系统中断屏蔽并不能屏蔽掉别的CPU的中断操作,此时使用中断屏蔽也就
阅读全文
摘要:汇编参考 GCC工具链使用 1 引入 内联汇编即在C函数中使用汇编去实现某些功能。 为什么需要在C代码中引入汇编? C语言在大多数的时候效率都很高,但在某些情况下直接使用汇编效率会***==更加高效==*** 部分功能通过C语言很难实现,这部分代码就需要使用汇编去实现(==实现某些功能==) 在C文
阅读全文

浙公网安备 33010602011771号