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

include/minix/callnr.h
include/minix/ipc.h
lib/libc/sys-minix/ioctl.c
servers/vfs/device.c

index 5c91e70e453ace84b70d773361a29bf2b16830a7..2204baba65db5573cb16ddb775d1c983f20de163 100644 (file)
 
 #define NR_VFS_CALLS           49      /* highest number from base plus one */
 
-/* Field names for the ioctl(2) call. */
-#define VFS_IOCTL_FD           m2_i1   /* int */
-#define VFS_IOCTL_REQ          m2_i3   /* unsigned long */
-#define VFS_IOCTL_ARG          m2_p1   /* void * */
-
 /* Field names for the checkperms(2) call. */
 #define VFS_CHECKPERMS_ENDPT   m2_i1   /* endpoint_t */
 #define VFS_CHECKPERMS_GRANT   m2_i2   /* cp_grant_id_t */
index 5d56726ee121945e27221f87b7402319b75f234c..1cdded91f2c9f64d410c0ab20147728a5d264175 100644 (file)
@@ -155,6 +155,15 @@ typedef struct {
 } mess_lc_vfs_getvfsstat;
 _ASSERT_MSG_SIZE(mess_lc_vfs_getvfsstat);
 
+typedef struct {
+       int fd;
+       unsigned long req;
+       void *arg;
+
+       uint8_t padding[44];
+} mess_lc_vfs_ioctl;
+_ASSERT_MSG_SIZE(mess_lc_vfs_ioctl);
+
 typedef struct {
        int flags;
        size_t devlen;
@@ -654,6 +663,7 @@ typedef struct {
                mess_fs_vfs_readwrite   m_fs_vfs_readwrite;
 
                mess_lc_vfs_getvfsstat  m_lc_vfs_getvfsstat;
+               mess_lc_vfs_ioctl       m_lc_vfs_ioctl;
                mess_lc_vfs_mount       m_lc_vfs_mount;
                mess_lc_vfs_select      m_lc_vfs_select;
                mess_lc_vfs_statvfs1    m_lc_vfs_statvfs1;
index 12cea4b6dc8c8f34e517aca3bd7cd90e041e4ccd..09b3c04ea748f5dd0b903e39f9e19c3fe2179b7e 100644 (file)
@@ -76,9 +76,9 @@ int     ioctl(int fd, unsigned long request, ...)
   }
 
   memset(&m, 0, sizeof(m));
-  m.VFS_IOCTL_FD = fd;
-  m.VFS_IOCTL_REQ = request;
-  m.VFS_IOCTL_ARG = (char *) addr;
+  m.m_lc_vfs_ioctl.fd = fd;
+  m.m_lc_vfs_ioctl.req = request;
+  m.m_lc_vfs_ioctl.arg = addr;
 
   r = _syscall(VFS_PROC_NR, VFS_IOCTL, &m);
 
index b5178bcbdab6b9a30b7c6b309124eb6e4739f3ff..3882861349bd1adee52dcc2a11c5dd655828b44e 100644 (file)
@@ -492,9 +492,9 @@ int do_ioctl(void)
   dev_t dev;
   void *argx;
 
-  scratch(fp).file.fd_nr = job_m_in.VFS_IOCTL_FD;
-  ioctlrequest = job_m_in.VFS_IOCTL_REQ;
-  argx = job_m_in.VFS_IOCTL_ARG;
+  scratch(fp).file.fd_nr = job_m_in.m_lc_vfs_ioctl.fd;
+  ioctlrequest = job_m_in.m_lc_vfs_ioctl.req;
+  argx = job_m_in.m_lc_vfs_ioctl.arg;
 
   if ((f = get_filp(scratch(fp).file.fd_nr, VNODE_READ)) == NULL)
        return(err_code);