blob: 1aa836ce4070336666d34de74e4925806341862e [file] [log] [blame]
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* TODO: temporary, replace this with pass-throughs between errno style
* numbers and LK errors.
*/
#define LACKS_TIME_H
#define LACKS_SYS_MMAN_H
#define LACKS_FCNTL_H
#define LACKS_UNISTD_H
#define LACKS_SYS_PARAM_H
#define LACKS_ERRNO_H
#define MALLOC_FAILURE_ACTION \
do { \
} while (0)
#define ABORT exit(-1)
#define HAVE_MMAP 0
#define MORECORE sbrk
#define malloc_getpagesize ((size_t)4096U)
#define ENOMEM ERR_NO_MEMORY
#define EINVAL ERR_INVALID_ARGS
#include <lk/macros.h>
#include <stddef.h>
#include <stdlib.h>
#include <trusty_syscalls.h>
#include <uapi/err.h>
#include <unistd.h>
static char* __libc_brk;
#define SBRK_ALIGN 32
void* sbrk(ptrdiff_t increment) {
char* new_brk;
char* start;
char* end;
if (!__libc_brk)
__libc_brk = (char*)_trusty_brk(0);
start = (char*)round_up((unsigned long)__libc_brk, SBRK_ALIGN);
end = start + round_up((unsigned long)increment, SBRK_ALIGN);
new_brk = (char*)_trusty_brk(end);
if (new_brk < end)
return (void*)-1;
__libc_brk = new_brk;
return start;
}
#include "dlmalloc.c"