really revert endpoint_t -> int
debugging info on panic: decode segment selectors and descriptors, now moved to arch-specific part, prototypes added; sanity checking in debug.h made optional with vmassert().
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
#define DEBUG_TIME_LOCKS 1
|
||||
|
||||
/* Runtime sanity checking. */
|
||||
#define DEBUG_VMASSERT 0
|
||||
#define DEBUG_VMASSERT 1
|
||||
#define DEBUG_SCHED_CHECK 0
|
||||
#define DEBUG_STACK_CHECK 0
|
||||
#define DEBUG_TRACE 0
|
||||
@@ -44,38 +44,23 @@
|
||||
#define ENTERED 0xBA5E1514
|
||||
#define NOTENTERED 0x1415BEE1
|
||||
|
||||
#define NOREC_ENTER(varname) \
|
||||
static int varname = NOTENTERED; \
|
||||
int mustunlock = 0; \
|
||||
if(!intr_disabled()) { lock; mustunlock = 1; } \
|
||||
if(varname != ENTERED && varname != NOTENTERED) { \
|
||||
printf("magictest: 0x%lx local: 0x%lx\n", magictest, varname);\
|
||||
minix_panic(#varname " bogus value on enter", varname); \
|
||||
} \
|
||||
if(magictest != MAGICTEST) { \
|
||||
printf("magictest: 0x%lx local: 0x%lx\n", magictest, varname);\
|
||||
minix_panic(#varname " magictest failed", __LINE__); \
|
||||
} \
|
||||
if(varname == ENTERED) { \
|
||||
minix_panic(#varname " recursive enter", __LINE__); \
|
||||
} \
|
||||
#define NOREC_ENTER(varname) \
|
||||
static int varname = NOTENTERED; \
|
||||
int mustunlock = 0; \
|
||||
if(!intr_disabled()) { lock; mustunlock = 1; } \
|
||||
vmassert(varname == ENTERED || varname == NOTENTERED); \
|
||||
vmassert(magictest == MAGICTEST); \
|
||||
vmassert(varname != ENTERED); \
|
||||
varname = ENTERED;
|
||||
|
||||
#define NOREC_RETURN(varname, v) do { \
|
||||
if(!intr_disabled()) \
|
||||
minix_panic(#varname " interrupts on", __LINE__); \
|
||||
if(magictest != MAGICTEST) { \
|
||||
printf("magictest: 0x%lx local: 0x%lx\n", magictest, varname);\
|
||||
minix_panic(#varname " magictest failed", __LINE__); \
|
||||
} \
|
||||
if(varname != ENTERED && varname != NOTENTERED) { \
|
||||
printf("magictest: 0x%lx local: 0x%lx\n", magictest, varname);\
|
||||
minix_panic(#varname " bogus value on return", varname); \
|
||||
} \
|
||||
varname = NOTENTERED; \
|
||||
if(mustunlock) { unlock; } \
|
||||
return v; \
|
||||
} while(0)
|
||||
#define NOREC_RETURN(varname, v) do { \
|
||||
vmassert(intr_disabled()); \
|
||||
vmassert(magictest == MAGICTEST); \
|
||||
vmassert(varname == ENTERED || varname == NOTENTERED); \
|
||||
varname = NOTENTERED; \
|
||||
if(mustunlock) { unlock; } \
|
||||
return v; \
|
||||
} while(0)
|
||||
|
||||
#if DEBUG_VMASSERT
|
||||
#define vmassert(t) { \
|
||||
|
||||
Reference in New Issue
Block a user