如何在内核模块线程中进行上下文切换



我想知道是否有一种方法可以让内核模块线程切换其当前的mm。内核线程通常使用在调度之前活动的最后一个mm。是否有可能在内核线程中切换到特定的mm ?我正在寻找一个linux相当于KeStackAttachProcess在windows。Context_switch()switch_mm()不出口,所以我想知道我可以用什么来切换上下文在我的内核模块线程。

旧的内核没有kthread_前缀"kthread_use_mm -使调用kthread对地址空间进行操作"kthread_unuse_mm -逆转kthread_use_mm()的效果"

目前没有这样的函数可用于切换上下文。然而,同样的事情可以用不同的方式来实现。我发现在内核中特定进程的上下文中做任何事情的最好方法是在进程上下文中睡眠(wait_*函数族)并唤醒该线程并在该上下文中做任何需要做的事情。这当然意味着您必须通过IOCTL或其他方式将应用程序调用到内核中,并在该线程上睡觉,并在需要做某事时将其唤醒。这似乎是一个非常广泛使用和流行的机制。

最新更新