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

Reply via email to