無料Wikiサービス | デモページ | [広告] サイト検索サービス Sx4
Linux Kernel(2.6)の実装に関するメモ書き
最近更新したページ
2008/1/14
2008/1/13
2007/12/9
2007/10/5
2007/9/28
2007/9/27
2007/8/22
2007/8/21
検索

システムコール


システムコールの発行はアプリケーションがint 80hのトラップを発生させることで行う。

システムコールのエントリルーチン

entry.S::system_call

trap_init()で例外ハンドラのIDTを設定する際、ベクタ番号80hについても一緒に設定している。

sys_call_tableに各種システムコールのエントリポイントが並べられている。


システムコールからの戻る時の流れ

1. 各システムコールルーチンからリターン

2. syscall_exit:
thread_info.flagsにbitが立っていれば
syscall_exit_workにジャンプ

3. restore_all:
レジスタを元に戻す。
iret

4. syscall_exit_work:
TIF_SYSCALL_TRACE|TIF_SYSCALL_AUDITが立っていなければwork_pendingへジャンプ

5. work_pending
TIF_NEED_RESCHEDが立っていればschedule()をコール
restore_allへジャンプ

[関連ページ]
例外処理


最終更新 2006/6/24 19:01:44 - kztomita
(2006/6/24 19:01:44 作成)