seL4系統調用主要有以下八個:
-
seL4 Send():
通過已被命名的cap傳遞消息,然後允許程式繼續,如果調用這個cap的是endpoint,且沒有receiver接收消息,sender将會被阻塞到有receiver接收。Reciver和核心對象不會傳回錯誤。
-
seL4 NBSend():
不會阻塞的send,在沒有receiver時,将消息丢棄,Reciver和核心對象不會傳回錯誤。
-
seL4 Call():
和seL4_Send()一樣,但是會在消息上附加回複sender的cap,該cap将存在receiver的TCB中一個特殊的slot中。通過cap調用核心服務時,使用seL4_Send()使核心服務可以傳回錯誤代碼或者其他相應。
-
seL4 Wait() :
用來通過endpoint接收消息,如果沒有消息可接收,則該線程被阻塞,直到有消息可接收。該系統調用隻能通過endpoint的cap調用,否則會導緻錯誤。
-
seL4 Reply():
用來響應seL4_Call(),将消息回複給sender,并将其喚醒。因TCB中僅有一個槽存儲回複cap,是以seL4_Reply()隻能給最近的一個seL4_Call()回複。
-
seL4 ReplyWait():
是seL4_Reply()+seL4_Wait()。能用一次核心系統調用同時回複消息,并等待下一條消息。
-
seL4 Poll():
将會無阻塞地通過endpoint發送消息。該系統調用隻能被擁有asynchronous endpoint cap的程序調用,負責産生錯誤。
-
seL4 Yield():
唯一不需要 Capability的系統調用。會将調用者剩餘的時間片交給同等優先度的可運作線程。如果沒有這樣的線程,則會重新換新調用的線程,即該系統調用無任何作用。
小小的總結:前7個系統調用都是和IPC有關的,而最後一個和排程有關,具體的函數還會在之後的博文中發出來。