Open keigo1216 opened 2 months ago
現状は、ユーザー空間でcreate_processを読んでもページが割り当てられていないのでプログラムが動かない。 ユーザー空間でマルチプロセスしたい
kernel側のprocess_createの実装のentry_pointがミスっているかもしれない USER_BASEを別の関数のアドレスに設定しても、飛ぶ先がshell.cのmain関数だった ~USER_BASEがどこかでハードコーディングされているかも~ => されてたので修正 スイッチ時に次のようなエラーが出た
shell.c
main
PANIC: kernel/trap.c:21: unexpected trap ec=0000000000000020, far=00000000010004a8, elr=00000000010004a8
yeildでプロセスを切り替え、proc_bのエントリポイントに飛んだときに例外が出ている
yeild
EL1のセットされているECが0b100000
0b100000
例外で定義されている内容は以下の通り
ここから先は、ページ割り当てになるから、再調査&頑張って実装
別Issuesに切り出して実装する https://github.com/keigo1216/ketchup/issues/70
例外時のエラー番号が載っている https://developer.arm.com/documentation/ddi0595/2020-12/AArch64-Registers/ESR-EL1--Exception-Syndrome-Register--EL1-
実装すること
現状は、ユーザー空間でcreate_processを読んでもページが割り当てられていないのでプログラムが動かない。 ユーザー空間でマルチプロセスしたい
バグ
kernel側のprocess_createの実装のentry_pointがミスっているかもしれない USER_BASEを別の関数のアドレスに設定しても、飛ぶ先が
shell.c
のmain
関数だった ~USER_BASEがどこかでハードコーディングされているかも~ => されてたので修正 スイッチ時に次のようなエラーが出たyeild
でプロセスを切り替え、proc_bのエントリポイントに飛んだときに例外が出ているEL1のセットされているECが
0b100000
例外で定義されている内容は以下の通り
ここから先は、ページ割り当てになるから、再調査&頑張って実装
ページフォルト時の処理を実装
別Issuesに切り出して実装する https://github.com/keigo1216/ketchup/issues/70
調査
多重割り込みの実装
ページフォルトの実装
テスト
参考
例外時のエラー番号が載っている https://developer.arm.com/documentation/ddi0595/2020-12/AArch64-Registers/ESR-EL1--Exception-Syndrome-Register--EL1-