tty: don't use custom kputc; this fixes tty printf()s.
[minix.git] / servers / vm / sanitycheck.h
blob730786923e1f5fe05ea744aae2544336c61fc601
1 #ifndef _SANITYCHECK_H
2 #define _SANITYCHECK_H 1
4 #include <assert.h>
6 #include "vm.h"
7 #include "glo.h"
9 #if SANITYCHECKS
11 /* This macro is used in the sanity check functions, where file and
12 * line are function arguments.
14 #define MYASSERT(c) do { if(!(c)) { \
15 printf("VM:%s:%d: %s failed\n", file, line, #c); \
16 panic("sanity check failed"); } } while(0)
18 #define SLABSANITYCHECK(l) if((l) <= vm_sanitychecklevel) { \
19 slab_sanitycheck(__FILE__, __LINE__); }
21 #define SANITYCHECK(l) if(!nocheck && ((l) <= vm_sanitychecklevel)) { \
22 struct vmproc *vmpr; \
23 assert(incheck == 0); \
24 incheck = 1; \
25 usedpages_reset(); \
26 slab_sanitycheck(__FILE__, __LINE__); \
27 for(vmpr = vmproc; vmpr < &vmproc[VMP_NR]; vmpr++) { \
28 if((vmpr->vm_flags & (VMF_INUSE | VMF_HASPT)) == \
29 (VMF_INUSE | VMF_HASPT)) { \
30 PT_SANE(&vmpr->vm_pt); \
31 } \
32 } \
33 map_sanitycheck(__FILE__, __LINE__); \
34 assert(incheck == 1); \
35 incheck = 0; \
38 #include "kernel/proc.h"
40 #define USE(obj, code) do { \
41 slabunlock(obj, sizeof(*obj)); \
42 do { \
43 code \
44 } while(0); \
45 slablock(obj, sizeof(*obj)); \
46 } while(0)
48 #define SLABSANE(ptr) { \
49 if(!slabsane_f(__FILE__, __LINE__, ptr, sizeof(*(ptr)))) { \
50 printf("VM:%s:%d: SLABSANE(%s)\n", __FILE__, __LINE__, #ptr); \
51 panic("SLABSANE failed"); \
52 } \
55 #else
56 #define SANITYCHECK
57 #define SLABSANITYCHECK(l)
58 #define USE(obj, code) do { code } while(0)
59 #define SLABSANE(ptr)
60 #endif
62 #endif