]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for SYS_MEMSET
authorLionel Sambuc <lionel@minix3.org>
Tue, 20 May 2014 11:18:39 +0000 (13:18 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:46 +0000 (17:05 +0200)
Change-Id: Icebd04e0c53d9653301550bb598df8719aa66ada

include/minix/com.h
include/minix/ipc.h
kernel/system/do_memset.c
lib/libsys/sys_memset.c

index 488baea8e35760dd9bcdd894a2b279403a668ba2..0c6f18da9f273706575a96d9016a4d756e014c27 100644 (file)
     SYS_TIMES, SYS_SETALARM, SYS_SETGRANT, \
     SYS_PROFBUF, SYS_DIAGCTL, SYS_STATECTL, SYS_SAFEMEMSET
 
-/* Field names for SYS_MEMSET. */
-#define MEM_PTR                m2_p1   /* base */
-#define MEM_COUNT      m2_l1   /* count */
-#define MEM_PATTERN    m2_l2   /* pattern to write */
-#define MEM_PROCESS    m2_i1   /* NONE (phys) or process id (vir) */
-
 /* Field names for SYS_DEVIO, SYS_VDEVIO, SYS_SDEVIO. */
 #define DIO_REQUEST    m2_i3   /* device in or output */
 #   define _DIO_INPUT          0x001
index 666507ddc5867d32bfae91029fd8db134c287d7c..b10d8a931d0545fce1080db99da7a7bcb235f9d9 100644 (file)
@@ -700,6 +700,16 @@ typedef struct {
 } mess_lsys_krn_schedctl;
 _ASSERT_MSG_SIZE(mess_lsys_krn_schedctl);
 
+typedef struct {
+       phys_bytes base;
+       phys_bytes count;
+       unsigned long pattern;
+       endpoint_t process;
+
+       uint8_t padding[40];
+} mess_lsys_krn_sys_memset;
+_ASSERT_MSG_SIZE(mess_lsys_krn_sys_memset);
+
 typedef struct {
        int devind;
        int port;
@@ -1423,6 +1433,7 @@ typedef struct {
 
                mess_lsys_krn_schedctl  m_lsys_krn_schedctl;
                mess_lsys_krn_schedule  m_lsys_krn_schedule;
+               mess_lsys_krn_sys_memset m_lsys_krn_sys_memset;
 
                mess_lsys_pci_busc_get_bar m_lsys_pci_busc_get_bar;
 
index cea520f43718c0dc7ca3f82590ef7255aeb7963c..f919b2644aee93cde96a23c05ea8d9b54b5cc502 100644 (file)
@@ -2,9 +2,9 @@
  *   m_type:   SYS_MEMSET
  *
  * The parameters for this kernel call are:
- *    m2_p1:   MEM_PTR         (virtual address)       
- *    m2_l1:   MEM_COUNT       (returns physical address)      
- *    m2_l2:   MEM_PATTERN     (pattern byte to be written)    
+ *    m_lsys_krn_sys_memset.base       (virtual address)
+ *    m_lsys_krn_sys_memset.count      (returns physical address)
+ *    m_lsys_krn_sys_memset.pattern    (pattern byte to be written)
  */
 
 #include "kernel/system.h"
 int do_memset(struct proc * caller, message * m_ptr)
 {
 /* Handle sys_memset(). This writes a pattern into the specified memory. */
-  vm_memset(caller, m_ptr->MEM_PROCESS, (phys_bytes) m_ptr->MEM_PTR,
-       m_ptr->MEM_PATTERN, (phys_bytes) m_ptr->MEM_COUNT);
+  vm_memset(caller, m_ptr->m_lsys_krn_sys_memset.process,
+         m_ptr->m_lsys_krn_sys_memset.base,
+         m_ptr->m_lsys_krn_sys_memset.pattern,
+         m_ptr->m_lsys_krn_sys_memset.count);
   return(OK);
 }
 
index 65e6590ab8eab5df6cf4a39379c8c77f51f55db3..0ecfff9a48de68820f38fde7875981f9967ac1a9 100644 (file)
@@ -8,10 +8,10 @@ int sys_memset(endpoint_t who, unsigned long pattern,
 
   if (bytes == 0L) return(OK);
 
-  mess.MEM_PTR = (char *) base;
-  mess.MEM_COUNT   = bytes;
-  mess.MEM_PATTERN = pattern;
-  mess.MEM_PROCESS = who;
+  mess.m_lsys_krn_sys_memset.base = base;
+  mess.m_lsys_krn_sys_memset.count = bytes;
+  mess.m_lsys_krn_sys_memset.pattern = pattern;
+  mess.m_lsys_krn_sys_memset.process = who;
 
   return(_kernel_call(SYS_MEMSET, &mess));
 }