diff --git a/tasks/fs0/main.c b/tasks/fs0/main.c index 2c720a7..f8e5bb8 100644 --- a/tasks/fs0/main.c +++ b/tasks/fs0/main.c @@ -94,7 +94,8 @@ void handle_fs_requests(void) break; default: printf("%s: Unrecognised ipc tag (%d) " - "received. Ignoring.\n", __TASKNAME__, mr[MR_TAG]); + "received from tid: %d. Ignoring.\n", __TASKNAME__, + mr[MR_TAG], sender); } } diff --git a/tasks/fs0/src/memfs/vnode.c b/tasks/fs0/src/memfs/vnode.c index 1eef0b4..db3d373 100644 --- a/tasks/fs0/src/memfs/vnode.c +++ b/tasks/fs0/src/memfs/vnode.c @@ -245,7 +245,7 @@ struct vnode *memfs_vnode_mknod(struct vnode *v, const char *dirname, return newv; /* Initialise the vnode */ - vfs_set_type(newv, S_IFDIR); + vfs_set_type(newv, mode); /* Get the next directory entry available on the parent vnode */ if (v->dirbuf.npages * PAGE_SIZE <= v->size) diff --git a/tasks/fs0/src/syscalls.c b/tasks/fs0/src/syscalls.c index 22e0712..a8cb21b 100644 --- a/tasks/fs0/src/syscalls.c +++ b/tasks/fs0/src/syscalls.c @@ -113,8 +113,10 @@ int sys_open(l4id_t sender, const char *pathname, int flags, unsigned int mode) return 0; } - /* Creating new node, file or directory */ + /* Creating new file */ if (flags & O_CREAT) { + /* Make sure mode identifies a file */ + mode |= S_IFREG; if (IS_ERR(v = vfs_create(task, pdata, mode))) { retval = (int)v; goto out; @@ -182,6 +184,9 @@ int sys_mkdir(l4id_t sender, const char *pathname, unsigned int mode) return 0; } + /* Make sure we create a directory */ + mode |= S_IFDIR; + /* Create the directory or fail */ if (IS_ERR(v = vfs_create(task, pdata, mode))) l4_ipc_return((int)v); diff --git a/tasks/libposix/write.c b/tasks/libposix/write.c index d6bfcf8..d875ab4 100644 --- a/tasks/libposix/write.c +++ b/tasks/libposix/write.c @@ -20,7 +20,7 @@ static inline int l4_write(int fd, const void *buf, size_t count) write_mr(L4SYS_ARG2, count); /* Call pager with write() request. Check ipc error. */ - if ((wrcnt = l4_sendrecv(VFS_TID, VFS_TID, L4_IPC_TAG_WRITE)) < 0) { + if ((wrcnt = l4_sendrecv(PAGER_TID, PAGER_TID, L4_IPC_TAG_WRITE)) < 0) { printf("%s: L4 IPC Error: %d.\n", __FUNCTION__, wrcnt); return wrcnt; } diff --git a/tasks/test0/src/fileio.c b/tasks/test0/src/fileio.c index c5453b6..3c7f470 100644 --- a/tasks/test0/src/fileio.c +++ b/tasks/test0/src/fileio.c @@ -21,6 +21,7 @@ int fileio(void) perror("OPEN"); return -1; } + printf("Created newfile.txt\n"); if ((int)(cnt = write(fd, str, strlen(str))) < 0) { perror("WRITE");