sef: Add fault injection (and EDFI) support.
This commit is contained in:
@@ -40,6 +40,7 @@ SRCS+= \
|
||||
sched_start.c \
|
||||
sched_stop.c \
|
||||
sef.c \
|
||||
sef_fi.c \
|
||||
sef_init.c \
|
||||
sef_liveupdate.c \
|
||||
sef_ping.c \
|
||||
|
||||
@@ -27,9 +27,6 @@ char* sef_debug_header(void);
|
||||
#endif
|
||||
|
||||
/* SEF Init prototypes. */
|
||||
#ifdef USE_COVERAGE
|
||||
EXTERN int do_sef_gcov_request(message *m_ptr);
|
||||
#endif
|
||||
EXTERN int do_sef_rs_init(endpoint_t old_endpoint);
|
||||
EXTERN int do_sef_init_request(message *m_ptr);
|
||||
|
||||
@@ -43,6 +40,14 @@ EXTERN int do_sef_lu_request(message *m_ptr);
|
||||
/* SEF Signal prototypes. */
|
||||
EXTERN int do_sef_signal_request(message *m_ptr);
|
||||
|
||||
/* SEF GCOV prototypes. */
|
||||
#ifdef USE_COVERAGE
|
||||
EXTERN int do_sef_gcov_request(message *m_ptr);
|
||||
#endif
|
||||
|
||||
/* SEF Fault Injection prototypes. */
|
||||
EXTERN int do_sef_fi_request(message *m_ptr);
|
||||
|
||||
/*===========================================================================*
|
||||
* sef_startup *
|
||||
*===========================================================================*/
|
||||
@@ -181,6 +186,15 @@ int sef_receive_status(endpoint_t src, message *m_ptr, int *status_ptr)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef INTERCEPT_SEF_FI_REQUESTS
|
||||
/* Intercept Fault injection requests. */
|
||||
if(IS_SEF_FI_REQUEST(m_ptr, status)) {
|
||||
if(do_sef_fi_request(m_ptr) == OK) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* If we get this far, this is not a valid SEF request, return and
|
||||
* let the caller deal with that.
|
||||
*/
|
||||
|
||||
21
lib/libsys/sef_fi.c
Normal file
21
lib/libsys/sef_fi.c
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
#include "syslib.h"
|
||||
#include <assert.h>
|
||||
#include <minix/sysutil.h>
|
||||
|
||||
EXTERN __attribute__((weak)) int edfi_ctl_process_request(void *ctl_request);
|
||||
|
||||
/*===========================================================================*
|
||||
* do_sef_fi_request *
|
||||
*===========================================================================*/
|
||||
int do_sef_fi_request(message *m_ptr)
|
||||
{
|
||||
#if SEF_FI_ALLOW_EDFI
|
||||
/* Forward the request to the EDFI fault injector, if linked in. */
|
||||
if(edfi_ctl_process_request)
|
||||
return edfi_ctl_process_request(m_ptr);
|
||||
#endif
|
||||
|
||||
return ENOSYS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user