On Thu, Sep 09, 2010 at 08:19:50PM -0400, Ted Unangst wrote: > 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; >
Please! ok krw@ .... Ken