1 /*! \brief Uso interno de malloc y free
4 #include <routix/allocwrap.h>
5 #include <routix/system.h>
11 #define PAGINA_SIZE 4096
13 void *malloc_page(void);
14 void *__malloc(unsigned nbytes
);
15 void __free (void *ap
);
20 // La variable __ALLOC_WRAPPER_ON esta definida en routix/allocwrap.h y se
21 // utiliza para habilitar y deshabilitar el wrapper
22 // Con las macros siguientes trapeamos todas las llamadas a malloc y free que
23 // no han sido portadas al wrapper (aparecerán como tipo UNKNOWN).
25 #ifdef __ALLOC_WRAPPER_ON
26 // Wrapper activo (debug)
27 #define malloc(nbytes) (MALLOC(MM_WRAPPER_UNKNOWN,nbytes))
28 #define free(ap) (FREE(MM_WRAPPER_UNKNOWN,ap))
31 // Wrapper inactivo (máxima performance)
32 #define malloc(nbytes) __malloc(nbytes)
33 #define free(ap) __free(ap)
42 typedef union header
{
50 Header
*morecore(void);
54 dword
kmem_free (void);
55 addr_t
get_free_page(void);
56 addr_t
kmalloc_page(void);
57 int kfree_page(addr_t direccion
);
59 struct user_page
*umalloc_page ( word flags
, addr_t vdir
, addr_t cr3
);
60 struct user_page
*ufree_page (struct user_page
*aux
);
61 void inicializacion_kmalloc(int memoria_fisica
, int memoria_kernel
);