diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-09-13 09:22:19 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-09-15 10:29:34 +0200 |
commit | baef823cd550449bfbcc36625b9571389d8ad1af (patch) | |
tree | 238c1952d23dc09d41ae99d186d0656f78ed857b /cpukit/libcsupport/src/read.c | |
parent | libio: Unify readv() and writev() (diff) | |
download | rtems-baef823cd550449bfbcc36625b9571389d8ad1af.tar.bz2 |
libio: Add hold/drop iop reference
Check iop reference count in close() and return -1 with errno set to
EBUSY in case the file descriptor is still in use.
Update #3132.
Diffstat (limited to 'cpukit/libcsupport/src/read.c')
-rw-r--r-- | cpukit/libcsupport/src/read.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/cpukit/libcsupport/src/read.c b/cpukit/libcsupport/src/read.c index d55ff180ae..03c39120bb 100644 --- a/cpukit/libcsupport/src/read.c +++ b/cpukit/libcsupport/src/read.c @@ -31,6 +31,7 @@ ssize_t read( ) { rtems_libio_t *iop; + ssize_t n; rtems_libio_check_buffer( buffer ); rtems_libio_check_count( count ); @@ -40,7 +41,9 @@ ssize_t read( /* * Now process the read(). */ - return (*iop->pathinfo.handlers->read_h)( iop, buffer, count ); + n = (*iop->pathinfo.handlers->read_h)( iop, buffer, count ); + rtems_libio_iop_drop( iop ); + return n; } #if defined(RTEMS_NEWLIB) && !defined(HAVE__READ_R) |