1 /*
2 * Copyright (c) 2016-2021 The strace developers.
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8 #include "tests.h"
9
10 void
11 fill_memory_ex(void *ptr, size_t size, unsigned char start,
12 unsigned int period)
13 {
14 unsigned char *p = ptr;
15
16 for (typeof(size) i = 0; i < size; ++i) {
17 p[i] = start + i % period;
18 }
19 }
20
21 void
22 fill_memory(void *ptr, size_t size)
23 {
24 fill_memory_ex(ptr, size, 0x80, 0x80);
25 }
26
27 void
28 fill_memory16_ex(void *ptr, size_t size, uint16_t start,
29 unsigned int period)
30 {
31 uint16_t *p = ptr;
32
33 for (typeof(size) i = 0; i < size / sizeof(uint16_t); ++i) {
34 p[i] = start + i % period;
35 }
36 }
37
38 void
39 fill_memory16(void *ptr, size_t size)
40 {
41 fill_memory16_ex(ptr, size, 0x80c0, 0x8000);
42 }
43
44 void
45 fill_memory32_ex(void *ptr, size_t size, uint32_t start,
46 unsigned int period)
47 {
48 uint32_t *p = ptr;
49
50 for (typeof(size) i = 0; i < size / sizeof(uint32_t); ++i) {
51 p[i] = start + i % period;
52 }
53 }
54
55 void
56 fill_memory32(void *ptr, size_t size)
57 {
58 fill_memory32_ex(ptr, size, 0x80a0c0e0, 0x80000000);
59 }
60
61 void
62 fill_memory64_ex(void *ptr, size_t size, uint64_t start, uint64_t period)
63 {
64 uint64_t *p = ptr;
65
66 for (typeof(size) i = 0; i < size / sizeof(uint64_t); i++) {
67 p[i] = start + i % period;
68 }
69 }
70
71 void
72 fill_memory64(void *ptr, size_t size)
73 {
74 fill_memory64_ex(ptr, size,
75 0x8090a0b0c0d0e0f0ULL, 0x8000000000000000ULL);
76 }