akp*_*akp 3 c linux locking linux-device-driver linux-kernel
我正在尝试创建一个具有结构的内核模块,我想在用户空间应用程序中使用相同的结构,并且该应用程序与给定的模块一起工作。
主要问题是这个结构包含一个名为spinlock_t type. 在内核中用于锁定但不知道如何在用户空间应用程序中使用它。
struct new_struct
{
...some variable...
spinlock_t u_lock;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法在用户空间应用程序中使用自旋锁。
或者是否有任何其他锁定技术可以在内核和用户空间中使用,以便如果锁定由用户应用程序持有,内核模块应该无法获得它,反之亦然。
小智 8
内核自旋锁不适用于用户空间,因为如果使用 _irqsave/_irqrestore,它将禁用抢占和禁用 IRQ。在用户空间中甚至不可能进行抢占或 IRQ 禁用。
最好的尝试是pthread_spin_lock()我认为。