Mercurial > dovecot > core-2.2
annotate src/lib/test-byteorder.c @ 22955:812e5c961328
fts: Indexing virtual mailbox didn't always index the last mails
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 03 May 2018 18:33:00 +0300 |
parents | ca4a2b85b6f6 |
children |
rev | line source |
---|---|
22398
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
1 /* |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
2 * Copyright (c) 2016-2017 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
3 * |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
4 * Permission is hereby granted, free of charge, to any person obtaining a copy |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
5 * of this software and associated documentation files (the "Software"), to deal |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
6 * in the Software without restriction, including without limitation the rights |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
8 * copies of the Software, and to permit persons to whom the Software is |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
9 * furnished to do so, subject to the following conditions: |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
10 * |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
11 * The above copyright notice and this permission notice shall be included in |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
12 * all copies or substantial portions of the Software. |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
13 * |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
20 * SOFTWARE. |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
21 */ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
22 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
23 #include "test-lib.h" |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
24 #include "byteorder.h" |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
25 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
26 struct bswap_run { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
27 uint64_t in; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
28 uint8_t out8; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
29 uint16_t out16; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
30 uint32_t out32; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
31 uint64_t out64; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
32 }; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
33 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
34 static const struct bswap_run runs[] = { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
35 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
36 .in = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
37 .out8 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
38 .out16 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
39 .out32 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
40 .out64 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
41 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
42 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
43 .in = 0xffffffffffffffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
44 .out8 = 0xff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
45 .out16 = 0xffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
46 .out32 = 0xffffffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
47 .out64 = 0xffffffffffffffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
48 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
49 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
50 .in = 0x123456789abcdef0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
51 .out8 = 0xf0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
52 .out16 = 0xf0de, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
53 .out32 = 0xf0debc9a, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
54 .out64 = 0xf0debc9a78563412, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
55 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
56 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
57 .in = 0x8080808080808080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
58 .out8 = 0x80, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
59 .out16 = 0x8080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
60 .out32 = 0x80808080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
61 .out64 = 0x8080808080808080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
62 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
63 }; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
64 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
65 #define CHECK(iter, size, in, exp) \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
66 do { \ |
22736
639251a1d58e
lib: rename bswap_*() to i_bswap()
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
22398
diff
changeset
|
67 uint##size##_t got = i_bswap_##size(in); \ |
22398
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
68 \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
69 test_begin(t_strdup_printf("byteorder - bswap " \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
70 "(size:%-2u iter:%u)", \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
71 size, iter)); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
72 test_assert(got == exp); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
73 test_end(); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
74 } while (0) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
75 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
76 static void __test(int iter, const struct bswap_run *run) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
77 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
78 CHECK(iter, 8, run->in & 0xff, run->out8); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
79 CHECK(iter, 16, run->in & 0xffff, run->out16); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
80 CHECK(iter, 32, run->in & 0xffffffff, run->out32); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
81 CHECK(iter, 64, run->in, run->out64); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
82 } |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
83 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
84 static void test_bswap(void) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
85 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
86 unsigned int i; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
87 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
88 for (i = 0; i < N_ELEMENTS(runs) ; i++) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
89 __test(i, &runs[i]); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
90 } |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
91 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
92 struct unaligned_run { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
93 uint8_t in[8]; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
94 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
95 /* outputs */ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
96 uint8_t be8; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
97 uint16_t be16; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
98 uint32_t be32; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
99 uint64_t be64; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
100 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
101 uint8_t le8; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
102 uint16_t le16; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
103 uint32_t le32; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
104 uint64_t le64; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
105 |
22949
ca4a2b85b6f6
global: Use #ifdef instead of #if with WORDS_BIGENDIAN
Martti Rannanjärvi <martti.rannanjarvi@dovecot.fi>
parents:
22736
diff
changeset
|
106 #ifdef WORDS_BIGENDIAN |
22398
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
107 #define cpu8 be8 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
108 #define cpu16 be16 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
109 #define cpu32 be32 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
110 #define cpu64 be64 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
111 #else |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
112 #define cpu8 le8 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
113 #define cpu16 le16 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
114 #define cpu32 le32 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
115 #define cpu64 le64 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
116 #endif |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
117 }; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
118 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
119 static const struct unaligned_run uruns[] = { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
120 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
121 .in = { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
122 0x00, 0x00, 0x00, 0x00, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
123 0x00, 0x00, 0x00, 0x00, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
124 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
125 .be8 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
126 .be16 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
127 .be32 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
128 .be64 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
129 .le8 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
130 .le16 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
131 .le32 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
132 .le64 = 0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
133 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
134 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
135 .in = { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
136 0xff, 0xff, 0xff, 0xff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
137 0xff, 0xff, 0xff, 0xff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
138 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
139 .be8 = 0xff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
140 .be16 = 0xffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
141 .be32 = 0xffffffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
142 .be64 = 0xffffffffffffffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
143 .le8 = 0xff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
144 .le16 = 0xffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
145 .le32 = 0xffffffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
146 .le64 = 0xffffffffffffffff, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
147 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
148 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
149 .in = { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
150 0x12, 0x34, 0x56, 0x78, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
151 0x9a, 0xbc, 0xde, 0xf0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
152 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
153 .be8 = 0x12, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
154 .be16 = 0x1234, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
155 .be32 = 0x12345678, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
156 .be64 = 0x123456789abcdef0, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
157 .le8 = 0x12, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
158 .le16 = 0x3412, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
159 .le32 = 0x78563412, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
160 .le64 = 0xf0debc9a78563412, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
161 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
162 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
163 .in = { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
164 0x80, 0x80, 0x80, 0x80, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
165 0x80, 0x80, 0x80, 0x80, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
166 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
167 .be8 = 0x80, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
168 .be16 = 0x8080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
169 .be32 = 0x80808080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
170 .be64 = 0x8080808080808080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
171 .le8 = 0x80, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
172 .le16 = 0x8080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
173 .le32 = 0x80808080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
174 .le64 = 0x8080808080808080, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
175 }, |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
176 }; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
177 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
178 #define __CHECK_READ(iter, size, pfx, in, fxn, exp) \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
179 do { \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
180 uint##size##_t got = fxn(in); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
181 \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
182 test_begin(t_strdup_printf("byteorder - unaligned read "\ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
183 "(%-3s size:%-2u iter:%u)", \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
184 pfx, size, iter)); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
185 test_assert(got == exp); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
186 test_end(); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
187 } while (0) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
188 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
189 #define CHECK_READ(iter, size, in, be_exp, le_exp, cpu_exp) \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
190 do { \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
191 __CHECK_READ(iter, size, "BE", in, \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
192 be##size##_to_cpu_unaligned, be_exp); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
193 __CHECK_READ(iter, size, "LE", in, \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
194 le##size##_to_cpu_unaligned, le_exp); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
195 __CHECK_READ(iter, size, "CPU", in, \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
196 cpu##size##_to_cpu_unaligned, cpu_exp); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
197 } while (0) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
198 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
199 static void __test_read(int iter, const struct unaligned_run *run) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
200 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
201 CHECK_READ(iter, 8, run->in, run->be8, run->le8, run->cpu8); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
202 CHECK_READ(iter, 16, run->in, run->be16, run->le16, run->cpu16); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
203 CHECK_READ(iter, 32, run->in, run->be32, run->le32, run->cpu32); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
204 CHECK_READ(iter, 64, run->in, run->be64, run->le64, run->cpu64); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
205 } |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
206 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
207 #define __CHECK_WRITE(iter, size, pfx, in, fxn, exp) \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
208 do { \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
209 uint8_t got[size / 8]; \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
210 \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
211 fxn(in, got); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
212 \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
213 test_begin(t_strdup_printf("byteorder - unaligned write "\ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
214 "(%-3s size:%-2u iter:%u)", \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
215 pfx, size, iter)); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
216 test_assert(memcmp(got, exp, sizeof(got)) == 0); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
217 test_end(); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
218 } while (0) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
219 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
220 #define CHECK_WRITE(iter, size, out, be_in, le_in) \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
221 do { \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
222 __CHECK_WRITE(iter, size, "BE", be_in, \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
223 cpu##size##_to_be_unaligned, out); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
224 __CHECK_WRITE(iter, size, "LE", le_in, \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
225 cpu##size##_to_le_unaligned, out); \ |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
226 } while (0) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
227 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
228 static void __test_write(int iter, const struct unaligned_run *run) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
229 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
230 CHECK_WRITE(iter, 8, run->in, run->be8, run->le8); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
231 CHECK_WRITE(iter, 16, run->in, run->be16, run->le16); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
232 CHECK_WRITE(iter, 32, run->in, run->be32, run->le32); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
233 CHECK_WRITE(iter, 64, run->in, run->be64, run->le64); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
234 } |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
235 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
236 static void test_unaligned(void) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
237 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
238 unsigned int i; |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
239 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
240 for (i = 0; i < N_ELEMENTS(uruns) ; i++) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
241 __test_read(i, &uruns[i]); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
242 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
243 for (i = 0; i < N_ELEMENTS(uruns) ; i++) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
244 __test_write(i, &uruns[i]); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
245 } |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
246 |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
247 void test_byteorder(void) |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
248 { |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
249 test_bswap(); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
250 test_unaligned(); |
1b4e7b89b161
lib: import byte swapping & endian converting functions
Josef 'Jeff' Sipek <jeff.sipek@dovecot.fi>
parents:
diff
changeset
|
251 } |