Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
ef18102b
Commit
ef18102b
authored
Jan 03, 2014
by
Paul Sokolovsky
Browse files
Make it possible to turn off collecting memory stats (MICROPY_MEM_STATS).
parent
780f555b
Changes
2
Hide whitespace changes
Inline
Side-by-side
py/defaultconfig.h
0 → 100644
View file @
ef18102b
// This file contains default configuration settings for MicroPython.
// You can override any of these options in mpconfig.h for your port.
// Whether to collect memory allocation stats
#ifndef MICROPY_MEM_STATS
#define MICROPY_MEM_STATS (1)
#endif
py/malloc.c
View file @
ef18102b
...
...
@@ -2,12 +2,16 @@
#include <stdlib.h>
#include "misc.h"
#include "mpconfig.h"
#include "defaultconfig.h"
#if MICROPY_MEM_STATS
static
int
total_bytes_allocated
=
0
;
static
int
current_bytes_allocated
=
0
;
static
int
peak_bytes_allocated
=
0
;
#define UPDATE_PEAK() { if (current_bytes_allocated > peak_bytes_allocated) peak_bytes_allocated = current_bytes_allocated; }
#endif
void
*
m_malloc
(
int
num_bytes
)
{
if
(
num_bytes
==
0
)
{
...
...
@@ -18,9 +22,11 @@ void *m_malloc(int num_bytes) {
printf
(
"could not allocate memory, allocating %d bytes
\n
"
,
num_bytes
);
return
NULL
;
}
#if MICROPY_MEM_STATS
total_bytes_allocated
+=
num_bytes
;
current_bytes_allocated
+=
num_bytes
;
UPDATE_PEAK
();
#endif
return
ptr
;
}
...
...
@@ -33,9 +39,11 @@ void *m_malloc0(int num_bytes) {
printf
(
"could not allocate memory, allocating %d bytes
\n
"
,
num_bytes
);
return
NULL
;
}
#if MICROPY_MEM_STATS
total_bytes_allocated
+=
num_bytes
;
current_bytes_allocated
+=
num_bytes
;
UPDATE_PEAK
();
#endif
return
ptr
;
}
...
...
@@ -49,6 +57,7 @@ void *m_realloc(void *ptr, int old_num_bytes, int new_num_bytes) {
printf
(
"could not allocate memory, reallocating %d bytes
\n
"
,
new_num_bytes
);
return
NULL
;
}
#if MICROPY_MEM_STATS
// At first thought, "Total bytes allocated" should only grow,
// after all, it's *total*. But consider for example 2K block
// shrunk to 1K and then grown to 2K again. It's still 2K
...
...
@@ -58,6 +67,7 @@ void *m_realloc(void *ptr, int old_num_bytes, int new_num_bytes) {
total_bytes_allocated
+=
diff
;
current_bytes_allocated
+=
diff
;
UPDATE_PEAK
();
#endif
return
ptr
;
}
...
...
@@ -65,17 +75,31 @@ void m_free(void *ptr, int num_bytes) {
if
(
ptr
!=
NULL
)
{
free
(
ptr
);
}
#if MICROPY_MEM_STATS
current_bytes_allocated
-=
num_bytes
;
#endif
}
int
m_get_total_bytes_allocated
(
void
)
{
#if MICROPY_MEM_STATS
return
total_bytes_allocated
;
#else
return
-
1
;
#endif
}
int
m_get_current_bytes_allocated
(
void
)
{
#if MICROPY_MEM_STATS
return
current_bytes_allocated
;
#else
return
-
1
;
#endif
}
int
m_get_peak_bytes_allocated
(
void
)
{
#if MICROPY_MEM_STATS
return
peak_bytes_allocated
;
#else
return
-
1
;
#endif
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment