カーネルが context_switch() を実行しているとき、つまりその関数内にあるとき、他のタスクがシステム コールを行う可能性はありますか? 私が理解している限り、プロセッサの状態がスワップされているため、context_switch が完了するまで他のコードを実際に実行することはできません。この理解は正しいでしょうか?
background: 基本的には、コンテキスト スイッチでシステム コール テーブルを交換したいと考えています。syscall ベクトルには 2 つのバージョンがあり、そのうちの 1 つは変更された syscall コードのアドレスを含んでいます。「関心のあるプロセス」がスケジュールされたら、sys_call_table ポインターを更新して、新しいプロセスを指すようにします。そして、対象のプロセスがスワップアウトされたときにそれをスワップアウトします。
私はカーネル開発に不慣れなので、私のアプローチに関するフィードバックも歓迎します。PS: ptrace() については知っていますが、私のニーズには合いません。システムコール UML スタイルの仮想化に関連するコンテキスト スイッチが多すぎます。