Skip to content

Commit 48bdfa7

Browse files
committed
add syscal_newlib for malloc
1 parent 862d211 commit 48bdfa7

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

cores/nRF5/syscall_newlib.c

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/**************************************************************************/
2+
/*!
3+
@file syscall_newlib.c
4+
@author hathach
5+
6+
@section LICENSE
7+
8+
Software License Agreement (BSD License)
9+
10+
Copyright (c) 2017, Adafruit Industries (adafruit.com)
11+
All rights reserved.
12+
13+
Redistribution and use in source and binary forms, with or without
14+
modification, are permitted provided that the following conditions are met:
15+
1. Redistributions of source code must retain the above copyright
16+
notice, this list of conditions and the following disclaimer.
17+
2. Redistributions in binary form must reproduce the above copyright
18+
notice, this list of conditions and the following disclaimer in the
19+
documentation and/or other materials provided with the distribution.
20+
3. Neither the name of the copyright holders nor the
21+
names of its contributors may be used to endorse or promote products
22+
derived from this software without specific prior written permission.
23+
24+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
25+
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
28+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34+
*/
35+
/**************************************************************************/
36+
37+
#include <errno.h>
38+
#include <sys/stat.h>
39+
#include <malloc.h>
40+
41+
// defined in linker script
42+
extern unsigned char __HeapBase[];
43+
extern unsigned char __HeapLimit[];
44+
45+
static unsigned char *sbrk_heap_top = __HeapBase;
46+
47+
//volatile uint32_t first_sbrk = 0;
48+
//volatile uint32_t last_sbrk = 0;
49+
50+
caddr_t _sbrk( int incr )
51+
{
52+
unsigned char *prev_heap;
53+
54+
if ( sbrk_heap_top + incr > __HeapLimit )
55+
{
56+
/* Out of dynamic memory heap space */
57+
errno = ENOMEM;
58+
return (caddr_t) -1;
59+
}
60+
61+
prev_heap = sbrk_heap_top;
62+
63+
// if ( !first_sbrk) first_sbrk = sbrk_heap_top;
64+
// last_sbrk = sbrk_heap_top;
65+
66+
sbrk_heap_top += incr;
67+
68+
return (caddr_t) prev_heap;
69+
}
70+

0 commit comments

Comments
 (0)