mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 10:53:16 +01:00
Still towards close/flush.
This commit is contained in:
@@ -152,28 +152,6 @@ out:
|
||||
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)
|
||||
{
|
||||
struct tcb *task;
|
||||
@@ -271,6 +249,13 @@ int pager_sys_read(l4id_t sender, unsigned long vnum, unsigned long f_offset,
|
||||
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,
|
||||
unsigned long npages, void *pagebuf)
|
||||
{
|
||||
|
||||
@@ -257,14 +257,38 @@ int write_file_pages(struct vm_file *vmfile, unsigned long pfn_start,
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user