摘要:
How to Add a System CallKernel : 2.6.18編譯環境 : Fedora Core 6假設要加的system call為 sys_project, 有一個int的輸入參數一、在linux source code的部份(以linux代表source code的根目錄)linux/arch/i386/kernel/syscall_table.S的最後面加上要新增的system call名稱如果syscall_table.S的最後面長得像這樣...long sys_tee/* 315 */.long sys_vmsplice.long sys_move_pages那麼 阅读全文
摘要:
4月14日很多硬件的功能,物尽其用却未必好过软实现,Linux出于可移植性及其它原因,常常选择不去过分使用硬件特性。比如Linux只使用四个segment,分别是__USER_CS、__USER_DS、__KERNEL_CS、__KERNEL_DS,因为Paging可以完成segmentation的工作,而且可以完成的更好。而且这样简化了很多,统一了逻辑地址和线性地址。而TSS存在每CPU一个的GDT中,虽然每个process的TSS不同,但Linux2.6却不利用其中的hardwarecontextswitch(虽然低版本使用)以一个farjmp来实现任务转换,而用一系列的mov指令来实现。 阅读全文