summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2002-08-13 23:13:01 +0000
committerBjörn Stenberg <bjorn@haxx.se>2002-08-13 23:13:01 +0000
commitebb14ca5f944df76986dbb9f8ec16bae1fbd20a7 (patch)
treebe18c2969fb2420ccbe4adddfd13a9b49b253a49
parent509b42561686174f09b56b16e622f24d2efad774 (diff)
downloadrockbox-ebb14ca5f944df76986dbb9f8ec16bae1fbd20a7.zip
rockbox-ebb14ca5f944df76986dbb9f8ec16bae1fbd20a7.tar.gz
rockbox-ebb14ca5f944df76986dbb9f8ec16bae1fbd20a7.tar.bz2
rockbox-ebb14ca5f944df76986dbb9f8ec16bae1fbd20a7.tar.xz
Gained about 128 KB buffer space by removing malloc() and the heap
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1726 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/main.c6
-rw-r--r--apps/playlist.c2
-rw-r--r--apps/recorder/bmp.c4
-rw-r--r--firmware/Makefile2
-rw-r--r--firmware/ajf.c1
-rw-r--r--firmware/app.lds7
-rw-r--r--firmware/mpeg.c24
-rw-r--r--firmware/player.lds7
8 files changed, 20 insertions, 33 deletions
diff --git a/apps/main.c b/apps/main.c
index 39609e6..a6e90ee 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -33,13 +33,9 @@
#include "powermgmt.h"
#include "adc.h"
#include "i2c.h"
-#ifndef SIMULATOR
-#include "dmalloc.h"
-#include "bmalloc.h"
#ifndef DEBUG
#include "serial.h"
#endif
-#endif
#include "mpeg.h"
#include "main_menu.h"
#include "thread.h"
@@ -95,8 +91,6 @@ void init(void)
settings_reset();
- dmalloc_initialize();
- bmalloc_add_pool(poolstart, poolend-poolstart);
lcd_init();
show_logo();
diff --git a/apps/playlist.c b/apps/playlist.c
index 0d9df36..692ec4b 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -18,8 +18,6 @@
****************************************************************************/
#include <stdio.h>
-#include <malloc.h>
-
#include <stdlib.h>
#include <string.h>
#include "playlist.h"
diff --git a/apps/recorder/bmp.c b/apps/recorder/bmp.c
index d02e9d4..a92d521 100644
--- a/apps/recorder/bmp.c
+++ b/apps/recorder/bmp.c
@@ -32,6 +32,8 @@
#include "file.h"
+#if 0
+
#ifdef __GNUC__
#define STRUCT_PACKED __attribute__((packed))
#else
@@ -585,3 +587,5 @@ int main(int argc, char **argv)
}
#endif
+
+#endif /* 0 */
diff --git a/firmware/Makefile b/firmware/Makefile
index eb17384..f3de26b 100644
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -33,7 +33,7 @@ else
CFLAGS += -fomit-frame-pointer -fschedule-insns
endif
-SRC := $(wildcard drivers/*.c common/*.c malloc/*.c *.c)
+SRC := $(wildcard drivers/*.c common/*.c *.c)
OBJS := $(SRC:%.c=$(OBJDIR)/%.o) $(OBJDIR)/crt0.o
DEPS:=.deps
diff --git a/firmware/ajf.c b/firmware/ajf.c
index e542bdc..82ba0b7 100644
--- a/firmware/ajf.c
+++ b/firmware/ajf.c
@@ -21,7 +21,6 @@
#endif
#include <file.h>
#include "ajf.h"
-#include <malloc.h>
#include <string.h>
#include <errno.h>
#include <stdbool.h>
diff --git a/firmware/app.lds b/firmware/app.lds
index 810695a..2e594b6 100644
--- a/firmware/app.lds
+++ b/firmware/app.lds
@@ -51,13 +51,6 @@ SECTIONS
_end = .;
} > DRAM
- .heap :
- {
- _poolstart = .;
- . = 0x20000;
- _poolend = .;
- } > DRAM
-
.mp3buf :
{
_mp3buf = .;
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index a85545e..f9df323 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -23,7 +23,6 @@
#include "id3.h"
#include "mpeg.h"
#include "ata.h"
-#include "malloc.h"
#include "string.h"
#ifndef SIMULATOR
#include "i2c.h"
@@ -147,9 +146,11 @@ struct id3tag
{
struct mp3entry id3;
int mempos;
+ bool used;
};
static struct id3tag *id3tags[MAX_ID3_TAGS];
+static struct id3tag _id3tags[MAX_ID3_TAGS];
static unsigned int current_track_counter = 0;
static unsigned int last_track_counter = 0;
@@ -202,7 +203,6 @@ static bool append_tag(struct id3tag *tag)
static void remove_current_tag(void)
{
int oldidx = tag_read_idx;
- struct id3tag *tag = id3tags[tag_read_idx];
if(num_tracks_in_memory() > 0)
{
@@ -210,8 +210,8 @@ static void remove_current_tag(void)
tag_read_idx = (tag_read_idx+1) & MAX_ID3_TAGS_MASK;
/* Now delete it */
+ id3tags[oldidx]->used = false;
id3tags[oldidx] = NULL;
- free(tag);
debug_tags();
}
}
@@ -578,21 +578,26 @@ void IMIA1(void)
static void add_track_to_tag_list(char *filename)
{
- struct id3tag *t;
+ struct id3tag *t = NULL;
+ int i;
- /* grab id3 tag of new file and
- remember where in memory it starts */
- t = malloc(sizeof(struct id3tag));
+ /* find a free tag */
+ for (i=0; i < MAX_ID3_TAGS_MASK; i++ )
+ if ( !_id3tags[i].used )
+ t = &_id3tags[i];
if(t)
{
+ /* grab id3 tag of new file and
+ remember where in memory it starts */
mp3info(&(t->id3), filename);
t->mempos = mp3buf_write;
t->id3.elapsed = 0;
if(!append_tag(t))
{
- free(t);
DEBUGF("Tag list is full\n");
}
+ else
+ t->used = true;
}
else
{
@@ -659,7 +664,7 @@ static void mpeg_thread(void)
int amount_to_read;
int amount_to_swap;
int t1, t2;
-
+
play_pending = false;
playing = false;
mpeg_file = -1;
@@ -1411,4 +1416,5 @@ void mpeg_init(int volume, int bass, int treble, int loudness, int bass_boost, i
#endif /* !SIMULATOR */
memset(id3tags, sizeof(id3tags), 0);
+ memset(_id3tags, sizeof(id3tags), 0);
}
diff --git a/firmware/player.lds b/firmware/player.lds
index 55e2688..341d2eb 100644
--- a/firmware/player.lds
+++ b/firmware/player.lds
@@ -51,13 +51,6 @@ SECTIONS
_end = .;
} > DRAM
- .heap :
- {
- _poolstart = .;
- . = 0x20000;
- _poolend = .;
- } > DRAM
-
.mp3buf :
{
_mp3buf = .;