Add a simple perl script to display info about what is allocating skin buffer.

To use it enable DEBUG_SKIN_ALLOCATIONS in skin_buffer.h and pipe the rockboxui output to the script

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30597 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jonathan Gordon 2011-09-25 12:05:03 +00:00
parent d7372533d0
commit 7e44438936
3 changed files with 50 additions and 0 deletions

View file

@ -98,9 +98,17 @@ void skin_buffer_init(char* buffer, size_t size)
}
/* Allocate size bytes from the buffer */
#ifdef DEBUG_SKIN_ALLOCATIONS
void* skin_buffer_alloc_ex(size_t size, char* debug)
{
void *retval = NULL;
printf("%d %s\n", size, debug);
#else
void* skin_buffer_alloc(size_t size)
{
void *retval = NULL;
#endif
#ifdef USE_ROCKBOX_ALLOC
/* 32-bit aligned */
size = (size + 3) & ~3;

View file

@ -27,7 +27,18 @@
#define _SKIN_BUFFFER_H_
void skin_buffer_init(char* buffer, size_t size);
/* Allocate size bytes from the buffer */
/* #define DEBUG_SKIN_ALLOCATIONS */
#ifdef DEBUG_SKIN_ALLOCATIONS
#define FOO(X) #X
#define STRNG(X) FOO(X)
#define skin_buffer_alloc(s) skin_buffer_alloc_ex(s, __FILE__ ":" STRNG(__LINE__))
void* skin_buffer_alloc_ex(size_t size, char* str);
#else
void* skin_buffer_alloc(size_t size);
#endif
/* get the number of bytes currently being used */
size_t skin_buffer_usage(void);

View file

@ -0,0 +1,31 @@
#!/usr/bin/perl
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
%allocs = ();
while (<>) {
if (/([0-9]*) (.*)$/) {
$key = $2;
$value = $1;
if (exists $allocs{$key}) {
$val = $allocs{$key}[0];
$count = $allocs{$key}[1];
$allocs{$key} = [$value + $val, $count+1]
} else {
$allocs{$key} = [$value, 1]
}
}
}
print "Count\tTotal cost\tLine\n";
for my $key ( keys %allocs ) {
$val = $allocs{$key}[0];
$count = $allocs{$key}[1];
print "$count\t$val\t$key\n";
}