
私はカーネル開発に興味があり、プロセスを終了して強制終了する方法を見つけようとしています。私が知っているのは、そのプロセスの pid とタスク記述子の値だけです。
言い換えると、カーネル内のプロセスの pid または task_struct へのポインターを使用してプロセスを強制終了するにはどうすればよいでしょうか?
答え1
参照できるコードは、mm/oom_kill.c の oom killer です。
https://github.com/torvalds/linux/blob/master/mm/oom_kill.c
これは、システムのメモリが不足したときにカーネルがいくつかのプロセスを選択して終了するメカニズムです。
Android LMK は比較的シンプルです。send_sig を使用しています。 android.googlesource.com/kernel/arm64/+/android-9.0.0_r0.32/drivers/staging/android/lowmemorykiller.c を参照してください。
または
int kill_pid(struct pid *pid, int sig, int priv)
関数を使用することもできます。