Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2002-06-06 00:58:59 +0400
committerJeff Johnston <jjohnstn@redhat.com>2002-06-06 00:58:59 +0400
commit39e65e0113e188e4177077407d337bb3a1ac1853 (patch)
tree7afb2759a870354f5267c72215acfcfc89bb12fa /newlib/libc/sys/linux
parentea4e6ec8f9fe4a784d4ce2ef71037e05fb9a876d (diff)
2002-06-05 Jeff Johnston <jjohnstn@redhat.com>
* libc/include/string.h[__linux__]: Add strsignal prototype. * libc/include/sys/lock.h: New file with default locking support. * libc/include/sys/reent.h: Add signal buffer support for strsignal and psignal. * libc/posix/Makefile.am: Add support for readdir_r.c. * libc/posix/Makefile.in: Regenerated. * libc/posix/closedir.c: Add locking support and hash table cleanup. * libc/posix/opendir.c: Add lock support. * libc/posix/readdir.c: Ditto. * libc/posix/rewinddir.c: Ditto. * libc/posix/scandir.c: Ditto. * libc/posix/seekdir.c: Ditto. * libc/posix/telldir.c: Ditto plus add _cleanupdir routine to clean up leftover hash table entries. * libc/posix/readdir_r.c: New file. * libc/sys/linux/Makefile.am: Add psignal.c and strsignal.c support. * libc/sys/linux/Makefile.in: Regenerated. * libc/sys/linux/sys/dirent.h: Add dd_lock to DIR structure. * libc/sys/linux/sys/signal.h: Add psignal prototype. * libc/sys/linux/psignal.c: New file. * libc/sys/linux/strsignal.c: Ditto.
Diffstat (limited to 'newlib/libc/sys/linux')
-rw-r--r--newlib/libc/sys/linux/Makefile.am56
-rw-r--r--newlib/libc/sys/linux/Makefile.in79
-rw-r--r--newlib/libc/sys/linux/psignal.c15
-rw-r--r--newlib/libc/sys/linux/strsignal.c63
-rw-r--r--newlib/libc/sys/linux/sys/dirent.h5
-rw-r--r--newlib/libc/sys/linux/sys/signal.h21
6 files changed, 204 insertions, 35 deletions
diff --git a/newlib/libc/sys/linux/Makefile.am b/newlib/libc/sys/linux/Makefile.am
index f2c4baee6..fccb24dc3 100644
--- a/newlib/libc/sys/linux/Makefile.am
+++ b/newlib/libc/sys/linux/Makefile.am
@@ -10,13 +10,55 @@ SUBLIBS = \
$(LINUX_MACH_LIB)
LIB_SOURCES = \
- brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \
- getreent.c ids.c inode.c io.c io64.c linux.c mmap.c \
- pread.c pread64.c process.c pwrite.c pwrite64.c raise.c realpath.c \
- rename.c resource.c sched.c select.c seteuid.c shm_open.c shm_unlink.c \
- sig.c sigaction.c sigqueue.c signal.c siglongjmp.c sigset.c sigwait.c \
- socket.c sleep.c stack.c sysconf.c sysctl.c systat.c system.c \
- tcdrain.c tcsendbrk.c termios.c time.c usleep.c wait.c
+ brk.c \
+ cfspeed.c \
+ flockfile.c \
+ funlockfile.c \
+ gethostname.c \
+ getoptlong.c \
+ getreent.c \
+ ids.c \
+ inode.c \
+ io.c \
+ io64.c \
+ linux.c \
+ mmap.c \
+ pread.c \
+ pread64.c \
+ process.c \
+ psignal.c \
+ pwrite.c \
+ pwrite64.c \
+ raise.c \
+ realpath.c \
+ rename.c \
+ resource.c \
+ sched.c \
+ select.c \
+ seteuid.c \
+ shm_open.c \
+ shm_unlink.c \
+ sig.c \
+ sigaction.c \
+ sigqueue.c \
+ signal.c \
+ siglongjmp.c \
+ sigset.c \
+ sigwait.c \
+ socket.c \
+ sleep.c \
+ stack.c \
+ strsignal.c \
+ sysconf.c \
+ sysctl.c \
+ systat.c \
+ system.c \
+ tcdrain.c \
+ tcsendbrk.c \
+ termios.c \
+ time.c \
+ usleep.c \
+ wait.c
# This will handle both /usr/src/linux-2.4/include/asm/signal.h (in Red Hat Linux 7.1)
# and also /usr/src/linux/include/asm/signal.h in older versions of Red Hat Linux
diff --git a/newlib/libc/sys/linux/Makefile.in b/newlib/libc/sys/linux/Makefile.in
index b89d6734b..d32595349 100644
--- a/newlib/libc/sys/linux/Makefile.in
+++ b/newlib/libc/sys/linux/Makefile.in
@@ -101,13 +101,55 @@ SUBLIBS = \
LIB_SOURCES = \
- brk.c cfspeed.c flockfile.c funlockfile.c gethostname.c getoptlong.c \
- getreent.c ids.c inode.c io.c io64.c linux.c mmap.c \
- pread.c pread64.c process.c pwrite.c pwrite64.c raise.c realpath.c \
- rename.c resource.c sched.c select.c seteuid.c shm_open.c shm_unlink.c \
- sig.c sigaction.c sigqueue.c signal.c siglongjmp.c sigset.c sigwait.c \
- socket.c sleep.c stack.c sysconf.c sysctl.c systat.c system.c \
- tcdrain.c tcsendbrk.c termios.c time.c usleep.c wait.c
+ brk.c \
+ cfspeed.c \
+ flockfile.c \
+ funlockfile.c \
+ gethostname.c \
+ getoptlong.c \
+ getreent.c \
+ ids.c \
+ inode.c \
+ io.c \
+ io64.c \
+ linux.c \
+ mmap.c \
+ pread.c \
+ pread64.c \
+ process.c \
+ psignal.c \
+ pwrite.c \
+ pwrite64.c \
+ raise.c \
+ realpath.c \
+ rename.c \
+ resource.c \
+ sched.c \
+ select.c \
+ seteuid.c \
+ shm_open.c \
+ shm_unlink.c \
+ sig.c \
+ sigaction.c \
+ sigqueue.c \
+ signal.c \
+ siglongjmp.c \
+ sigset.c \
+ sigwait.c \
+ socket.c \
+ sleep.c \
+ stack.c \
+ strsignal.c \
+ sysconf.c \
+ sysctl.c \
+ systat.c \
+ system.c \
+ tcdrain.c \
+ tcsendbrk.c \
+ termios.c \
+ time.c \
+ usleep.c \
+ wait.c
# This will handle both /usr/src/linux-2.4/include/asm/signal.h (in Red Hat Linux 7.1)
@@ -140,26 +182,27 @@ LIBS = @LIBS@
@USE_LIBTOOL_FALSE@lib_a_OBJECTS = brk.o cfspeed.o flockfile.o \
@USE_LIBTOOL_FALSE@funlockfile.o gethostname.o getoptlong.o getreent.o \
@USE_LIBTOOL_FALSE@ids.o inode.o io.o io64.o linux.o mmap.o pread.o \
-@USE_LIBTOOL_FALSE@pread64.o process.o pwrite.o pwrite64.o raise.o \
-@USE_LIBTOOL_FALSE@realpath.o rename.o resource.o sched.o select.o \
-@USE_LIBTOOL_FALSE@seteuid.o shm_open.o shm_unlink.o sig.o sigaction.o \
-@USE_LIBTOOL_FALSE@sigqueue.o signal.o siglongjmp.o sigset.o sigwait.o \
-@USE_LIBTOOL_FALSE@socket.o sleep.o stack.o sysconf.o sysctl.o systat.o \
-@USE_LIBTOOL_FALSE@system.o tcdrain.o tcsendbrk.o termios.o time.o \
-@USE_LIBTOOL_FALSE@usleep.o wait.o
+@USE_LIBTOOL_FALSE@pread64.o process.o psignal.o pwrite.o pwrite64.o \
+@USE_LIBTOOL_FALSE@raise.o realpath.o rename.o resource.o sched.o \
+@USE_LIBTOOL_FALSE@select.o seteuid.o shm_open.o shm_unlink.o sig.o \
+@USE_LIBTOOL_FALSE@sigaction.o sigqueue.o signal.o siglongjmp.o \
+@USE_LIBTOOL_FALSE@sigset.o sigwait.o socket.o sleep.o stack.o \
+@USE_LIBTOOL_FALSE@strsignal.o sysconf.o sysctl.o systat.o system.o \
+@USE_LIBTOOL_FALSE@tcdrain.o tcsendbrk.o termios.o time.o usleep.o \
+@USE_LIBTOOL_FALSE@wait.o
LTLIBRARIES = $(noinst_LTLIBRARIES)
@USE_LIBTOOL_TRUE@liblinux_la_DEPENDENCIES =
@USE_LIBTOOL_TRUE@liblinux_la_OBJECTS = brk.lo cfspeed.lo flockfile.lo \
@USE_LIBTOOL_TRUE@funlockfile.lo gethostname.lo getoptlong.lo \
@USE_LIBTOOL_TRUE@getreent.lo ids.lo inode.lo io.lo io64.lo linux.lo \
-@USE_LIBTOOL_TRUE@mmap.lo pread.lo pread64.lo process.lo pwrite.lo \
-@USE_LIBTOOL_TRUE@pwrite64.lo raise.lo realpath.lo rename.lo \
+@USE_LIBTOOL_TRUE@mmap.lo pread.lo pread64.lo process.lo psignal.lo \
+@USE_LIBTOOL_TRUE@pwrite.lo pwrite64.lo raise.lo realpath.lo rename.lo \
@USE_LIBTOOL_TRUE@resource.lo sched.lo select.lo seteuid.lo shm_open.lo \
@USE_LIBTOOL_TRUE@shm_unlink.lo sig.lo sigaction.lo sigqueue.lo \
@USE_LIBTOOL_TRUE@signal.lo siglongjmp.lo sigset.lo sigwait.lo \
-@USE_LIBTOOL_TRUE@socket.lo sleep.lo stack.lo sysconf.lo sysctl.lo \
-@USE_LIBTOOL_TRUE@systat.lo system.lo tcdrain.lo tcsendbrk.lo \
+@USE_LIBTOOL_TRUE@socket.lo sleep.lo stack.lo strsignal.lo sysconf.lo \
+@USE_LIBTOOL_TRUE@sysctl.lo systat.lo system.lo tcdrain.lo tcsendbrk.lo \
@USE_LIBTOOL_TRUE@termios.lo time.lo usleep.lo wait.lo
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
diff --git a/newlib/libc/sys/linux/psignal.c b/newlib/libc/sys/linux/psignal.c
new file mode 100644
index 000000000..f5fedc9fa
--- /dev/null
+++ b/newlib/libc/sys/linux/psignal.c
@@ -0,0 +1,15 @@
+/* libc/sys/linux/psignal.c - print signal message to stderr */
+
+/* Copyright 2002, Red Hat Inc. */
+
+#include <stdio.h>
+#include <string.h>
+
+void
+psignal (int sig, const char *s)
+{
+ if (s != NULL)
+ fprintf (stderr, "%s: %s\n", s, strsignal (sig));
+ else
+ fprintf (stderr, "%s\n", strsignal (sig));
+}
diff --git a/newlib/libc/sys/linux/strsignal.c b/newlib/libc/sys/linux/strsignal.c
new file mode 100644
index 000000000..3f95e18a7
--- /dev/null
+++ b/newlib/libc/sys/linux/strsignal.c
@@ -0,0 +1,63 @@
+#include <string.h>
+#include <signal.h>
+#include <stdio.h>
+#include <reent.h>
+
+static const char *sigstring[] =
+ {
+ "Signal 0",
+ "Hangup",
+ "Interrupt",
+ "Quit",
+ "Illegal instruction",
+ "Trace/breakpoint trap",
+ "IOT trap",
+ "EMT trap",
+ "Floating point exception",
+ "Killed",
+ "Bus error",
+ "Segmentation fault",
+ "Bad system call",
+ "Broken pipe",
+ "Alarm clock",
+ "Terminated",
+ "Urgent I/O condition",
+ "Stopped (signal)",
+ "Stopped",
+ "Continued",
+ "Child exited",
+ "Stopped (tty input)",
+ "Stopped (tty output)",
+ "I/O possible",
+ "CPU time limit exceeded",
+ "File size limit exceeded",
+ "Virtual timer expired",
+ "Profiling timer expired",
+ "Window changed",
+ "Resource lost",
+ "User defined signal 1",
+ "User defined signal 2"
+ };
+
+char *
+strsignal (int sig)
+{
+ if (sig < 0 || sig >= __SIGRTMIN)
+ {
+ char *buffer;
+ struct _reent *ptr;
+
+ ptr = _REENT;
+
+ _REENT_CHECK_SIGNAL_BUF(ptr);
+ buffer = _REENT_SIGNAL_BUF(ptr);
+
+ if (sig < 0 || sig > __SIGRTMAX)
+ siprintf (buffer, "Unknown signal %d", sig);
+ else
+ siprintf (buffer, "Real-time signal %d", sig - __SIGRTMIN);
+ return buffer;
+ }
+ else
+ return sigstring[sig];
+}
diff --git a/newlib/libc/sys/linux/sys/dirent.h b/newlib/libc/sys/linux/sys/dirent.h
index ab6b58d26..79949cb0b 100644
--- a/newlib/libc/sys/linux/sys/dirent.h
+++ b/newlib/libc/sys/linux/sys/dirent.h
@@ -8,8 +8,12 @@
#include <sys/types.h>
#include <linux/dirent.h>
+#define _LIBC
+#include <sys/lock.h>
+#undef _LIBC
#define HAVE_NO_D_NAMLEN /* no struct dirent->d_namlen */
+#define HAVE_DD_LOCK /* have locking mechanism */
#define MAXNAMLEN 255 /* sizeof(struct dirent.d_name)-1 */
@@ -21,6 +25,7 @@ typedef struct {
char *dd_buf; /* buffer */
int dd_len; /* buffer length */
int dd_size; /* amount of data in buffer */
+ _LOCK_RECURSIVE_T dd_lock;
} DIR;
diff --git a/newlib/libc/sys/linux/sys/signal.h b/newlib/libc/sys/linux/sys/signal.h
index 3367ca8b7..73e9c7921 100644
--- a/newlib/libc/sys/linux/sys/signal.h
+++ b/newlib/libc/sys/linux/sys/signal.h
@@ -30,16 +30,17 @@
#include <_ansi.h>
-int _EXFUN(kill, (int, int));
-int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *));
-int _EXFUN(sigaddset, (sigset_t *, const int));
-int _EXFUN(sigdelset, (sigset_t *, const int));
-int _EXFUN(sigismember, (const sigset_t *, int));
-int _EXFUN(sigfillset, (sigset_t *));
-int _EXFUN(sigemptyset, (sigset_t *));
-int _EXFUN(sigpending, (sigset_t *));
-int _EXFUN(sigsuspend, (const sigset_t *));
-int _EXFUN(sigpause, (int));
+int _EXFUN(kill, (int, int));
+_VOID _EXFUN(psignal, (int, const char *));
+int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *));
+int _EXFUN(sigaddset, (sigset_t *, const int));
+int _EXFUN(sigdelset, (sigset_t *, const int));
+int _EXFUN(sigismember, (const sigset_t *, int));
+int _EXFUN(sigfillset, (sigset_t *));
+int _EXFUN(sigemptyset, (sigset_t *));
+int _EXFUN(sigpending, (sigset_t *));
+int _EXFUN(sigsuspend, (const sigset_t *));
+int _EXFUN(sigpause, (int));
#ifndef _POSIX_SOURCE
extern const char *const sys_siglist[];