Changeset: f26150f3c53e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f26150f3c53e Modified Files: gdk/gdk.h gdk/gdk_bat.c gdk/gdk_bbp.c Branch: Aug2018 Log Message:
The BBP status field is a bit mask and therefore should be unsigned. diffs (101 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -1589,7 +1589,7 @@ typedef struct { str options; /* A string list of options */ int refs; /* in-memory references on which the loaded status of a BAT relies */ int lrefs; /* logical references on which the existence of a BAT relies */ - volatile int status; /* status mask used for spin locking */ + volatile unsigned status; /* status mask used for spin locking */ /* MT_Id pid; non-zero thread-id if this BAT is private */ } BBPrec; @@ -1624,7 +1624,7 @@ gdk_export BBPrec *BBP[N_BBPINIT]; /* macros that nicely check parameters */ #define BBPcacheid(b) ((b)->batCacheid) -#define BBPstatus(i) (BBPcheck((i),"BBPstatus")?BBP_status(i):-1) +#define BBPstatus(i) (BBPcheck((i),"BBPstatus")?BBP_status(i):0) #define BBPrefs(i) (BBPcheck((i),"BBPrefs")?BBP_refs(i):-1) #define BBPcache(i) (BBPcheck((i),"BBPcache")?BBP_cache(i):(BAT*) NULL) #define BBPname(i) \ diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -2057,7 +2057,7 @@ BATmode(BAT *b, int mode) void BATassertProps(BAT *b) { - int bbpstatus; + unsigned bbpstatus; BATiter bi = bat_iterator(b); BUN p, q; int (*cmpf)(const void *, const void *); diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -111,7 +111,6 @@ struct BBPfarm_t BBPfarms[MAXFARMS]; bat *BBP_hash = NULL; /* BBP logical name hash buckets */ bat BBP_mask = 0; /* number of buckets = & mask */ -static void BBPspin(bat bid, const char *debug, int event); static gdk_return BBPfree(BAT *b, const char *calledFrom); static void BBPdestroy(BAT *b); static void BBPuncacheit(bat bid, bool unloaddesc); @@ -1538,7 +1537,7 @@ new_bbpentry(FILE *fp, bat i, const char } #endif - if (fprintf(fp, "%s%zd %d %s %s %d " BUNFMT " " + if (fprintf(fp, "%s%zd %u %s %s %d " BUNFMT " " BUNFMT " " OIDFMT, prefix, /* BAT info */ (ssize_t) i, @@ -1765,7 +1764,7 @@ BBPdump(void) continue; fprintf(stderr, "# %d[%s]: nme='%s' refs=%d lrefs=%d " - "status=%d count=" BUNFMT, + "status=%u count=" BUNFMT, i, ATOMname(b->ttype), BBP_logical(i) ? BBP_logical(i) : "<NULL>", @@ -2088,7 +2087,7 @@ gdk_return BBPcacheit(BAT *bn, bool lock) { bat i = bn->batCacheid; - int mode; + unsigned mode; if (lock) lock = locked_by == 0 || locked_by != MT_getpid(); @@ -2291,16 +2290,16 @@ BBPrename(bat bid, const char *nme) * memory references can be unloaded. */ static inline void -BBPspin(bat i, const char *s, int event) +BBPspin(bat i, const char *s, unsigned event) { if (BBPcheck(i, "BBPspin") && (BBP_status(i) & event)) { lng spin = LL_CONSTANT(0); - while (BBP_status(i) & event) { + do { MT_sleep_ms(KITTENNAP); spin++; - } - BATDEBUG fprintf(stderr, "#BBPspin(%d,%s,%d): " LLFMT " loops\n", (int) i, s, event, spin); + } while (BBP_status(i) & event); + BATDEBUG fprintf(stderr, "#BBPspin(%d,%s,%u): " LLFMT " loops\n", (int) i, s, event, spin); } } @@ -2722,7 +2721,7 @@ BBPsave(BAT *b) BBPspin(bid, "BBPsave", BBPSAVING); } else { /* save it */ - int flags = BBPSAVING; + unsigned flags = BBPSAVING; if (DELTAdirty(b)) { flags |= BBPSWAPPED; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list