On 05/08/22(Fri) 18:10, Sebastien Marie wrote:
> Hi,
> 
> When initially ported blist from DragonFlyBSD, we used custom type bsblk_t 
> and 
> bsbmp_t instead of the one used by DragonFlyBSD (swblk_t and u_swblk_t).
> 
> The reason was swblk_t is already defined on OpenBSD, and was incompatible 
> with 
> blist (int32_t). It is defined, but not used (outside some regress file which 
> seems to be not affected by type change).
> 
> This diff changes the __swblk_t definition in sys/_types.h to be 'unsigned 
> long', and switch back blist to use swblk_t (and u_swblk_t, even if it isn't 
> 'unsigned swblk_t').
> 
> It makes the diff with DragonFlyBSD more thin. I added a comment with the git 
> id 
> used for the initial port.
> 
> I tested it on i386 and amd64 (kernel and userland).
> 
> By changing bitmap type from 'u_long' to 'u_swblk_t' ('u_int64_t'), it makes 
> the 
> regress the same on 64 and 32bits archs (and it success on both).
> 
> Comments or OK ?

Makes sense to me.  I'm not a standard/type lawyer so I don't know if
this is fine for userland.  So I'm ok with it.

> diff /home/semarie/repos/openbsd/src
> commit - 73f52ef7130cefbe5a8fe028eedaad0e54be7303
> path + /home/semarie/repos/openbsd/src
> blob - e05867429cdd81c434f9ca589c1fb8c6d25957f8
> file + sys/sys/_types.h
> --- sys/sys/_types.h
> +++ sys/sys/_types.h
> @@ -60,7 +60,7 @@ typedef     __uint8_t       __sa_family_t;  /* sockaddr 
> address f
>  typedef      __int32_t       __segsz_t;      /* segment size */
>  typedef      __uint32_t      __socklen_t;    /* length type for network 
> syscalls */
>  typedef      long            __suseconds_t;  /* microseconds (signed) */
> -typedef      __int32_t       __swblk_t;      /* swap offset */
> +typedef      unsigned long   __swblk_t;      /* swap offset */
>  typedef      __int64_t       __time_t;       /* epoch time */
>  typedef      __int32_t       __timer_t;      /* POSIX timer identifiers */
>  typedef      __uint32_t      __uid_t;        /* user id */
> blob - 102ca95dd45ba6d9cab0f3fcbb033d6043ec1606
> file + sys/sys/blist.h
> --- sys/sys/blist.h
> +++ sys/sys/blist.h
> @@ -1,4 +1,5 @@
>  /* $OpenBSD: blist.h,v 1.1 2022/07/29 17:47:12 semarie Exp $ */
> +/* DragonFlyBSD:7b80531f545c7d3c51c1660130c71d01f6bccbe0:/sys/sys/blist.h */
>  /*
>   * Copyright (c) 2003,2004 The DragonFly Project.  All rights reserved.
>   * 
> @@ -65,15 +66,13 @@
>  #include <sys/types.h>
>  #endif
>  
> -#define      SWBLK_BITS 64
> -typedef u_long bsbmp_t;
> -typedef u_long bsblk_t;
> +typedef u_int64_t    u_swblk_t;
>  
>  /*
>   * note: currently use SWAPBLK_NONE as an absolute value rather then
>   * a flag bit.
>   */
> -#define SWAPBLK_NONE ((bsblk_t)-1)
> +#define SWAPBLK_NONE ((swblk_t)-1)
>  
>  /*
>   * blmeta and bl_bitmap_t MUST be a power of 2 in size.
> @@ -81,39 +80,39 @@ typedef u_long bsblk_t;
>  
>  typedef struct blmeta {
>       union {
> -         bsblk_t     bmu_avail;      /* space available under us     */
> -         bsbmp_t     bmu_bitmap;     /* bitmap if we are a leaf      */
> +         swblk_t     bmu_avail;      /* space available under us     */
> +         u_swblk_t   bmu_bitmap;     /* bitmap if we are a leaf      */
>       } u;
> -     bsblk_t         bm_bighint;     /* biggest contiguous block hint*/
> +     swblk_t         bm_bighint;     /* biggest contiguous block hint*/
>  } blmeta_t;
>  
>  typedef struct blist {
> -     bsblk_t         bl_blocks;      /* area of coverage             */
> +     swblk_t         bl_blocks;      /* area of coverage             */
>       /* XXX int64_t bl_radix */
> -     bsblk_t         bl_radix;       /* coverage radix               */
> -     bsblk_t         bl_skip;        /* starting skip                */
> -     bsblk_t         bl_free;        /* number of free blocks        */
> +     swblk_t         bl_radix;       /* coverage radix               */
> +     swblk_t         bl_skip;        /* starting skip                */
> +     swblk_t         bl_free;        /* number of free blocks        */
>       blmeta_t        *bl_root;       /* root of radix tree           */
> -     bsblk_t         bl_rootblks;    /* bsblk_t blks allocated for tree */
> +     swblk_t         bl_rootblks;    /* swblk_t blks allocated for tree */
>  } *blist_t;
>  
> -#define BLIST_META_RADIX     (sizeof(bsbmp_t)*8/2)   /* 2 bits per */
> -#define BLIST_BMAP_RADIX     (sizeof(bsbmp_t)*8)     /* 1 bit per */
> +#define BLIST_META_RADIX     (sizeof(u_swblk_t)*8/2) /* 2 bits per */
> +#define BLIST_BMAP_RADIX     (sizeof(u_swblk_t)*8)   /* 1 bit per */
>  
>  /*
>   * The radix may exceed the size of a 64 bit signed (or unsigned) int
> - * when the maximal number of blocks is allocated.  With a 32-bit bsblk_t
> + * when the maximal number of blocks is allocated.  With a 32-bit swblk_t
>   * this corresponds to ~1G x PAGE_SIZE = 4096GB.  The swap code usually
>   * divides this by 4, leaving us with a capability of up to four 1TB swap
>   * devices.
>   *
> - * With a 64-bit bsblk_t the limitation is some insane number.
> + * With a 64-bit swblk_t the limitation is some insane number.
>   *
>   * NOTE: For now I don't trust that we overflow-detect properly so we divide
>   *    out to ensure that no overflow occurs.
>   */
>  
> -#if SWBLK_BITS == 64
> +#if defined(_LP64)
>  #define BLIST_MAXBLKS                (0x4000000000000000LL /         \
>                                (BLIST_BMAP_RADIX / BLIST_META_RADIX))
>  #else
> @@ -123,14 +122,14 @@ typedef struct blist {
>  
>  #define BLIST_MAX_ALLOC              BLIST_BMAP_RADIX
>  
> -blist_t blist_create(bsblk_t);
> +blist_t blist_create(swblk_t);
>  void blist_destroy(blist_t);
> -bsblk_t blist_alloc(blist_t, bsblk_t);
> -bsblk_t blist_allocat(blist_t, bsblk_t, bsblk_t);
> -void blist_free(blist_t, bsblk_t, bsblk_t);
> -bsblk_t blist_fill(blist_t, bsblk_t, bsblk_t);
> +swblk_t blist_alloc(blist_t, swblk_t);
> +swblk_t blist_allocat(blist_t, swblk_t, swblk_t);
> +void blist_free(blist_t, swblk_t, swblk_t);
> +swblk_t blist_fill(blist_t, swblk_t, swblk_t);
>  void blist_print(blist_t);
> -void blist_resize(blist_t *, bsblk_t, int);
> -void blist_gapfind(blist_t, bsblk_t *, bsblk_t *);
> +void blist_resize(blist_t *, swblk_t, int);
> +void blist_gapfind(blist_t, swblk_t *, swblk_t *);
>  
>  #endif       /* _SYS_BLIST_H_ */
> blob - 4cf6259417df583dadc5d63e7bb1753628eb8b50
> file + sys/kern/subr_blist.c
> --- sys/kern/subr_blist.c
> +++ sys/kern/subr_blist.c
> @@ -1,4 +1,5 @@
>  /* $OpenBSD: subr_blist.c,v 1.1 2022/07/29 17:47:12 semarie Exp $ */
> +/* 
> DragonFlyBSD:7b80531f545c7d3c51c1660130c71d01f6bccbe0:/sys/kern/subr_blist.c 
> */
>  /*
>   * BLIST.C - Bitmap allocator/deallocator, using a radix tree with hinting
>   * 
> @@ -133,29 +134,29 @@
>   * static support functions
>   */
>  
> -static bsblk_t blst_leaf_alloc(blmeta_t *scan, bsblk_t blkat,
> -                             bsblk_t blk, bsblk_t count);
> -static bsblk_t blst_meta_alloc(blmeta_t *scan, bsblk_t blkat,
> -                             bsblk_t blk, bsblk_t count,
> -                             bsblk_t radix, bsblk_t skip);
> -static void blst_leaf_free(blmeta_t *scan, bsblk_t relblk, bsblk_t count);
> -static void blst_meta_free(blmeta_t *scan, bsblk_t freeBlk, bsblk_t count,
> -                                     bsblk_t radix, bsblk_t skip,
> -                                     bsblk_t blk);
> -static bsblk_t blst_leaf_fill(blmeta_t *scan, bsblk_t blk, bsblk_t count);
> -static bsblk_t blst_meta_fill(blmeta_t *scan, bsblk_t fillBlk, bsblk_t count,
> -                                     bsblk_t radix, bsblk_t skip,
> -                                     bsblk_t blk);
> -static void blst_copy(blmeta_t *scan, bsblk_t blk, bsblk_t radix,
> -                             bsblk_t skip, blist_t dest, bsblk_t count);
> -static bsblk_t       blst_radix_init(blmeta_t *scan, bsblk_t radix,
> -                                             bsblk_t skip, bsblk_t count);
> -static int blst_radix_gapfind(blmeta_t *scan, bsblk_t blk, bsblk_t radix, 
> bsblk_t skip,
> -    int state, bsblk_t *maxbp, bsblk_t *maxep, bsblk_t *bp, bsblk_t *ep);
> +static swblk_t blst_leaf_alloc(blmeta_t *scan, swblk_t blkat,
> +                             swblk_t blk, swblk_t count);
> +static swblk_t blst_meta_alloc(blmeta_t *scan, swblk_t blkat,
> +                             swblk_t blk, swblk_t count,
> +                             swblk_t radix, swblk_t skip);
> +static void blst_leaf_free(blmeta_t *scan, swblk_t relblk, swblk_t count);
> +static void blst_meta_free(blmeta_t *scan, swblk_t freeBlk, swblk_t count, 
> +                                     swblk_t radix, swblk_t skip,
> +                                     swblk_t blk);
> +static swblk_t blst_leaf_fill(blmeta_t *scan, swblk_t blk, swblk_t count);
> +static swblk_t blst_meta_fill(blmeta_t *scan, swblk_t fillBlk, swblk_t count,
> +                                     swblk_t radix, swblk_t skip,
> +                                     swblk_t blk);
> +static void blst_copy(blmeta_t *scan, swblk_t blk, swblk_t radix,
> +                             swblk_t skip, blist_t dest, swblk_t count);
> +static swblk_t       blst_radix_init(blmeta_t *scan, swblk_t radix,
> +                                             swblk_t skip, swblk_t count);
> +static int blst_radix_gapfind(blmeta_t *scan, swblk_t blk, swblk_t radix, 
> swblk_t skip,
> +    int state, swblk_t *maxbp, swblk_t *maxep, swblk_t *bp, swblk_t *ep);
>  
>  #if defined(BLIST_DEBUG) || defined(DDB)
> -static void  blst_radix_print(blmeta_t *scan, bsblk_t blk,
> -                                     bsblk_t radix, bsblk_t skip, int tab);
> +static void  blst_radix_print(blmeta_t *scan, swblk_t blk,
> +                                     swblk_t radix, swblk_t skip, int tab);
>  #endif
>  
>  /*
> @@ -171,18 +172,18 @@ static void     blst_radix_print(blmeta_t *scan, 
> bsblk_t b
>   */
>  
>  blist_t
> -blist_create(bsblk_t blocks)
> +blist_create(swblk_t blocks)
>  {
>       blist_t bl;
> -     bsblk_t radix;
> -     bsblk_t skip = 0;
> +     swblk_t radix;
> +     swblk_t skip = 0;
>  
>       KASSERT(blocks > 0);
>  
>       /*
>        * Calculate radix and skip field used for scanning.
>        *
> -      * Radix can exceed BLIST_BMAP_RADIX bits even if bsblk_t is limited
> +      * Radix can exceed BLIST_BMAP_RADIX bits even if swblk_t is limited
>        * to BLIST_BMAP_RADIX bits.
>        *
>        * XXX check overflow
> @@ -236,10 +237,10 @@ blist_destroy(blist_t bl)
>   *                not be allocated.
>   */
>  
> -bsblk_t
> -blist_alloc(blist_t bl, bsblk_t count)
> +swblk_t
> +blist_alloc(blist_t bl, swblk_t count)
>  {
> -     bsblk_t blk = SWAPBLK_NONE;
> +     swblk_t blk = SWAPBLK_NONE;
>  
>       if (bl) {
>               if (bl->bl_radix == BLIST_BMAP_RADIX)
> @@ -253,10 +254,10 @@ blist_alloc(blist_t bl, bsblk_t count)
>       return(blk);
>  }
>  
> -bsblk_t
> -blist_allocat(blist_t bl, bsblk_t count, bsblk_t blkat)
> +swblk_t
> +blist_allocat(blist_t bl, swblk_t count, swblk_t blkat)
>  {
> -     bsblk_t blk = SWAPBLK_NONE;
> +     swblk_t blk = SWAPBLK_NONE;
>  
>       if (bl) {
>               KASSERT(blkat < bl->bl_blocks);
> @@ -280,7 +281,7 @@ blist_allocat(blist_t bl, bsblk_t count, bsblk_t blkat
>   */
>  
>  void
> -blist_free(blist_t bl, bsblk_t blkno, bsblk_t count)
> +blist_free(blist_t bl, swblk_t blkno, swblk_t count)
>  {
>       if (bl) {
>               KASSERT(blkno < bl->bl_blocks);
> @@ -301,10 +302,10 @@ blist_free(blist_t bl, bsblk_t blkno, bsblk_t count)
>   *                   actually filled that were free before the call.
>   */
>  
> -bsblk_t
> -blist_fill(blist_t bl, bsblk_t blkno, bsblk_t count)
> +swblk_t
> +blist_fill(blist_t bl, swblk_t blkno, swblk_t count)
>  {
> -     bsblk_t filled;
> +     swblk_t filled;
>  
>       if (bl) {
>               KASSERT(blkno < bl->bl_blocks);
> @@ -332,7 +333,7 @@ blist_fill(blist_t bl, bsblk_t blkno, bsblk_t count)
>   */
>  
>  void
> -blist_resize(blist_t *pbl, bsblk_t count, int freenew)
> +blist_resize(blist_t *pbl, swblk_t count, int freenew)
>  {
>      blist_t newbl = blist_create(count);
>      blist_t save = *pbl;
> @@ -362,10 +363,10 @@ blist_resize(blist_t *pbl, bsblk_t count, int freenew)
>   */
>  
>  void
> -blist_gapfind(blist_t bl, bsblk_t *maxbp, bsblk_t *maxep)
> +blist_gapfind(blist_t bl, swblk_t *maxbp, swblk_t *maxep)
>  {
>       int state;
> -     bsblk_t b, e;
> +     swblk_t b, e;
>  
>       /* initialize gaps (max and current) */
>       *maxbp = *maxep = 0;
> @@ -398,16 +399,16 @@ blist_gapfind(blist_t bl, bsblk_t *maxbp, bsblk_t *max
>   * - max is the larger free gap
>   */
>  static int
> -blst_radix_gapfind(blmeta_t *scan, bsblk_t blk, bsblk_t radix, bsblk_t skip,
> -    int state, bsblk_t *maxbp, bsblk_t *maxep, bsblk_t *bp, bsblk_t *ep)
> +blst_radix_gapfind(blmeta_t *scan, swblk_t blk, swblk_t radix, swblk_t skip,
> +    int state, swblk_t *maxbp, swblk_t *maxep, swblk_t *bp, swblk_t *ep)
>  {
> -     bsblk_t i;
> -     bsblk_t next_skip;
> +     swblk_t i;
> +     swblk_t next_skip;
>  
>       if (radix == BLIST_BMAP_RADIX) {
>               /* leaf node: we considere only completely free bitmap as free 
> */
>               if (state == GAPFIND_FIRSTFREE) {
> -                     if (scan->u.bmu_bitmap == (bsbmp_t)-1) {
> +                     if (scan->u.bmu_bitmap == (u_swblk_t)-1) {
>                               /* node is fully free */
>                               *bp = blk;
>                               return GAPFIND_FIRSTUSED;
> @@ -417,7 +418,7 @@ blst_radix_gapfind(blmeta_t *scan, bsblk_t blk, bsblk_
>                       return state;
>  
>               } else if (state == GAPFIND_FIRSTUSED) {
> -                     if (scan->u.bmu_bitmap == (bsbmp_t)-1) {
> +                     if (scan->u.bmu_bitmap == (u_swblk_t)-1) {
>                               /* it is free, not found, keep state */
>                               return state;
>                       }
> @@ -466,7 +467,7 @@ blst_radix_gapfind(blmeta_t *scan, bsblk_t blk, bsblk_
>       next_skip = (skip / BLIST_META_RADIX);
>  
>       for (i = 1; i <= skip; i += next_skip) {
> -             if (scan[i].bm_bighint == (bsblk_t)-1)
> +             if (scan[i].bm_bighint == (swblk_t)-1)
>                       /* Terminator */
>                       break;
>  
> @@ -514,11 +515,11 @@ blist_print(blist_t bl)
>   *   quick.
>   */
>  
> -static bsblk_t
> -blst_leaf_alloc(blmeta_t *scan, bsblk_t blkat __unused, bsblk_t blk,
> -             bsblk_t count)
> +static swblk_t
> +blst_leaf_alloc(blmeta_t *scan, swblk_t blkat __unused, swblk_t blk,
> +             swblk_t count)
>  {
> -     bsbmp_t orig = scan->u.bmu_bitmap;
> +     u_swblk_t orig = scan->u.bmu_bitmap;
>  
>       if (orig == 0) {
>               /*
> @@ -533,11 +534,11 @@ blst_leaf_alloc(blmeta_t *scan, bsblk_t blkat __unused
>               /*
>                * Optimized code to allocate one bit out of the bitmap
>                */
> -             bsbmp_t mask;
> +             u_swblk_t mask;
>               int j = BLIST_BMAP_RADIX/2;
>               int r = 0;
>  
> -             mask = (bsbmp_t)-1 >> (BLIST_BMAP_RADIX/2);
> +             mask = (u_swblk_t)-1 >> (BLIST_BMAP_RADIX/2);
>  
>               while (j) {
>                       if ((orig & mask) == 0) {
> @@ -547,7 +548,7 @@ blst_leaf_alloc(blmeta_t *scan, bsblk_t blkat __unused
>                       j >>= 1;
>                       mask >>= j;
>               }
> -             scan->u.bmu_bitmap &= ~((bsbmp_t)1 << r);
> +             scan->u.bmu_bitmap &= ~((u_swblk_t)1 << r);
>               return(blk + r);
>       }
>       if (count <= BLIST_BMAP_RADIX) {
> @@ -560,9 +561,9 @@ blst_leaf_alloc(blmeta_t *scan, bsblk_t blkat __unused
>                */
>               int j;
>               int n = (int)(BLIST_BMAP_RADIX - count);
> -             bsbmp_t mask;
> +             u_swblk_t mask;
>  
> -             mask = (bsbmp_t)-1 >> n;
> +             mask = (u_swblk_t)-1 >> n;
>  
>               for (j = 0; j <= n; ++j) {
>                       if ((orig & mask) == mask) {
> @@ -589,14 +590,14 @@ blst_leaf_alloc(blmeta_t *scan, bsblk_t blkat __unused
>   *   calls that hit this node.  We have to check for our collapse cases
>   *   and we have a few optimizations strewn in as well.
>   */
> -static bsblk_t
> -blst_meta_alloc(blmeta_t *scan, bsblk_t blkat,
> -             bsblk_t blk, bsblk_t count,
> -             bsblk_t radix, bsblk_t skip)
> +static swblk_t
> +blst_meta_alloc(blmeta_t *scan, swblk_t blkat,
> +             swblk_t blk, swblk_t count,
> +             swblk_t radix, swblk_t skip)
>  {
>       int hintok = (blk >= blkat);
> -     bsblk_t next_skip = ((bsblk_t)skip / BLIST_META_RADIX);
> -     bsblk_t i;
> +     swblk_t next_skip = ((swblk_t)skip / BLIST_META_RADIX);
> +     swblk_t i;
>  
>  #ifndef _KERNEL
>       printf("blist_meta_alloc blkat %lu blk %lu count %lu radix %lu\n",
> @@ -622,14 +623,14 @@ blst_meta_alloc(blmeta_t *scan, bsblk_t blkat,
>  
>               radix /= BLIST_META_RADIX;
>               for (i = 1; i <= skip; i += next_skip) {
> -                     if (scan[i].bm_bighint == (bsblk_t)-1)
> +                     if (scan[i].bm_bighint == (swblk_t)-1)
>                               break;
>                       if (next_skip == 1) {
> -                             scan[i].u.bmu_bitmap = (bsbmp_t)-1;
> +                             scan[i].u.bmu_bitmap = (u_swblk_t)-1;
>                               scan[i].bm_bighint = BLIST_BMAP_RADIX;
>                       } else {
> -                             scan[i].bm_bighint = (bsblk_t)radix;
> -                             scan[i].u.bmu_avail = (bsblk_t)radix;
> +                             scan[i].bm_bighint = (swblk_t)radix;
> +                             scan[i].u.bmu_avail = (swblk_t)radix;
>                       }
>               }
>       } else {
> @@ -638,11 +639,11 @@ blst_meta_alloc(blmeta_t *scan, bsblk_t blkat,
>  
>       for (i = 1; i <= skip; i += next_skip) {
>               if (count <= scan[i].bm_bighint &&
> -                 blk + (bsblk_t)radix > blkat) {
> +                 blk + (swblk_t)radix > blkat) {
>                       /*
>                        * count fits in object
>                        */
> -                     bsblk_t r;
> +                     swblk_t r;
>                       if (next_skip == 1) {
>                               r = blst_leaf_alloc(&scan[i], blkat,
>                                                   blk, count);
> @@ -658,12 +659,12 @@ blst_meta_alloc(blmeta_t *scan, bsblk_t blkat,
>                               return(r);
>                       }
>                       /* bighint was updated by recursion */
> -             } else if (scan[i].bm_bighint == (bsblk_t)-1) {
> +             } else if (scan[i].bm_bighint == (swblk_t)-1) {
>                       /*
>                        * Terminator
>                        */
>                       break;
> -             } else if (count > (bsblk_t)radix) {
> +             } else if (count > (swblk_t)radix) {
>                       /*
>                        * count does not fit in object even if it were
>                        * complete free.
> @@ -671,7 +672,7 @@ blst_meta_alloc(blmeta_t *scan, bsblk_t blkat,
>                       panic("%s: allocation too large %lu/%lu",
>                             __func__, count, radix);
>               }
> -             blk += (bsblk_t)radix;
> +             blk += (swblk_t)radix;
>       }
>  
>       /*
> @@ -686,7 +687,7 @@ blst_meta_alloc(blmeta_t *scan, bsblk_t blkat,
>   * BLST_LEAF_FREE() -        free allocated block from leaf bitmap
>   */
>  static void
> -blst_leaf_free(blmeta_t *scan, bsblk_t blk, bsblk_t count)
> +blst_leaf_free(blmeta_t *scan, swblk_t blk, swblk_t count)
>  {
>       /*
>        * free some data in this bitmap
> @@ -697,10 +698,10 @@ blst_leaf_free(blmeta_t *scan, bsblk_t blk, bsblk_t co
>        *              v        n
>        */
>       int n = blk & (BLIST_BMAP_RADIX - 1);
> -     bsbmp_t mask;
> +     u_swblk_t mask;
>  
> -     mask = ((bsbmp_t)-1 << n) &
> -         ((bsbmp_t)-1 >> (BLIST_BMAP_RADIX - count - n));
> +     mask = ((u_swblk_t)-1 << n) &
> +         ((u_swblk_t)-1 >> (BLIST_BMAP_RADIX - count - n));
>  
>       if (scan->u.bmu_bitmap & mask)
>               panic("%s: freeing free block", __func__);
> @@ -727,11 +728,11 @@ blst_leaf_free(blmeta_t *scan, bsblk_t blk, bsblk_t co
>   */
>  
>  static void
> -blst_meta_free(blmeta_t *scan, bsblk_t freeBlk, bsblk_t count,
> -            bsblk_t radix, bsblk_t skip, bsblk_t blk)
> +blst_meta_free(blmeta_t *scan, swblk_t freeBlk, swblk_t count,
> +            swblk_t radix, swblk_t skip, swblk_t blk)
>  {
> -     bsblk_t i;
> -     bsblk_t next_skip = ((bsblk_t)skip / BLIST_META_RADIX);
> +     swblk_t i;
> +     swblk_t next_skip = ((swblk_t)skip / BLIST_META_RADIX);
>  
>  #if 0
>       printf("FREE (%04lx,%lu) FROM (%04lx,%lu)\n",
> @@ -751,7 +752,7 @@ blst_meta_free(blmeta_t *scan, bsblk_t freeBlk, bsblk_
>  
>               if (count != radix)  {
>                       for (i = 1; i <= skip; i += next_skip) {
> -                             if (scan[i].bm_bighint == (bsblk_t)-1)
> +                             if (scan[i].bm_bighint == (swblk_t)-1)
>                                       break;
>                               scan[i].bm_bighint = 0;
>                               if (next_skip == 1) {
> @@ -788,18 +789,18 @@ blst_meta_free(blmeta_t *scan, bsblk_t freeBlk, bsblk_
>  
>       radix /= BLIST_META_RADIX;
>  
> -     i = (freeBlk - blk) / (bsblk_t)radix;
> -     blk += i * (bsblk_t)radix;
> +     i = (freeBlk - blk) / (swblk_t)radix;
> +     blk += i * (swblk_t)radix;
>       i = i * next_skip + 1;
>  
>       while (i <= skip && blk < freeBlk + count) {
> -             bsblk_t v;
> +             swblk_t v;
>  
> -             v = blk + (bsblk_t)radix - freeBlk;
> +             v = blk + (swblk_t)radix - freeBlk;
>               if (v > count)
>                       v = count;
>  
> -             if (scan->bm_bighint == (bsblk_t)-1)
> +             if (scan->bm_bighint == (swblk_t)-1)
>                       panic("%s: freeing unexpected range", __func__);
>  
>               if (next_skip == 1) {
> @@ -822,7 +823,7 @@ blst_meta_free(blmeta_t *scan, bsblk_t freeBlk, bsblk_
>               }
>               count -= v;
>               freeBlk += v;
> -             blk += (bsblk_t)radix;
> +             blk += (swblk_t)radix;
>               i += next_skip;
>       }
>  }
> @@ -834,15 +835,15 @@ blst_meta_free(blmeta_t *scan, bsblk_t freeBlk, bsblk_
>   *   any existing allocations in that range.  Returns the number
>   *   of blocks allocated by the call.
>   */
> -static bsblk_t
> -blst_leaf_fill(blmeta_t *scan, bsblk_t blk, bsblk_t count)
> +static swblk_t
> +blst_leaf_fill(blmeta_t *scan, swblk_t blk, swblk_t count)
>  {
>       int n = blk & (BLIST_BMAP_RADIX - 1);
> -     bsblk_t nblks;
> -     bsbmp_t mask, bitmap;
> +     swblk_t nblks;
> +     u_swblk_t mask, bitmap;
>  
> -     mask = ((bsbmp_t)-1 << n) &
> -         ((bsbmp_t)-1 >> (BLIST_BMAP_RADIX - count - n));
> +     mask = ((u_swblk_t)-1 << n) &
> +         ((u_swblk_t)-1 >> (BLIST_BMAP_RADIX - count - n));
>  
>       /* Count the number of blocks we're about to allocate */
>       bitmap = scan->u.bmu_bitmap & mask;
> @@ -861,13 +862,13 @@ blst_leaf_fill(blmeta_t *scan, bsblk_t blk, bsblk_t co
>   *   be within the extent of this node.  Returns the number
>   *   of blocks allocated by the call.
>   */
> -static bsblk_t
> -blst_meta_fill(blmeta_t *scan, bsblk_t fillBlk, bsblk_t count,
> -            bsblk_t radix, bsblk_t skip, bsblk_t blk)
> +static swblk_t
> +blst_meta_fill(blmeta_t *scan, swblk_t fillBlk, swblk_t count,
> +            swblk_t radix, swblk_t skip, swblk_t blk)
>  {
> -     bsblk_t i;
> -     bsblk_t next_skip = ((bsblk_t)skip / BLIST_META_RADIX);
> -     bsblk_t nblks = 0;
> +     swblk_t i;
> +     swblk_t next_skip = ((swblk_t)skip / BLIST_META_RADIX);
> +     swblk_t nblks = 0;
>  
>       if (count == radix || scan->u.bmu_avail == 0) {
>               /*
> @@ -886,35 +887,35 @@ blst_meta_fill(blmeta_t *scan, bsblk_t fillBlk, bsblk_
>                * ALL-FREE special case, initialize sublevel
>                */
>               for (i = 1; i <= skip; i += next_skip) {
> -                     if (scan[i].bm_bighint == (bsblk_t)-1)
> +                     if (scan[i].bm_bighint == (swblk_t)-1)
>                               break;
>                       if (next_skip == 1) {
> -                             scan[i].u.bmu_bitmap = (bsbmp_t)-1;
> +                             scan[i].u.bmu_bitmap = (u_swblk_t)-1;
>                               scan[i].bm_bighint = BLIST_BMAP_RADIX;
>                       } else {
> -                             scan[i].bm_bighint = (bsblk_t)radix;
> -                             scan[i].u.bmu_avail = (bsblk_t)radix;
> +                             scan[i].bm_bighint = (swblk_t)radix;
> +                             scan[i].u.bmu_avail = (swblk_t)radix;
>                       }
>               }
>       } else {
>               radix /= BLIST_META_RADIX;
>       }
>  
> -     if (count > (bsblk_t)radix)
> +     if (count > (swblk_t)radix)
>               panic("%s: allocation too large", __func__);
>  
> -     i = (fillBlk - blk) / (bsblk_t)radix;
> -     blk += i * (bsblk_t)radix;
> +     i = (fillBlk - blk) / (swblk_t)radix;
> +     blk += i * (swblk_t)radix;
>       i = i * next_skip + 1;
>  
>       while (i <= skip && blk < fillBlk + count) {
> -             bsblk_t v;
> +             swblk_t v;
>  
> -             v = blk + (bsblk_t)radix - fillBlk;
> +             v = blk + (swblk_t)radix - fillBlk;
>               if (v > count)
>                       v = count;
>  
> -             if (scan->bm_bighint == (bsblk_t)-1)
> +             if (scan->bm_bighint == (swblk_t)-1)
>                       panic("%s: filling unexpected range", __func__);
>  
>               if (next_skip == 1) {
> @@ -925,7 +926,7 @@ blst_meta_fill(blmeta_t *scan, bsblk_t fillBlk, bsblk_
>               }
>               count -= v;
>               fillBlk += v;
> -             blk += (bsblk_t)radix;
> +             blk += (swblk_t)radix;
>               i += next_skip;
>       }
>       scan->u.bmu_avail -= nblks;
> @@ -940,24 +941,24 @@ blst_meta_fill(blmeta_t *scan, bsblk_t fillBlk, bsblk_
>   */
>  
>  static void
> -blst_copy(blmeta_t *scan, bsblk_t blk, bsblk_t radix,
> -       bsblk_t skip, blist_t dest, bsblk_t count)
> +blst_copy(blmeta_t *scan, swblk_t blk, swblk_t radix,
> +       swblk_t skip, blist_t dest, swblk_t count)
>  {
> -     bsblk_t next_skip;
> -     bsblk_t i;
> +     swblk_t next_skip;
> +     swblk_t i;
>  
>       /*
>        * Leaf node
>        */
>  
>       if (radix == BLIST_BMAP_RADIX) {
> -             bsbmp_t v = scan->u.bmu_bitmap;
> +             u_swblk_t v = scan->u.bmu_bitmap;
>  
> -             if (v == (bsbmp_t)-1) {
> +             if (v == (u_swblk_t)-1) {
>                       blist_free(dest, blk, count);
>               } else if (v != 0) {
>                       for (i = 0; i < BLIST_BMAP_RADIX && i < count; ++i) {
> -                             if (v & ((bsblk_t)1 << i))
> +                             if (v & ((swblk_t)1 << i))
>                                       blist_free(dest, blk + i, 1);
>                       }
>               }
> @@ -981,28 +982,28 @@ blst_copy(blmeta_t *scan, bsblk_t blk, bsblk_t radix,
>               if (count < radix)
>                       blist_free(dest, blk, count);
>               else
> -                     blist_free(dest, blk, (bsblk_t)radix);
> +                     blist_free(dest, blk, (swblk_t)radix);
>               return;
>       }
>  
>  
>       radix /= BLIST_META_RADIX;
> -     next_skip = ((bsbmp_t)skip / BLIST_META_RADIX);
> +     next_skip = ((u_swblk_t)skip / BLIST_META_RADIX);
>  
>       for (i = 1; count && i <= skip; i += next_skip) {
> -             if (scan[i].bm_bighint == (bsblk_t)-1)
> +             if (scan[i].bm_bighint == (swblk_t)-1)
>                       break;
>  
> -             if (count >= (bsblk_t)radix) {
> +             if (count >= (swblk_t)radix) {
>                       blst_copy(
>                           &scan[i],
>                           blk,
>                           radix,
>                           next_skip - 1,
>                           dest,
> -                         (bsblk_t)radix
> +                         (swblk_t)radix
>                       );
> -                     count -= (bsblk_t)radix;
> +                     count -= (swblk_t)radix;
>               } else {
>                       if (count) {
>                               blst_copy(
> @@ -1016,7 +1017,7 @@ blst_copy(blmeta_t *scan, bsblk_t blk, bsblk_t radix,
>                       }
>                       count = 0;
>               }
> -             blk += (bsblk_t)radix;
> +             blk += (swblk_t)radix;
>       }
>  }
>  
> @@ -1029,12 +1030,12 @@ blst_copy(blmeta_t *scan, bsblk_t blk, bsblk_t radix,
>   *   RADIX values we use.
>   */
>  
> -static bsblk_t
> -blst_radix_init(blmeta_t *scan, bsblk_t radix, bsblk_t skip, bsblk_t count)
> +static swblk_t
> +blst_radix_init(blmeta_t *scan, swblk_t radix, swblk_t skip, swblk_t count)
>  {
> -     bsblk_t i;
> -     bsblk_t next_skip;
> -     bsblk_t memindex = 0;
> +     swblk_t i;
> +     swblk_t next_skip;
> +     swblk_t memindex = 0;
>  
>       /*
>        * Leaf node
> @@ -1060,10 +1061,10 @@ blst_radix_init(blmeta_t *scan, bsblk_t radix, bsblk_t
>       }
>  
>       radix /= BLIST_META_RADIX;
> -     next_skip = ((bsbmp_t)skip / BLIST_META_RADIX);
> +     next_skip = ((u_swblk_t)skip / BLIST_META_RADIX);
>  
>       for (i = 1; i <= skip; i += next_skip) {
> -             if (count >= (bsblk_t)radix) {
> +             if (count >= (swblk_t)radix) {
>                       /*
>                        * Allocate the entire object
>                        */
> @@ -1071,9 +1072,9 @@ blst_radix_init(blmeta_t *scan, bsblk_t radix, bsblk_t
>                           ((scan) ? &scan[i] : NULL),
>                           radix,
>                           next_skip - 1,
> -                         (bsblk_t)radix
> +                         (swblk_t)radix
>                       );
> -                     count -= (bsblk_t)radix;
> +                     count -= (swblk_t)radix;
>               } else if (count > 0) {
>                       /*
>                        * Allocate a partial object
> @@ -1090,7 +1091,7 @@ blst_radix_init(blmeta_t *scan, bsblk_t radix, bsblk_t
>                        * Add terminator and break out
>                        */
>                       if (scan)
> -                             scan[i].bm_bighint = (bsblk_t)-1;
> +                             scan[i].bm_bighint = (swblk_t)-1;
>                       break;
>               }
>       }
> @@ -1102,14 +1103,14 @@ blst_radix_init(blmeta_t *scan, bsblk_t radix, bsblk_t
>  #if defined(BLIST_DEBUG) || defined(DDB)
>  
>  static void
> -blst_radix_print(blmeta_t *scan, bsblk_t blk, bsblk_t radix, bsblk_t skip, 
> int tab)
> +blst_radix_print(blmeta_t *scan, swblk_t blk, swblk_t radix, swblk_t skip, 
> int tab)
>  {
> -     bsblk_t i;
> -     bsblk_t next_skip;
> +     swblk_t i;
> +     swblk_t next_skip;
>  
>       if (radix == BLIST_BMAP_RADIX) {
>               printf(
> -                 "%*.*s(%04lx,%lu): bitmap %0*lx big=%lu\n",
> +                 "%*.*s(%04lx,%lu): bitmap %0*llx big=%lu\n",
>                   tab, tab, "",
>                   blk, radix,
>                   (int)(1 + (BLIST_BMAP_RADIX - 1) / 4),
> @@ -1148,11 +1149,11 @@ blst_radix_print(blmeta_t *scan, bsblk_t blk, bsblk_t 
>       );
>  
>       radix /= BLIST_META_RADIX;
> -     next_skip = ((bsbmp_t)skip / BLIST_META_RADIX);
> +     next_skip = ((u_swblk_t)skip / BLIST_META_RADIX);
>       tab += 4;
>  
>       for (i = 1; i <= skip; i += next_skip) {
> -             if (scan[i].bm_bighint == (bsblk_t)-1) {
> +             if (scan[i].bm_bighint == (swblk_t)-1) {
>                       printf(
>                           "%*.*s(%04lx,%lu): Terminator\n",
>                           tab, tab, "",
> @@ -1167,7 +1168,7 @@ blst_radix_print(blmeta_t *scan, bsblk_t blk, bsblk_t 
>                   next_skip - 1,
>                   tab
>               );
> -             blk += (bsblk_t)radix;
> +             blk += (swblk_t)radix;
>       }
>       tab -= 4;
>  
> @@ -1184,11 +1185,11 @@ blst_radix_print(blmeta_t *scan, bsblk_t blk, bsblk_t 
>  int
>  main(int ac, char **av)
>  {
> -     bsblk_t size = 1024;
> -     bsblk_t i;
> +     swblk_t size = 1024;
> +     swblk_t i;
>       blist_t bl;
>  
> -     for (i = 1; i < (bsblk_t)ac; ++i) {
> +     for (i = 1; i < (swblk_t)ac; ++i) {
>               const char *ptr = av[i];
>               if (*ptr != '-') {
>                       size = strtol(ptr, NULL, 0);
> @@ -1203,9 +1204,9 @@ main(int ac, char **av)
>  
>       for (;;) {
>               char buf[1024];
> -             bsblk_t da = 0;
> -             bsblk_t count = 0;
> -             bsblk_t blkat;
> +             swblk_t da = 0;
> +             swblk_t count = 0;
> +             swblk_t blkat;
>  
>  
>               printf("%lu/%lu/%lu> ",
> @@ -1229,10 +1230,10 @@ main(int ac, char **av)
>               case 'a':
>                       if (sscanf(buf + 1, "%li %li", &count, &blkat) == 1) {
>                               printf("count %lu\n", count);
> -                             bsblk_t blk = blist_alloc(bl, count);
> +                             swblk_t blk = blist_alloc(bl, count);
>                               printf("    R=%04lx\n", blk);
>                       } else if (sscanf(buf + 1, "%li %li", &count, &blkat) 
> == 2) {
> -                             bsblk_t blk = blist_allocat(bl, count, blkat);
> +                             swblk_t blk = blist_allocat(bl, count, blkat);
>                               printf("    R=%04lx\n", blk);
>                       } else {
>                               printf("?\n");
> @@ -1246,7 +1247,7 @@ main(int ac, char **av)
>                       }
>                       break;
>               case 'g': {
> -                             bsblk_t b, e;
> +                             swblk_t b, e;
>                               blist_gapfind(bl, &b, &e);
>                               printf("gapfind: begin=%04lx end=%04lx 
> size=%lu\n",
>                                   b, e, e-b);

Reply via email to