trios/libk/string_volatile.c

37 lines
725 B
C

#include <stddef.h>
#include "include/string_volatile.h"
volatile void *memmove_volatile(volatile void *dst, const volatile void *src, volatile size_t n) {
volatile char *d = dst;
volatile const char *s = src;
if(s < d) {
d += n;
s += n;
while(n--) {
*--d = *--s;
}
} else {
while(n--) {
*d++ = *s++;
}
}
return dst;
}
volatile void *memset_volatile(volatile void *dest, int c, volatile size_t n) {
volatile unsigned char *d = dest;
while(n--) {
*d++ = c;
}
return dest;
}
volatile void *memcpy_volatile(volatile void *restrict dst, const volatile void *restrict src, volatile size_t n) {
volatile char *d = dst;
volatile const char *s = src;
while(n--) {
*d++ = *s++;
}
return dst;
}