SYSCALLS Tarvitaan handle <-> filename <-> prosessi -table, johon merkataan kun joku prosessi avaa tiedoston ja saa handlen sille. Siten viodaan estää muiden prosessien saman handlen käyttö. Jos yrittää avata samaa failia joka on jo auki heitetään errori. Syscallin epäonnistuessa syystä tai toisesta palautetaan negatiivinen arvo. Exit ei voi epäonnistua, mutta nosto ei välttämättä onnistu jos annettu arvo on huono. =============== int syscall_open (const char *filename) * Tiedoston avaus, käytetään VFS:n funktiota vfs_open. Kts ylhäältä. int syscall_close (int filehandle) * Tiedoston sulkeminen, käytetään VFS:n funktiota vfs_close. Vapautetaan handle omasta taulusta. int syscall_create (const char *filename, int size) * Tiedoston luominen, käytetään VFS:n funktiota vfs_create. int syscall_delete (const char *filename) * Tiedoston poisto, käytetään VFS:n funktiota vfs_remove. int syscall_seek (int filehandle, int offset) * vfs_seek. VFS ei tarjoa tiedoston pituutta joten offsetin validiuden näkee vasta luettaessa. int syscall_read (int filehandle, void *buffer, int length) * Lukeminen, VFS:n funktio vfs_read. Virhetilanteet tarkastettava. int syscall_write (int filehandle, const void *buffer, int length) * Kirjoittaminen VFS:n funktio vfs_write. TFS ei resizetä tiedostoja, joten on katsottava paluuarvosta paljonko kirjoitettiin ja nostettava virhe jos kirjoitettiin vähemmän kuin pituuden verran. Prosessi-infossa on prosessien return value ja kenttä sille jos prosessi odottaa jotain toista prosessia. void syscall_exit (int retval) * Terminoidaan kutsuva prosessi, jos retval => 0. Signaloidaan nukkuvia prosesseja, jotka odottavan tämän prosessin PIDin mukaista prosessia. Tieto kaivetaan prosessitaulusta. Lisäksi suljetaan prosessin filehandlet jos sellaisia on auki. int syscall_exec (const char *filename) * Luodaan uusi prosessi process_create funktiolla, käynnistetään process_start -funktiolla ja palautetaan PID. int syscall_join (int pid) * Tsekataan onko pidillä jo return value, jos ei niin prosessi unille ja odotuskenttään odotettavan prosessin pid. Herätessä katsotaan uudelleen jne, kunnes saadaan return value.