別のプロセスの「mm」オブジェクトで作業したい「ワーカー」カーネルスレッドがあるという要件があります。何らかの理由で、カーネルスレッドで実行する必要があります。
この「mm」オブジェクトは「mmu_lock」によって保護されています。'mm' で動作するルーチンは 'current->mmu_lock' を使用します (これは、別のコンテキストから実行されることが期待されていないことを明確に意味します)。
カーネルスレッドには現在のポインターがないことを理解しています。前のプロセスに設定された「現在の」ポインターを使用するだけです。したがって、これらのルーチンをカーネル スレッドから直接呼び出すのは間違いです。
これを考えると、カーネルスレッドからこれらのルーチンを呼び出す「ハック」はありますか? 必要なプロセスの現在のポインターを保存し、それをカーネルスレッドの「現在の」ポインターとして使用するのと同じですか? プロセスがスケジュールアウトされた後 (スワップアウトできますか?)、現在のポインターをこの方法で安全に使用できるか、または単純に実行できません。