-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstring.c
More file actions
65 lines (51 loc) · 1.3 KB
/
Copy pathstring.c
File metadata and controls
65 lines (51 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* SPDX-License-Identifier: MIT */
#include <string.h>
#include <stdint.h>
void *memset(void *dest, int c, size_t count)
{
uint8_t *dst = (uint8_t *)dest;
size_t nabytes = (-(size_t)dest) & (sizeof(size_t) - 1);
size_t val = c & 0xff;
/* if we have to set both aligned and non aligned bytes */
if (count > nabytes) {
count -= nabytes;
val |= val << 8;
val |= val << 16;
val |= val << 32;
/* set the non-aligned bytes memory byte-wise */
for (; nabytes > 0; nabytes--) {
*dst++ = c;
}
/* set the aligned bytes using dword */
size_t abytes = count / sizeof(size_t);
for (; abytes > 0; abytes--) {
*((size_t *)dst) = val;
dst += sizeof(size_t);
}
}
for (; count > 0; count--) {
*dst++ = val;
}
return dest;
}
void *memchr(void const *ptr, int value, size_t count)
{
return NULL;
}
int memcmp(void const *a, void const *b, size_t count)
{
return 0;
}
void *memcpy(void *dest, void const *src, size_t count)
{
uint8_t *dst = (uint8_t *)dest;
uint8_t *s = (uint8_t *)src;
for (; count > 0; count--) {
*(dst++) = *(s++);
}
return dest;
}
void *memmove(void *dest, void const *src, size_t count)
{
return NULL;
}