summaryrefslogtreecommitdiffstats
path: root/cpukit/libcsupport/src/fcntl.c (unfollow)
Commit message (Collapse)AuthorFilesLines
2022-04-01cpukit/libcsupport/src/[a-f]*: Change license to BSD-2Joel Sherrill1-3/+22
Updates #3053.
2020-04-28doxygen: Switch @brief and @ingroupSebastian Huber1-1/+2
This order change fixes the Latex documentation build via Doxygen.
2020-04-16Canonicalize config.h includeSebastian Huber1-2/+2
Use the following variant which was already used by most source files: #ifdef HAVE_CONFIG_H #include "config.h" #endif
2020-03-13libio: Robust file descriptor reference countingSebastian Huber1-2/+2
There was a race conditon in the reference counting of file descriptors during a close() operation. After the call to the close handler, the rtems_libio_free() function cleared the flags to zero. However, at this point in time there may still exist some holders of the file descriptor. With RTEMS_DEBUG enabled this could lead to failed assertions in rtems_libio_iop_drop(). Change the code to use only atomic read-modify-write operations on the rtems_libio_iop::flags.
2017-09-15libio: Add hold/drop iop referenceSebastian Huber1-0/+2
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.
2017-09-15libio: LIBIO_GET_IOP() LIBIO_GET_IOP_WITH_ACCESS()Sebastian Huber1-4/+5
Replace rtems_libio_check_fd(), rtems_libio_iop(), rtems_libio_check_open() and rtems_libio_check_permissions() combinations with new LIBIO_GET_IOP() and LIBIO_GET_IOP_WITH_ACCESS() macros. Update #3132.
2017-09-15libio: Add rtems_libio_iop_flags()Sebastian Huber1-5/+5
Update #3132.
2017-09-15libio: Add rtems_libio_iop_flags_initialize()Sebastian Huber1-6/+9
Update #3132.
2017-09-15libio: Add iop set/clear flagsSebastian Huber1-5/+6
Update #3132.
2017-09-14libio: Remove LIBIO_FLAGS_CREATESebastian Huber1-2/+0
Close #3134.
2015-10-26basdefs.h: Add and use RTEMS_UNUSEDSebastian Huber1-1/+1
2015-02-04Filesystem: Use rtems_libio_iop_to_descriptor()Sebastian Huber1-1/+1
Drop parameter check from previously unused rtems_libio_iop_to_descriptor().
2014-03-21Change all references of rtems.com to rtems.org.Chris Johns1-1/+1
2013-12-10PR2158: Add support for dup2.Chris Johns1-6/+47
Split the dub call into dup and dup2 in fcntl.c. This requires a private command which is placed in the internal libio header.
2012-12-08libcsupport: Doxygen Enhancement Task #3Mathew Kallada1-2/+7
http://www.google-melange.com/gci/task/view/google/gci2012/7992210
2012-05-11Remove All CVS Id Strings Possible Using a ScriptJoel Sherrill1-2/+0
Script does what is expected and tries to do it as smartly as possible. + remove occurrences of two blank comment lines next to each other after Id string line removed. + remove entire comment blocks which only exited to contain CVS Ids + If the processing left a blank line at the top of a file, it was removed.
2012-03-13Filesystem: Reference counting for locationsSebastian Huber1-19/+41
o A new data structure rtems_filesystem_global_location_t was introduced to be used for o the mount point location in the mount table entry, o the file system root location in the mount table entry, o the root directory location in the user environment, and o the current directory location in the user environment. During the path evaluation global start locations are obtained to ensure that the current file system instance will be not unmounted in the meantime. o The user environment uses now reference counting and is protected from concurrent access. o The path evaluation process was completely rewritten and simplified. The IMFS, RFS, NFS, and DOSFS use now a generic path evaluation method. Recursive calls in the path evaluation have been replaced with iteration to avoid stack overflows. Only the evaluation of symbolic links is recursive. No dynamic memory allocations and intermediate buffers are used in the high level path evaluation. No global locks are held during the file system instance specific path evaluation process. o Recursive symbolic link evaluation is now limited by RTEMS_FILESYSTEM_SYMLOOP_MAX. Applications can retrieve this value via sysconf(). o The device file system (devFS) uses now no global variables and allocation from the workspace. Node names are allocated from the heap. o The upper layer lseek() performs now some parameter checks. o The upper layer ftruncate() performs now some parameter checks. o unmask() is now restricted to the RWX flags and protected from concurrent access. o The fchmod_h and rmnod_h file system node handlers are now a file system operation. o The unlink_h operation has been removed. All nodes are now destroyed with the rmnod_h operation. o New lock_h, unlock_h, clonenod_h, and are_nodes_equal_h file system operations. o The path evaluation and file system operations are now protected by per file system instance lock and unlock operations. o Fix and test file descriptor duplicate in fcntl(). o New test fstests/fsnofs01.
2010-07-152010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>Sebastian Huber1-3/+1
* libcsupport/include/rtems/libio.h: Removed file_info and handlers fields in rtems_libio_t. * libcsupport/src/close.c, libcsupport/src/fcntl.c, libcsupport/src/fdatasync.c, libcsupport/src/fstat.c, libcsupport/src/fsync.c, libcsupport/src/ftruncate.c, libcsupport/src/getdents.c, libcsupport/src/ioctl.c, libcsupport/src/libio_sockets.c, libcsupport/src/lseek.c, libcsupport/src/open.c, libcsupport/src/read.c, libcsupport/src/readv.c, libcsupport/src/write.c, libcsupport/src/writev.c, libfs/src/devfs/devclose.c, libfs/src/devfs/devioctl.c, libfs/src/devfs/devopen.c, libfs/src/devfs/devread.c, libfs/src/devfs/devwrite.c libfs/src/dosfs/msdos_dir.c libfs/src/dosfs/msdos_file.c libfs/src/imfs/deviceio.c libfs/src/imfs/imfs_directory.c libfs/src/imfs/imfs_fifo.c libfs/src/imfs/memfile.c libfs/src/nfsclient/src/nfs.c libfs/src/rfs/rtems-rfs-rtems-file.c libfs/src/rfs/rtems-rfs-rtems.h libnetworking/lib/ftpfs.c: Reflect changes above.
2010-07-012010-07-01 Jennifer Averett <Jennifer.Averett@OARcorp.com>Jennifer Averett1-6/+4
* libcsupport/src/chdir.c, libcsupport/src/chmod.c, libcsupport/src/chown.c, libcsupport/src/close.c, libcsupport/src/eval.c, libcsupport/src/fchdir.c, libcsupport/src/fchmod.c, libcsupport/src/fchown.c, libcsupport/src/fcntl.c, libcsupport/src/fdatasync.c, libcsupport/src/freenode.c, libcsupport/src/fstat.c, libcsupport/src/fsync.c, libcsupport/src/ftruncate.c, libcsupport/src/ioctl.c, libcsupport/src/link.c, libcsupport/src/lseek.c, libcsupport/src/mknod.c, libcsupport/src/mount.c, libcsupport/src/open.c, libcsupport/src/read.c, libcsupport/src/readlink.c, libcsupport/src/readv.c, libcsupport/src/rmdir.c, libcsupport/src/stat.c, libcsupport/src/statvfs.c, libcsupport/src/symlink.c, libcsupport/src/unlink.c, libcsupport/src/unmount.c, libcsupport/src/write.c: Removed filesystem checks for NULL methods checks from the main posix rountines. These are now required to have at a miminum default routines in the tables.
2009-09-30Rework autoconf defines.Ralf Corsepius1-1/+1
2009-09-15Add __attribute__((unused)) to function arguments.Ralf Corsepius1-1/+1
2004-04-18Remove stray white spaces.Ralf Corsepius1-4/+4
2004-04-15Remove stray white spaces.Ralf Corsepius1-1/+0
2003-09-042003-09-04 Joel Sherrill <joel@OARcorp.com>Joel Sherrill1-1/+1
* include/chain.h, include/clockdrv.h, include/console.h, include/iosupp.h, include/rtc.h, include/spurious.h, include/timerdrv.h, include/vmeintr.h, include/motorola/mc68230.h, include/rtems/libcsupport.h, include/rtems/libio.h, include/rtems/libio_.h, include/rtems/termiostypes.h, include/sys/termios.h, include/zilog/z8036.h, include/zilog/z8530.h, include/zilog/z8536.h, src/__brk.c, src/__gettod.c, src/__sbrk.c, src/__times.c, src/access.c, src/base_fs.c, src/cfgetispeed.c, src/cfgetospeed.c, src/cfsetispeed.c, src/cfsetospeed.c, src/chdir.c, src/chmod.c, src/chown.c, src/chroot.c, src/close.c, src/ctermid.c, src/dup.c, src/dup2.c, src/eval.c, src/fchdir.c, src/fchmod.c, src/fcntl.c, src/fdatasync.c, src/fpathconf.c, src/fs_null_handlers.c, src/fstat.c, src/fsync.c, src/ftruncate.c, src/getdents.c, src/getpwent.c, src/hosterr.c, src/ioctl.c, src/isatty.c, src/libio.c, src/libio_sockets.c, src/link.c, src/lseek.c, src/lstat.c, src/malloc.c, src/mallocfreespace.c, src/mkdir.c, src/mkfifo.c, src/mknod.c, src/mount.c, src/newlibc.c, src/no_libc.c, src/no_posix.c, src/open.c, src/pathconf.c, src/pipe.c, src/privateenv.c, src/read.c, src/readlink.c, src/rewinddir.c, src/rmdir.c, src/seekdir.c, src/stat.c, src/symlink.c, src/sync.c, src/tcdrain.c, src/tcflow.c, src/tcflush.c, src/tcgetattr.c, src/tcgetprgrp.c, src/tcsendbreak.c, src/tcsetattr.c, src/tcsetpgrp.c, src/telldir.c, src/termios.c, src/termiosinitialize.c, src/truncate.c, src/umask.c, src/unixlibc.c, src/unlink.c, src/unmount.c, src/utime.c, src/write.c: URL for license changed.
2003-02-052003-02-05 Till Straumann <strauman@slac.stanford.edu>Joel Sherrill1-5/+39
PR 340/filesystem * src/fcntl.c: Add missing _fcntl_r assumed to exist by newlib.
2002-01-062002-02-05 Ralf Corsepius <corsepiu@faw.uni-ulm.de>Joel Sherrill1-0/+1
* libc/Makefile.am: Add MULTISUBDIR support. * libc/fcntl.c: Add #include <stdarg.h>. * libc/privateenv.c: Add #include <stdlib.h>.
2001-01-082001-01-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>Joel Sherrill1-0/+4
* configure.in: Add libc/config.h * libc/Makefile.am: Add INCLUDES += -I. to pickup config.h * libc/.cvsignore: Add config.h and stamp-h * libc/*.c: Add config.h support.
2000-11-012000-11-01 Joel Sherrill <joel@OARcorp.com>Joel Sherrill1-1/+1
* include/Makefile.am, include/rtems/libio_.h, libc/Makefile.am, libc/assoc.c, libc/assocnamebad.c, libc/base_fs.c, libc/cfsetispeed.c, libc/cfsetospeed.c, libc/chdir.c, libc/chmod.c, libc/chown.c, libc/close.c, libc/closedir.c, libc/dup2.c, libc/error.c, libc/eval.c, libc/fchdir.c, libc/fchmod.c, libc/fcntl.c, libc/fdatasync.c, libc/fpathconf.c, libc/fstat.c, libc/fsync.c, libc/ftruncate.c, libc/getdents.c, libc/ioctl.c, libc/libio.c, libc/libio_sockets.c, libc/link.c, libc/lseek.c, libc/malloc.c, libc/mallocfreespace.c, libc/mknod.c, libc/mount.c, libc/newlibc.c, libc/no_libc.c, libc/open.c, libc/read.c, libc/readlink.c, libc/rmdir.c, libc/stat.c, libc/symlink.c, libc/tcsetattr.c, libc/telldir.c, libc/ttyname.c, libc/ttyname_r.c, libc/umask.c, libc/unlink.c, libc/unmount.c, libc/utime.c, libc/write.c: assoc.h, error.h, libio_.h, libio.h, and libcsupport.h moved from libc to lib/include/rtems and now must be referenced as <rtems/XXX.h>. * include/rtems/Makefile.am, include/rtems/.cvsignore: New file. * include/rtems/assoc.h, include/rtems/error.h, include/rtems/libcsupport.h, include/rtems/libio.h, include/rtems/libio_.h: New/moved files.
2000-10-182000-10-18 Joel Sherrill <joel@OARcorp.com>Joel Sherrill1-4/+6
* libc/fcntl.c: Do not require every filesystem to have an fcntl() handler. Most fcntl() operations can be performed with no filesystem support. * ChangeLog: Corrected comment.
2000-09-282000-09-28 Joel Sherrill <joel@OARcorp.com>Joel Sherrill1-2/+2
* libc/libio.h (rtems_filesystem_file_handlers_r, rtems_filesystem_operations_table): Added _h to all structure fields to indicate they are "handlers". * libc/libio_.h, libc/chdir.c, libc/chmod.c, libc/chown.c, libc/close.c, libc/eval.c, libc/fchdir.c, libc/fchmod.c, libc/fcntl.c, libc/fdatasync.c, libc/fstat.c, libc/fsync.c, libc/ftruncate.c, libc/getdents.c, libc/imfs_eval.c, libc/imfs_unlink.c, libc/ioctl.c, libc/ioman.c, libc/link.c, libc/lseek.c, libc/mknod.c, libc/mount.c, libc/open.c, libc/read.c, libc/readlink.c, libc/rmdir.c, libc/stat.c, libc/symlink.c, libc/unlink.c, libc/unmount.c, libc/utime.c, libc/write.c: Modified to reflect above name change.
2000-08-112000-08-11 Chris Johns <ccj@acm.org>Joel Sherrill1-4/+10
* libc/chmod.c: Return ENOTSUP if filesystem does not have handler. * libc/eval.c: Ditto. * libc/fcntl.c: Ditto. * libc/fsync.c: Ditto. * libc/ioctl.c: Ditto. * libc/ioman.c: Ditto. * libc/link.c: Ditto. * libc/memfile.c: Ditto. * libc/mknod.c: Ditto. * libc/symlink.c: Ditto. * libc/libio.h(rtems_filesystem_dev_major_t): New macro. * libc/libio.h(rtems_filesystem_dev_minor_t): New macro.
1999-11-17Updated copyright notice.Joel Sherrill1-2/+1
1999-11-02Fixed F_SETFL to properly convert between internalJoel Sherrill1-2/+3
libio flags and external fcntl.h style flags.
1999-03-31Corrected return value.Jennifer Averett1-1/+1
1999-03-19Another cleanup patch for the previous rejected hunk.Joel Sherrill1-0/+1
1999-03-19A cleanup patch on fcntl.c from Eric Norum <eric@skatter.usask.ca> forJoel Sherrill1-0/+2
2 lines of code that did not get included when Joel tried to manually add a rejected patch.
1999-03-19Patch from Eric Norum <eric@skatter.usask.ca> that adds externalJoel Sherrill1-24/+36
fcntl support and an external fcntl handler for sockets.
1999-03-08Added support for F_GETFL and F_SETFL.Joel Sherrill1-2/+3
1999-03-06Added F_GETFL support so the fdopen() implementation in newlib 1.8.1Joel Sherrill1-2/+17
would work. At the same time, the initial implementation of F_SETFL was added. A support routine was added to convert internal libio flags back to the POSIX style. Eventually the internal representation should be eliminated in the interest of simplicity and code reduction. This problem was reported by Jake Janovetz <janovetz@tempest.ece.uiuc.edu>.
1999-03-01Patch from Eric Norum <eric@skatter.usask.ca> to eliminate externalJoel Sherrill1-7/+0
IO handlers scheme that was implemented originally just to support sockets. The file system IO switch is more general and works fine.
1999-01-20More general fix based on bug report and patch from Ian Lance TaylorJoel Sherrill1-0/+1
<ian@airs.com> to fix this problem: There is a small bug in __rtems_close in c/src/lib/libc/libio.c. It does not check whether the file descriptor it is passed is open. This can cause it to make a null dereference if it is passed a file descriptor which is in the valid range but which was not opened, or which was already closed.
1998-12-10Merged Eric Norum's select patch that was based on 4.0 and resolvedJoel Sherrill1-4/+4
all conflicts.
1998-12-03Added source for F_DUPFD.Jennifer Averett1-12/+18
1998-11-23Added base version of file system infrastructure. This includes a majorJoel Sherrill1-0/+111
overhaul of the RTEMS system call interface. This base file system is the "In-Memory File System" aka IMFS. The design and implementation was done by the following people: + Joel Sherrill (joel@OARcorp.com) + Jennifer Averett (jennifer@OARcorp.com) + Steve "Mr Mount" Salitasc (salitasc@OARcorp.com) + Kerwin Wade (wade@OARcorp.com) PROBLEMS ======== + It is VERY likely that merging this will break the UNIX port. This can/will be fixed. + There is likely some reentrancy/mutual exclusion needed. + Eventually, there should be a "mini-IMFS" description table to eliminate links, symlinks, etc to save memory. All you need to have "classic RTEMS" functionality is technically directories and device IO. All the rest could be left out to save memory.