A file can be created.

Now up to sys_write() in pager, which needs to be filled in.
This commit is contained in:
Bahadir Balban
2008-04-19 01:27:41 +01:00
parent ce26835968
commit df0eccf7b3
5 changed files with 11 additions and 4 deletions

View File

@@ -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);
}
}

View File

@@ -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)

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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");