]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for VFS_{,F}STATVFS1
authorLionel Sambuc <lionel@minix3.org>
Mon, 12 May 2014 09:49:08 +0000 (11:49 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:30 +0000 (17:05 +0200)
Change-Id: Iaf71cdddb48f64d84773029da2c0666f5462f198

include/minix/callnr.h
include/minix/ipc.h
lib/libc/sys-minix/fstatvfs.c
lib/libc/sys-minix/statvfs.c
servers/vfs/stadir.c

index b110b588cfa8826b49bd8471724d076490e0d53e..3063c8e9ffb38947bc216418c30a69ad8940bb03 100644 (file)
 
 #define NR_VFS_CALLS           49      /* highest number from base plus one */
 
-/* Field names for the statvfs1(2) and fstatvfs1(2) calls. */
-#define VFS_STATVFS1_LEN       m1_i1   /* size_t */
-#define VFS_STATVFS1_NAME      m1_p1   /* const char * */
-#define VFS_STATVFS1_FD                m1_i1   /* int */
-#define VFS_STATVFS1_BUF       m1_p2   /* struct statvfs * */
-#define VFS_STATVFS1_FLAGS     m1_i2   /* int */
-
 /* Field names for the mount(2) call. */
 #define VFS_MOUNT_FLAGS                m11_i1  /* int */
 #define VFS_MOUNT_DEVLEN       m11_s1  /* size_t */
index 367afb89b035c23c3e5fba4d552672a671ba1d80..4cce078ed12c24a182721f6fb4ab8feede159bb9 100644 (file)
@@ -166,6 +166,17 @@ typedef struct {
 } mess_lc_vfs_select;
 _ASSERT_MSG_SIZE(mess_lc_vfs_select);
 
+typedef struct {
+       int fd;
+       int flags;
+       size_t len;
+       vir_bytes name;
+       vir_bytes buf;
+
+       uint8_t padding[36];
+} mess_lc_vfs_statvfs1;
+_ASSERT_MSG_SIZE(mess_lc_vfs_statvfs1);
+
 typedef struct {
        dev_t device;
        off_t seek_pos;
@@ -619,6 +630,7 @@ typedef struct {
 
                mess_lc_vfs_getvfsstat  m_lc_vfs_getvfsstat;
                mess_lc_vfs_select      m_lc_vfs_select;
+               mess_lc_vfs_statvfs1    m_lc_vfs_statvfs1;
 
                mess_vfs_fs_breadwrite  m_vfs_fs_breadwrite;
                mess_vfs_fs_chmod       m_vfs_fs_chmod;
index 2f09004055a7e424e4e86e641125016bb11ba52b..ca2b6ee1d076ad18572a509fd502b4e0e4fd6088 100644 (file)
@@ -14,9 +14,9 @@ int fstatvfs1(int fd, struct statvfs *buffer, int flags)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.VFS_STATVFS1_FD = fd;
-  m.VFS_STATVFS1_BUF = (char *) buffer;
-  m.VFS_STATVFS1_FLAGS = flags;
+  m.m_lc_vfs_statvfs1.fd = fd;
+  m.m_lc_vfs_statvfs1.buf = (vir_bytes)buffer;
+  m.m_lc_vfs_statvfs1.flags = flags;
   return(_syscall(VFS_PROC_NR, VFS_FSTATVFS1, &m));
 }
 
index cdca3eab29331371bcec5d2dcc58695cd75b5d52..b61b4e260db4b35a63f795abc0bb299dabe41408 100644 (file)
@@ -15,10 +15,10 @@ int statvfs1(const char *name, struct statvfs *buffer, int flags)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.VFS_STATVFS1_LEN = strlen(name) + 1;
-  m.VFS_STATVFS1_NAME = (char *) __UNCONST(name);
-  m.VFS_STATVFS1_BUF = (char *) buffer;
-  m.VFS_STATVFS1_FLAGS = flags;
+  m.m_lc_vfs_statvfs1.len = strlen(name) + 1;
+  m.m_lc_vfs_statvfs1.name =  (vir_bytes)name;
+  m.m_lc_vfs_statvfs1.buf = (vir_bytes)buffer;
+  m.m_lc_vfs_statvfs1.flags = flags;
   return(_syscall(VFS_PROC_NR, VFS_STATVFS1, &m));
 }
 
index a95bfc8f3c34945167c6f6c9bc2cd03a9af3e1e5..1993826f2e69dcc4b6ae82f75813135e3f86ab5f 100644 (file)
@@ -302,10 +302,10 @@ int do_statvfs(void)
   vir_bytes vname1, statbuf;
   size_t vname1_length;
 
-  vname1 = (vir_bytes) job_m_in.VFS_STATVFS1_NAME;
-  vname1_length = (size_t) job_m_in.VFS_STATVFS1_LEN;
-  statbuf = (vir_bytes) job_m_in.VFS_STATVFS1_BUF;
-  flags = job_m_in.VFS_STATVFS1_FLAGS;
+  vname1 = job_m_in.m_lc_vfs_statvfs1.name;
+  vname1_length = job_m_in.m_lc_vfs_statvfs1.len;
+  statbuf = job_m_in.m_lc_vfs_statvfs1.buf;
+  flags = job_m_in.m_lc_vfs_statvfs1.flags;
 
   lookup_init(&resolve, fullpath, PATH_NOFLAGS, &vmp, &vp);
   resolve.l_vmnt_lock = VMNT_READ;
@@ -332,9 +332,9 @@ int do_fstatvfs(void)
   int r, rfd, flags;
   vir_bytes statbuf;
 
-  rfd = job_m_in.VFS_STATVFS1_FD;
-  statbuf = (vir_bytes) job_m_in.VFS_STATVFS1_BUF;
-  flags = job_m_in.VFS_STATVFS1_FLAGS;
+  rfd = job_m_in.m_lc_vfs_statvfs1.fd;
+  statbuf = job_m_in.m_lc_vfs_statvfs1.buf;
+  flags = job_m_in.m_lc_vfs_statvfs1.flags;
 
   /* Is the file descriptor valid? */
   if ((rfilp = get_filp(rfd, VNODE_READ)) == NULL) return(err_code);