diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2002-06-05 20:58:59 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2002-06-05 20:58:59 +0000 |
commit | 39e65e0113e188e4177077407d337bb3a1ac1853 (patch) | |
tree | 7afb2759a870354f5267c72215acfcfc89bb12fa /newlib/libc/sys/linux | |
parent | ea4e6ec8f9fe4a784d4ce2ef71037e05fb9a876d (diff) | |
download | cygnal-39e65e0113e188e4177077407d337bb3a1ac1853.tar.gz cygnal-39e65e0113e188e4177077407d337bb3a1ac1853.tar.bz2 cygnal-39e65e0113e188e4177077407d337bb3a1ac1853.zip |
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.am | 56 | ||||
-rw-r--r-- | newlib/libc/sys/linux/Makefile.in | 79 | ||||
-rw-r--r-- | newlib/libc/sys/linux/psignal.c | 15 | ||||
-rw-r--r-- | newlib/libc/sys/linux/strsignal.c | 63 | ||||
-rw-r--r-- | newlib/libc/sys/linux/sys/dirent.h | 5 | ||||
-rw-r--r-- | newlib/libc/sys/linux/sys/signal.h | 21 |
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[]; |