Still towards close/flush.

This commit is contained in:
Bahadir Balban
2008-04-25 23:06:23 +01:00
parent c9b9f9d111
commit f183b3c15e
2 changed files with 33 additions and 24 deletions
+7 -22
View File
@@ -152,28 +152,6 @@ out:
return 0; return 0;
} }
int sys_close(l4id_t sender, int fd)
{
struct tcb *task;
/* Get the task */
BUG_ON(!(task = find_task(sender)));
/* Validate file descriptor */
if (fd < 0 || fd > TASK_OFILES_MAX) {
l4_ipc_return(-EBADF);
return 0;
}
if (!task->fd[fd]) {
l4_ipc_return(-EBADF);
return 0;
}
/* Finish I/O on file */
return 0;
}
int sys_mkdir(l4id_t sender, const char *pathname, unsigned int mode) int sys_mkdir(l4id_t sender, const char *pathname, unsigned int mode)
{ {
struct tcb *task; struct tcb *task;
@@ -271,6 +249,13 @@ int pager_sys_read(l4id_t sender, unsigned long vnum, unsigned long f_offset,
return 0; return 0;
} }
/*
* This can be solely called by the pager and is not the posix write call.
* That call is in the pager. This writes the dirty pages of a file
* back to disk via vfs.
*
* The buffer must be contiguous by page, if npages > 1.
*/
int pager_sys_write(l4id_t sender, unsigned long vnum, unsigned long f_offset, int pager_sys_write(l4id_t sender, unsigned long vnum, unsigned long f_offset,
unsigned long npages, void *pagebuf) unsigned long npages, void *pagebuf)
{ {
+26 -2
View File
@@ -257,14 +257,38 @@ int write_file_pages(struct vm_file *vmfile, unsigned long pfn_start,
return 0; return 0;
} }
int do_flush_file_pages(struct vm_file *vmfile) int flush_file_pages(struct vm_file *vmfile)
{ {
} }
int sys_close(void) int sys_close(l4id_t sender, int fd)
{ {
struct tcb *task;
struct vm_file *f;
int retval, err;
/* Get the task */
BUG_ON(!(task = find_task(sender)));
/* Check fd validity */
if (fd < 0 || fd > TASK_FILES_MAX || !task->fd[fd].vmfile) {
retval = -EBADF;
goto out;
}
/* Finish I/O on file */
f = task->fd[fd].vmfile;
if ((err = flush_file_pages(f)) < 0) {
retval = err;
goto out;
}
out:
l4_ipc_return(retval);
return 0;
} }
int sys_flush(void) int sys_flush(void)
{ {
} }