Linux kernel 如何在执行系统调用时挂起线程?

Linux kernel 如何在执行系统调用时挂起线程?,linux-kernel,kernel,pthreads,Linux Kernel,Kernel,Pthreads,在Linux多线程(pthread)中,我希望异步 执行系统调用时挂起线程 假设有一个由100条装配线组成的系统调用。 我想要一个线程在内核(syscall)中的某个时间暂停它的执行 装配代码的具体范围(例如,第20行到第50行之间的某个位置)。然后在需要时从那里恢复线程(syscall指令) 这不一定是可靠的。如果我必须尝试暂停-恢复线程10000次,并且只有一次尝试可以满足我的要求,那很好 我能用信号来实现我想要的吗? 我认为当目标线程位于内核内部时,信号将不会被异步处理 如果我能得到一些关

在Linux多线程(pthread)中,我希望异步 执行系统调用时挂起线程

假设有一个由100条装配线组成的系统调用。 我想要一个线程在内核(syscall)中的某个时间暂停它的执行 装配代码的具体范围(例如,第20行到第50行之间的某个位置)。然后在需要时从那里恢复线程(syscall指令)

这不一定是可靠的。如果我必须尝试暂停-恢复线程10000次,并且只有一次尝试可以满足我的要求,那很好

我能用信号来实现我想要的吗? 我认为当目标线程位于内核内部时,信号将不会被异步处理

如果我能得到一些关于这个问题的建议,那就太好了。
提前感谢。

我认为当目标线程位于内核内时,信号不会被异步处理。
-是的,位于内核内的线程接收到的信号只有在返回到用户空间时才会被处理。您需要使用与内核相关的机制来停止内核中的线程。除了直接修补内核代码外,还可以是kprobes、KGDB等。
我认为当目标线程位于内核内部时,信号不会被异步处理。
-是的,位于内核内部的线程接收到的信号只有在返回到用户空间时才被处理。您需要使用与内核相关的机制来停止内核中的线程。除了直接修补内核代码外,还可以是kprobes、KGDB等。