Do some housekeeping with fat.h and SECTOR_SIZE

Many includes of fat.h are pointless. Some includes are just for
SECTOR_SIZE. Add a file 'firmware/include/fs_defines.h' for that
and to define tuneable values that were scattered amongst various
headers.

Remove some local definitions of SECTOR_SIZE since they have to be
in agreement with the rest of the fs code anyway.

(We'll see what's in fact pointless in a moment ;)

Change-Id: I9ba183bf58bd87f5c45eba7bd675c7e2c1c18ed5
This commit is contained in:
Michael Sevakis 2017-03-12 22:05:44 -04:00
parent 70c929179b
commit 6db80020b4
29 changed files with 118 additions and 105 deletions

View file

@ -63,7 +63,7 @@
#include "usb.h" #include "usb.h"
#include "rtc.h" #include "rtc.h"
#include "storage.h" #include "storage.h"
#include "fat.h" #include "fs_defines.h"
#include "eeprom_24cxx.h" #include "eeprom_24cxx.h"
#if (CONFIG_STORAGE & STORAGE_MMC) || (CONFIG_STORAGE & STORAGE_SD) #if (CONFIG_STORAGE & STORAGE_MMC) || (CONFIG_STORAGE & STORAGE_SD)
#include "sdmmc.h" #include "sdmmc.h"

View file

@ -29,7 +29,6 @@
#include "lcd.h" #include "lcd.h"
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "file_internal.h" #include "file_internal.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"

View file

@ -32,7 +32,6 @@
#include "lcd.h" #include "lcd.h"
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "ata.h" #include "ata.h"
#include "fat.h"
#include "file_internal.h" #include "file_internal.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"

View file

@ -32,7 +32,6 @@
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "file_internal.h" #include "file_internal.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "backlight.h" #include "backlight.h"

View file

@ -34,7 +34,6 @@
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "file_internal.h" #include "file_internal.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "backlight.h" #include "backlight.h"

View file

@ -32,7 +32,6 @@
#include "lcd.h" #include "lcd.h"
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "backlight.h" #include "backlight.h"

View file

@ -30,7 +30,6 @@
#include "kernel.h" #include "kernel.h"
#include "thread.h" #include "thread.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "adc.h" #include "adc.h"

View file

@ -30,7 +30,6 @@
#include "kernel.h" #include "kernel.h"
#include "thread.h" #include "thread.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "button.h" #include "button.h"

View file

@ -30,7 +30,6 @@
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "storage.h" #include "storage.h"
#include "file_internal.h" #include "file_internal.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "backlight.h" #include "backlight.h"

View file

@ -27,7 +27,6 @@
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "storage.h" #include "storage.h"
#include "file_internal.h" #include "file_internal.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "adc.h" #include "adc.h"

View file

@ -35,7 +35,6 @@ SANSA VIEW: TESTING CODE
#include "lcd.h" #include "lcd.h"
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "backlight.h" #include "backlight.h"

View file

@ -31,7 +31,6 @@
#include "../kernel-internal.h" #include "../kernel-internal.h"
#include "storage.h" #include "storage.h"
#include "file_internal.h" #include "file_internal.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "button.h" #include "button.h"

View file

@ -32,7 +32,6 @@
#include "thread.h" #include "thread.h"
#include "storage.h" #include "storage.h"
#include "file_internal.h" #include "file_internal.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "font.h" #include "font.h"
#include "panic.h" #include "panic.h"

View file

@ -23,7 +23,7 @@
#include "system.h" #include "system.h"
#include "linked_list.h" #include "linked_list.h"
#include "disk_cache.h" #include "disk_cache.h"
#include "fat.h" /* for SECTOR_SIZE */ #include "fs_defines.h"
#include "bitarray.h" #include "bitarray.h"
/* Cache: LRU cache with separately-chained hashtable /* Cache: LRU cache with separately-chained hashtable

View file

@ -34,10 +34,9 @@
#include "ata_idle_notify.h" #include "ata_idle_notify.h"
#include "ata-driver.h" #include "ata-driver.h"
#include "ata-defines.h" #include "ata-defines.h"
#include "fs_defines.h"
#include "storage.h" #include "storage.h"
#define SECTOR_SIZE 512
#define SELECT_DEVICE1 0x10 #define SELECT_DEVICE1 0x10
#define SELECT_LBA 0x40 #define SELECT_LBA 0x40

View file

@ -48,14 +48,6 @@
#define FAT_MAX_TRANSFER_SIZE 256 #define FAT_MAX_TRANSFER_SIZE 256
#endif #endif
/* still experimental? */
/* increasing this will increase the total memory used by the cache; the
cache, as noted in disk_cache.h, has other minimum requirements that may
prevent reducing its number of entries in order to compensate */
#ifndef SECTOR_SIZE
#define SECTOR_SIZE 512
#endif
/** /**
****************************************************************************/ ****************************************************************************/

View file

@ -21,29 +21,6 @@
#ifndef DISK_CACHE_H #ifndef DISK_CACHE_H
#define DISK_CACHE_H #define DISK_CACHE_H
/* This needs enough for all file handles to have a buffer in the worst case
* plus at least one reserved exclusively for the cache client and a couple
* for other file system code. The buffers are put to use by the cache if not
* taken for another purpose (meaning nothing is wasted sitting fallow).
*
* One map per volume is maintained in order to avoid collisions between
* volumes that would slow cache probing. DC_MAP_NUM_ENTRIES is the number
* for each map per volume. The buffers themselves are shared.
*/
#if MEMORYSIZE < 8
#define DC_NUM_ENTRIES 32
#define DC_MAP_NUM_ENTRIES 128
#elif MEMORYSIZE <= 32
#define DC_NUM_ENTRIES 48
#define DC_MAP_NUM_ENTRIES 128
#else /* MEMORYSIZE > 32 */
#define DC_NUM_ENTRIES 64
#define DC_MAP_NUM_ENTRIES 256
#endif /* MEMORYSIZE */
/* this _could_ be larger than a sector if that would ever be useful */
#define DC_CACHE_BUFSIZE SECTOR_SIZE
#include "mutex.h" #include "mutex.h"
#include "mv.h" #include "mv.h"

View file

@ -28,55 +28,14 @@
#include "mutex.h" #include "mutex.h"
#include "mrsw_lock.h" #include "mrsw_lock.h"
#include "fs_attr.h" #include "fs_attr.h"
#include "fs_defines.h"
#include "fat.h" #include "fat.h"
#ifdef HAVE_DIRCACHE #ifdef HAVE_DIRCACHE
#include "dircache.h" #include "dircache.h"
#endif #endif
/** Tuneable parameters **/
/* limits for number of open descriptors - if you increase these values, make
certain that the disk cache has enough available buffers */
#define MAX_OPEN_FILES 11
#define MAX_OPEN_DIRS 12
#define MAX_OPEN_HANDLES (MAX_OPEN_FILES+MAX_OPEN_DIRS) #define MAX_OPEN_HANDLES (MAX_OPEN_FILES+MAX_OPEN_DIRS)
/* internal functions open streams as well; make sure they don't fail if all
user descs are busy; this needs to be at least the greatest quantity needed
at once by all internal functions */
#ifdef HAVE_DIRCACHE
#define AUX_FILEOBJS 3
#else
#define AUX_FILEOBJS 2
#endif
/* number of components statically allocated to handle the vast majority
of path depths; should maybe be tuned for >= 90th percentile but for now,
imma just guessing based on something like:
root + 'Music' + 'Artist' + 'Album' + 'Disc N' + filename */
#define STATIC_PATHCOMP_NUM 6
#define MAX_COMPNAME 260
/* unsigned value that will also hold the off_t range we need without
overflow */
#define file_size_t uint32_t
#ifdef __USE_FILE_OFFSET64
/* if we want, we can deal with files up to 2^32-1 bytes-- the full FAT16/32
range */
#define FILE_SIZE_MAX (0xffffffffu)
#else
/* file contents and size will be preserved by the APIs so long as ftruncate()
isn't used; bytes passed 2^31-1 will not accessible nor will writes succeed
that would extend the file beyond the max for a 32-bit off_t */
#define FILE_SIZE_MAX (0x7fffffffu)
#endif
/* if file is "large(ish)", then get rid of the contents now rather than
lazily when the file is synced or closed in order to free-up space */
#define O_TRUNC_THRESH 65536
/* default attributes when creating new files and directories */ /* default attributes when creating new files and directories */
#define ATTR_NEW_FILE (ATTR_ARCHIVE) #define ATTR_NEW_FILE (ATTR_ARCHIVE)
#define ATTR_NEW_DIRECTORY (ATTR_DIRECTORY) #define ATTR_NEW_DIRECTORY (ATTR_DIRECTORY)

View file

@ -0,0 +1,108 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2017 by Michael Sevakis
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef FS_DEFINES_H
#define FS_DEFINES_H
/** Tuneable parameters **/
#if 0
/* Define this just in case you're doing something that may crash a lot and
want less write caching */
#define FS_MIN_WRITECACHING
#endif
#ifndef MAX_PATH
#define MAX_PATH 260
#endif
#define MAX_COMPNAME 260
/* still experimental? */
/* increasing this will increase the total memory used by the cache; the
cache, as noted in disk_cache.h, has other minimum requirements that may
prevent reducing its number of entries in order to compensate */
#ifndef SECTOR_SIZE
#define SECTOR_SIZE 512
#endif
/* limits for number of open descriptors - if you increase these values, make
certain that the disk cache has enough available buffers */
#define MAX_OPEN_FILES 11
#define MAX_OPEN_DIRS 12
/* internal functions open streams as well; make sure they don't fail if all
user descs are busy; this needs to be at least the greatest quantity needed
at once by all internal functions */
#ifdef HAVE_DIRCACHE
#define AUX_FILEOBJS 3
#else
#define AUX_FILEOBJS 2
#endif
/* number of components statically allocated to handle the vast majority
of path depths; should maybe be tuned for >= 90th percentile but for now,
imma just guessing based on something like:
root + 'Music' + 'Artist' + 'Album' + 'Disc N' + filename */
#define STATIC_PATHCOMP_NUM 6
/* unsigned value that will also hold the off_t range we need without
overflow */
#define file_size_t uint32_t
#ifdef __USE_FILE_OFFSET64
/* if we want, we can deal with files up to 2^32-1 bytes-- the full FAT16/32
range */
#define FILE_SIZE_MAX (0xffffffffu)
#else
/* file contents and size will be preserved by the APIs so long as ftruncate()
isn't used; bytes passed 2^31-1 will not accessible nor will writes succeed
that would extend the file beyond the max for a 32-bit off_t */
#define FILE_SIZE_MAX (0x7fffffffu)
#endif
/* if file is "large(ish)", then get rid of the contents now rather than
lazily when the file is synced or closed in order to free-up space */
#define O_TRUNC_THRESH 65536
/* This needs enough for all file handles to have a buffer in the worst case
* plus at least one reserved exclusively for the cache client and a couple
* for other file system code. The buffers are put to use by the cache if not
* taken for another purpose (meaning nothing is wasted sitting fallow).
*
* One map per volume is maintained in order to avoid collisions between
* volumes that would slow cache probing. IOC_MAP_NUM_ENTRIES is the number
* for each map per volume. The buffers themselves are shared.
*/
#if MEMORYSIZE < 8
#define DC_NUM_ENTRIES 32
#define DC_MAP_NUM_ENTRIES 128
#elif MEMORYSIZE <= 32
#define DC_NUM_ENTRIES 48
#define DC_MAP_NUM_ENTRIES 128
#else /* MEMORYSIZE > 32 */
#define DC_NUM_ENTRIES 64
#define DC_MAP_NUM_ENTRIES 256
#endif /* MEMORYSIZE */
/* this _could_ be larger than a sector if that would ever be useful */
#define DC_CACHE_BUFSIZE SECTOR_SIZE
#endif /* FS_DEFINES_H */

View file

@ -23,7 +23,7 @@
/* Driver for the ARM PL180 SD/MMC controller inside AS3525 SoC */ /* Driver for the ARM PL180 SD/MMC controller inside AS3525 SoC */
#include "config.h" /* for HAVE_MULTIDRIVE & AMS_OF_SIZE */ #include "config.h" /* for HAVE_MULTIDRIVE & AMS_OF_SIZE */
#include "fat.h" #include "fs_defines.h"
#include "thread.h" #include "thread.h"
#include "led.h" #include "led.h"
#include "sdmmc.h" #include "sdmmc.h"

View file

@ -21,7 +21,7 @@
****************************************************************************/ ****************************************************************************/
#include "config.h" /* for HAVE_MULTIVOLUME */ #include "config.h" /* for HAVE_MULTIVOLUME */
#include "fat.h" #include "fs_defines.h"
#include "thread.h" #include "thread.h"
#include "gcc_extensions.h" #include "gcc_extensions.h"
#include "led.h" #include "led.h"

View file

@ -28,8 +28,7 @@
#include "panic.h" #include "panic.h"
#include "nand_id.h" #include "nand_id.h"
#include "storage.h" #include "storage.h"
#include "fs_defines.h"
#define SECTOR_SIZE 512
/* ECC on read is implemented on the assumption that MLC-style 4-bit correction /* ECC on read is implemented on the assumption that MLC-style 4-bit correction
is always used regardless of NAND chip type. This assumption is true for at is always used regardless of NAND chip type. This assumption is true for at

View file

@ -23,7 +23,7 @@
#include "gpmi-imx233.h" #include "gpmi-imx233.h"
#include "pinctrl-imx233.h" #include "pinctrl-imx233.h"
#include "button-target.h" #include "button-target.h"
#include "fat.h" #include "fs_defines.h"
#include "disk.h" #include "disk.h"
#include "usb.h" #include "usb.h"
#include "debug.h" #include "debug.h"

View file

@ -27,7 +27,6 @@
#include "pinctrl-imx233.h" #include "pinctrl-imx233.h"
#include "partitions-imx233.h" #include "partitions-imx233.h"
#include "button-target.h" #include "button-target.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "usb.h" #include "usb.h"
#include "debug.h" #include "debug.h"

View file

@ -25,7 +25,6 @@
#include "system.h" #include "system.h"
#include "debug.h" #include "debug.h"
#include "ata.h" #include "ata.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "panic.h" #include "panic.h"
#include "lcd.h" #include "lcd.h"

View file

@ -35,8 +35,8 @@
#include "usb.h" #include "usb.h"
#include "sd.h" #include "sd.h"
#include "storage.h" #include "storage.h"
#include "fs_defines.h"
#define SECTOR_SIZE 512
#define BLOCKS_PER_BANK 0x7a7800 #define BLOCKS_PER_BANK 0x7a7800
/* Comparing documentations of various MMC/SD controllers revealed, */ /* Comparing documentations of various MMC/SD controllers revealed, */

View file

@ -43,7 +43,6 @@
#endif #endif
#include "sdmmc.h" #include "sdmmc.h"
#include "disk.h" #include "disk.h"
#include "fat.h"
#include "system-target.h" #include "system-target.h"
/* The configuration method is not very flexible. */ /* The configuration method is not very flexible. */
@ -72,7 +71,6 @@
#define UNALIGNED_NUM_SECTORS 10 #define UNALIGNED_NUM_SECTORS 10
#define MAX_TRANSFER_ERRORS 10 #define MAX_TRANSFER_ERRORS 10
#define SECTOR_SIZE 512
#define BLOCKS_PER_BANK 0x7A7800 #define BLOCKS_PER_BANK 0x7A7800
/* command flags for send_cmd */ /* command flags for send_cmd */

View file

@ -30,7 +30,6 @@
#include "system.h" #include "system.h"
#include "debug.h" #include "debug.h"
#include "storage.h" #include "storage.h"
#include "fat.h"
#include "disk.h" #include "disk.h"
#include "panic.h" #include "panic.h"
#include "lcd.h" #include "lcd.h"

View file

@ -27,7 +27,7 @@
#include "logf.h" #include "logf.h"
#include "storage.h" #include "storage.h"
#include "disk.h" #include "disk.h"
#include "fat.h" #include "fs_defines.h"
/* Needed to get at the audio buffer */ /* Needed to get at the audio buffer */
#include "audio.h" #include "audio.h"
#include "usb_storage.h" #include "usb_storage.h"
@ -41,10 +41,6 @@
#define RAMDISK_SIZE 2048 #define RAMDISK_SIZE 2048
#endif #endif
#ifndef SECTOR_SIZE
#define SECTOR_SIZE 512
#endif
/* These defaults allow the operation */ /* These defaults allow the operation */
#ifndef USBSTOR_READ_SECTORS_FILTER #ifndef USBSTOR_READ_SECTORS_FILTER
#define USBSTOR_READ_SECTORS_FILTER() ({ 0; }) #define USBSTOR_READ_SECTORS_FILTER() ({ 0; })