]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for VFS_COPYFD
authorLionel Sambuc <lionel@minix3.org>
Mon, 12 May 2014 10:58:56 +0000 (12:58 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:31 +0000 (17:05 +0200)
Change-Id: I7aff1b9551d3a60b2191de1bac3b695ea06b73ce

include/minix/callnr.h
include/minix/ipc.h
lib/libsys/copyfd.c
servers/vfs/filedes.c

index a27dd589cfaf606be8452f7419487c61d9afd4c6..3af6514e5180b0d6db112c6add5ca255337b2486 100644 (file)
 
 #define NR_VFS_CALLS           49      /* highest number from base plus one */
 
-/* Field names for the copyfd(2) call. */
-#define VFS_COPYFD_ENDPT       m1_i1   /* endpoint_t */
-#define VFS_COPYFD_FD          m1_i2   /* int */
-#define VFS_COPYFD_WHAT                m1_i3   /* int */
-
 /* Field names for the mapdriver(2) call. */
 #define VFS_MAPDRIVER_MAJOR    m1_i1   /* devmajor_t */
 #define VFS_MAPDRIVER_LABELLEN m1_i2   /* size_t */
index a515a4996c4b597d946dedfe13f61335a11e68bd..e97e06889df8609690d08216f3acbde1ce6a0442 100644 (file)
@@ -220,6 +220,15 @@ typedef struct {
 } mess_lsys_vfs_checkperms;
 _ASSERT_MSG_SIZE(mess_lsys_vfs_checkperms);
 
+typedef struct {
+       endpoint_t endpt;
+       int fd;
+       int what;
+
+       uint8_t padding[44];
+} mess_lsys_vfs_copyfd;
+_ASSERT_MSG_SIZE(mess_lsys_vfs_copyfd);
+
 typedef struct {
        dev_t device;
        off_t seek_pos;
@@ -679,6 +688,7 @@ typedef struct {
                mess_lc_vfs_umount      m_lc_vfs_umount;
 
                mess_lsys_vfs_checkperms m_lsys_vfs_checkperms;
+               mess_lsys_vfs_copyfd    m_lsys_vfs_copyfd;
 
                mess_vfs_fs_breadwrite  m_vfs_fs_breadwrite;
                mess_vfs_fs_chmod       m_vfs_fs_chmod;
index 16960adf0966692a4a46a2a7458d9d198417fa5d..fb1ff87c24cde4d54fd49ff27dd33a6e910227d8 100644 (file)
@@ -8,9 +8,9 @@ copyfd(endpoint_t endpt, int fd, int what)
        message m;
 
        memset(&m, 0, sizeof(m));
-       m.VFS_COPYFD_ENDPT = endpt;
-       m.VFS_COPYFD_FD = fd;
-       m.VFS_COPYFD_WHAT = what;
+       m.m_lsys_vfs_copyfd.endpt = endpt;
+       m.m_lsys_vfs_copyfd.fd = fd;
+       m.m_lsys_vfs_copyfd.what = what;
 
        return _taskcall(VFS_PROC_NR, VFS_COPYFD, &m);
 }
index 0141de9229d245e7f09f3a3b838453c59264caac..9e74ac637bfa5edcc4ea7200707d2b85a59611db 100644 (file)
@@ -428,9 +428,9 @@ int do_copyfd(void)
   /* This should be replaced with an ACL check. */
   if (!super_user) return(EPERM);
 
-  endpt = (endpoint_t) job_m_in.VFS_COPYFD_ENDPT;
-  fd = job_m_in.VFS_COPYFD_FD;
-  what = job_m_in.VFS_COPYFD_WHAT;
+  endpt = job_m_in.m_lsys_vfs_copyfd.endpt;
+  fd = job_m_in.m_lsys_vfs_copyfd.fd;
+  what = job_m_in.m_lsys_vfs_copyfd.what;
 
   if (isokendpt(endpt, &slot) != OK) return(EINVAL);
   rfp = &fproc[slot];