update project structures
[lunaix-os.git] / lunaix-os / includes / lunaix / mm / dmm.h
index cfe15b3bfdce3d5578624c34d8ce4484238eba6e..22b0539391248ba746236e7f9422f821654c2e68 100644 (file)
@@ -4,12 +4,36 @@
 
 #include <stddef.h>
 
 
 #include <stddef.h>
 
+#define M_ALLOCATED 0x1
+#define M_PREV_FREE 0x2
+
+#define M_NOT_ALLOCATED 0x0
+#define M_PREV_ALLOCATED 0x0
+
+#define CHUNK_S(header) ((header) & ~0x3)
+#define CHUNK_PF(header) ((header)&M_PREV_FREE)
+#define CHUNK_A(header) ((header)&M_ALLOCATED)
+
+#define PACK(size, flags) (((size) & ~0x3) | (flags))
+
+#define SW(p, w) (*((uint32_t*)(p)) = w)
+#define LW(p) (*((uint32_t*)(p)))
+
+#define HPTR(bp) ((uint32_t*)(bp)-1)
+#define BPTR(bp) ((uint8_t*)(bp) + WSIZE)
+#define FPTR(hp, size) ((uint32_t*)(hp + size - WSIZE))
+#define NEXT_CHK(hp) ((uint8_t*)(hp) + CHUNK_S(LW(hp)))
+
+#define BOUNDARY 4
+#define WSIZE 4
+
 #define HEAP_INIT_SIZE 4096
 
 typedef struct 
 {
     void* start;
     void* brk;
 #define HEAP_INIT_SIZE 4096
 
 typedef struct 
 {
     void* start;
     void* brk;
+    void* max_addr;
 } heap_context_t;
 
 
 } heap_context_t;
 
 
@@ -22,9 +46,9 @@ void*
 lxbrk(heap_context_t* heap, size_t size);
 
 void*
 lxbrk(heap_context_t* heap, size_t size);
 
 void*
-lx_malloc(heap_context_t* heap, size_t size);
+lx_malloc_internal(heap_context_t* heap, size_t size);
 
 void
 
 void
-lx_free(void* ptr);
+lx_free_internal(void* ptr);
 
 #endif /* __LUNAIX_DMM_H */
 
 #endif /* __LUNAIX_DMM_H */