Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

Testing with TEST_LENGTH = 32

test _bit_byte, _bit_mask, and bitstr_size
  i   _bit_byte(i)   _bit_mask(i) bitstr_size(i)
  0              0              1              0
  1              0              2              1
  2              0              4              1
  3              0              8              1
  4              0             16              1
  5              0             32              1
  6              0             64              1
  7              0            128              1
  8              1              1              1
  9              1              2              2
 10              1              4              2
 11              1              8              2
 12              1             16              2
 13              1             32              2
 14              1             64              2
 15              1            128              2
 16              2              1              2
 17              2              2              3
 18              2              4              3
 19              2              8              3
 20              2             16              3
 21              2             32              3
 22              2             64              3
 23              2            128              3
 24              3              1              3
 25              3              2              4
 26              3              4              4
 27              3              8              4
 28              3             16              4
 29              3             32              4
 30              3             64              4
 31              3            128              4

test bit_alloc, clearbits, bit_ffc, bit_ffs
be:   0  -1 00000000000000000000000000000000
is:   0  -1 00000000000000000000000000000000

test bit_set
be:   1   0 10010010010010010010010010010010
is:   1   0 10010010010010010010010010010010

test bit_clear
be:   0   3 00010000010000010000010000010000
is:   0   3 00010000010000010000010000010000

test bit_test using previous bitstring
  i    bit_test(i)
  0              0
  1              0
  2              0
  3              8
  4              0
  5              0
  6              0
  7              0
  8              0
  9              2
 10              0
 11              0
 12              0
 13              0
 14              0
 15            128
 16              0
 17              0
 18              0
 19              0
 20              0
 21             32
 22              0
 23              0
 24              0
 25              0
 26              0
 27              8
 28              0
 29              0
 30              0
 31              0

test clearbits
be:   0  -1 00000000000000000000000000000000
is:   0  -1 00000000000000000000000000000000

test bit_nset and bit_nclear
be:   0   1 01111111111111111111111111111110
is:   0   1 01111111111111111111111111111110
be:   0   1 01000000000000000000000000000010
is:   0   1 01000000000000000000000000000010
be:   0  -1 00000000000000000000000000000000
is:   0  -1 00000000000000000000000000000000
be:  31   0 11111111111111111111111111111110
is:  31   0 11111111111111111111111111111110
be:   0  -1 00000000000000000000000000000000
is:   0  -1 00000000000000000000000000000000

first 1 bit should move right 1 position each line
  0  -1   0 11111111111111111111111111111111
  1   0   1 01111111111111111111111111111111
  2   0   2 00111111111111111111111111111111
  3   0   3 00011111111111111111111111111111
  4   0   4 00001111111111111111111111111111
  5   0   5 00000111111111111111111111111111
  6   0   6 00000011111111111111111111111111
  7   0   7 00000001111111111111111111111111
  8   0   8 00000000111111111111111111111111
  9   0   9 00000000011111111111111111111111
 10   0  10 00000000001111111111111111111111
 11   0  11 00000000000111111111111111111111
 12   0  12 00000000000011111111111111111111
 13   0  13 00000000000001111111111111111111
 14   0  14 00000000000000111111111111111111
 15   0  15 00000000000000011111111111111111
 16   0  16 00000000000000001111111111111111
 17   0  17 00000000000000000111111111111111
 18   0  18 00000000000000000011111111111111
 19   0  19 00000000000000000001111111111111
 20   0  20 00000000000000000000111111111111
 21   0  21 00000000000000000000011111111111
 22   0  22 00000000000000000000001111111111
 23   0  23 00000000000000000000000111111111
 24   0  24 00000000000000000000000011111111
 25   0  25 00000000000000000000000001111111
 26   0  26 00000000000000000000000000111111
 27   0  27 00000000000000000000000000011111
 28   0  28 00000000000000000000000000001111
 29   0  29 00000000000000000000000000000111
 30   0  30 00000000000000000000000000000011
 31   0  31 00000000000000000000000000000001

first 0 bit should move right 1 position each line
  0   0  -1 00000000000000000000000000000000
  1   1   0 10000000000000000000000000000000
  2   2   0 11000000000000000000000000000000
  3   3   0 11100000000000000000000000000000
  4   4   0 11110000000000000000000000000000
  5   5   0 11111000000000000000000000000000
  6   6   0 11111100000000000000000000000000
  7   7   0 11111110000000000000000000000000
  8   8   0 11111111000000000000000000000000
  9   9   0 11111111100000000000000000000000
 10  10   0 11111111110000000000000000000000
 11  11   0 11111111111000000000000000000000
 12  12   0 11111111111100000000000000000000
 13  13   0 11111111111110000000000000000000
 14  14   0 11111111111111000000000000000000
 15  15   0 11111111111111100000000000000000
 16  16   0 11111111111111110000000000000000
 17  17   0 11111111111111111000000000000000
 18  18   0 11111111111111111100000000000000
 19  19   0 11111111111111111110000000000000
 20  20   0 11111111111111111111000000000000
 21  21   0 11111111111111111111100000000000
 22  22   0 11111111111111111111110000000000
 23  23   0 11111111111111111111111000000000
 24  24   0 11111111111111111111111100000000
 25  25   0 11111111111111111111111110000000
 26  26   0 11111111111111111111111111000000
 27  27   0 11111111111111111111111111100000
 28  28   0 11111111111111111111111111110000
 29  29   0 11111111111111111111111111111000
 30  30   0 11111111111111111111111111111100
 31  31   0 11111111111111111111111111111110

first 0 bit should move left 1 position each line
  0  -1   0 11111111111111111111111111111111
  1  31   0 11111111111111111111111111111110
  2  30   0 11111111111111111111111111111100
  3  29   0 11111111111111111111111111111000
  4  28   0 11111111111111111111111111110000
  5  27   0 11111111111111111111111111100000
  6  26   0 11111111111111111111111111000000
  7  25   0 11111111111111111111111110000000
  8  24   0 11111111111111111111111100000000
  9  23   0 11111111111111111111111000000000
 10  22   0 11111111111111111111110000000000
 11  21   0 11111111111111111111100000000000
 12  20   0 11111111111111111111000000000000
 13  19   0 11111111111111111110000000000000
 14  18   0 11111111111111111100000000000000
 15  17   0 11111111111111111000000000000000
 16  16   0 11111111111111110000000000000000
 17  15   0 11111111111111100000000000000000
 18  14   0 11111111111111000000000000000000
 19  13   0 11111111111110000000000000000000
 20  12   0 11111111111100000000000000000000
 21  11   0 11111111111000000000000000000000
 22  10   0 11111111110000000000000000000000
 23   9   0 11111111100000000000000000000000
 24   8   0 11111111000000000000000000000000
 25   7   0 11111110000000000000000000000000
 26   6   0 11111100000000000000000000000000
 27   5   0 11111000000000000000000000000000
 28   4   0 11110000000000000000000000000000
 29   3   0 11100000000000000000000000000000
 30   2   0 11000000000000000000000000000000
 31   1   0 10000000000000000000000000000000

first 1 bit should move left 1 position each line
  0   0  -1 00000000000000000000000000000000
  1   0  31 00000000000000000000000000000001
  2   0  30 00000000000000000000000000000011
  3   0  29 00000000000000000000000000000111
  4   0  28 00000000000000000000000000001111
  5   0  27 00000000000000000000000000011111
  6   0  26 00000000000000000000000000111111
  7   0  25 00000000000000000000000001111111
  8   0  24 00000000000000000000000011111111
  9   0  23 00000000000000000000000111111111
 10   0  22 00000000000000000000001111111111
 11   0  21 00000000000000000000011111111111
 12   0  20 00000000000000000000111111111111
 13   0  19 00000000000000000001111111111111
 14   0  18 00000000000000000011111111111111
 15   0  17 00000000000000000111111111111111
 16   0  16 00000000000000001111111111111111
 17   0  15 00000000000000011111111111111111
 18   0  14 00000000000000111111111111111111
 19   0  13 00000000000001111111111111111111
 20   0  12 00000000000011111111111111111111
 21   0  11 00000000000111111111111111111111
 22   0  10 00000000001111111111111111111111
 23   0   9 00000000011111111111111111111111
 24   0   8 00000000111111111111111111111111
 25   0   7 00000001111111111111111111111111
 26   0   6 00000011111111111111111111111111
 27   0   5 00000111111111111111111111111111
 28   0   4 00001111111111111111111111111111
 29   0   3 00011111111111111111111111111111
 30   0   2 00111111111111111111111111111111
 31   0   1 01111111111111111111111111111111

0 bit should move right 1 position each line
  0   0   1 01111111111111111111111111111111
  1   1   0 10111111111111111111111111111111
  2   2   0 11011111111111111111111111111111
  3   3   0 11101111111111111111111111111111
  4   4   0 11110111111111111111111111111111
  5   5   0 11111011111111111111111111111111
  6   6   0 11111101111111111111111111111111
  7   7   0 11111110111111111111111111111111
  8   8   0 11111111011111111111111111111111
  9   9   0 11111111101111111111111111111111
 10  10   0 11111111110111111111111111111111
 11  11   0 11111111111011111111111111111111
 12  12   0 11111111111101111111111111111111
 13  13   0 11111111111110111111111111111111
 14  14   0 11111111111111011111111111111111
 15  15   0 11111111111111101111111111111111
 16  16   0 11111111111111110111111111111111
 17  17   0 11111111111111111011111111111111
 18  18   0 11111111111111111101111111111111
 19  19   0 11111111111111111110111111111111
 20  20   0 11111111111111111111011111111111
 21  21   0 11111111111111111111101111111111
 22  22   0 11111111111111111111110111111111
 23  23   0 11111111111111111111111011111111
 24  24   0 11111111111111111111111101111111
 25  25   0 11111111111111111111111110111111
 26  26   0 11111111111111111111111111011111
 27  27   0 11111111111111111111111111101111
 28  28   0 11111111111111111111111111110111
 29  29   0 11111111111111111111111111111011
 30  30   0 11111111111111111111111111111101
 31  31   0 11111111111111111111111111111110

1 bit should move right 1 position each line
  0   1   0 10000000000000000000000000000000
  1   0   1 01000000000000000000000000000000
  2   0   2 00100000000000000000000000000000
  3   0   3 00010000000000000000000000000000
  4   0   4 00001000000000000000000000000000
  5   0   5 00000100000000000000000000000000
  6   0   6 00000010000000000000000000000000
  7   0   7 00000001000000000000000000000000
  8   0   8 00000000100000000000000000000000
  9   0   9 00000000010000000000000000000000
 10   0  10 00000000001000000000000000000000
 11   0  11 00000000000100000000000000000000
 12   0  12 00000000000010000000000000000000
 13   0  13 00000000000001000000000000000000
 14   0  14 00000000000000100000000000000000
 15   0  15 00000000000000010000000000000000
 16   0  16 00000000000000001000000000000000
 17   0  17 00000000000000000100000000000000
 18   0  18 00000000000000000010000000000000
 19   0  19 00000000000000000001000000000000
 20   0  20 00000000000000000000100000000000
 21   0  21 00000000000000000000010000000000
 22   0  22 00000000000000000000001000000000
 23   0  23 00000000000000000000000100000000
 24   0  24 00000000000000000000000010000000
 25   0  25 00000000000000000000000001000000
 26   0  26 00000000000000000000000000100000
 27   0  27 00000000000000000000000000010000
 28   0  28 00000000000000000000000000001000
 29   0  29 00000000000000000000000000000100
 30   0  30 00000000000000000000000000000010
 31   0  31 00000000000000000000000000000001