如题,最近需要将 system call 拆成两部分做(user space 纪录 system call number
和参数,kernel 根据记录的资料执行),目前的做法是在 kernel 中取得 system call t
able 的地址,然后根据 user space 提供的 system call number 来呼叫 table 中的 f
unction。
以上方法的确可以呼叫到指定的系统呼叫,我的问题是,假如我要呼叫 getpid(void),
从 kernel 只能知道这是 39 号系统呼叫并执行对应的 function,的确会回传一个数字
,但明显不是 user program 的。(我观察实作,似乎需要 current 这个变量,但我在呼
叫 system call table 上的函数要怎么告知? 或者是准备呼叫前切换 task 成原本的 us
er task ,毕竟 getpid 不用参数)
我看到大部分的 system call flow 从 user->kerenl 做的事就只有存 system call num
ber 和 parameter 而已,然后就直接 call table 上对应的 function 了。这之间是不
是少了一些神么? 我的 pt_reg 上除了存参数还要存其他东西吗?
感谢各位大大回复~