summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-04-30 18:57:53 -0700
committerKeith Packard <keithp@keithp.com>2013-04-30 18:57:53 -0700
commit9fad3457a4977158697eeca8b6ea7516cc59a6c8 (patch)
tree3c9dddbe8066e9b4e02613a151edab175a0efbb2
parenta47b7ade1019959f3b9b845fb96c21bbb1bfdf2a (diff)
altos: Reduce stack usage of FAT driver and logger
Move some large stack arrays to static storage. Also eliminates some printf error messages which don't seem that useful except for debugging. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--src/drivers/ao_fat.c19
-rw-r--r--src/drivers/ao_log_fat.c4
2 files changed, 10 insertions, 13 deletions
diff --git a/src/drivers/ao_fat.c b/src/drivers/ao_fat.c
index afd645cd..1a1b8eb0 100644
--- a/src/drivers/ao_fat.c
+++ b/src/drivers/ao_fat.c
@@ -1052,7 +1052,7 @@ static int8_t
_ao_fat_open(char name[11], uint8_t mode)
{
uint16_t entry = 0;
- struct ao_fat_dirent dirent;
+ static struct ao_fat_dirent dirent;
int8_t status;
if (_ao_fat_setup() != AO_FAT_FILESYSTEM_SUCCESS)
@@ -1214,12 +1214,11 @@ ao_fat_map_current(struct ao_file *file, int len, cluster_offset_t *offsetp, clu
offset = file->offset & SECTOR_MASK;
sector = _ao_fat_current_sector(file);
if (sector == 0xffffffff) {
- printf ("invalid sector at offset %d\n", file->offset);
return NULL;
}
buf = _ao_fat_sector_get(sector);
if (!buf)
- printf ("sector get failed. Sector %d. Partition end %d\n", sector, partition_end);
+ return NULL;
if (offset + len < SECTOR_SIZE)
*this_time = len;
else
@@ -1259,7 +1258,6 @@ ao_fat_read(int8_t fd, void *dst, int len)
while (len) {
buf = ao_fat_map_current(file, len, &offset, &this_time);
if (!buf) {
- printf ("map_current failed\n");
ret = -AO_FAT_EIO;
break;
}
@@ -1307,7 +1305,6 @@ ao_fat_write(int8_t fd, void *src, int len)
while (len) {
buf = ao_fat_map_current(file, len, &offset, &this_time);
if (!buf) {
- printf ("map_current failed\n");
ret = -AO_FAT_EIO;
break;
}
@@ -1375,7 +1372,7 @@ int8_t
ao_fat_unlink(char name[11])
{
uint16_t entry = 0;
- struct ao_fat_dirent dirent;
+ static struct ao_fat_dirent dirent;
int8_t ret;
ao_mutex_get(&ao_fat_mutex);
@@ -1492,7 +1489,7 @@ static void
ao_fat_list_cmd(void)
{
uint16_t entry = 0;
- struct ao_fat_dirent dirent;
+ static struct ao_fat_dirent dirent;
int i;
int8_t status;
@@ -1535,10 +1532,10 @@ ao_fat_parse_name(char name[11])
static void
ao_fat_dump_cmd(void)
{
- char name[11];
+ static char name[11];
int8_t fd;
int cnt, i;
- char buf[32];
+ static char buf[32];
ao_fat_parse_name(name);
if (name[0] == '\0') {
@@ -1561,10 +1558,10 @@ ao_fat_dump_cmd(void)
static void
ao_fat_write_cmd(void)
{
- char name[11];
+ static char name[11];
int8_t fd;
int cnt, i;
- char buf[64];
+ static char buf[64];
char c;
int status;
diff --git a/src/drivers/ao_log_fat.c b/src/drivers/ao_log_fat.c
index af77401c..45b67012 100644
--- a/src/drivers/ao_log_fat.c
+++ b/src/drivers/ao_log_fat.c
@@ -27,7 +27,7 @@ static uint8_t log_mutex;
static void
ao_log_open(void)
{
- char name[12];
+ static char name[12];
int8_t status;
sprintf(name,"%04d%02d%02dLOG", 2000 + log_year, log_month, log_day);
@@ -38,7 +38,7 @@ ao_log_open(void)
log_open = 1;
} else if (status == -AO_FAT_ENOENT) {
status = ao_fat_creat(name);
- if (status == AO_FAT_SUCCESS) {
+ if (status >= 0) {
log_fd = status;
log_open = 1;
}