diff options
Diffstat (limited to 'smc_fuzz/include/smcmalloc.h')
-rw-r--r-- | smc_fuzz/include/smcmalloc.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/smc_fuzz/include/smcmalloc.h b/smc_fuzz/include/smcmalloc.h new file mode 100644 index 000000000..129e07c6e --- /dev/null +++ b/smc_fuzz/include/smcmalloc.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef SMCMALLOC_H +#define SMCMALLOC_H + +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "fifo3d.h" + +#define TOTALMEMORYSIZE (0x10000) +#define BLKSPACEDIV (4) +#define TOPBITSIZE (20) +#define MAX_NAME_CHARS 50 + +struct memblk { + unsigned int address; + unsigned int size; + int valid; +}; + +struct memmod { + char memory[TOTALMEMORYSIZE]; + unsigned int nmemblk; + unsigned int maxmemblk; + unsigned int checkadd; + struct memblk *memptr; + struct memblk *memptrend; + unsigned int mallocdeladd[((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + struct memblk *precblock[((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + struct memblk *trailblock[((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + struct memblk *memblkqueue[((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + unsigned int memallocsize[((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + unsigned int mallocdeladd_valid[((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + unsigned int mallocdeladd_queue[((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + unsigned int checksa[4*((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + unsigned int checkea[4*((TOTALMEMORYSIZE/BLKSPACEDIV)/sizeof(struct memblk))]; + unsigned int cntdeladd; + unsigned int ptrmemblkqueue; + unsigned int mallocdeladd_queue_cnt; + unsigned int checknumentries; + unsigned int memerror; +}; + +struct peret { + unsigned int tbit; + unsigned int pow2; +}; + +void initmem(void); +struct peret priorityencoder(unsigned int); +void *smcmalloc(unsigned int, struct memmod*); +int smcfree(void*, struct memmod *); +#ifdef DEBUG_SMC_MALLOC +void displayblocks(struct memmod *); +void displaymalloctable(struct memmod *); +#endif + +#endif /* SMCMALLOC_H */ |