カーネル(この場合はLinux)から、プロセスコンテキスト(システムコール、ページフォールトなど)でPTRACE_SINGLESTEPを指定してptrace_requestを呼び出すとどうなりますか?ユーザ空間命令またはカーネル空間命令を単一ステップで実行するかどうか。私は、ptraceがユーザーの指示を一歩進めることができることを認識しています。なぜなら、これが生成する動作が不思議だからです。プロセスコンテキストからのカーネルでの単一ステップの実行?
もう少し情報を提供するために、私はページフォールトハンドラから命令を出しています(フォルトした命令をシングルステップで実行しますが、命令が通過するようにPTEを変更します)。もしこれが全く可能であれば、あるいは実行するプロセスを再スケジュールするなど別の方法が必要なのかどうか疑問に思っています。
これは、プロセスのtask_struct(プリエンプトされている場合)それでもカーネルスペースハンドラIIRCを指しているので、ptraceを使ったシングルステッピングはこれをバイパスし、正しいユーザスペース命令を実行するか、まったく実行しないでしょうか?