Message type for SYS_DIAGCTL.

Change-Id: Icdaa84847f8c75f5af6612dda3326f800166e0d7
This commit is contained in:
2014-07-25 16:35:26 +02:00
parent 93b1819dac
commit 9ea21ea158
4 changed files with 39 additions and 13 deletions

View File

@@ -2,8 +2,11 @@
* m_type: SYS_DIAGCTL
*
* The parameters for this kernel call are:
* DIAGCTL_CODE request
* and then request-specific arguments in DIAGCTL_ARG1 and DIAGCTL_ARG2.
* m_lsys_krn_sys_diagctl.code request
* and then request-specific arguments in
* m_lsys_krn_sys_diagctl.buf
* m_lsys_krn_sys_diagctl.len
* m_lsys_krn_sys_diagctl.endpt
*/
#include "kernel/system.h"
@@ -18,10 +21,10 @@ int do_diagctl(struct proc * caller, message * m_ptr)
static char mybuf[DIAG_BUFSIZE];
int s, i, proc_nr;
switch (m_ptr->DIAGCTL_CODE) {
switch (m_ptr->m_lsys_krn_sys_diagctl.code) {
case DIAGCTL_CODE_DIAG:
buf = (vir_bytes) m_ptr->DIAGCTL_ARG1;
len = (vir_bytes) m_ptr->DIAGCTL_ARG2;
buf = m_ptr->m_lsys_krn_sys_diagctl.buf;
len = m_ptr->m_lsys_krn_sys_diagctl.len;
if(len < 1 || len > DIAG_BUFSIZE) {
printf("do_diagctl: diag for %d: len %d out of range\n",
caller->p_endpoint, len);
@@ -38,7 +41,7 @@ int do_diagctl(struct proc * caller, message * m_ptr)
kputc(END_OF_KMESS);
return OK;
case DIAGCTL_CODE_STACKTRACE:
if(!isokendpt(m_ptr->DIAGCTL_ARG2, &proc_nr))
if(!isokendpt(m_ptr->m_lsys_krn_sys_diagctl.endpt, &proc_nr))
return EINVAL;
proc_stacktrace(proc_addr(proc_nr));
return OK;
@@ -58,7 +61,7 @@ int do_diagctl(struct proc * caller, message * m_ptr)
priv(caller)->s_diag_sig = FALSE;
return OK;
default:
printf("do_diagctl: invalid request %d\n", m_ptr->DIAGCTL_CODE);
printf("do_diagctl: invalid request %d\n", m_ptr->m_lsys_krn_sys_diagctl.code);
return(EINVAL);
}
}