/* Field names for the reboot(2) call. */
#define PM_REBOOT_HOW m1_i1 /* int */
-/* Field names for the PM_EXEC_RESTART call. */
-#define PM_EXEC_RESTART_ENDPT m1_i1 /* endpoint_t */
-#define PM_EXEC_RESTART_RESULT m1_i2 /* int */
-#define PM_EXEC_RESTART_PC m1_p1 /* vir_bytes */
-#define PM_EXEC_RESTART_PS_STR m1_p2 /* vir_bytes */
-
/*===========================================================================*
* Calls to VFS *
*===========================================================================*/
} mess_lsys_vfs_mapdriver;
_ASSERT_MSG_SIZE(mess_lsys_vfs_mapdriver);
+typedef struct {
+ endpoint_t endpt;
+ int result;
+ vir_bytes pc;
+ vir_bytes ps_str;
+
+ uint8_t padding[40];
+} mess_rs_pm_exec_restart;
+_ASSERT_MSG_SIZE(mess_rs_pm_exec_restart);
+
typedef struct {
dev_t device;
off_t seek_pos;
mess_pm_lsys_getepinfo m_pm_lsys_getepinfo;
mess_pm_lsys_getprocnr m_pm_lsys_getprocnr;
+ mess_rs_pm_exec_restart m_rs_pm_exec_restart;
+
mess_vfs_fs_breadwrite m_vfs_fs_breadwrite;
mess_vfs_fs_chmod m_vfs_fs_chmod;
mess_vfs_fs_chown m_vfs_fs_chown;
if (who_e != RS_PROC_NR)
return EPERM;
- proc_e = m_in.PM_EXEC_RESTART_ENDPT;
+ proc_e = m_in.m_rs_pm_exec_restart.endpt;
if (pm_isokendpt(proc_e, &proc_n) != OK) {
panic("do_execrestart: got bad endpoint: %d", proc_e);
}
rmp = &mproc[proc_n];
- result = m_in.PM_EXEC_RESTART_RESULT;
- pc = (vir_bytes)m_in.PM_EXEC_RESTART_PC;
- ps_str = (vir_bytes)m_in.PM_EXEC_RESTART_PS_STR;
+ result = m_in.m_rs_pm_exec_restart.result;
+ pc = m_in.m_rs_pm_exec_restart.pc;
+ ps_str = m_in.m_rs_pm_exec_restart.ps_str;
exec_restart(rmp, result, pc, rmp->mp_frame_addr, ps_str);
memset(&m, 0, sizeof(m));
m.m_type = PM_EXEC_RESTART;
- m.PM_EXEC_RESTART_ENDPT = proc_e;
- m.PM_EXEC_RESTART_RESULT = result;
- m.PM_EXEC_RESTART_PC = (void *)pc;
- m.PM_EXEC_RESTART_PS_STR = (void *)ps_str;
+ m.m_rs_pm_exec_restart.endpt = proc_e;
+ m.m_rs_pm_exec_restart.result = result;
+ m.m_rs_pm_exec_restart.pc = pc;
+ m.m_rs_pm_exec_restart.ps_str = ps_str;
r = ipc_sendrec(PM_PROC_NR, &m);
if (r != OK)