程式送出中斷來執行系統呼叫的時候,會帶一個系統呼叫標號,以指出將要執行的 kernel 動作是甚麼。然後 kernel 會去查表 (sys_call_table),並依據指定的位址去執行該動作。系統呼叫執行完畢後,會在完成一些檢查動作後將程式流程返回到當初呼叫時的位址。
如果我們想要在 kernel module 中修改原有的、或是建立自己的系統呼叫,做法就是將 sys_call_table 中系統呼叫的指標由原本的動作位址,改指向我們自己的程式位址。目的就是要讓原本呼叫的動作改為執行我們自己的程式。而很重要的一點是,我們也必須要卸載 kernel module 時將系統呼叫表的內容恢復為原來的樣子,以免當我們的 kernel module 在卸載後,該系統呼叫指不到可以執行的動作,因而造成系統問題。