]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for VFS_{,L}STAT
authorLionel Sambuc <lionel@minix3.org>
Mon, 12 May 2014 12:12:18 +0000 (14:12 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:33 +0000 (17:05 +0200)
Change-Id: I61db8484c14f0371214a0495774dc0b1d97f2099

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

index 395ea7979b1ebe0503474f963309c7bdedc5e840..c4915d08e893e9a90c49a64c308cb652bbdacdab 100644 (file)
 
 #define NR_VFS_CALLS           49      /* highest number from base plus one */
 
-/* Field names for the stat(2) and lstat(2) calls. */
-#define VFS_STAT_NAME          m1_p1   /* const char * */
-#define VFS_STAT_LEN           m1_i1   /* size_t */
-#define VFS_STAT_BUF           m1_p2   /* struct stat * */
-
 /* Field names for the fstat(2) call. */
 #define VFS_FSTAT_FD           m1_i1   /* int */
 #define VFS_FSTAT_BUF          m1_p1   /* struct stat * */
index c7cf01e98cc7c04cff1a31e512bc42802345de41..42bea3f58bd01683368bbaf9264a346444275948 100644 (file)
@@ -243,6 +243,15 @@ typedef struct {
 } mess_lc_vfs_select;
 _ASSERT_MSG_SIZE(mess_lc_vfs_select);
 
+typedef struct {
+       size_t len;
+       vir_bytes name;         /* const char * */
+       vir_bytes buf;          /* struct stat * */
+
+       uint8_t padding[44];
+} mess_lc_vfs_stat;
+_ASSERT_MSG_SIZE(mess_lc_vfs_stat);
+
 typedef struct {
        int fd;
        int flags;
@@ -769,6 +778,7 @@ typedef struct {
                mess_lc_vfs_pipe2       m_lc_vfs_pipe2;
                mess_lc_vfs_readlink    m_lc_vfs_readlink;
                mess_lc_vfs_select      m_lc_vfs_select;
+               mess_lc_vfs_stat        m_lc_vfs_stat;
                mess_lc_vfs_statvfs1    m_lc_vfs_statvfs1;
                mess_lc_vfs_truncate    m_lc_vfs_truncate;
                mess_lc_vfs_umask       m_lc_vfs_umask;
index bc86bc1b0627a27f375b3750de00637023cf8c10..371de65a8937cbf37d29eb41b4d0b7633b07aa30 100644 (file)
@@ -20,9 +20,9 @@ int stat(const char *name, struct stat *buffer)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.VFS_STAT_LEN = strlen(name) + 1;
-  m.VFS_STAT_NAME = (char *) __UNCONST(name);
-  m.VFS_STAT_BUF = (char *) buffer;
+  m.m_lc_vfs_stat.len = strlen(name) + 1;
+  m.m_lc_vfs_stat.name = (vir_bytes)name;
+  m.m_lc_vfs_stat.buf = (vir_bytes)buffer;
 
   return _syscall(VFS_PROC_NR, VFS_STAT, &m);
 }
@@ -43,9 +43,9 @@ int lstat(const char *name, struct stat *buffer)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.VFS_STAT_LEN = strlen(name) + 1;
-  m.VFS_STAT_NAME = (char *) __UNCONST(name);
-  m.VFS_STAT_BUF = (char *) buffer;
+  m.m_lc_vfs_stat.len = strlen(name) + 1;
+  m.m_lc_vfs_stat.name = (vir_bytes)name;
+  m.m_lc_vfs_stat.buf = (vir_bytes)buffer;
 
   return _syscall(VFS_PROC_NR, VFS_LSTAT, &m);
 }
index 1993826f2e69dcc4b6ae82f75813135e3f86ab5f..e85be00753a26e1c5c41dd4e039b8976f434b152 100644 (file)
@@ -148,9 +148,9 @@ int do_stat(void)
   vir_bytes vname1, statbuf;
   size_t vname1_length;
 
-  vname1 = (vir_bytes) job_m_in.VFS_STAT_NAME;
-  vname1_length = (size_t) job_m_in.VFS_STAT_LEN;
-  statbuf = (vir_bytes) job_m_in.VFS_STAT_BUF;
+  vname1 = job_m_in.m_lc_vfs_stat.name;
+  vname1_length = job_m_in.m_lc_vfs_stat.len;
+  statbuf = job_m_in.m_lc_vfs_stat.buf;
 
   lookup_init(&resolve, fullpath, PATH_NOFLAGS, &vmp, &vp);
   resolve.l_vmnt_lock = VMNT_READ;
@@ -426,9 +426,9 @@ int do_lstat(void)
   vir_bytes vname1, statbuf;
   size_t vname1_length;
 
-  vname1 = (vir_bytes) job_m_in.VFS_STAT_NAME;
-  vname1_length = (size_t) job_m_in.VFS_STAT_LEN;
-  statbuf = (vir_bytes) job_m_in.VFS_STAT_BUF;
+  vname1 = job_m_in.m_lc_vfs_stat.name;
+  vname1_length = job_m_in.m_lc_vfs_stat.len;
+  statbuf = job_m_in.m_lc_vfs_stat.buf;
 
   lookup_init(&resolve, fullpath, PATH_RET_SYMLINK, &vmp, &vp);
   resolve.l_vmnt_lock = VMNT_READ;