Redesigned sys_open call

fs0 used to receive open() requests and notify pager about them via a syscall ipc.
This caused deadlocks because normally request flow is mm0 -> fs0 on all other calls.
The solution was to have mm0 ask and validate file descriptors from fs0 on the first
request instance that involved that file descriptor. By this method we delay the
validation of the fd until its first use, and avoid deadlock. It also fits well with
the lazy request handling design philosophy.
This commit is contained in:
Bahadir Balban
2008-09-16 15:50:00 +03:00
parent 398bc0c914
commit 510852b8b8
7 changed files with 189 additions and 138 deletions

View File

@@ -13,6 +13,8 @@ int sys_mkdir(l4id_t sender, const char *pathname, unsigned int mode);
int sys_chdir(l4id_t sender, const char *pathname);
/* Calls from pager that completes a posix call */
int pager_sys_open(l4id_t sender, l4id_t opener, int fd);
int pager_sys_read(l4id_t sender, unsigned long vnum, unsigned long f_offset,
unsigned long npages, void *pagebuf);