1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /* Copyright (C) 2016 Max Riechelmann <max.riechelmann@student.kit.edu>
- (Karlsruhe Institute of Technology)
- This library is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by the
- Free Software Foundation; either version 2.1 of the License, or (at your
- option) any later version.
- This library is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- details.
- You should have received a copy of the GNU Lesser General Public License along
- with this library; if not, write to the Free Software Foundation, Inc., 51
- Franklin St, Fifth Floor, Boston, MA 02110, USA
- */
- #include "myco-memory.h"
- #include <assert.h>
- #include <string.h>
- #include <sys/types.h>
- #include <unistd.h>
- #include <sys/mman.h>
- void *myco_malloc(size_t size) {
- if (size == 0) {
- return NULL;
- }
- size_t *pointer;
- size_t length = size + sizeof(size);
- pointer = mmap(0, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
- *pointer = length;
- return (void*)(&pointer[1]);
- /*
- // Default malloc
- void *ptr;
- ptr = malloc(size);
- return ptr;
- */
- }
- void myco_free(void *ptr) {
- if (ptr == NULL) {
- return;
- }
- size_t *pointer = (size_t*)ptr;
- size_t length;
- pointer--;
- length = *pointer;
- munmap((void*)pointer, length);
- /*
- // Default free
- return free(ptr);
- */
- }
- void *myco_calloc(size_t nmeb, size_t size) {
- fprintf(stderr, "calloc is not implemented, use malloc and free");
- return NULL;
- }
- void *myco_realloc(void *ptr, size_t size) {
- fprintf(stderr, "realloc is not implemented, use malloc and free");
- return NULL;
- }
|