diff options
| author | Keith Packard <keithp@keithp.com> | 2013-04-30 18:57:53 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-05-07 20:08:00 -0700 | 
| commit | ac72d1c298fc553808a8e04a65482d4990f177d7 (patch) | |
| tree | faf4932fe2d9efca88b306a2097dc8233a49301f /src | |
| parent | df70e3e87874d80516c6d43cfe745d511d54f206 (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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/drivers/ao_fat.c | 19 | ||||
| -rw-r--r-- | src/drivers/ao_log_fat.c | 4 | 
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;  		}  | 
