summaryrefslogtreecommitdiff
path: root/firmware/include
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2017-03-12 22:05:44 -0400
committerMichael Sevakis <jethead71@rockbox.org>2017-03-12 22:05:44 -0400
commit6db80020b45ae22b19524b01f60d0653d70ac7ca (patch)
tree924a9944abe38e094cdbc4b70d0489ed6bc162ce /firmware/include
parent70c929179b80e0657e31558e34d2bc62e1176564 (diff)
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
Diffstat (limited to 'firmware/include')
-rw-r--r--firmware/include/disk_cache.h23
-rw-r--r--firmware/include/file_internal.h43
-rw-r--r--firmware/include/fs_defines.h108
3 files changed, 109 insertions, 65 deletions
diff --git a/firmware/include/disk_cache.h b/firmware/include/disk_cache.h
index 725b3778cc..79b2ccf2c6 100644
--- a/firmware/include/disk_cache.h
+++ b/firmware/include/disk_cache.h
@@ -21,29 +21,6 @@
#ifndef 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 "mv.h"
diff --git a/firmware/include/file_internal.h b/firmware/include/file_internal.h
index 5893737833..d62b5a8541 100644
--- a/firmware/include/file_internal.h
+++ b/firmware/include/file_internal.h
@@ -28,55 +28,14 @@
#include "mutex.h"
#include "mrsw_lock.h"
#include "fs_attr.h"
+#include "fs_defines.h"
#include "fat.h"
#ifdef HAVE_DIRCACHE
#include "dircache.h"
#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)
-/* 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 */
#define ATTR_NEW_FILE (ATTR_ARCHIVE)
#define ATTR_NEW_DIRECTORY (ATTR_DIRECTORY)
diff --git a/firmware/include/fs_defines.h b/firmware/include/fs_defines.h
new file mode 100644
index 0000000000..538c4b36cd
--- /dev/null
+++ b/firmware/include/fs_defines.h
@@ -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 */