diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-05-14 15:21:30 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-05-15 10:01:42 +0200 |
commit | 53da07e436df21f078de665d90442ee5c7166ab7 (patch) | |
tree | 0249d3ca4e181c677f243907a754dd1e8518bb36 /cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c | |
parent | Filesystem: Add shared device IO support (diff) | |
download | rtems-53da07e436df21f078de665d90442ee5c7166ab7.tar.bz2 |
Filesystem: PR1255: Move offset update to handlers
It is now the responsibility of the read() and write() handler to update
the offset field of the IO descriptor (rtems_libio_t). This change
makes it possible to protect the IO descriptor from concurrent access by
per file locks.
Diffstat (limited to 'cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c')
-rw-r--r-- | cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c b/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c index 525dceec1d..7de04038e7 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-rtems-file.c @@ -163,6 +163,9 @@ rtems_rfs_rtems_file_read (rtems_libio_t* iop, } } + if (read >= 0) + iop->offset = pos + read; + rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file)); return read; @@ -220,7 +223,6 @@ rtems_rfs_rtems_file_write (rtems_libio_t* iop, rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file)); return rtems_rfs_rtems_error ("file-write: write append seek", rc); } - iop->offset = pos; } while (count) @@ -251,6 +253,9 @@ rtems_rfs_rtems_file_write (rtems_libio_t* iop, } } + if (write >= 0) + iop->offset = pos + write; + rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file)); return write; |