]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for VFS_LSEEK
authorLionel Sambuc <lionel@minix3.org>
Mon, 12 May 2014 11:16:40 +0000 (13:16 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:32 +0000 (17:05 +0200)
Change-Id: I592284078572e4abf2b181d3b4e8281c9baf8a7b

include/minix/callnr.h
include/minix/ipc.h
lib/libc/sys-minix/lseek.c
servers/vfs/open.c

index e54953c4a0f932ad42e9cec5a322eb9a378ef491..04f1de2b2972ad8041b2c609409e642ecaf03bf6 100644 (file)
 
 #define NR_VFS_CALLS           49      /* highest number from base plus one */
 
-/* Field names for the lseek(2) call. */
-#define VFS_LSEEK_FD           m2_i1   /* int */
-#define VFS_LSEEK_OFF          m2_ll1  /* off_t */
-#define VFS_LSEEK_WHENCE       m2_i2   /* int */
-
 /* Field names for the truncate(2) and ftruncate(2) calls. */
 #define VFS_TRUNCATE_FD                m2_i1   /* int */
 #define VFS_TRUNCATE_NAME      m2_p1   /* const char * */
index 6914f894c52c5d4b674277330a5d6c0f2630eb0a..032e86fabbc106949972688fca4997e6313ce595 100644 (file)
@@ -171,6 +171,23 @@ typedef struct {
 } mess_lc_vfs_ioctl;
 _ASSERT_MSG_SIZE(mess_lc_vfs_ioctl);
 
+typedef struct {
+       off_t offset;
+
+       int fd;
+       int whence;
+
+       uint8_t padding[40];
+} mess_lc_vfs_lseek;
+_ASSERT_MSG_SIZE(mess_lc_vfs_lseek);
+
+typedef struct {
+       off_t offset;
+
+       uint8_t padding[48];
+} mess_vfs_lc_lseek;
+_ASSERT_MSG_SIZE(mess_vfs_lc_lseek);
+
 typedef struct {
        int flags;
        size_t devlen;
@@ -699,6 +716,7 @@ typedef struct {
                mess_lc_vfs_fsync       m_lc_vfs_fsync;
                mess_lc_vfs_getvfsstat  m_lc_vfs_getvfsstat;
                mess_lc_vfs_ioctl       m_lc_vfs_ioctl;
+               mess_lc_vfs_lseek       m_lc_vfs_lseek;
                mess_lc_vfs_mount       m_lc_vfs_mount;
                mess_lc_vfs_select      m_lc_vfs_select;
                mess_lc_vfs_statvfs1    m_lc_vfs_statvfs1;
@@ -734,6 +752,8 @@ typedef struct {
                mess_vfs_fs_unlink      m_vfs_fs_unlink;
                mess_vfs_fs_utime       m_vfs_fs_utime;
 
+               mess_vfs_lc_lseek       m_vfs_lc_lseek;
+
                mess_vfs_utimens        m_vfs_utimens;
                mess_vm_vfs_mmap        m_vm_vfs_mmap;
                mess_vmmcp              m_vmmcp;
index 947232b6066868f92a8be4f1da2b5bc0f07aea7c..14a8d66efe37638a7a9160910da87bf32be79eb8 100644 (file)
@@ -16,9 +16,9 @@ lseek(int fd, off_t offset, int whence)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.VFS_LSEEK_FD = fd;
-  m.VFS_LSEEK_OFF = offset;
-  m.VFS_LSEEK_WHENCE = whence;
+  m.m_lc_vfs_lseek.fd = fd;
+  m.m_lc_vfs_lseek.offset = offset;
+  m.m_lc_vfs_lseek.whence = whence;
   if (_syscall(VFS_PROC_NR, VFS_LSEEK, &m) < 0) return( (off_t) -1);
-  return( (off_t) m.VFS_LSEEK_OFF);
+  return(m.m_vfs_lc_lseek.offset);
 }
index 32deb9fa76730374ecb11c13e34f4044cc584d6b..2b5a35f73ff6a66408d9861bb1d2e955ae76e535 100644 (file)
@@ -646,13 +646,13 @@ int do_lseek(void)
   off_t newpos;
   int r;
 
-  if ((r = actual_lseek(fp, job_m_in.VFS_LSEEK_FD,
-               job_m_in.VFS_LSEEK_WHENCE, job_m_in.VFS_LSEEK_OFF,
+  if ((r = actual_lseek(fp, job_m_in.m_lc_vfs_lseek.fd,
+               job_m_in.m_lc_vfs_lseek.whence, job_m_in.m_lc_vfs_lseek.offset,
                &newpos)) != OK)
        return r;
 
   /* insert the new position into the output message */
-  job_m_out.VFS_LSEEK_OFF = newpos;
+  job_m_out.m_vfs_lc_lseek.offset = newpos;
   return OK;
 }