Remove the #defines for struct stat and dirent (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 11 Jan 2018 19:08:03 +0000 (14:08 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 28 Mar 2018 20:43:05 +0000 (16:43 -0400)
This was always a nasty hack.

Reinstall your kernel headers.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/kfs.h
kern/include/ros/fs.h
kern/include/vfs.h
kern/src/ext2fs.c
kern/src/kfs.c
kern/src/monitor.c
kern/src/syscall.c
kern/src/vfs.c

index 1913a93..c3d7ef2 100644 (file)
@@ -68,7 +68,7 @@ int kfs_d_release(struct dentry *dentry);
 void kfs_d_iput(struct dentry *dentry, struct inode *inode);
 /* file_operations */
 int kfs_llseek(struct file *file, off64_t offset, off64_t *ret, int whence);
-int kfs_readdir(struct file *dir, struct dirent *dirent);
+int kfs_readdir(struct file *dir, struct kdirent *dirent);
 int kfs_mmap(struct file *file, struct vm_region *vmr);
 int kfs_open(struct inode *inode, struct file *file);
 int kfs_flush(struct file *file);
index c2debed..4c4c545 100644 (file)
@@ -85,8 +85,6 @@ struct kstat {
 
 /* TODO: have userpsace use our stuff from bits/stats.h */
 #ifdef ROS_KERNEL
-#define stat kstat
-#define dirent kdirent
 
 /* File creation modes (access controls) */
 #define S_IRWXU 00700  /* user (file owner) has read, write and execute perms */
index 1f8e0ab..6b877f9 100644 (file)
@@ -303,7 +303,7 @@ struct file_operations {
        int (*llseek) (struct file *, off64_t, off64_t *, int);
        ssize_t (*read) (struct file *, char *, size_t, off64_t *);
        ssize_t (*write) (struct file *, const char *, size_t, off64_t *);
-       int (*readdir) (struct file *, struct dirent *);
+       int (*readdir) (struct file *, struct kdirent *);
        int (*mmap) (struct file *, struct vm_region *);
        int (*open) (struct inode *, struct file *);
        int (*flush) (struct file *);
index 97c8f38..ed221ab 100644 (file)
@@ -1329,7 +1329,7 @@ int ext2_llseek(struct file *file, off64_t offset, off64_t *ret, int whence)
 /* Fills in the next directory entry (dirent), starting with d_off.  Like with
  * read and write, there will be issues with userspace and the *dirent buf.
  * TODO: (UMEM) */
-int ext2_readdir(struct file *dir, struct dirent *dirent)
+int ext2_readdir(struct file *dir, struct kdirent *dirent)
 {
        void *blk_buf;
        /* Not enough data at the end of the directory */
index eef0470..08b3e67 100644 (file)
@@ -575,7 +575,7 @@ int kfs_llseek(struct file *file, off64_t offset, off64_t *ret, int whence)
  * buf.  TODO: we don't really do anything with userspace concerns here, in part
  * because memcpy_to doesn't work well.  When we fix how we want to handle the
  * userbuffers, we can write this accordingly. (UMEM)  */
-int kfs_readdir(struct file *dir, struct dirent *dirent)
+int kfs_readdir(struct file *dir, struct kdirent *dirent)
 {
        int count = 2;  /* total num dirents, gets incremented in check_entry() */
        int desired_file = dirent->d_off;
index ffa2373..11980b3 100644 (file)
@@ -285,7 +285,7 @@ int mon_nanwan(int argc, char **argv, struct hw_trapframe *hw_tf)
 
 int mon_bin_ls(int argc, char **argv, struct hw_trapframe *hw_tf)
 {
-       struct dirent dir = {0};
+       struct kdirent dir = {0};
        struct file *bin_dir;
        int retval = 0;
 
index 0659e12..eacf328 100644 (file)
@@ -1832,7 +1832,7 @@ static intreg_t stat_helper(struct proc *p, const char *path, size_t path_l,
        } else {
                /* VFS failed, checking 9ns */
                unset_errno();  /* Go can't handle extra errnos */
-               retval = sysstatakaros(t_path, (struct stat *)kbuf);
+               retval = sysstatakaros(t_path, (struct kstat *)kbuf);
                printd("sysstat returns %d\n", retval);
                /* both VFS and 9ns failed, bail out */
                if (retval < 0)
index 667b52d..e7f9d3f 100644 (file)
@@ -1399,10 +1399,10 @@ ssize_t generic_dir_read(struct file *file, char *u_buf, size_t count,
                /* Slight info exposure: could be extra crap after the name in the
                 * dirent (like the name of a deleted file) */
                if (!is_ktask(per_cpu_info[core_id()].cur_kthread))
-                       memcpy_to_user(current, u_buf, dirent, sizeof(struct dirent));
+                       memcpy_to_user(current, u_buf, dirent, sizeof(struct kdirent));
                else
-                       memcpy(u_buf, dirent, sizeof(struct dirent));
-               amt_copied += sizeof(struct dirent);
+                       memcpy(u_buf, dirent, sizeof(struct kdirent));
+               amt_copied += sizeof(struct kdirent);
                /* 0 signals end of directory */
                if (retval == 0)
                        break;
@@ -2812,7 +2812,7 @@ char *do_getcwd(struct fs_struct *fs_env, char **kfree_this, size_t cwd_l)
 static void print_dir(struct dentry *dentry, char *buf, int depth)
 {
        struct dentry *child_d;
-       struct dirent next = {0};
+       struct kdirent next = {0};
        struct file *dir;
        int retval;