summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_mknod.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-12-31 10:56:05 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-01-27 06:54:22 +0100
commitcf36b70e8dd8755e7dac6eb516169f586e78566d (patch)
tree97200818ec5dfeaa4e137a572fcbb4db746842b1 /cpukit/libfs/src/imfs/imfs_mknod.c
parentuser/conf.t: Fix typo (diff)
downloadrtems-cf36b70e8dd8755e7dac6eb516169f586e78566d.tar.bz2
IMFS: Replace node union with individual struct
This reduces the average node size. Add and use IMFS_GENERIC_INITIALIZER().
Diffstat (limited to 'cpukit/libfs/src/imfs/imfs_mknod.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_mknod.c25
1 files changed, 7 insertions, 18 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_mknod.c b/cpukit/libfs/src/imfs/imfs_mknod.c
index 5bb8c2da80..9800642180 100644
--- a/cpukit/libfs/src/imfs/imfs_mknod.c
+++ b/cpukit/libfs/src/imfs/imfs_mknod.c
@@ -23,27 +23,17 @@
#include "imfs.h"
-static void get_type_and_info_by_mode_and_dev(
- mode_t mode,
- dev_t dev,
- IMFS_jnode_types_t *type,
- IMFS_types_union *info
-)
+static IMFS_jnode_types_t get_type( mode_t mode )
{
if ( S_ISDIR( mode ) ) {
- *type = IMFS_DIRECTORY;
+ return IMFS_DIRECTORY;
} else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {
- *type = IMFS_DEVICE;
- rtems_filesystem_split_dev_t(
- dev,
- info->device.major,
- info->device.minor
- );
+ return IMFS_DEVICE;
} else if (S_ISFIFO( mode )) {
- *type = IMFS_FIFO;
+ return IMFS_FIFO;
} else {
IMFS_assert( S_ISREG( mode ) );
- *type = IMFS_MEMORY_FILE;
+ return IMFS_MEMORY_FILE;
}
}
@@ -57,12 +47,11 @@ int IMFS_mknod(
{
int rv = 0;
IMFS_jnode_types_t type;
- IMFS_types_union info;
IMFS_jnode_t *new_node;
- get_type_and_info_by_mode_and_dev( mode, dev, &type, &info );
+ type = get_type( mode );
- new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &info );
+ new_node = IMFS_create_node( parentloc, type, name, namelen, mode, &dev );
if ( new_node != NULL ) {
IMFS_jnode_t *parent = parentloc->node_access;