summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-15 10:38:15 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-02-15 11:26:39 +0100
commita43a34666e2124c24e86794206aa78d2ad5e910d (patch)
tree9cee489e9763ab32904bad5eef921c3411d7ca3f /cpukit/libfs/src/imfs/imfs.h
parentIMFS: Add CONFIGURE_IMFS_DISABLE_READDIR (diff)
downloadrtems-a43a34666e2124c24e86794206aa78d2ad5e910d.tar.bz2
IMFS: Implement variable length node names
This reduces the average node size and adds more flexibility.
Diffstat (limited to '')
-rw-r--r--cpukit/libfs/src/imfs/imfs.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h
index 2a1eddcfcc..bcf13d8072 100644
--- a/cpukit/libfs/src/imfs/imfs.h
+++ b/cpukit/libfs/src/imfs/imfs.h
@@ -230,16 +230,19 @@ typedef struct {
* Maximum length of a "basename" of an IMFS file/node.
*/
-#define IMFS_NAME_MAX 32
+#define IMFS_NAME_MAX _POSIX_NAME_MAX
/*
+
* The control structure for an IMFS jnode.
*/
struct IMFS_jnode_tt {
rtems_chain_node Node; /* for chaining them together */
IMFS_jnode_t *Parent; /* Parent node */
- char name[IMFS_NAME_MAX+1]; /* "basename" */
+ const char *name; /* "basename" (not \0 terminated) */
+ uint16_t namelen; /* Length of "basename" */
+ uint16_t flags; /* Node flags */
mode_t st_mode; /* File mode */
unsigned short reference_count;
nlink_t st_nlink; /* Link count */
@@ -253,6 +256,8 @@ struct IMFS_jnode_tt {
const IMFS_node_control *control;
};
+#define IMFS_NODE_FLAG_NAME_ALLOCATED 0x1
+
typedef struct {
IMFS_jnode_t Node;
rtems_chain_control Entries;