系統(tǒng)調(diào)用是一個(gè)軟中斷,中斷號(hào)是0x80,它是上層應(yīng)用程序與Linux系統(tǒng)內(nèi)核進(jìn)行交互通信的唯一接口。
這個(gè)中斷的設(shè)置在kernel/sched.c中443行函數(shù)中
1 void sched_init( void ) 2 { 3 int i; 4 struct desc_struct * p; 5 6 if ( sizeof ( struct sigaction) != 16 ) 7 panic( " Struct sigaction MUST be 16 bytes " ); 8 set_tss_desc(gdt+FIRST_TSS_ENTRY,& (init_task.task.tss)); 9 set_ldt_desc(gdt+FIRST_LDT_ENTRY,& (init_task.task.ldt)); 10 p = gdt+ 2 + FIRST_TSS_ENTRY; 11 for (i= 1 ;i<NR_TASKS;i++ ) { 12 task[i] = NULL; 13 p->a=p->b= 0 ; 14 p++ ; 15 p->a=p->b= 0 ; 16 p++ ; 17 } 18 /* Clear NT, so that we won't have troubles with that later on */ 19 __asm__( " pushfl ; andl $0xffffbfff,(%esp) ; popfl " ); 20 ltr( 0 ); 21 lldt( 0 ); 22 outb_p( 0x36 , 0x43 ); /* binary, mode 3, LSB/MSB, ch 0 */ 23 outb_p(LATCH & 0xff , 0x40 ); /* LSB */ 24 outb(LATCH >> 8 , 0x40 ); /* MSB */ 25 set_intr_gate( 0x20 ,& timer_interrupt); 26 outb(inb_p( 0x21 )&~ 0x01 , 0x21 ); 27 set_system_gate( 0x80 ,& system_call); 28 }
http://blog.csdn.net/yming0221/article/details/6398414
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
