[RTEMS Project] #2786: Remove the devfs in favor of a stripped down IMFS configuration

RTEMS trac trac at rtems.org
Tue Sep 20 05:38:08 UTC 2016


#2786: Remove the devfs in favor of a stripped down IMFS configuration
-----------------------------+-------------------
 Reporter:  sebastian.huber  |       Owner:
     Type:  enhancement      |      Status:  new
 Priority:  normal           |   Milestone:  4.12
Component:  filesystem       |     Version:  4.12
 Severity:  normal           |  Resolution:
 Keywords:                   |
-----------------------------+-------------------

Comment (by sebastian.huber):

 The devfs has some design flaws.

 * It uses a link-time configured fixed-size table to store the devices.

 * It uses the standard RTEMS drivers.

 The standard RTEMS drivers have some design flaws

 * They use a link-time configured fixed-size table.  A const array of
 handlers is copied into one of the table entries via
 rtems_io_register_driver(), e.g. size is doubled.

 * They are not able to fully support the handlers available via the
 filesystem layer (rtems_filesystem_file_handlers_r), e.g. no kqueue(),
 fsync().

 * There is a considerable layering before you reach the device handler
 with a parameter pack/unpack, e.g.

 {{{
 #0  rtems_termios_write (arg=0x2046a50) at
 ../../../../../../rtems/c/src/../../cpukit/libcsupport/src/termios.c:1100
 #1  0x0201ad48 in rtems_io_write (major=major at entry=0,
 minor=minor at entry=0, argument=argument at entry=0x2046a50) at
 ../../../../../../rtems/c/src/../../cpukit/sapi/src/iowrite.c:36
 #2  0x0201aa84 in rtems_deviceio_write (iop=0x2027bb0
 <rtems_libio_iops+112>, buf=0x2021550 <_rodata_start+128>, nbyte=20,
 major=0, minor=0) at
 ../../../../../../rtems/c/src/../../cpukit/libcsupport/src/sup_fs_deviceio.c:109
 #3  0x02021310 in write (fd=<optimized out>, buffer=0x2021550
 <_rodata_start+128>, count=20) at
 ../../../../../../rtems/c/src/../../cpukit/libcsupport/src/write.c:48
 }}}

 vs.

 {{{
 #0  rtems_termios_imfs_write (iop=0x20c1d0 <rtems_libio_iops+112>,
 buffer=0x1300a0, count=20) at
 ../../../../../../rtems/c/src/../../cpukit/libcsupport/src/termios.c:1931
 #1  0x0012fbcc in write (fd=2, buffer=0x1300a0, count=20) at
 ../../../../../../rtems/c/src/../../cpukit/libcsupport/src/write.c:48
 }}}

 For an example how IMFS can be configured, see fstests/fsimfsconfig0[123].

--
Ticket URL: <http://devel.rtems.org/ticket/2786#comment:2>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list