/src/dovecot/src/lib/bits.h
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef BITS_H |
2 | | #define BITS_H |
3 | | |
4 | | #define UINT64_SUM_OVERFLOWS(a, b) \ |
5 | | (a > (uint64_t)-1 - b) |
6 | | |
7 | | #define BIT(n) (1u << (n)) |
8 | | |
9 | | /* These expressions make it easy to ensure that bit test expressions |
10 | | are boolean in order to satisfy the in-house -Wstrict-bool. */ |
11 | | /* ((val & bits) == 0) is very common */ |
12 | | #define HAS_NO_BITS(val,bits) (((val) & (bits)) == 0) |
13 | | /* ((val & bits) != 0) is even more common */ |
14 | | /* Note - illogical behaviour if bits==0, fixing that requires potential |
15 | | multiple evaluation, but it's a corner case that should never occur. */ |
16 | 0 | #define HAS_ANY_BITS(val,bits) (((val) & (bits)) != 0) |
17 | | /* ((val & bits) == bits) is uncommon */ |
18 | | #define HAS_ALL_BITS(val,bits) ((~(val) & (bits)) == 0) |
19 | | |
20 | | /* negation implemented without using the subtraction operator |
21 | | ~(x - 1) = 1 + ~x these are equivalent by -(-x) == ~(~(x)) == x */ |
22 | 31.1k | #define UNSIGNED_MINUS(x) (1 + ~(x)) |
23 | | |
24 | | /* Returns x, such that x is the smallest power of 2 >= num. */ |
25 | | size_t nearest_power(size_t num) ATTR_CONST; |
26 | | |
27 | | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) |
28 | | |
29 | | /* Returns TRUE if 2^x=num, i.e. if num has only a single bit set to 1. */ |
30 | | static inline bool ATTR_CONST |
31 | | bits_is_power_of_two(uint64_t num) |
32 | 0 | { |
33 | 0 | return __builtin_popcountll(num) == 1; |
34 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_is_power_of_two Unexecuted instantiation: message-parser.c:bits_is_power_of_two Unexecuted instantiation: message-size.c:bits_is_power_of_two Unexecuted instantiation: rfc2231-parser.c:bits_is_power_of_two Unexecuted instantiation: rfc822-parser.c:bits_is_power_of_two Unexecuted instantiation: message-header-parser.c:bits_is_power_of_two Unexecuted instantiation: charset-utf8.c:bits_is_power_of_two Unexecuted instantiation: charset-iconv.c:bits_is_power_of_two Unexecuted instantiation: fuzzer.c:bits_is_power_of_two Unexecuted instantiation: test-istream.c:bits_is_power_of_two Unexecuted instantiation: array.c:bits_is_power_of_two Unexecuted instantiation: buffer.c:bits_is_power_of_two Unexecuted instantiation: data-stack.c:bits_is_power_of_two Unexecuted instantiation: event-log.c:bits_is_power_of_two Unexecuted instantiation: failures.c:bits_is_power_of_two Unexecuted instantiation: fd-util.c:bits_is_power_of_two Unexecuted instantiation: hostpid.c:bits_is_power_of_two Unexecuted instantiation: imem.c:bits_is_power_of_two Unexecuted instantiation: iostream-pump.c:bits_is_power_of_two Unexecuted instantiation: istream.c:bits_is_power_of_two Unexecuted instantiation: istream-data.c:bits_is_power_of_two Unexecuted instantiation: ioloop.c:bits_is_power_of_two Unexecuted instantiation: ioloop-notify-inotify.c:bits_is_power_of_two Unexecuted instantiation: ioloop-epoll.c:bits_is_power_of_two Unexecuted instantiation: lib.c:bits_is_power_of_two Unexecuted instantiation: lib-event.c:bits_is_power_of_two Unexecuted instantiation: lib-signals.c:bits_is_power_of_two Unexecuted instantiation: memarea.c:bits_is_power_of_two Unexecuted instantiation: mempool.c:bits_is_power_of_two Unexecuted instantiation: mempool-alloconly.c:bits_is_power_of_two Unexecuted instantiation: mempool-datastack.c:bits_is_power_of_two Unexecuted instantiation: mempool-system.c:bits_is_power_of_two Unexecuted instantiation: mempool-unsafe-datastack.c:bits_is_power_of_two Unexecuted instantiation: net.c:bits_is_power_of_two Unexecuted instantiation: ostream.c:bits_is_power_of_two Unexecuted instantiation: ostream-file.c:bits_is_power_of_two Unexecuted instantiation: path-util.c:bits_is_power_of_two Unexecuted instantiation: printf-format-fix.c:bits_is_power_of_two Unexecuted instantiation: process-title.c:bits_is_power_of_two Unexecuted instantiation: priorityq.c:bits_is_power_of_two Unexecuted instantiation: punycode.c:bits_is_power_of_two Unexecuted instantiation: randgen.c:bits_is_power_of_two Unexecuted instantiation: rand.c:bits_is_power_of_two Unexecuted instantiation: restrict-access.c:bits_is_power_of_two Unexecuted instantiation: safe-memset.c:bits_is_power_of_two Unexecuted instantiation: sendfile-util.c:bits_is_power_of_two Unexecuted instantiation: sleep.c:bits_is_power_of_two Unexecuted instantiation: str.c:bits_is_power_of_two Unexecuted instantiation: strescape.c:bits_is_power_of_two Unexecuted instantiation: strfuncs.c:bits_is_power_of_two Unexecuted instantiation: strnum.c:bits_is_power_of_two Unexecuted instantiation: time-util.c:bits_is_power_of_two Unexecuted instantiation: unichar.c:bits_is_power_of_two Unexecuted instantiation: write-full.c:bits_is_power_of_two Unexecuted instantiation: backtrace-string.c:bits_is_power_of_two Unexecuted instantiation: bits.c:bits_is_power_of_two Unexecuted instantiation: env-util.c:bits_is_power_of_two Unexecuted instantiation: event-filter.c:bits_is_power_of_two Unexecuted instantiation: event-filter-lexer.c:bits_is_power_of_two Unexecuted instantiation: event-filter-parser.c:bits_is_power_of_two Unexecuted instantiation: hash.c:bits_is_power_of_two Unexecuted instantiation: ipwd.c:bits_is_power_of_two Unexecuted instantiation: iostream.c:bits_is_power_of_two Unexecuted instantiation: istream-file.c:bits_is_power_of_two Unexecuted instantiation: ioloop-iolist.c:bits_is_power_of_two Unexecuted instantiation: ioloop-notify-fd.c:bits_is_power_of_two Unexecuted instantiation: primes.c:bits_is_power_of_two Unexecuted instantiation: str-parse.c:bits_is_power_of_two Unexecuted instantiation: wildcard-match.c:bits_is_power_of_two |
35 | | |
36 | | static inline unsigned int ATTR_CONST |
37 | | bits_required32(uint32_t num) |
38 | 0 | { |
39 | 0 | return num == 0 ? 0 : 32 - __builtin_clz(num); |
40 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_required32 Unexecuted instantiation: message-parser.c:bits_required32 Unexecuted instantiation: message-size.c:bits_required32 Unexecuted instantiation: rfc2231-parser.c:bits_required32 Unexecuted instantiation: rfc822-parser.c:bits_required32 Unexecuted instantiation: message-header-parser.c:bits_required32 Unexecuted instantiation: charset-utf8.c:bits_required32 Unexecuted instantiation: charset-iconv.c:bits_required32 Unexecuted instantiation: fuzzer.c:bits_required32 Unexecuted instantiation: test-istream.c:bits_required32 Unexecuted instantiation: array.c:bits_required32 Unexecuted instantiation: buffer.c:bits_required32 Unexecuted instantiation: data-stack.c:bits_required32 Unexecuted instantiation: event-log.c:bits_required32 Unexecuted instantiation: failures.c:bits_required32 Unexecuted instantiation: fd-util.c:bits_required32 Unexecuted instantiation: hostpid.c:bits_required32 Unexecuted instantiation: imem.c:bits_required32 Unexecuted instantiation: iostream-pump.c:bits_required32 Unexecuted instantiation: istream.c:bits_required32 Unexecuted instantiation: istream-data.c:bits_required32 Unexecuted instantiation: ioloop.c:bits_required32 Unexecuted instantiation: ioloop-notify-inotify.c:bits_required32 Unexecuted instantiation: ioloop-epoll.c:bits_required32 Unexecuted instantiation: lib.c:bits_required32 Unexecuted instantiation: lib-event.c:bits_required32 Unexecuted instantiation: lib-signals.c:bits_required32 Unexecuted instantiation: memarea.c:bits_required32 Unexecuted instantiation: mempool.c:bits_required32 Unexecuted instantiation: mempool-alloconly.c:bits_required32 Unexecuted instantiation: mempool-datastack.c:bits_required32 Unexecuted instantiation: mempool-system.c:bits_required32 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_required32 Unexecuted instantiation: net.c:bits_required32 Unexecuted instantiation: ostream.c:bits_required32 Unexecuted instantiation: ostream-file.c:bits_required32 Unexecuted instantiation: path-util.c:bits_required32 Unexecuted instantiation: printf-format-fix.c:bits_required32 Unexecuted instantiation: process-title.c:bits_required32 Unexecuted instantiation: priorityq.c:bits_required32 Unexecuted instantiation: punycode.c:bits_required32 Unexecuted instantiation: randgen.c:bits_required32 Unexecuted instantiation: rand.c:bits_required32 Unexecuted instantiation: restrict-access.c:bits_required32 Unexecuted instantiation: safe-memset.c:bits_required32 Unexecuted instantiation: sendfile-util.c:bits_required32 Unexecuted instantiation: sleep.c:bits_required32 Unexecuted instantiation: str.c:bits_required32 Unexecuted instantiation: strescape.c:bits_required32 Unexecuted instantiation: strfuncs.c:bits_required32 Unexecuted instantiation: strnum.c:bits_required32 Unexecuted instantiation: time-util.c:bits_required32 Unexecuted instantiation: unichar.c:bits_required32 Unexecuted instantiation: write-full.c:bits_required32 Unexecuted instantiation: backtrace-string.c:bits_required32 Unexecuted instantiation: bits.c:bits_required32 Unexecuted instantiation: env-util.c:bits_required32 Unexecuted instantiation: event-filter.c:bits_required32 Unexecuted instantiation: event-filter-lexer.c:bits_required32 Unexecuted instantiation: event-filter-parser.c:bits_required32 Unexecuted instantiation: hash.c:bits_required32 Unexecuted instantiation: ipwd.c:bits_required32 Unexecuted instantiation: iostream.c:bits_required32 Unexecuted instantiation: istream-file.c:bits_required32 Unexecuted instantiation: ioloop-iolist.c:bits_required32 Unexecuted instantiation: ioloop-notify-fd.c:bits_required32 Unexecuted instantiation: primes.c:bits_required32 Unexecuted instantiation: str-parse.c:bits_required32 Unexecuted instantiation: wildcard-match.c:bits_required32 |
41 | | static inline unsigned int ATTR_CONST |
42 | 0 | bits_required8(uint8_t num) { return bits_required32(num); } Unexecuted instantiation: fuzz-message-parser.c:bits_required8 Unexecuted instantiation: message-parser.c:bits_required8 Unexecuted instantiation: message-size.c:bits_required8 Unexecuted instantiation: rfc2231-parser.c:bits_required8 Unexecuted instantiation: rfc822-parser.c:bits_required8 Unexecuted instantiation: message-header-parser.c:bits_required8 Unexecuted instantiation: charset-utf8.c:bits_required8 Unexecuted instantiation: charset-iconv.c:bits_required8 Unexecuted instantiation: fuzzer.c:bits_required8 Unexecuted instantiation: test-istream.c:bits_required8 Unexecuted instantiation: array.c:bits_required8 Unexecuted instantiation: buffer.c:bits_required8 Unexecuted instantiation: data-stack.c:bits_required8 Unexecuted instantiation: event-log.c:bits_required8 Unexecuted instantiation: failures.c:bits_required8 Unexecuted instantiation: fd-util.c:bits_required8 Unexecuted instantiation: hostpid.c:bits_required8 Unexecuted instantiation: imem.c:bits_required8 Unexecuted instantiation: iostream-pump.c:bits_required8 Unexecuted instantiation: istream.c:bits_required8 Unexecuted instantiation: istream-data.c:bits_required8 Unexecuted instantiation: ioloop.c:bits_required8 Unexecuted instantiation: ioloop-notify-inotify.c:bits_required8 Unexecuted instantiation: ioloop-epoll.c:bits_required8 Unexecuted instantiation: lib.c:bits_required8 Unexecuted instantiation: lib-event.c:bits_required8 Unexecuted instantiation: lib-signals.c:bits_required8 Unexecuted instantiation: memarea.c:bits_required8 Unexecuted instantiation: mempool.c:bits_required8 Unexecuted instantiation: mempool-alloconly.c:bits_required8 Unexecuted instantiation: mempool-datastack.c:bits_required8 Unexecuted instantiation: mempool-system.c:bits_required8 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_required8 Unexecuted instantiation: net.c:bits_required8 Unexecuted instantiation: ostream.c:bits_required8 Unexecuted instantiation: ostream-file.c:bits_required8 Unexecuted instantiation: path-util.c:bits_required8 Unexecuted instantiation: printf-format-fix.c:bits_required8 Unexecuted instantiation: process-title.c:bits_required8 Unexecuted instantiation: priorityq.c:bits_required8 Unexecuted instantiation: punycode.c:bits_required8 Unexecuted instantiation: randgen.c:bits_required8 Unexecuted instantiation: rand.c:bits_required8 Unexecuted instantiation: restrict-access.c:bits_required8 Unexecuted instantiation: safe-memset.c:bits_required8 Unexecuted instantiation: sendfile-util.c:bits_required8 Unexecuted instantiation: sleep.c:bits_required8 Unexecuted instantiation: str.c:bits_required8 Unexecuted instantiation: strescape.c:bits_required8 Unexecuted instantiation: strfuncs.c:bits_required8 Unexecuted instantiation: strnum.c:bits_required8 Unexecuted instantiation: time-util.c:bits_required8 Unexecuted instantiation: unichar.c:bits_required8 Unexecuted instantiation: write-full.c:bits_required8 Unexecuted instantiation: backtrace-string.c:bits_required8 Unexecuted instantiation: bits.c:bits_required8 Unexecuted instantiation: env-util.c:bits_required8 Unexecuted instantiation: event-filter.c:bits_required8 Unexecuted instantiation: event-filter-lexer.c:bits_required8 Unexecuted instantiation: event-filter-parser.c:bits_required8 Unexecuted instantiation: hash.c:bits_required8 Unexecuted instantiation: ipwd.c:bits_required8 Unexecuted instantiation: iostream.c:bits_required8 Unexecuted instantiation: istream-file.c:bits_required8 Unexecuted instantiation: ioloop-iolist.c:bits_required8 Unexecuted instantiation: ioloop-notify-fd.c:bits_required8 Unexecuted instantiation: primes.c:bits_required8 Unexecuted instantiation: str-parse.c:bits_required8 Unexecuted instantiation: wildcard-match.c:bits_required8 |
43 | | |
44 | | static inline unsigned int ATTR_CONST |
45 | 0 | bits_required16(uint16_t num) { return bits_required32(num); } Unexecuted instantiation: fuzz-message-parser.c:bits_required16 Unexecuted instantiation: message-parser.c:bits_required16 Unexecuted instantiation: message-size.c:bits_required16 Unexecuted instantiation: rfc2231-parser.c:bits_required16 Unexecuted instantiation: rfc822-parser.c:bits_required16 Unexecuted instantiation: message-header-parser.c:bits_required16 Unexecuted instantiation: charset-utf8.c:bits_required16 Unexecuted instantiation: charset-iconv.c:bits_required16 Unexecuted instantiation: fuzzer.c:bits_required16 Unexecuted instantiation: test-istream.c:bits_required16 Unexecuted instantiation: array.c:bits_required16 Unexecuted instantiation: buffer.c:bits_required16 Unexecuted instantiation: data-stack.c:bits_required16 Unexecuted instantiation: event-log.c:bits_required16 Unexecuted instantiation: failures.c:bits_required16 Unexecuted instantiation: fd-util.c:bits_required16 Unexecuted instantiation: hostpid.c:bits_required16 Unexecuted instantiation: imem.c:bits_required16 Unexecuted instantiation: iostream-pump.c:bits_required16 Unexecuted instantiation: istream.c:bits_required16 Unexecuted instantiation: istream-data.c:bits_required16 Unexecuted instantiation: ioloop.c:bits_required16 Unexecuted instantiation: ioloop-notify-inotify.c:bits_required16 Unexecuted instantiation: ioloop-epoll.c:bits_required16 Unexecuted instantiation: lib.c:bits_required16 Unexecuted instantiation: lib-event.c:bits_required16 Unexecuted instantiation: lib-signals.c:bits_required16 Unexecuted instantiation: memarea.c:bits_required16 Unexecuted instantiation: mempool.c:bits_required16 Unexecuted instantiation: mempool-alloconly.c:bits_required16 Unexecuted instantiation: mempool-datastack.c:bits_required16 Unexecuted instantiation: mempool-system.c:bits_required16 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_required16 Unexecuted instantiation: net.c:bits_required16 Unexecuted instantiation: ostream.c:bits_required16 Unexecuted instantiation: ostream-file.c:bits_required16 Unexecuted instantiation: path-util.c:bits_required16 Unexecuted instantiation: printf-format-fix.c:bits_required16 Unexecuted instantiation: process-title.c:bits_required16 Unexecuted instantiation: priorityq.c:bits_required16 Unexecuted instantiation: punycode.c:bits_required16 Unexecuted instantiation: randgen.c:bits_required16 Unexecuted instantiation: rand.c:bits_required16 Unexecuted instantiation: restrict-access.c:bits_required16 Unexecuted instantiation: safe-memset.c:bits_required16 Unexecuted instantiation: sendfile-util.c:bits_required16 Unexecuted instantiation: sleep.c:bits_required16 Unexecuted instantiation: str.c:bits_required16 Unexecuted instantiation: strescape.c:bits_required16 Unexecuted instantiation: strfuncs.c:bits_required16 Unexecuted instantiation: strnum.c:bits_required16 Unexecuted instantiation: time-util.c:bits_required16 Unexecuted instantiation: unichar.c:bits_required16 Unexecuted instantiation: write-full.c:bits_required16 Unexecuted instantiation: backtrace-string.c:bits_required16 Unexecuted instantiation: bits.c:bits_required16 Unexecuted instantiation: env-util.c:bits_required16 Unexecuted instantiation: event-filter.c:bits_required16 Unexecuted instantiation: event-filter-lexer.c:bits_required16 Unexecuted instantiation: event-filter-parser.c:bits_required16 Unexecuted instantiation: hash.c:bits_required16 Unexecuted instantiation: ipwd.c:bits_required16 Unexecuted instantiation: iostream.c:bits_required16 Unexecuted instantiation: istream-file.c:bits_required16 Unexecuted instantiation: ioloop-iolist.c:bits_required16 Unexecuted instantiation: ioloop-notify-fd.c:bits_required16 Unexecuted instantiation: primes.c:bits_required16 Unexecuted instantiation: str-parse.c:bits_required16 Unexecuted instantiation: wildcard-match.c:bits_required16 |
46 | | |
47 | | static inline unsigned int ATTR_CONST |
48 | | bits_required64(uint64_t num) |
49 | 56.9k | { |
50 | 56.9k | return num == 0 ? 0 : 64 - __builtin_clzll(num); |
51 | 56.9k | } Unexecuted instantiation: fuzz-message-parser.c:bits_required64 Unexecuted instantiation: message-parser.c:bits_required64 Unexecuted instantiation: message-size.c:bits_required64 Unexecuted instantiation: rfc2231-parser.c:bits_required64 Unexecuted instantiation: rfc822-parser.c:bits_required64 Unexecuted instantiation: message-header-parser.c:bits_required64 Unexecuted instantiation: charset-utf8.c:bits_required64 Unexecuted instantiation: charset-iconv.c:bits_required64 Unexecuted instantiation: fuzzer.c:bits_required64 Unexecuted instantiation: test-istream.c:bits_required64 Unexecuted instantiation: array.c:bits_required64 Unexecuted instantiation: buffer.c:bits_required64 Unexecuted instantiation: data-stack.c:bits_required64 Unexecuted instantiation: event-log.c:bits_required64 Unexecuted instantiation: failures.c:bits_required64 Unexecuted instantiation: fd-util.c:bits_required64 Unexecuted instantiation: hostpid.c:bits_required64 Unexecuted instantiation: imem.c:bits_required64 Unexecuted instantiation: iostream-pump.c:bits_required64 Unexecuted instantiation: istream.c:bits_required64 Unexecuted instantiation: istream-data.c:bits_required64 Unexecuted instantiation: ioloop.c:bits_required64 Unexecuted instantiation: ioloop-notify-inotify.c:bits_required64 Unexecuted instantiation: ioloop-epoll.c:bits_required64 Unexecuted instantiation: lib.c:bits_required64 Unexecuted instantiation: lib-event.c:bits_required64 Unexecuted instantiation: lib-signals.c:bits_required64 Unexecuted instantiation: memarea.c:bits_required64 Unexecuted instantiation: mempool.c:bits_required64 Unexecuted instantiation: mempool-alloconly.c:bits_required64 Unexecuted instantiation: mempool-datastack.c:bits_required64 Unexecuted instantiation: mempool-system.c:bits_required64 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_required64 Unexecuted instantiation: net.c:bits_required64 Unexecuted instantiation: ostream.c:bits_required64 Unexecuted instantiation: ostream-file.c:bits_required64 Unexecuted instantiation: path-util.c:bits_required64 Unexecuted instantiation: printf-format-fix.c:bits_required64 Unexecuted instantiation: process-title.c:bits_required64 Unexecuted instantiation: priorityq.c:bits_required64 Unexecuted instantiation: punycode.c:bits_required64 Unexecuted instantiation: randgen.c:bits_required64 Unexecuted instantiation: rand.c:bits_required64 Unexecuted instantiation: restrict-access.c:bits_required64 Unexecuted instantiation: safe-memset.c:bits_required64 Unexecuted instantiation: sendfile-util.c:bits_required64 Unexecuted instantiation: sleep.c:bits_required64 Unexecuted instantiation: str.c:bits_required64 Unexecuted instantiation: strescape.c:bits_required64 Unexecuted instantiation: strfuncs.c:bits_required64 Unexecuted instantiation: strnum.c:bits_required64 Unexecuted instantiation: time-util.c:bits_required64 Unexecuted instantiation: unichar.c:bits_required64 Unexecuted instantiation: write-full.c:bits_required64 Unexecuted instantiation: backtrace-string.c:bits_required64 Line | Count | Source | 49 | 56.9k | { | 50 | 56.9k | return num == 0 ? 0 : 64 - __builtin_clzll(num); | 51 | 56.9k | } |
Unexecuted instantiation: env-util.c:bits_required64 Unexecuted instantiation: event-filter.c:bits_required64 Unexecuted instantiation: event-filter-lexer.c:bits_required64 Unexecuted instantiation: event-filter-parser.c:bits_required64 Unexecuted instantiation: hash.c:bits_required64 Unexecuted instantiation: ipwd.c:bits_required64 Unexecuted instantiation: iostream.c:bits_required64 Unexecuted instantiation: istream-file.c:bits_required64 Unexecuted instantiation: ioloop-iolist.c:bits_required64 Unexecuted instantiation: ioloop-notify-fd.c:bits_required64 Unexecuted instantiation: primes.c:bits_required64 Unexecuted instantiation: str-parse.c:bits_required64 Unexecuted instantiation: wildcard-match.c:bits_required64 |
52 | | |
53 | | #else |
54 | | |
55 | | /* Returns TRUE if 2^x=num, i.e. if num has only a single bit set to 1. */ |
56 | | static inline bool ATTR_CONST |
57 | | bits_is_power_of_two(uint64_t num) |
58 | | { |
59 | | return num != 0 && (num & (num + ~0ULL)) == 0; |
60 | | } |
61 | | |
62 | | unsigned int bits_required8(uint8_t num) ATTR_CONST; |
63 | | |
64 | | static inline |
65 | | unsigned int bits_required16(uint16_t num) |
66 | | { |
67 | | return (num <= 0xff) ? bits_required8(num) |
68 | | : 8 + bits_required8(num >> 8); |
69 | | } |
70 | | static inline |
71 | | unsigned int bits_required32(uint32_t num) |
72 | | { |
73 | | return (num <= 0xffff) ? bits_required16(num) |
74 | | : 16 + bits_required16(num >> 16); |
75 | | } |
76 | | static inline |
77 | | unsigned int bits_required64(uint64_t num) |
78 | | { |
79 | | return (num <= 0xffffffff) ? bits_required32(num) |
80 | | : 32 + bits_required32(num >> 32); |
81 | | } |
82 | | |
83 | | #endif |
84 | | |
85 | | static inline uint64_t ATTR_NO_SANITIZE_INTEGER |
86 | | ATTR_NO_SANITIZE_IMPLICIT_CONVERSION |
87 | | bits_rotl64(uint64_t num, unsigned int count) |
88 | 0 | { |
89 | 0 | const unsigned int mask = CHAR_BIT*sizeof(num) - 1; |
90 | 0 | count &= mask; |
91 | 0 | return (num << count) | (num >> (UNSIGNED_MINUS(count) & mask)); |
92 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_rotl64 Unexecuted instantiation: message-parser.c:bits_rotl64 Unexecuted instantiation: message-size.c:bits_rotl64 Unexecuted instantiation: rfc2231-parser.c:bits_rotl64 Unexecuted instantiation: rfc822-parser.c:bits_rotl64 Unexecuted instantiation: message-header-parser.c:bits_rotl64 Unexecuted instantiation: charset-utf8.c:bits_rotl64 Unexecuted instantiation: charset-iconv.c:bits_rotl64 Unexecuted instantiation: fuzzer.c:bits_rotl64 Unexecuted instantiation: test-istream.c:bits_rotl64 Unexecuted instantiation: array.c:bits_rotl64 Unexecuted instantiation: buffer.c:bits_rotl64 Unexecuted instantiation: data-stack.c:bits_rotl64 Unexecuted instantiation: event-log.c:bits_rotl64 Unexecuted instantiation: failures.c:bits_rotl64 Unexecuted instantiation: fd-util.c:bits_rotl64 Unexecuted instantiation: hostpid.c:bits_rotl64 Unexecuted instantiation: imem.c:bits_rotl64 Unexecuted instantiation: iostream-pump.c:bits_rotl64 Unexecuted instantiation: istream.c:bits_rotl64 Unexecuted instantiation: istream-data.c:bits_rotl64 Unexecuted instantiation: ioloop.c:bits_rotl64 Unexecuted instantiation: ioloop-notify-inotify.c:bits_rotl64 Unexecuted instantiation: ioloop-epoll.c:bits_rotl64 Unexecuted instantiation: lib.c:bits_rotl64 Unexecuted instantiation: lib-event.c:bits_rotl64 Unexecuted instantiation: lib-signals.c:bits_rotl64 Unexecuted instantiation: memarea.c:bits_rotl64 Unexecuted instantiation: mempool.c:bits_rotl64 Unexecuted instantiation: mempool-alloconly.c:bits_rotl64 Unexecuted instantiation: mempool-datastack.c:bits_rotl64 Unexecuted instantiation: mempool-system.c:bits_rotl64 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_rotl64 Unexecuted instantiation: net.c:bits_rotl64 Unexecuted instantiation: ostream.c:bits_rotl64 Unexecuted instantiation: ostream-file.c:bits_rotl64 Unexecuted instantiation: path-util.c:bits_rotl64 Unexecuted instantiation: printf-format-fix.c:bits_rotl64 Unexecuted instantiation: process-title.c:bits_rotl64 Unexecuted instantiation: priorityq.c:bits_rotl64 Unexecuted instantiation: punycode.c:bits_rotl64 Unexecuted instantiation: randgen.c:bits_rotl64 Unexecuted instantiation: rand.c:bits_rotl64 Unexecuted instantiation: restrict-access.c:bits_rotl64 Unexecuted instantiation: safe-memset.c:bits_rotl64 Unexecuted instantiation: sendfile-util.c:bits_rotl64 Unexecuted instantiation: sleep.c:bits_rotl64 Unexecuted instantiation: str.c:bits_rotl64 Unexecuted instantiation: strescape.c:bits_rotl64 Unexecuted instantiation: strfuncs.c:bits_rotl64 Unexecuted instantiation: strnum.c:bits_rotl64 Unexecuted instantiation: time-util.c:bits_rotl64 Unexecuted instantiation: unichar.c:bits_rotl64 Unexecuted instantiation: write-full.c:bits_rotl64 Unexecuted instantiation: backtrace-string.c:bits_rotl64 Unexecuted instantiation: bits.c:bits_rotl64 Unexecuted instantiation: env-util.c:bits_rotl64 Unexecuted instantiation: event-filter.c:bits_rotl64 Unexecuted instantiation: event-filter-lexer.c:bits_rotl64 Unexecuted instantiation: event-filter-parser.c:bits_rotl64 Unexecuted instantiation: hash.c:bits_rotl64 Unexecuted instantiation: ipwd.c:bits_rotl64 Unexecuted instantiation: iostream.c:bits_rotl64 Unexecuted instantiation: istream-file.c:bits_rotl64 Unexecuted instantiation: ioloop-iolist.c:bits_rotl64 Unexecuted instantiation: ioloop-notify-fd.c:bits_rotl64 Unexecuted instantiation: primes.c:bits_rotl64 Unexecuted instantiation: str-parse.c:bits_rotl64 Unexecuted instantiation: wildcard-match.c:bits_rotl64 |
93 | | |
94 | | static inline uint32_t ATTR_NO_SANITIZE_INTEGER |
95 | | ATTR_NO_SANITIZE_IMPLICIT_CONVERSION |
96 | | bits_rotl32(uint32_t num, unsigned int count) |
97 | 0 | { |
98 | 0 | const unsigned int mask = CHAR_BIT*sizeof(num) - 1; |
99 | 0 | count &= mask; |
100 | 0 | return (num << count) | (num >> (UNSIGNED_MINUS(count) & mask)); |
101 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_rotl32 Unexecuted instantiation: message-parser.c:bits_rotl32 Unexecuted instantiation: message-size.c:bits_rotl32 Unexecuted instantiation: rfc2231-parser.c:bits_rotl32 Unexecuted instantiation: rfc822-parser.c:bits_rotl32 Unexecuted instantiation: message-header-parser.c:bits_rotl32 Unexecuted instantiation: charset-utf8.c:bits_rotl32 Unexecuted instantiation: charset-iconv.c:bits_rotl32 Unexecuted instantiation: fuzzer.c:bits_rotl32 Unexecuted instantiation: test-istream.c:bits_rotl32 Unexecuted instantiation: array.c:bits_rotl32 Unexecuted instantiation: buffer.c:bits_rotl32 Unexecuted instantiation: data-stack.c:bits_rotl32 Unexecuted instantiation: event-log.c:bits_rotl32 Unexecuted instantiation: failures.c:bits_rotl32 Unexecuted instantiation: fd-util.c:bits_rotl32 Unexecuted instantiation: hostpid.c:bits_rotl32 Unexecuted instantiation: imem.c:bits_rotl32 Unexecuted instantiation: iostream-pump.c:bits_rotl32 Unexecuted instantiation: istream.c:bits_rotl32 Unexecuted instantiation: istream-data.c:bits_rotl32 Unexecuted instantiation: ioloop.c:bits_rotl32 Unexecuted instantiation: ioloop-notify-inotify.c:bits_rotl32 Unexecuted instantiation: ioloop-epoll.c:bits_rotl32 Unexecuted instantiation: lib.c:bits_rotl32 Unexecuted instantiation: lib-event.c:bits_rotl32 Unexecuted instantiation: lib-signals.c:bits_rotl32 Unexecuted instantiation: memarea.c:bits_rotl32 Unexecuted instantiation: mempool.c:bits_rotl32 Unexecuted instantiation: mempool-alloconly.c:bits_rotl32 Unexecuted instantiation: mempool-datastack.c:bits_rotl32 Unexecuted instantiation: mempool-system.c:bits_rotl32 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_rotl32 Unexecuted instantiation: net.c:bits_rotl32 Unexecuted instantiation: ostream.c:bits_rotl32 Unexecuted instantiation: ostream-file.c:bits_rotl32 Unexecuted instantiation: path-util.c:bits_rotl32 Unexecuted instantiation: printf-format-fix.c:bits_rotl32 Unexecuted instantiation: process-title.c:bits_rotl32 Unexecuted instantiation: priorityq.c:bits_rotl32 Unexecuted instantiation: punycode.c:bits_rotl32 Unexecuted instantiation: randgen.c:bits_rotl32 Unexecuted instantiation: rand.c:bits_rotl32 Unexecuted instantiation: restrict-access.c:bits_rotl32 Unexecuted instantiation: safe-memset.c:bits_rotl32 Unexecuted instantiation: sendfile-util.c:bits_rotl32 Unexecuted instantiation: sleep.c:bits_rotl32 Unexecuted instantiation: str.c:bits_rotl32 Unexecuted instantiation: strescape.c:bits_rotl32 Unexecuted instantiation: strfuncs.c:bits_rotl32 Unexecuted instantiation: strnum.c:bits_rotl32 Unexecuted instantiation: time-util.c:bits_rotl32 Unexecuted instantiation: unichar.c:bits_rotl32 Unexecuted instantiation: write-full.c:bits_rotl32 Unexecuted instantiation: backtrace-string.c:bits_rotl32 Unexecuted instantiation: bits.c:bits_rotl32 Unexecuted instantiation: env-util.c:bits_rotl32 Unexecuted instantiation: event-filter.c:bits_rotl32 Unexecuted instantiation: event-filter-lexer.c:bits_rotl32 Unexecuted instantiation: event-filter-parser.c:bits_rotl32 Unexecuted instantiation: hash.c:bits_rotl32 Unexecuted instantiation: ipwd.c:bits_rotl32 Unexecuted instantiation: iostream.c:bits_rotl32 Unexecuted instantiation: istream-file.c:bits_rotl32 Unexecuted instantiation: ioloop-iolist.c:bits_rotl32 Unexecuted instantiation: ioloop-notify-fd.c:bits_rotl32 Unexecuted instantiation: primes.c:bits_rotl32 Unexecuted instantiation: str-parse.c:bits_rotl32 Unexecuted instantiation: wildcard-match.c:bits_rotl32 |
102 | | |
103 | | static inline uint64_t ATTR_NO_SANITIZE_INTEGER |
104 | | ATTR_NO_SANITIZE_IMPLICIT_CONVERSION |
105 | | bits_rotr64(uint64_t num, unsigned int count) |
106 | 0 | { |
107 | 0 | const unsigned int mask = CHAR_BIT*sizeof(num) - 1; |
108 | 0 | count &= mask; |
109 | 0 | return (num >> count) | (num << (UNSIGNED_MINUS(count) & mask)); |
110 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_rotr64 Unexecuted instantiation: message-parser.c:bits_rotr64 Unexecuted instantiation: message-size.c:bits_rotr64 Unexecuted instantiation: rfc2231-parser.c:bits_rotr64 Unexecuted instantiation: rfc822-parser.c:bits_rotr64 Unexecuted instantiation: message-header-parser.c:bits_rotr64 Unexecuted instantiation: charset-utf8.c:bits_rotr64 Unexecuted instantiation: charset-iconv.c:bits_rotr64 Unexecuted instantiation: fuzzer.c:bits_rotr64 Unexecuted instantiation: test-istream.c:bits_rotr64 Unexecuted instantiation: array.c:bits_rotr64 Unexecuted instantiation: buffer.c:bits_rotr64 Unexecuted instantiation: data-stack.c:bits_rotr64 Unexecuted instantiation: event-log.c:bits_rotr64 Unexecuted instantiation: failures.c:bits_rotr64 Unexecuted instantiation: fd-util.c:bits_rotr64 Unexecuted instantiation: hostpid.c:bits_rotr64 Unexecuted instantiation: imem.c:bits_rotr64 Unexecuted instantiation: iostream-pump.c:bits_rotr64 Unexecuted instantiation: istream.c:bits_rotr64 Unexecuted instantiation: istream-data.c:bits_rotr64 Unexecuted instantiation: ioloop.c:bits_rotr64 Unexecuted instantiation: ioloop-notify-inotify.c:bits_rotr64 Unexecuted instantiation: ioloop-epoll.c:bits_rotr64 Unexecuted instantiation: lib.c:bits_rotr64 Unexecuted instantiation: lib-event.c:bits_rotr64 Unexecuted instantiation: lib-signals.c:bits_rotr64 Unexecuted instantiation: memarea.c:bits_rotr64 Unexecuted instantiation: mempool.c:bits_rotr64 Unexecuted instantiation: mempool-alloconly.c:bits_rotr64 Unexecuted instantiation: mempool-datastack.c:bits_rotr64 Unexecuted instantiation: mempool-system.c:bits_rotr64 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_rotr64 Unexecuted instantiation: net.c:bits_rotr64 Unexecuted instantiation: ostream.c:bits_rotr64 Unexecuted instantiation: ostream-file.c:bits_rotr64 Unexecuted instantiation: path-util.c:bits_rotr64 Unexecuted instantiation: printf-format-fix.c:bits_rotr64 Unexecuted instantiation: process-title.c:bits_rotr64 Unexecuted instantiation: priorityq.c:bits_rotr64 Unexecuted instantiation: punycode.c:bits_rotr64 Unexecuted instantiation: randgen.c:bits_rotr64 Unexecuted instantiation: rand.c:bits_rotr64 Unexecuted instantiation: restrict-access.c:bits_rotr64 Unexecuted instantiation: safe-memset.c:bits_rotr64 Unexecuted instantiation: sendfile-util.c:bits_rotr64 Unexecuted instantiation: sleep.c:bits_rotr64 Unexecuted instantiation: str.c:bits_rotr64 Unexecuted instantiation: strescape.c:bits_rotr64 Unexecuted instantiation: strfuncs.c:bits_rotr64 Unexecuted instantiation: strnum.c:bits_rotr64 Unexecuted instantiation: time-util.c:bits_rotr64 Unexecuted instantiation: unichar.c:bits_rotr64 Unexecuted instantiation: write-full.c:bits_rotr64 Unexecuted instantiation: backtrace-string.c:bits_rotr64 Unexecuted instantiation: bits.c:bits_rotr64 Unexecuted instantiation: env-util.c:bits_rotr64 Unexecuted instantiation: event-filter.c:bits_rotr64 Unexecuted instantiation: event-filter-lexer.c:bits_rotr64 Unexecuted instantiation: event-filter-parser.c:bits_rotr64 Unexecuted instantiation: hash.c:bits_rotr64 Unexecuted instantiation: ipwd.c:bits_rotr64 Unexecuted instantiation: iostream.c:bits_rotr64 Unexecuted instantiation: istream-file.c:bits_rotr64 Unexecuted instantiation: ioloop-iolist.c:bits_rotr64 Unexecuted instantiation: ioloop-notify-fd.c:bits_rotr64 Unexecuted instantiation: primes.c:bits_rotr64 Unexecuted instantiation: str-parse.c:bits_rotr64 Unexecuted instantiation: wildcard-match.c:bits_rotr64 |
111 | | |
112 | | static inline uint32_t ATTR_NO_SANITIZE_INTEGER |
113 | | ATTR_NO_SANITIZE_IMPLICIT_CONVERSION |
114 | | bits_rotr32(uint32_t num, unsigned int count) |
115 | 0 | { |
116 | 0 | const unsigned int mask = CHAR_BIT*sizeof(num) - 1; |
117 | 0 | count &= mask; |
118 | 0 | return (num >> count) | (num << (UNSIGNED_MINUS(count) & mask)); |
119 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_rotr32 Unexecuted instantiation: message-parser.c:bits_rotr32 Unexecuted instantiation: message-size.c:bits_rotr32 Unexecuted instantiation: rfc2231-parser.c:bits_rotr32 Unexecuted instantiation: rfc822-parser.c:bits_rotr32 Unexecuted instantiation: message-header-parser.c:bits_rotr32 Unexecuted instantiation: charset-utf8.c:bits_rotr32 Unexecuted instantiation: charset-iconv.c:bits_rotr32 Unexecuted instantiation: fuzzer.c:bits_rotr32 Unexecuted instantiation: test-istream.c:bits_rotr32 Unexecuted instantiation: array.c:bits_rotr32 Unexecuted instantiation: buffer.c:bits_rotr32 Unexecuted instantiation: data-stack.c:bits_rotr32 Unexecuted instantiation: event-log.c:bits_rotr32 Unexecuted instantiation: failures.c:bits_rotr32 Unexecuted instantiation: fd-util.c:bits_rotr32 Unexecuted instantiation: hostpid.c:bits_rotr32 Unexecuted instantiation: imem.c:bits_rotr32 Unexecuted instantiation: iostream-pump.c:bits_rotr32 Unexecuted instantiation: istream.c:bits_rotr32 Unexecuted instantiation: istream-data.c:bits_rotr32 Unexecuted instantiation: ioloop.c:bits_rotr32 Unexecuted instantiation: ioloop-notify-inotify.c:bits_rotr32 Unexecuted instantiation: ioloop-epoll.c:bits_rotr32 Unexecuted instantiation: lib.c:bits_rotr32 Unexecuted instantiation: lib-event.c:bits_rotr32 Unexecuted instantiation: lib-signals.c:bits_rotr32 Unexecuted instantiation: memarea.c:bits_rotr32 Unexecuted instantiation: mempool.c:bits_rotr32 Unexecuted instantiation: mempool-alloconly.c:bits_rotr32 Unexecuted instantiation: mempool-datastack.c:bits_rotr32 Unexecuted instantiation: mempool-system.c:bits_rotr32 Unexecuted instantiation: mempool-unsafe-datastack.c:bits_rotr32 Unexecuted instantiation: net.c:bits_rotr32 Unexecuted instantiation: ostream.c:bits_rotr32 Unexecuted instantiation: ostream-file.c:bits_rotr32 Unexecuted instantiation: path-util.c:bits_rotr32 Unexecuted instantiation: printf-format-fix.c:bits_rotr32 Unexecuted instantiation: process-title.c:bits_rotr32 Unexecuted instantiation: priorityq.c:bits_rotr32 Unexecuted instantiation: punycode.c:bits_rotr32 Unexecuted instantiation: randgen.c:bits_rotr32 Unexecuted instantiation: rand.c:bits_rotr32 Unexecuted instantiation: restrict-access.c:bits_rotr32 Unexecuted instantiation: safe-memset.c:bits_rotr32 Unexecuted instantiation: sendfile-util.c:bits_rotr32 Unexecuted instantiation: sleep.c:bits_rotr32 Unexecuted instantiation: str.c:bits_rotr32 Unexecuted instantiation: strescape.c:bits_rotr32 Unexecuted instantiation: strfuncs.c:bits_rotr32 Unexecuted instantiation: strnum.c:bits_rotr32 Unexecuted instantiation: time-util.c:bits_rotr32 Unexecuted instantiation: unichar.c:bits_rotr32 Unexecuted instantiation: write-full.c:bits_rotr32 Unexecuted instantiation: backtrace-string.c:bits_rotr32 Unexecuted instantiation: bits.c:bits_rotr32 Unexecuted instantiation: env-util.c:bits_rotr32 Unexecuted instantiation: event-filter.c:bits_rotr32 Unexecuted instantiation: event-filter-lexer.c:bits_rotr32 Unexecuted instantiation: event-filter-parser.c:bits_rotr32 Unexecuted instantiation: hash.c:bits_rotr32 Unexecuted instantiation: ipwd.c:bits_rotr32 Unexecuted instantiation: iostream.c:bits_rotr32 Unexecuted instantiation: istream-file.c:bits_rotr32 Unexecuted instantiation: ioloop-iolist.c:bits_rotr32 Unexecuted instantiation: ioloop-notify-fd.c:bits_rotr32 Unexecuted instantiation: primes.c:bits_rotr32 Unexecuted instantiation: str-parse.c:bits_rotr32 Unexecuted instantiation: wildcard-match.c:bits_rotr32 |
120 | | |
121 | | /* These functions look too big to be inline, but in almost all expected |
122 | | uses, 'fracbits' will be a compile-time constant, and most of the |
123 | | expressions will simplify greatly. |
124 | | */ |
125 | | |
126 | | /* Perform a piecewise-linear approximation to a log2, with fracbits "fractional" bits. |
127 | | Best explained with examples: |
128 | | With 2 fractional bits splitting each power of 2 into 4 bands: |
129 | | 00, 01, 10, 11 -> 00, 01, 10, 11 (small corner cases) |
130 | | 100, 101, 110, 111 -> 100, 101, 110, 111 ([4-8) split into 4 bands) |
131 | | 1000, 1001, 1010, 1011 -> 1000, 1000, 1001, 1001 ([8-15) split ... |
132 | | 1100, 1101, 1110, 1111 -> 1010, 1010, 1011, 1011 ... into 4 bands) |
133 | | [16..31) -> 11bb |
134 | | [32..63) -> 100bb |
135 | | [64..127) -> 101bb |
136 | | [128..255) -> 110bb |
137 | | e.g. 236 = 11101100 -> ((8-2)<<2 == 11000) + (111.....>> 5 == 111) - 100 == 11011 |
138 | | */ |
139 | | static inline unsigned int ATTR_CONST |
140 | | bits_fraclog(unsigned int val, unsigned int fracbits) |
141 | 0 | { |
142 | 0 | unsigned int bits = bits_required32(val); |
143 | 0 | if (bits <= fracbits + 1) |
144 | 0 | return val; |
145 | 0 |
|
146 | 0 | unsigned int bandnum = bits - fracbits; |
147 | 0 | unsigned int bandstart = bandnum << fracbits; |
148 | 0 | unsigned int fracoffsbad = val >> (bandnum - 1); /* has leading 1 still */ |
149 | 0 | unsigned int bucket = bandstart + fracoffsbad - BIT(fracbits); |
150 | 0 | return bucket; |
151 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_fraclog Unexecuted instantiation: message-parser.c:bits_fraclog Unexecuted instantiation: message-size.c:bits_fraclog Unexecuted instantiation: rfc2231-parser.c:bits_fraclog Unexecuted instantiation: rfc822-parser.c:bits_fraclog Unexecuted instantiation: message-header-parser.c:bits_fraclog Unexecuted instantiation: charset-utf8.c:bits_fraclog Unexecuted instantiation: charset-iconv.c:bits_fraclog Unexecuted instantiation: fuzzer.c:bits_fraclog Unexecuted instantiation: test-istream.c:bits_fraclog Unexecuted instantiation: array.c:bits_fraclog Unexecuted instantiation: buffer.c:bits_fraclog Unexecuted instantiation: data-stack.c:bits_fraclog Unexecuted instantiation: event-log.c:bits_fraclog Unexecuted instantiation: failures.c:bits_fraclog Unexecuted instantiation: fd-util.c:bits_fraclog Unexecuted instantiation: hostpid.c:bits_fraclog Unexecuted instantiation: imem.c:bits_fraclog Unexecuted instantiation: iostream-pump.c:bits_fraclog Unexecuted instantiation: istream.c:bits_fraclog Unexecuted instantiation: istream-data.c:bits_fraclog Unexecuted instantiation: ioloop.c:bits_fraclog Unexecuted instantiation: ioloop-notify-inotify.c:bits_fraclog Unexecuted instantiation: ioloop-epoll.c:bits_fraclog Unexecuted instantiation: lib.c:bits_fraclog Unexecuted instantiation: lib-event.c:bits_fraclog Unexecuted instantiation: lib-signals.c:bits_fraclog Unexecuted instantiation: memarea.c:bits_fraclog Unexecuted instantiation: mempool.c:bits_fraclog Unexecuted instantiation: mempool-alloconly.c:bits_fraclog Unexecuted instantiation: mempool-datastack.c:bits_fraclog Unexecuted instantiation: mempool-system.c:bits_fraclog Unexecuted instantiation: mempool-unsafe-datastack.c:bits_fraclog Unexecuted instantiation: net.c:bits_fraclog Unexecuted instantiation: ostream.c:bits_fraclog Unexecuted instantiation: ostream-file.c:bits_fraclog Unexecuted instantiation: path-util.c:bits_fraclog Unexecuted instantiation: printf-format-fix.c:bits_fraclog Unexecuted instantiation: process-title.c:bits_fraclog Unexecuted instantiation: priorityq.c:bits_fraclog Unexecuted instantiation: punycode.c:bits_fraclog Unexecuted instantiation: randgen.c:bits_fraclog Unexecuted instantiation: rand.c:bits_fraclog Unexecuted instantiation: restrict-access.c:bits_fraclog Unexecuted instantiation: safe-memset.c:bits_fraclog Unexecuted instantiation: sendfile-util.c:bits_fraclog Unexecuted instantiation: sleep.c:bits_fraclog Unexecuted instantiation: str.c:bits_fraclog Unexecuted instantiation: strescape.c:bits_fraclog Unexecuted instantiation: strfuncs.c:bits_fraclog Unexecuted instantiation: strnum.c:bits_fraclog Unexecuted instantiation: time-util.c:bits_fraclog Unexecuted instantiation: unichar.c:bits_fraclog Unexecuted instantiation: write-full.c:bits_fraclog Unexecuted instantiation: backtrace-string.c:bits_fraclog Unexecuted instantiation: bits.c:bits_fraclog Unexecuted instantiation: env-util.c:bits_fraclog Unexecuted instantiation: event-filter.c:bits_fraclog Unexecuted instantiation: event-filter-lexer.c:bits_fraclog Unexecuted instantiation: event-filter-parser.c:bits_fraclog Unexecuted instantiation: hash.c:bits_fraclog Unexecuted instantiation: ipwd.c:bits_fraclog Unexecuted instantiation: iostream.c:bits_fraclog Unexecuted instantiation: istream-file.c:bits_fraclog Unexecuted instantiation: ioloop-iolist.c:bits_fraclog Unexecuted instantiation: ioloop-notify-fd.c:bits_fraclog Unexecuted instantiation: primes.c:bits_fraclog Unexecuted instantiation: str-parse.c:bits_fraclog Unexecuted instantiation: wildcard-match.c:bits_fraclog |
152 | | static inline unsigned int ATTR_CONST |
153 | | bits_fraclog_bucket_start(unsigned int bucket, unsigned int fracbits) |
154 | 0 | { |
155 | 0 | unsigned int bandnum = bucket >> fracbits; |
156 | 0 | if (bandnum <= 1) |
157 | 0 | return bucket; |
158 | 0 | if (fracbits == 0) |
159 | 0 | return BIT(bucket - 1); |
160 | 0 | unsigned int fracoffs = bucket & (BIT(fracbits)-1); |
161 | 0 | unsigned int fracoffs1 = BIT(fracbits) + fracoffs; |
162 | 0 | unsigned int bandstart = fracoffs1 << (bandnum - 1); |
163 | 0 | return bandstart; |
164 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_fraclog_bucket_start Unexecuted instantiation: message-parser.c:bits_fraclog_bucket_start Unexecuted instantiation: message-size.c:bits_fraclog_bucket_start Unexecuted instantiation: rfc2231-parser.c:bits_fraclog_bucket_start Unexecuted instantiation: rfc822-parser.c:bits_fraclog_bucket_start Unexecuted instantiation: message-header-parser.c:bits_fraclog_bucket_start Unexecuted instantiation: charset-utf8.c:bits_fraclog_bucket_start Unexecuted instantiation: charset-iconv.c:bits_fraclog_bucket_start Unexecuted instantiation: fuzzer.c:bits_fraclog_bucket_start Unexecuted instantiation: test-istream.c:bits_fraclog_bucket_start Unexecuted instantiation: array.c:bits_fraclog_bucket_start Unexecuted instantiation: buffer.c:bits_fraclog_bucket_start Unexecuted instantiation: data-stack.c:bits_fraclog_bucket_start Unexecuted instantiation: event-log.c:bits_fraclog_bucket_start Unexecuted instantiation: failures.c:bits_fraclog_bucket_start Unexecuted instantiation: fd-util.c:bits_fraclog_bucket_start Unexecuted instantiation: hostpid.c:bits_fraclog_bucket_start Unexecuted instantiation: imem.c:bits_fraclog_bucket_start Unexecuted instantiation: iostream-pump.c:bits_fraclog_bucket_start Unexecuted instantiation: istream.c:bits_fraclog_bucket_start Unexecuted instantiation: istream-data.c:bits_fraclog_bucket_start Unexecuted instantiation: ioloop.c:bits_fraclog_bucket_start Unexecuted instantiation: ioloop-notify-inotify.c:bits_fraclog_bucket_start Unexecuted instantiation: ioloop-epoll.c:bits_fraclog_bucket_start Unexecuted instantiation: lib.c:bits_fraclog_bucket_start Unexecuted instantiation: lib-event.c:bits_fraclog_bucket_start Unexecuted instantiation: lib-signals.c:bits_fraclog_bucket_start Unexecuted instantiation: memarea.c:bits_fraclog_bucket_start Unexecuted instantiation: mempool.c:bits_fraclog_bucket_start Unexecuted instantiation: mempool-alloconly.c:bits_fraclog_bucket_start Unexecuted instantiation: mempool-datastack.c:bits_fraclog_bucket_start Unexecuted instantiation: mempool-system.c:bits_fraclog_bucket_start Unexecuted instantiation: mempool-unsafe-datastack.c:bits_fraclog_bucket_start Unexecuted instantiation: net.c:bits_fraclog_bucket_start Unexecuted instantiation: ostream.c:bits_fraclog_bucket_start Unexecuted instantiation: ostream-file.c:bits_fraclog_bucket_start Unexecuted instantiation: path-util.c:bits_fraclog_bucket_start Unexecuted instantiation: printf-format-fix.c:bits_fraclog_bucket_start Unexecuted instantiation: process-title.c:bits_fraclog_bucket_start Unexecuted instantiation: priorityq.c:bits_fraclog_bucket_start Unexecuted instantiation: punycode.c:bits_fraclog_bucket_start Unexecuted instantiation: randgen.c:bits_fraclog_bucket_start Unexecuted instantiation: rand.c:bits_fraclog_bucket_start Unexecuted instantiation: restrict-access.c:bits_fraclog_bucket_start Unexecuted instantiation: safe-memset.c:bits_fraclog_bucket_start Unexecuted instantiation: sendfile-util.c:bits_fraclog_bucket_start Unexecuted instantiation: sleep.c:bits_fraclog_bucket_start Unexecuted instantiation: str.c:bits_fraclog_bucket_start Unexecuted instantiation: strescape.c:bits_fraclog_bucket_start Unexecuted instantiation: strfuncs.c:bits_fraclog_bucket_start Unexecuted instantiation: strnum.c:bits_fraclog_bucket_start Unexecuted instantiation: time-util.c:bits_fraclog_bucket_start Unexecuted instantiation: unichar.c:bits_fraclog_bucket_start Unexecuted instantiation: write-full.c:bits_fraclog_bucket_start Unexecuted instantiation: backtrace-string.c:bits_fraclog_bucket_start Unexecuted instantiation: bits.c:bits_fraclog_bucket_start Unexecuted instantiation: env-util.c:bits_fraclog_bucket_start Unexecuted instantiation: event-filter.c:bits_fraclog_bucket_start Unexecuted instantiation: event-filter-lexer.c:bits_fraclog_bucket_start Unexecuted instantiation: event-filter-parser.c:bits_fraclog_bucket_start Unexecuted instantiation: hash.c:bits_fraclog_bucket_start Unexecuted instantiation: ipwd.c:bits_fraclog_bucket_start Unexecuted instantiation: iostream.c:bits_fraclog_bucket_start Unexecuted instantiation: istream-file.c:bits_fraclog_bucket_start Unexecuted instantiation: ioloop-iolist.c:bits_fraclog_bucket_start Unexecuted instantiation: ioloop-notify-fd.c:bits_fraclog_bucket_start Unexecuted instantiation: primes.c:bits_fraclog_bucket_start Unexecuted instantiation: str-parse.c:bits_fraclog_bucket_start Unexecuted instantiation: wildcard-match.c:bits_fraclog_bucket_start |
165 | | static inline unsigned int ATTR_CONST ATTR_NO_SANITIZE_INTEGER |
166 | | ATTR_NO_SANITIZE_IMPLICIT_CONVERSION |
167 | | bits_fraclog_bucket_end(unsigned int bucket, unsigned int fracbits) |
168 | 0 | { |
169 | 0 | unsigned int bandnum = bucket >> fracbits; |
170 | 0 | if (bandnum <= 1) |
171 | 0 | return bucket; |
172 | 0 | if (fracbits == 0) |
173 | 0 | return BIT(bucket - 1) * 2 - 1; |
174 | 0 | unsigned int fracoffs = bucket & (BIT(fracbits)-1); |
175 | 0 | unsigned int nextfracoffs1 = 1 + BIT(fracbits) + fracoffs; |
176 | 0 | unsigned int nextbandstart = nextfracoffs1 << (bandnum - 1); |
177 | 0 | return nextbandstart - 1; |
178 | 0 | } Unexecuted instantiation: fuzz-message-parser.c:bits_fraclog_bucket_end Unexecuted instantiation: message-parser.c:bits_fraclog_bucket_end Unexecuted instantiation: message-size.c:bits_fraclog_bucket_end Unexecuted instantiation: rfc2231-parser.c:bits_fraclog_bucket_end Unexecuted instantiation: rfc822-parser.c:bits_fraclog_bucket_end Unexecuted instantiation: message-header-parser.c:bits_fraclog_bucket_end Unexecuted instantiation: charset-utf8.c:bits_fraclog_bucket_end Unexecuted instantiation: charset-iconv.c:bits_fraclog_bucket_end Unexecuted instantiation: fuzzer.c:bits_fraclog_bucket_end Unexecuted instantiation: test-istream.c:bits_fraclog_bucket_end Unexecuted instantiation: array.c:bits_fraclog_bucket_end Unexecuted instantiation: buffer.c:bits_fraclog_bucket_end Unexecuted instantiation: data-stack.c:bits_fraclog_bucket_end Unexecuted instantiation: event-log.c:bits_fraclog_bucket_end Unexecuted instantiation: failures.c:bits_fraclog_bucket_end Unexecuted instantiation: fd-util.c:bits_fraclog_bucket_end Unexecuted instantiation: hostpid.c:bits_fraclog_bucket_end Unexecuted instantiation: imem.c:bits_fraclog_bucket_end Unexecuted instantiation: iostream-pump.c:bits_fraclog_bucket_end Unexecuted instantiation: istream.c:bits_fraclog_bucket_end Unexecuted instantiation: istream-data.c:bits_fraclog_bucket_end Unexecuted instantiation: ioloop.c:bits_fraclog_bucket_end Unexecuted instantiation: ioloop-notify-inotify.c:bits_fraclog_bucket_end Unexecuted instantiation: ioloop-epoll.c:bits_fraclog_bucket_end Unexecuted instantiation: lib.c:bits_fraclog_bucket_end Unexecuted instantiation: lib-event.c:bits_fraclog_bucket_end Unexecuted instantiation: lib-signals.c:bits_fraclog_bucket_end Unexecuted instantiation: memarea.c:bits_fraclog_bucket_end Unexecuted instantiation: mempool.c:bits_fraclog_bucket_end Unexecuted instantiation: mempool-alloconly.c:bits_fraclog_bucket_end Unexecuted instantiation: mempool-datastack.c:bits_fraclog_bucket_end Unexecuted instantiation: mempool-system.c:bits_fraclog_bucket_end Unexecuted instantiation: mempool-unsafe-datastack.c:bits_fraclog_bucket_end Unexecuted instantiation: net.c:bits_fraclog_bucket_end Unexecuted instantiation: ostream.c:bits_fraclog_bucket_end Unexecuted instantiation: ostream-file.c:bits_fraclog_bucket_end Unexecuted instantiation: path-util.c:bits_fraclog_bucket_end Unexecuted instantiation: printf-format-fix.c:bits_fraclog_bucket_end Unexecuted instantiation: process-title.c:bits_fraclog_bucket_end Unexecuted instantiation: priorityq.c:bits_fraclog_bucket_end Unexecuted instantiation: punycode.c:bits_fraclog_bucket_end Unexecuted instantiation: randgen.c:bits_fraclog_bucket_end Unexecuted instantiation: rand.c:bits_fraclog_bucket_end Unexecuted instantiation: restrict-access.c:bits_fraclog_bucket_end Unexecuted instantiation: safe-memset.c:bits_fraclog_bucket_end Unexecuted instantiation: sendfile-util.c:bits_fraclog_bucket_end Unexecuted instantiation: sleep.c:bits_fraclog_bucket_end Unexecuted instantiation: str.c:bits_fraclog_bucket_end Unexecuted instantiation: strescape.c:bits_fraclog_bucket_end Unexecuted instantiation: strfuncs.c:bits_fraclog_bucket_end Unexecuted instantiation: strnum.c:bits_fraclog_bucket_end Unexecuted instantiation: time-util.c:bits_fraclog_bucket_end Unexecuted instantiation: unichar.c:bits_fraclog_bucket_end Unexecuted instantiation: write-full.c:bits_fraclog_bucket_end Unexecuted instantiation: backtrace-string.c:bits_fraclog_bucket_end Unexecuted instantiation: bits.c:bits_fraclog_bucket_end Unexecuted instantiation: env-util.c:bits_fraclog_bucket_end Unexecuted instantiation: event-filter.c:bits_fraclog_bucket_end Unexecuted instantiation: event-filter-lexer.c:bits_fraclog_bucket_end Unexecuted instantiation: event-filter-parser.c:bits_fraclog_bucket_end Unexecuted instantiation: hash.c:bits_fraclog_bucket_end Unexecuted instantiation: ipwd.c:bits_fraclog_bucket_end Unexecuted instantiation: iostream.c:bits_fraclog_bucket_end Unexecuted instantiation: istream-file.c:bits_fraclog_bucket_end Unexecuted instantiation: ioloop-iolist.c:bits_fraclog_bucket_end Unexecuted instantiation: ioloop-notify-fd.c:bits_fraclog_bucket_end Unexecuted instantiation: primes.c:bits_fraclog_bucket_end Unexecuted instantiation: str-parse.c:bits_fraclog_bucket_end Unexecuted instantiation: wildcard-match.c:bits_fraclog_bucket_end |
179 | | /* UNSAFE: multiple use of parameter (but expecting a constant in reality). |
180 | | But a macro as it's most likely to be used to declare an array size. |
181 | | */ |
182 | | #define BITS_FRACLOG_BUCKETS(bits) ((33u - (bits)) << (bits)) |
183 | | |
184 | | #endif |