Lines Matching +full:max +full:- +full:cur

1 // SPDX-License-Identifier: GPL-2.0
12 #define howmany(x, y) (((x)+((y)-1))/(y))
17 #define max(a, b) ((a) > (b) ? (a) : (b)) macro
31 bmp->size = n; in bitmask_alloc()
32 bmp->maskp = calloc(longsperbits(n), sizeof(unsigned long)); in bitmask_alloc()
33 if (!bmp->maskp) { in bitmask_alloc()
45 free(bmp->maskp); in bitmask_free()
46 bmp->maskp = (unsigned long *)0xdeadcdef; /* double free tripwire */ in bitmask_free()
52 * routines that actually understand the layout of bmp->maskp[].
64 if (n < bmp->size) in _getbit()
65 return (bmp->maskp[n/bitsperlong] >> (n % bitsperlong)) & 1; in _getbit()
73 if (n < bmp->size) { in _setbit()
75 bmp->maskp[n/bitsperlong] |= 1UL << (n % bitsperlong); in _setbit()
77 bmp->maskp[n/bitsperlong] &= in _setbit()
87 * -1 if the sscanf input string was empty. It is 0 if the first
93 * is the nul-terminated list of allowed next characters.
125 for (i = 0; i < bmp->size; i++) in bitmask_setall()
134 for (i = 0; i < bmp->size; i++) in bitmask_clearall()
143 for (i = 0; i < bmp->size; i++) in bitmask_isallclear()
161 /* Number of highest set bit (max) */
165 unsigned int m = bmp->size; in bitmask_last()
166 for (i = 0; i < bmp->size; i++) in bitmask_last()
176 for (n = i; n < bmp->size; n++) in bitmask_next()
183 * Parses a comma-separated list of numbers and ranges of numbers,
187 * 0-3 0,1,2,3
188 * 0-7:2 0,2,4,6
189 * 1,3,5-7 1,3,5,6,7
190 * 0-3:2,8-15:4 0,2,8,12
203 const char *c1, *c2; /* next tokens after '-' or ',' */ in bitmask_parselist()
208 if (!scan_was_ok(sret, nextc, ",-")) in bitmask_parselist()
212 c1 = nexttoken(p, '-'); in bitmask_parselist()
227 if (b >= bmp->size) in bitmask_parselist()
237 return -1; in bitmask_parselist()
245 * comma-prefix. Return len of what would be written to buf, if it
252 len += snprintf(buf + len, max(buflen - len, 0), ","); in emit()
254 len += snprintf(buf + len, max(buflen - len, 0), "%d", rbot); in emit()
256 len += snprintf(buf + len, max(buflen - len, 0), "%d-%d", in emit()
264 * Output format is a comma-separated list of decimal numbers and
265 * ranges. Consecutively set bits are shown as two hyphen-separated
278 /* current bit is 'cur', most recently seen range is [rbot, rtop] */ in bitmask_displaylist()
279 unsigned int cur, rbot, rtop; in bitmask_displaylist() local
283 rbot = cur = bitmask_first(bmp); in bitmask_displaylist()
284 while (cur < bmp->size) { in bitmask_displaylist()
285 rtop = cur; in bitmask_displaylist()
286 cur = bitmask_next(bmp, cur+1); in bitmask_displaylist()
287 if (cur >= bmp->size || cur > rtop + 1) { in bitmask_displaylist()
289 rbot = cur; in bitmask_displaylist()