【发布时间】:2021-12-14 02:43:58
【问题描述】:
我对自旋锁的临界区中不允许使用哪些类型的函数感到有点困惑。
特别是我对可重入函数感到困惑。我认为在自旋锁的关键部分使用所有可重入函数都是不安全的,但似乎 kfree 和 memcpy 之类的函数可以使用。
那么我们如何知道哪些功能正常或不正常呢?我通常认为任何可能阻塞的东西都是不安全的,但不是所有的可重入函数都有阻塞的能力/潜力吗?
还有中断处理程序对自旋锁的作用和关系是什么?
【问题讨论】:
-
你把事情搞混了:reentrant =/= can sleep.
-
@MarcoBonelli 那么在自旋锁内你能做的唯一限制就是不睡觉?
-
是的,基本上就是这样。你必须小心不要调用任何可能休眠的函数。
标签: c multithreading concurrency linux-kernel spinlock