libswarm-ng

C implementation of BMT hasher, Swarmhash and Single Owner Chunk for swarm
git clone git://git.defalsify.org/libswarm-ng.git
Log | Files | Refs | Submodules | README

common.c (873B)


      1 #include <stddef.h>
      2 
      3 #define MALLOC_PAGE_SIZE 1024
      4 #define STACK_OFFSET 1024
      5 
      6 extern unsigned char __heap_base;
      7 
      8 void *malloc(size_t c) {
      9 	int i;
     10 	int n;
     11 	int offset;
     12 	unsigned char *offset_p;
     13 
     14 	unsigned char *ptr;
     15 	unsigned char *base = (unsigned char*)(&__heap_base);
     16 
     17 	offset = *((int*)(base)) + STACK_OFFSET;
     18 
     19 	n = (c / MALLOC_PAGE_SIZE) + 1;
     20 	n *= MALLOC_PAGE_SIZE;
     21 
     22 	ptr = base + offset;
     23 	
     24 	offset += n;
     25 	offset_p = (unsigned char*)&offset;
     26 	for (i = 0; i < 4; i++) {
     27 		*(base+i) = *(offset_p+i);
     28 	}
     29 
     30 	offset = *((int*)(base));
     31 
     32 	return (void*)ptr;
     33 }
     34 
     35 void *memset(void *p, int v, size_t c) {
     36 	int i;
     37 
     38 	for (i = 0; i < c; i++) {
     39 		*((char*)(p+i)) = *((char*)(v+i));
     40 	}
     41 	return p;
     42 }
     43 
     44 void *memcpy(void *dst, const void *src, size_t c) {
     45 	int i ;
     46 
     47 	for (i = 0; i < c; i++) {
     48 		*((char*)(dst+i)) = *((char*)(src+i));
     49 	}
     50 	return dst;
     51 }
     52 
     53 void free(void *ptr) {
     54 	return;
     55 }