]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for {PM,VFS,RS,DS}_GETSYSINFO
authorLionel Sambuc <lionel@minix3.org>
Mon, 19 May 2014 09:37:26 +0000 (11:37 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:45 +0000 (17:05 +0200)
Change-Id: I64d89f8a1c4704d0d0f420eb1e434cc96fd6351a

include/minix/com.h
include/minix/ipc.h
lib/libsys/getsysinfo.c
servers/ds/store.c
servers/pm/misc.c
servers/rs/request.c
servers/vfs/misc.c

index 9e8b37b256f45293aab3dbe8bd8b7f539699f472..7736cb0c38433c09a0a16dd3e02bbef186716b78 100644 (file)
 #define RTCDEV_Y2KBUG  0x01    /* Interpret 1980 as 2000 for RTC w/Y2K bug */
 #define RTCDEV_CMOSREG 0x02    /* Also set the CMOS clock register bits. */
 
-/*===========================================================================*
- *             Field names shared across several call codes                 *
- *===========================================================================*/
-
-/* Field names for the getsysinfo(2) call. */
-#define SI_WHAT                        m1_i1   /* int */
-#define SI_WHERE               m1_p1   /* void */
-#define SI_SIZE                        m1_i2   /* size_t */
-
 /*===========================================================================*
  *             Internal codes used by several services                      *
  *===========================================================================*/
index 2e8311be478227e52162b400934ef7b039512339..9e362a91d13aad4424fdbb9ab518786f21cfff07 100644 (file)
@@ -680,6 +680,15 @@ typedef struct {
 } mess_linputdriver_input_event;
 _ASSERT_MSG_SIZE(mess_linputdriver_input_event);
 
+typedef struct {
+       int what;
+       vir_bytes where;
+       size_t size;
+
+       uint8_t padding[44];
+} mess_lsys_getsysinfo;
+_ASSERT_MSG_SIZE(mess_lsys_getsysinfo);
+
 typedef struct {
        uint32_t flags;
        endpoint_t endpoint;
@@ -1364,6 +1373,8 @@ typedef struct {
 
                mess_linputdriver_input_event m_linputdriver_input_event;
 
+               mess_lsys_getsysinfo    m_lsys_getsysinfo;
+
                mess_lsys_krn_schedctl  m_lsys_krn_schedctl;
                mess_lsys_krn_schedule  m_lsys_krn_schedule;
 
index a5a4fbc7d5b783883baa929930cbc272a3f0818e..7154b5852c940dba5f1775a38a24ad87fe8ddbf7 100644 (file)
@@ -25,8 +25,8 @@ int getsysinfo(
   }
 
   memset(&m, 0, sizeof(m));
-  m.SI_WHAT = what;
-  m.SI_WHERE = where;
-  m.SI_SIZE = size;
+  m.m_lsys_getsysinfo.what = what;
+  m.m_lsys_getsysinfo.where = where;
+  m.m_lsys_getsysinfo.size = size;
   return _taskcall(who, call_nr, &m);
 }
index 93a9f6a63c6582a7ae6c272bbc4dac4bddd4ba98..3e1309e5282c0e673acffa2bc5ee4a8c630ff9fc 100644 (file)
@@ -634,7 +634,7 @@ int do_getsysinfo(const message *m_ptr)
   size_t length;
   int s;
 
-  switch(m_ptr->SI_WHAT) {
+  switch(m_ptr->m_lsys_getsysinfo.what) {
   case SI_DATA_STORE:
        src_addr = (vir_bytes)ds_store;
        length = sizeof(struct data_store) * NR_DS_KEYS;
@@ -643,11 +643,11 @@ int do_getsysinfo(const message *m_ptr)
        return EINVAL;
   }
 
-  if (length != m_ptr->SI_SIZE)
+  if (length != m_ptr->m_lsys_getsysinfo.size)
        return EINVAL;
 
   if (OK != (s=sys_datacopy(SELF, src_addr,
-               m_ptr->m_source, (vir_bytes)m_ptr->SI_WHERE, length))) {
+               m_ptr->m_source, m_ptr->m_lsys_getsysinfo.where, length))) {
        printf("DS: copy failed: %d\n", s);
        return s;
   }
index f7781d79145e566e75b0035154cd0075da9d4d9b..74076f2192938597705b0f8486f6cf9e63414675 100644 (file)
@@ -139,7 +139,7 @@ int do_getsysinfo()
        return EPERM;
   }
 
-  switch(m_in.SI_WHAT) {
+  switch(m_in.m_lsys_getsysinfo.what) {
   case SI_PROC_TAB:                    /* copy entire process table */
         src_addr = (vir_bytes) mproc;
         len = sizeof(struct mproc) * NR_PROCS;
@@ -154,10 +154,10 @@ int do_getsysinfo()
        return(EINVAL);
   }
 
-  if (len != m_in.SI_SIZE)
+  if (len != m_in.m_lsys_getsysinfo.size)
        return(EINVAL);
 
-  dst_addr = (vir_bytes) m_in.SI_WHERE;
+  dst_addr = m_in.m_lsys_getsysinfo.where;
   return sys_datacopy(SELF, src_addr, who_e, dst_addr, len);
 }
 
index 9212998e435ce12fd9bcb7ff63bfc4b6f9991aa5..5345e9c987915f28f611f31b0fae6518d7ed0e6b 100755 (executable)
@@ -874,7 +874,7 @@ message *m_ptr;
   if((s = check_call_permission(m_ptr->m_source, 0, NULL)) != OK)
       return s;
 
-  switch(m_ptr->SI_WHAT) {
+  switch(m_ptr->m_lsys_getsysinfo.what) {
   case SI_PROC_TAB:
        src_addr = (vir_bytes) rproc;
        len = sizeof(struct rproc) * NR_SYS_PROCS;
@@ -887,11 +887,11 @@ message *m_ptr;
        return(EINVAL);
   }
 
-  if (len != m_ptr->SI_SIZE)
+  if (len != m_ptr->m_lsys_getsysinfo.size)
        return(EINVAL);
 
   dst_proc = m_ptr->m_source;
-  dst_addr = (vir_bytes) m_ptr->SI_WHERE;
+  dst_addr = m_ptr->m_lsys_getsysinfo.where;
   return sys_datacopy(SELF, src_addr, dst_proc, dst_addr, len);
 }
 
index e35dc323c2a6c3937833b0e8944b78c756344f43..65617d2a378d27ef50e4c19aaea3114d71585c7d 100644 (file)
@@ -56,9 +56,9 @@ int do_getsysinfo(void)
   size_t len, buf_size;
   int what;
 
-  what = job_m_in.SI_WHAT;
-  dst_addr = (vir_bytes) job_m_in.SI_WHERE;
-  buf_size = (size_t) job_m_in.SI_SIZE;
+  what = job_m_in.m_lsys_getsysinfo.what;
+  dst_addr = job_m_in.m_lsys_getsysinfo.where;
+  buf_size = job_m_in.m_lsys_getsysinfo.size;
 
   /* Only su may call do_getsysinfo. This call may leak information (and is not
    * stable enough to be part of the API/ABI). In the future, requests from