Specifiche phase 2 2016/17
Revision as of 11:07, 3 May 2017 by FedericoB (talk | contribs) (→servizi della SSI: Modificata specifica sulla comunicazione con i manager, come discussione in aula del 3/05. Aggiunti dettagli e spostate specifiche in una tabella.)
System call
send
int send(struct tcb_t *dest, uintptr_t msg) a0 = 1, a1 = dest. a2 = msg
recv
struct tcb_t *recv(struct tcb_t *src, uintptr_t *pmsg) a0 = 2, a1 = src, a2 = *pmsg
NB: system call 1 e 2 possono essere chiamate solo in kernel mode system call 0 e' errore system call non 1 o 2 vengono trasformate in messaggi al thread definito tramite SETSYSMGR se esiste altrimenti msg SETPGMMGR se esiste altrimenti TERMINATE_THREAD
servizi della SSI
solo da kernel mode
Nome servizio | Codice servizio | Parametri | Tipo di ritorno | Note |
---|---|---|---|---|
GET_ERRNO | 0 | int | 0 okay | |
CREATE_PROCESS | 1 | state_t* | strcut tcb_t* | NULL per errore |
CREATE_THREAD | 2 | state_t* | strcut tcb_t* | NULL per errore |
TERMINATE_PROCESS | 3 | state_t* | ||
TERMINATE_THREAD | 4 | state_t* | (se e' l'ultimo thread diventa come TERMINATE_PROCESS) | |
SETPGMMGR | 5 | struct tcb_t* | SET*MGR restituiscono lo stesso tcb_t, NULL per errore. (puà essere chiamato una volta sola per processo, TERMINATE_PROCESS alla seconda chiamata). | |
SETTLBMGR | 6 | struct tcb_t* | ||
SETSYSMGR | 7 | struct tcb_t* | ||
GETCPUTIME | 8 | unsigned int | in microsecondi, relativo al processo | |
WAIT_FOR_CLOCK | 9 | Sospende il thread fino al prossimo tick di pseudo-clock | ||
DO_IO | 10 | DEVICE_REG_ADDR, COMMAND, ... | status |
|
GET_PROCESSID | 11 | struct tcb_t* | struct pcb_t * | |
GET_MYTHREADID | 12 | struct tcb_t * | ||
GET_PARENTPROCID | 13 | pcb_t* | pcb_t* |