diff options
Diffstat (limited to 'bits')
-rw-r--r-- | bits/byteswap.h | 33 | ||||
-rw-r--r-- | bits/sigaction.h | 11 | ||||
-rw-r--r-- | bits/sigstack.h | 16 |
3 files changed, 48 insertions, 12 deletions
diff --git a/bits/byteswap.h b/bits/byteswap.h index 04a5efe..a5dd4a7 100644 --- a/bits/byteswap.h +++ b/bits/byteswap.h @@ -1,5 +1,5 @@ /* Macros to swap the order of bytes in integer values. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1998 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 @@ -22,13 +22,34 @@ #endif /* Swap bytes in 16 bit value. */ -#define __bswap_16(x) \ - ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)) +#ifdef __GNUC__ +# define __bswap_16(x) \ + (__extension__ \ + ({ unsigned short int __bsx = (x); \ + ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); })) +#else +static __inline unsigned short int +__bswap16 (unsigned short int x) +{ + return ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)); +} +#endif /* Swap bytes in 32 bit value. */ -#define __bswap_32(x) \ - ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ - (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) +#ifdef __GNUC__ +# define __bswap_32(x) \ + (__extension__ \ + ({ unsigned int __bsx = (x); \ + ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | \ + (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); })) +#else +static __inline unsigned int +__bswap32 (unsigned int x) +{ + return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >> 8) | + (((__bsx) & 0x0000ff00) << 8) | (((__bsx) & 0x000000ff) << 24)); +} +#endif #if defined __GNUC__ && __GNUC__ >= 2 /* Swap bytes in 64 bit value. */ diff --git a/bits/sigaction.h b/bits/sigaction.h index 4499517..8d75c91 100644 --- a/bits/sigaction.h +++ b/bits/sigaction.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1996, 1997, 1998 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 @@ -40,12 +40,11 @@ struct sigaction }; /* Bits in `sa_flags'. */ -#ifdef __USE_BSD -# define SA_ONSTACK 0x1 /* Take signal on signal stack. */ -# define SA_RESTART 0x2 /* Restart syscall on signal return. */ -# define SA_DISABLE 0x4 /* Disable alternate signal stack. */ +#if defined __USE_UNIX98 || defined __USE_MISC +# define SA_ONSTACK 0x0001 /* Take signal on signal stack. */ +# define SA_RESTART 0x0002 /* Restart syscall on signal return. */ #endif -#define SA_NOCLDSTOP 0x8 /* Don't send SIGCHLD when children stop. */ +#define SA_NOCLDSTOP 0x0008 /* Don't send SIGCHLD when children stop. */ /* Values for the HOW argument to `sigprocmask'. */ diff --git a/bits/sigstack.h b/bits/sigstack.h index 3a58e8b..0998256 100644 --- a/bits/sigstack.h +++ b/bits/sigstack.h @@ -37,3 +37,19 @@ typedef struct sigaltstack size_t ss_size; int ss_flags; } stack_t; + + +/* Possible values for `ss_flags.'. */ +enum +{ + SS_ONSTACK = 0x0001, +#define SS_ONSTACK SS_ONSTACK + SS_DISABLE = 0x0004, +#define SS_DISABLE SS_DISABLE +}; + +/* Minumum stack size for a signal handler. */ +#define MINSIGSTKSZ 8192 + +/* System default stack size. */ +#define SIGSTKSZ (MINSIGSTKSZ + 32768) |