3
0
mirror of https://github.com/Qortal/Brooklyn.git synced 2025-02-15 03:35:55 +00:00
crowetic a94b3d14aa Brooklyn+ (PLUS) changes
Changes included (and more):

1. Dynamic RAM merge

2. Real-time page scan and allocation

3. Cache compression

4. Real-time IRQ checks

5. Dynamic I/O allocation for Java heap

6. Java page migration

7. Contiguous memory allocation

8. Idle pages tracking

9. Per CPU RAM usage tracking

10. ARM NEON scalar multiplication library

11. NEON/ARMv8 crypto extensions

12. NEON SHA, Blake, RIPEMD crypto extensions

13. Parallel NEON crypto engine for multi-algo based CPU stress reduction
2022-05-12 10:47:00 -07:00

59 lines
1.2 KiB
C

// SPDX-License-Identifier: GPL-2.0
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "utils.h"
void *TEST_MEMMOVE(const void *s1, const void *s2, size_t n);
#define BUF_LEN 65536
#define MAX_OFFSET 512
size_t max(size_t a, size_t b)
{
if (a >= b)
return a;
return b;
}
static int testcase_run(void)
{
size_t i, src_off, dst_off, len;
char *usermap = memalign(BUF_LEN, BUF_LEN);
char *kernelmap = memalign(BUF_LEN, BUF_LEN);
assert(usermap != NULL);
assert(kernelmap != NULL);
memset(usermap, 0, BUF_LEN);
memset(kernelmap, 0, BUF_LEN);
for (i = 0; i < BUF_LEN; i++) {
usermap[i] = i & 0xff;
kernelmap[i] = i & 0xff;
}
for (src_off = 0; src_off < MAX_OFFSET; src_off++) {
for (dst_off = 0; dst_off < MAX_OFFSET; dst_off++) {
for (len = 1; len < MAX_OFFSET - max(src_off, dst_off); len++) {
memmove(usermap + dst_off, usermap + src_off, len);
TEST_MEMMOVE(kernelmap + dst_off, kernelmap + src_off, len);
if (memcmp(usermap, kernelmap, MAX_OFFSET) != 0) {
printf("memmove failed at %ld %ld %ld\n",
src_off, dst_off, len);
abort();
}
}
}
}
return 0;
}
int main(void)
{
return test_harness(testcase_run, "memmove");
}