diff options
author | Roland McGrath <roland@gnu.org> | 1996-01-02 08:57:42 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1996-01-02 08:57:42 +0000 |
commit | 71733723fb421bd54467d1a27096463ed1dcc2ed (patch) | |
tree | f304556d491722c797d876911834dc4afbfa2740 /sysdeps | |
parent | fc4026d8e43407ba2739e493878d1ce259500059 (diff) | |
download | glibc-71733723fb421bd54467d1a27096463ed1dcc2ed.zip glibc-71733723fb421bd54467d1a27096463ed1dcc2ed.tar.gz glibc-71733723fb421bd54467d1a27096463ed1dcc2ed.tar.bz2 |
* hurd/hurd/signal.h (struct hurd_sigstate): New member `preempters'.cvs/libc-960102
(hurd_preempt_signals, hurd_unpreempt_signals): Decls removed.
* hurd/hurd/sigpreempt.h: New file.
* hurd/preempt-sig.c: Rewritten with new interface.
* sysdeps/mach/hurd/jmp-unwind.c (_longjmp_unwind): Remove local signal
preempters being unwound past.
* db: New directory, 4.4 BSD db package incorporated from BSD db-1.85
release.
* sysdeps/unix/sysv/linux/sys/param.h: Several new macros for BSD
compatibility.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/mach/hurd/jmp-unwind.c | 18 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sys/param.h | 40 |
2 files changed, 42 insertions, 16 deletions
diff --git a/sysdeps/mach/hurd/jmp-unwind.c b/sysdeps/mach/hurd/jmp-unwind.c index f7540f0..822501f 100644 --- a/sysdeps/mach/hurd/jmp-unwind.c +++ b/sysdeps/mach/hurd/jmp-unwind.c @@ -22,6 +22,11 @@ Cambridge, MA 02139, USA. */ #include <hurd/userlink.h> #include <assert.h> + +#ifndef _JMPBUF_UNWINDS + #error "sysdeps/MACHINE/jmp_buf.h fails to define _JMPBUF_UNWINDS" +#endif + /* This function is called by `longjmp' (with its arguments) to restore active resources to a sane state before the frames code using them are jumped out of. */ @@ -31,17 +36,20 @@ _longjmp_unwind (jmp_buf env, int val) { struct hurd_sigstate *ss = _hurd_self_sigstate (); struct hurd_userlink *link; + struct hurd_signal_preempter **p; /* All access to SS->active_resources must take place inside a critical section where signal handlers cannot run. */ __spin_lock (&ss->lock); assert (! ss->critical_section); ss->critical_section = 1; - __spin_unlock (&ss->lock); -#ifndef _JMPBUF_UNWINDS - #error "sysdeps/MACHINE/jmp_buf.h fails to define _JMPBUF_UNWINDS" -#endif + /* Remove local signal preempters being unwound past. */ + while (ss->preempters && + _JMPBUF_UNWINDS (env[0].__jmpbuf, ss->preempters)) + ss->preempters = ss->preempters->next; + + __spin_unlock (&ss->lock); /* Iterate over the current thread's list of active resources. Process the head portion of the list whose links reside @@ -59,4 +67,4 @@ _longjmp_unwind (jmp_buf env, int val) (*link->cleanup) (link->cleanup_data, env, val); _hurd_critical_section_unlock (ss); -} +} diff --git a/sysdeps/unix/sysv/linux/sys/param.h b/sysdeps/unix/sysv/linux/sys/param.h index a2d4984..4950d58 100644 --- a/sysdeps/unix/sysv/linux/sys/param.h +++ b/sysdeps/unix/sysv/linux/sys/param.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -23,23 +23,41 @@ Boston, MA 02111-1307, USA. */ #include <linux/limits.h> #include <linux/param.h> +/* BSD names for some <limits.h> values. */ + +#define NBBY CHAR_BIT +#ifndef NGROUPS +#define NGROUPS NGROUPS_MAX +#endif +#define MAXSYMLINKS SYMLOOP_MAX +#define CANBSIZ MAX_CANON +#define NCARGS ARG_MAX +#define MAXPATHLEN PATH_MAX +#define NOFILE OPEN_MAX + + #include <sys/types.h> +/* Bit map related macros. */ +#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY)) +#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY))) +#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY))) +#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0) +/* Macros for counting and rounding. */ #ifndef howmany -# define howmany(x, y) (((x)+((y)-1))/(y)) +#define howmany(x, y) (((x)+((y)-1))/(y)) #endif +#define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +#define powerof2(x) ((((x)-1)&(x))==0) -#ifndef roundup -# define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) -#endif +/* Macros for min/max. */ +#define MIN(a,b) (((a)<(b))?(a):(b)) +#define MAX(a,b) (((a)>(b))?(a):(b)) -#define MAXPATHLEN PATH_MAX -#define NOFILE OPEN_MAX -/* Following the information of some of the kernel people I here assume - that block size (i.e. the value of stat.st_blocks) for all filesystem - is 512 bytes. If not tell HJ, Roland, or me. -- drepper */ +/* Unit of `st_blocks'. */ #define DEV_BSIZE 512 -#endif + +#endif /* sys/param.h */ |