]> Zhao Yanbai Git Server - minix.git/commitdiff
Message type for PM_MCONTEXT
authorLionel Sambuc <lionel@minix3.org>
Tue, 13 May 2014 14:21:04 +0000 (16:21 +0200)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:37 +0000 (17:05 +0200)
Change-Id: I4ab9fc23ce8d78e03582580feba5ba96541f0f7e

include/minix/callnr.h
include/minix/ipc.h
include/minix/syslib.h
lib/libc/sys-minix/_mcontext.c
lib/libsys/sys_mcontext.c
servers/pm/mcontext.c

index fecfe2491e0f122ff59836b3ea7760dd5004c863..1f7d7434dba2c64b84fc4ceed53505530dfbae11 100644 (file)
@@ -85,9 +85,6 @@
 #define PM_SIG_SET             m2_sigset /* sigset_t */
 #define PM_SIG_CTX             m2_p1   /* struct sigcontext * */
 
-/* Field names for the getmcontext(2)/setmcontext(2) calls. */
-#define PM_MCONTEXT_CTX                m1_p1   /* mcontext_t * */
-
 /*===========================================================================*
  *                             Calls to VFS                                 *
  *===========================================================================*/
index 50fb550c848b310f2f76ad64c31e4de4db7ecf88..487d8d0d101e0dd14206903bac3ab1737628ff00 100644 (file)
@@ -169,6 +169,13 @@ typedef struct {
 } mess_lc_pm_itimer;
 _ASSERT_MSG_SIZE(mess_lc_pm_itimer);
 
+typedef struct {
+       vir_bytes ctx;          /* mcontext_t * */
+
+       uint8_t padding[52];
+} mess_lc_pm_mcontext;
+_ASSERT_MSG_SIZE(mess_lc_pm_mcontext);
+
 typedef struct {
        int which;
        int who;
@@ -1060,6 +1067,7 @@ typedef struct {
                mess_lc_pm_getsid       m_lc_pm_getsid;
                mess_lc_pm_groups       m_lc_pm_groups;
                mess_lc_pm_itimer       m_lc_pm_itimer;
+               mess_lc_pm_mcontext     m_lc_pm_mcontext;
                mess_lc_pm_priority     m_lc_pm_priority;
                mess_lc_pm_ptrace       m_lc_pm_ptrace;
                mess_lc_pm_reboot       m_lc_pm_reboot;
index 834e0ee650ecf4e018b53b164c8c5654f745f28e..ad7d8d8de05f3c84000b7ac132d548fdcdd81580 100644 (file)
@@ -255,8 +255,8 @@ int sys_cprof(int action, int size, endpoint_t endpt, void *ctl_ptr,
 int sys_profbuf(void *ctl_ptr, void *mem_ptr);
 
 /* machine context */
-int sys_getmcontext(endpoint_t proc, mcontext_t *mcp);
-int sys_setmcontext(endpoint_t proc, mcontext_t *mcp);
+int sys_getmcontext(endpoint_t proc, vir_bytes mcp);
+int sys_setmcontext(endpoint_t proc, vir_bytes mcp);
 
 /* input */
 int tty_input_inject(int type, int code, int val);
index b881e220a5feeda84ce18d1dac17a7a541ff01bf..69b2ea0bba038b488be353926e9cef3b8d717b17 100644 (file)
@@ -14,7 +14,7 @@ int setmcontext(const mcontext_t *mcp)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.PM_MCONTEXT_CTX = (char *) __UNCONST(mcp);
+  m.m_lc_pm_mcontext.ctx = (vir_bytes)mcp;
 
   return(_syscall(PM_PROC_NR, PM_SETMCONTEXT, &m));
 }
@@ -25,7 +25,7 @@ int getmcontext(mcontext_t *mcp)
   message m;
 
   memset(&m, 0, sizeof(m));
-  m.PM_MCONTEXT_CTX = (char *) mcp;
+  m.m_lc_pm_mcontext.ctx = (vir_bytes)mcp;
 
   return(_syscall(PM_PROC_NR, PM_GETMCONTEXT, &m));
 }
index 6b4b69533e798c127caba92e2d58a8133c4b3256..323304baa4dd236903c1579bfd276dbcdf7a3702 100644 (file)
@@ -2,7 +2,7 @@
 
 int sys_getmcontext(proc, mcp)
 endpoint_t proc;               /* process retrieving context */
-mcontext_t *mcp;               /* where to store context */
+vir_bytes mcp;                 /* where to store context */
 {
 /* A process wants to store its context in mcp. */
 
@@ -17,7 +17,7 @@ mcontext_t *mcp;              /* where to store context */
 
 int sys_setmcontext(proc, mcp)
 endpoint_t proc;               /* process setting context */
-mcontext_t *mcp;               /* where to get context from */
+vir_bytes mcp;                 /* where to get context from */
 {
 /* A process wants to restore context stored in ucp. */
 
index beac9e60809e60e0f8cbbdd2f90cfac57d8297b5..6c88e97e13e181f996240c0085f96e0e389275dd 100644 (file)
@@ -11,7 +11,7 @@
  *===========================================================================*/
 int do_setmcontext()
 {
-  return sys_setmcontext(who_e, (mcontext_t *) m_in.PM_MCONTEXT_CTX);
+  return sys_setmcontext(who_e, m_in.m_lc_pm_mcontext.ctx);
 }
 
 
@@ -20,6 +20,6 @@ int do_setmcontext()
  *===========================================================================*/
 int do_getmcontext()
 {
-  return sys_getmcontext(who_e, (mcontext_t *) m_in.PM_MCONTEXT_CTX);
+  return sys_getmcontext(who_e, m_in.m_lc_pm_mcontext.ctx);
 }