* libc/envlock.c: Implemented code to let newlib's envlock share
the libio open/close mutex. Since both should be lightly used,
this should not lead to problems and saves resources.
* libc/newlibc.c: Per PR141, move the C library re-enterrant
support directly into the thread dispatch code. RTEMS needs
libc and so requiring libc to use a user extension with its
overhead is not the best solution. This patch lowers the
overhead to 2 pointer moves.
* Per PR212, added envlock support for newlib. This is used
by at least getenv()/putenv() to avoid race conditions.
* libc/envlock.c: New file.
* libc/Makefile.am: Modified to reflect above.
* include/sys/ioctl.h: Relocated from libnetworking/sys.
* include/sys/filio.h: Relocated from libnetworking/sys.
* include/sys/sockio.h: Relocated from libnetworking/sys.
* include/Makefile.am: Reflect changes above.
* configure.ac: Take out *NETWORKING*.
* include/Makefile.am: Add stdint.h and inttypes.h.
(reported by Mike Siers <mikes@poliac.com>)
* include/stdint.h: New file.
* include/inttypes.h: New file.
* libc/gxx_wrappers.c: Task is not preemptable while running a
pthread_once init function. This is slightly less heavy handed
than disabling dispatching and seems better than consuming a mutex.
* Nice Update of PPPD support which eliminates the
requiremetn that drivers be in the termios TASK_DRIVEN mode.
Mike did significant testing and reports that it seems to be
more stable and handle larger packets better. This patch
replaces the termios tasks with more general pppd network
driver tasks. The functions pppinput() and pppstart() get
called from the interrupt service routine.
* libc/termios.c: Added PPCDISC.
Reported by Ibragimov Ilya <ibr@oktet.ru> and tracked as PR63.
* libc/chdir.c: Check for search/execute permissions on chdir.
This requires passing RTEMS_LIBIO_PERMS_SEARCH to
rtems_filesystem_evaluate_path().
* libc/unmount.c: Primarily restructuring and clean up to address
procedures which did not do what their name implied. Also addressed
problem situation where unmount fails and the filesystem was
inconsistent. The mounted filesystem could have been left hanging.
* libc/libio.c: Initialize more fields to NULL/0 during initialiation.
* include/rtems/libio_.h: Fix freenode macro so it works for sockets
which do not have the full set of filesystem operations and are
initialized via something other than open().
* These changes were discussed and reviewed by many people but the
primary people were Jennifer Averett <jennifer@OARcorp.com>
and Eugeny Mints <jack@oktet.ru>.
* libc/utime.c: Add missing call to rtems_filesystem_freenode()
at verification that utime is supported by the filesystem.
* libc/link.c: Remove calls to freenode when the node was
not successfully allocated.
* libc/unmount.c: In the method file_systems_below_this_mountpoint()
added calls to correctly free fs_root_loc when a failure occurs.
* libc/open.c: Add freenode calls upon failure.
* libc/open.c, lib/libc/close.c: (PENDING -- NOT INCLUDED THIS TIMER)
Modifications the move the freenode from open() to close() (also part
of this patch) are pending further discussion.
* libc/termios.c: Fixed a memory leak in the termios
software. Basically the tty open function was allocating an input
raw buffer, an output raw buffer, and a cooked buffer that were
not getting released. I have attached a patch for the latest
snapshot. The patch also has a fix to ensure the tty link list
is updated correctly when a tty is closed.
* include/rtems/libio_.h: Added ifdef to ensure that LOGIN_NAME_MAX
is defined on GNU/Linux (RedHat 6.2 distribution).
* libc/unixlibc.c: Added stubs for rtems_io_register_name() and
rtems_io_lookup_name() so UNIX port would compile the IO manager
sptest that registers /dev/null.
* libc/lseek.c: Modified after discussion with Eugeny S. Mints
<jack@oktet.ru> to correct the behavior. There were two mistakes.
First, iop->offset was incorrectly set for SEEK_END. Second,
iop->offset should be left unmodified if there are errors.
This modification attempts to fix both situations.
* libc/lseek.c: Modified after discussion with Eugeny S. Mints
<jack@oktet.ru> to correct the behavior. There were two mistakes.
First, iop->offset was incorrectly set for SEEK_END. Second,
iop->offset should be left unmodified if there are errors.
This modification attempts to fix both situations.
* libc/termios.c: Fix a bug in the termios implementation in
the following scenario:
The General Terminal Interface document that me states that
if VMIN = 0 and VTIME = 0, then read() should return the minimum
of two values:
a) number of bytes available
b) number of bytes requested (I assume from the read call)
The current implementation of the fillBufferQueue() in termios.c is
always return 1 character with these setting values. I know the
termios buffer has more than one character available and my read()
call is requesting 1024 bytes.
* libc/termios.c: Fix a bug in the termios implementation in
the following scenario:
The General Terminal Interface document that me states that
if VMIN = 0 and VTIME = 0, then read() should return the minimum
of two values:
a) number of bytes available
b) number of bytes requested (I assume from the read call)
The current implementation of the fillBufferQueue() in termios.c is
always return 1 character with these setting values. I know the
termios buffer has more than one character available and my read()
call is requesting 1024 bytes.
* libc/libio_sockets.c (rtems_bsdnet_fdToSocket): Per bug
report from Gene Smith <Gene.Smith@sea.siemens.com>, enhanced the
error checking to account for a socket being closed.
* libc/base_fs.c: Deleted chmod() now that IMFS creates the
root node with the desired permissions. chmod() is also not
supported by the miniIMFS so this is not allowable.
* libc/ttyname.c (ttyname_r): Removed duplicate call to closedir().
* libc/getpwent.c: Create a more robust /etc/passwd and /etc/group.
* libc/base_fs.c: Change permissions of files and directories. Now uses
octal constants.