diff options
Diffstat (limited to 'mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c')
-rw-r--r-- | mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c b/mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c new file mode 100644 index 000000000..9f7d23d79 --- /dev/null +++ b/mdk-stage1/dietlibc/libpthread/pthread_sys_alloc.c @@ -0,0 +1,26 @@ +#include <unistd.h> + +#include <pthread.h> +#include "thread_internal.h" + +static pthread_mutex_t mutex_alloc = PTHREAD_MUTEX_INITIALIZER; + +void free(void *ptr) +{ + __NO_ASYNC_CANCEL_BEGIN; + pthread_mutex_lock(&mutex_alloc); + __libc_free(ptr); + pthread_mutex_unlock(&mutex_alloc); + __NO_ASYNC_CANCEL_END; +} + +void *malloc(size_t size) +{ + register void *ret; + __NO_ASYNC_CANCEL_BEGIN; + pthread_mutex_lock(&mutex_alloc); + ret=__libc_malloc(size); + pthread_mutex_unlock(&mutex_alloc); + __NO_ASYNC_CANCEL_END; + return ret; +} |