A few related changes here.  Make pool flags the same as malloc flags with 
the same behavior.  Give every flag a real value, so nobody screws up 
trying to test for a 0 flag.  Assert that one of the wait ok or not flags 
is specified.

Index: kern/kern_malloc.c
===================================================================
RCS file: /home/tedu/cvs/src/sys/kern/kern_malloc.c,v
retrieving revision 1.84
diff -u -r1.84 kern_malloc.c
--- kern/kern_malloc.c  22 Jul 2010 06:30:13 -0000      1.84
+++ kern/kern_malloc.c  9 Sep 2010 23:36:20 -0000
@@ -191,6 +191,8 @@
                panic("malloc - bogus type");
 #endif
 
+       KASSERT(flags & (M_WAITOK | M_NOWAIT));
+
 #ifdef MALLOC_DEBUG
        if (debug_malloc(size, type, flags, (void **)&va)) {
                if ((flags & M_ZERO) && va != NULL)
Index: kern/subr_pool.c
===================================================================
RCS file: /home/tedu/cvs/src/sys/kern/subr_pool.c,v
retrieving revision 1.96
diff -u -r1.96 subr_pool.c
--- kern/subr_pool.c    3 Jul 2010 03:04:55 -0000       1.96
+++ kern/subr_pool.c    9 Sep 2010 23:36:20 -0000
@@ -453,6 +453,8 @@
 {
        void *v;
 
+       KASSERT(flags & (PR_WAITOK | PR_NOWAIT));
+
 #ifdef DIAGNOSTIC
        if ((flags & PR_WAITOK) != 0)
                splassert(IPL_NONE);
Index: sys/malloc.h
===================================================================
RCS file: /home/tedu/cvs/src/sys/sys/malloc.h,v
retrieving revision 1.97
diff -u -r1.97 malloc.h
--- sys/malloc.h        14 Jul 2010 10:31:54 -0000      1.97
+++ sys/malloc.h        9 Sep 2010 23:36:20 -0000
@@ -52,10 +52,10 @@
 /*
  * flags to malloc
  */
-#define        M_WAITOK        0x0000
-#define        M_NOWAIT        0x0001
-#define M_CANFAIL      0x0002
-#define        M_ZERO          0x0004
+#define        M_WAITOK        0x0001
+#define        M_NOWAIT        0x0002
+#define        M_CANFAIL       0x0004
+#define        M_ZERO          0x0008
 
 /*
  * Types of memory to be allocated
Index: sys/pool.h
===================================================================
RCS file: /home/tedu/cvs/src/sys/sys/pool.h,v
retrieving revision 1.35
diff -u -r1.35 pool.h
--- sys/pool.h  13 Jul 2010 16:47:02 -0000      1.35
+++ sys/pool.h  9 Sep 2010 23:40:53 -0000
@@ -91,15 +91,14 @@
        const char      *pr_wchan;      /* tsleep(9) identifier */
        unsigned int    pr_flags;       /* r/w flags */
        unsigned int    pr_roflags;     /* r/o flags */
-#define PR_MALLOCOK    0x01
-#define        PR_NOWAIT       0x00            /* for symmetry */
-#define PR_WAITOK      0x02
-#define PR_WANTED      0x04
-#define PR_PHINPAGE    0x08
-#define PR_LOGGING     0x10
-#define PR_LIMITFAIL   0x20    /* even if waiting, fail if we hit limit */
-#define PR_DEBUG       0x40
-#define PR_ZERO                0x100
+#define PR_WAITOK      0x0001 /* M_WAITOK */
+#define PR_NOWAIT      0x0002 /* M_NOWAIT */
+#define PR_LIMITFAIL   0x0004 /* M_CANFAIL */
+#define PR_ZERO                0x0008 /* M_ZERO */
+#define PR_WANTED      0x0100
+#define PR_PHINPAGE    0x0200
+#define PR_LOGGING     0x0400
+#define PR_DEBUG       0x0800
 
        int                     pr_ipl;

Reply via email to