Commit 698517c8 authored by Jason Madden's avatar Jason Madden

Update to libev 4.25

parent b55a62e3
......@@ -26,6 +26,9 @@
- Upgrade libuv from 1.24.0 to 1.27.0.
- Upgrade libev from 4.23 to 4.25 and update its embedded
``config.guess`` to the latest.
- dnspython >= 1.16.0 is now required for the dnspython resolver.
- Python 3.7 subprocess: Copy a ``STARTUPINFO`` passed as a parameter.
......
......@@ -7,7 +7,28 @@
XXX: We need a patch for that.
Updating libev
==============
Download and unpack the tarball into libev/. Remove these extra
files::
rm -f libev/Makefile.am
rm -f libev/Symbols.ev
rm -f libev/Symbols.event
rm -f libev/TODO
rm -f libev/aclocal.m4
rm -f libev/autogen.sh
rm -f libev/compile
rm -f libev/configure.ac
rm -f libev/libev.m4
rm -f libev/mkinstalldirs
Check if 'config.guess' and/or 'config.sub' went backwards in time
(the 'timestamp' and copyright dates'). If so, revert it (or update
from the latest source
http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree )
Updating libuv
==============
......
Revision history for libev, a high-performance and full-featured event loop.
4.25 Fri Dec 21 07:49:20 CET 2018
- INCOMPATIBLE CHANGE: EV_THROW was renamed to EV_NOEXCEPT
(EV_THROW sitll provided) and now uses noexcept on C++11 or newer.
- move the darwin select workaround highe rin ev.c, as newer versions of
darwin managed to break their broken select even more.
- ANDROID => __ANDROID__ (reported by enh@google.com).
- disable epoll_create1 on android because it has broken header files
and google is unwilling to fix them (reported by enh@google.com).
- avoid a minor compilation warning on win32.
- c++: remove deprecated dynamic throw() specifications.
- c++: improve the (unsupported) bad_loop exception class.
- backport perl ev_periodic example to C, untested.
- update libecb, biggets change is to include a memory fence
in ECB_MEMORY_FENCE_RELEASE on x86/amd64.
- minor autoconf/automake modernisation.
4.24 Wed Dec 28 05:19:55 CET 2016
- bump version to 4.24, as the release tarball inexplicably
didn't have the right version in ev.h, even though the cvs-tagged
version did have the right one (reported by Ales Teska).
4.23 Wed Nov 16 18:23:41 CET 2016
- move some declarations at the beginning to help certain retarded
microsoft compilers, even though their documentation claims
......
......@@ -269,6 +269,7 @@ LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
......
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright 1992-2018 Free Software Foundation, Inc.
# Copyright 1992-2019 Free Software Foundation, Inc.
timestamp='2018-03-08'
timestamp='2019-03-04'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
......@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright 1992-2018 Free Software Foundation, Inc.
Copyright 1992-2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
......@@ -84,8 +84,6 @@ if test $# != 0; then
exit 1
fi
trap 'exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
# temporary files to be created and, as you can see below, it is a
......@@ -96,34 +94,38 @@ trap 'exit 1' 1 2 15
# Portable tmp directory creation inspired by the Autoconf team.
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
dummy=$tmp/dummy ;
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
case $CC_FOR_BUILD,$HOST_CC,$CC in
,,) echo "int x;" > "$dummy.c" ;
for c in cc gcc c89 c99 ; do
if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found ;
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
esac ; set_cc_for_build= ;'
tmp=
# shellcheck disable=SC2172
trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
set_cc_for_build() {
: "${TMPDIR=/tmp}"
# shellcheck disable=SC2039
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
dummy=$tmp/dummy
case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
,,) echo "int x;" > "$dummy.c"
for driver in cc gcc c89 c99 ; do
if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
CC_FOR_BUILD="$driver"
break
fi
done
if test x"$CC_FOR_BUILD" = x ; then
CC_FOR_BUILD=no_compiler_found
fi
;;
,,*) CC_FOR_BUILD=$CC ;;
,*,*) CC_FOR_BUILD=$HOST_CC ;;
esac
}
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
......@@ -138,7 +140,7 @@ Linux|GNU|GNU/*)
# We could probably try harder.
LIBC=gnu
eval "$set_cc_for_build"
set_cc_for_build
cat <<-EOF > "$dummy.c"
#include <features.h>
#if defined(__UCLIBC__)
......@@ -199,7 +201,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
os=netbsdelf
;;
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval "$set_cc_for_build"
set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__
then
......@@ -237,7 +239,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
# contains redundant information, the shorter form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "$machine-${os}${release}${abi}"
echo "$machine-${os}${release}${abi-}"
exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
......@@ -389,7 +391,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval "$set_cc_for_build"
set_cc_for_build
SUN_ARCH=i386
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
......@@ -482,7 +484,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo clipper-intergraph-clix"$UNAME_RELEASE"
exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval "$set_cc_for_build"
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
......@@ -579,7 +581,7 @@ EOF
exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval "$set_cc_for_build"
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <sys/systemcfg.h>
......@@ -660,7 +662,7 @@ EOF
esac
fi
if [ "$HP_ARCH" = "" ]; then
eval "$set_cc_for_build"
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
......@@ -700,7 +702,7 @@ EOF
esac
if [ "$HP_ARCH" = hppa2.0w ]
then
eval "$set_cc_for_build"
set_cc_for_build
# hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
# 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
......@@ -726,7 +728,7 @@ EOF
echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
eval "$set_cc_for_build"
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
#include <unistd.h>
int
......@@ -840,6 +842,17 @@ EOF
*:BSD/OS:*:*)
echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
exit ;;
arm:FreeBSD:*:*)
UNAME_PROCESSOR=`uname -p`
set_cc_for_build
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
else
echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
fi
exit ;;
*:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p`
case "$UNAME_PROCESSOR" in
......@@ -881,7 +894,7 @@ EOF
echo "$UNAME_MACHINE"-pc-uwin
exit ;;
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
echo x86_64-unknown-cygwin
echo x86_64-pc-cygwin
exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
......@@ -894,8 +907,8 @@ EOF
# other systems with GNU libc and userland
echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
exit ;;
i*86:Minix:*:*)
echo "$UNAME_MACHINE"-pc-minix
*:Minix:*:*)
echo "$UNAME_MACHINE"-unknown-minix
exit ;;
aarch64:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
......@@ -922,7 +935,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
arm*:Linux:*:*)
eval "$set_cc_for_build"
set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
......@@ -971,23 +984,51 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval "$set_cc_for_build"
set_cc_for_build
IS_GLIBC=0
test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
#undef ${UNAME_MACHINE}
#undef ${UNAME_MACHINE}el
#undef mips
#undef mipsel
#undef mips64
#undef mips64el
#if ${IS_GLIBC} && defined(_ABI64)
LIBCABI=gnuabi64
#else
#if ${IS_GLIBC} && defined(_ABIN32)
LIBCABI=gnuabin32
#else
LIBCABI=${LIBC}
#endif
#endif
#if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
CPU=mipsisa64r6
#else
#if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
CPU=mipsisa32r6
#else
#if defined(__mips64)
CPU=mips64
#else
CPU=mips
#endif
#endif
#endif
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=${UNAME_MACHINE}el
MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=${UNAME_MACHINE}
MIPS_ENDIAN=
#else
CPU=
MIPS_ENDIAN=
#endif
#endif
EOF
eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
......@@ -1100,7 +1141,7 @@ EOF
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
......@@ -1285,7 +1326,7 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
eval "$set_cc_for_build"
set_cc_for_build
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
......@@ -1358,6 +1399,7 @@ EOF
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
# operating systems.
# shellcheck disable=SC2154
if test "$cputype" = 386; then
UNAME_MACHINE=i386
else
......@@ -1414,8 +1456,135 @@ EOF
amd64:Isilon\ OneFS:*:*)
echo x86_64-unknown-onefs
exit ;;
*:Unleashed:*:*)
echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
exit ;;
esac
# No uname command or uname output not recognized.
set_cc_for_build
cat > "$dummy.c" <<EOF
#ifdef _SEQUENT_
#include <sys/types.h>
#include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
#if !defined (ultrix)
#include <sys/param.h>
#if defined (BSD)
#if BSD == 43
printf ("vax-dec-bsd4.3\n"); exit (0);
#else
#if BSD == 199006
printf ("vax-dec-bsd4.3reno\n"); exit (0);
#else
printf ("vax-dec-bsd\n"); exit (0);
#endif
#endif
#else
printf ("vax-dec-bsd\n"); exit (0);
#endif
#else
printf ("vax-dec-ultrix\n"); exit (0);
#endif
#endif
#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
#include <signal.h>
#if defined(_SIZE_T_) /* >= ULTRIX4 */
printf ("mips-dec-ultrix4\n"); exit (0);
#else
#if defined(ULTRIX3) || defined(ultrix3) || defined(SIGLOST)
printf ("mips-dec-ultrix3\n"); exit (0);
#endif
#endif
#endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
echo "$0: unable to guess system type" >&2
case "$UNAME_MACHINE:$UNAME_SYSTEM" in
......
......@@ -93,8 +93,7 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Name of package */
......
#! /bin/sh
# Configuration validation subroutine script.
# Copyright 1992-2018 Free Software Foundation, Inc.
# Copyright 1992-2019 Free Software Foundation, Inc.
timestamp='2018-05-03'
timestamp='2019-01-05'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
......@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
Copyright 1992-2018 Free Software Foundation, Inc.
Copyright 1992-2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
......@@ -89,7 +89,7 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
echo "$me: invalid option $1$help"
echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
......@@ -110,1234 +110,1167 @@ case $# in
exit 1;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | cloudabi*-eabi* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
case $1 in
*-*)
os=`echo "$1" | sed 's/.*-/-/'`
;;
*)
os=
;;
esac
;;
esac
# Split fields of configuration type
# shellcheck disable=SC2162
IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work. We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
-sun*os*)
# Prevent following clause from handling this invalid input.
;;
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
-bluegene*)
os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond)
os=
basic_machine=$1
;;
-scout)
;;
-wrs)
os=-vxworks
basic_machine=$1
;;
-chorusos*)
os=-chorusos
basic_machine=$1
;;
-chorusrdb)
os=-chorusrdb
basic_machine=$1
;;
-hiux*)
os=-hiuxwe2
;;
-sco6)
os=-sco5v6
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5)
os=-sco3.2v5
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-udk*)
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
;;
-lynx*178)
os=-lynxos178
;;
-lynx*5)
os=-lynxos5
# Separate into logical components for further validation
case $1 in
*-*-*-*-*)
echo Invalid configuration \`"$1"\': more than four components >&2
exit 1
;;
-lynx*)
os=-lynxos
*-*-*-*)
basic_machine=$field1-$field2
os=$field3-$field4
;;
-ptx*)
basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
basic_machine=$field1
os=$maybe_os
;;
android-linux)
basic_machine=$field1-unknown
os=linux-android
;;
*)
basic_machine=$field1-$field2
os=$field3
;;
esac
;;
-psos*)
os=-psos
*-*)
# A lone config we happen to match not fitting any pattern
case $field1-$field2 in
decstation-3100)
basic_machine=mips-dec
os=
;;
*-*)
# Second component is usually, but not always the OS
case $field2 in
# Prevent following clause from handling this valid os
sun*os*)
basic_machine=$field1
os=$field2
;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
| unicom* | ibm* | next | hp | isi* | apollo | altos* \
| convergent* | ncr* | news | 32* | 3600* | 3100* \
| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
| ultra | tti* | harris | dolphin | highlevel | gould \
| cbm | ns | masscomp | apple | axis | knuth | cray \
| microblaze* | sim | cisco \
| oki | wec | wrs | winbond)
basic_machine=$field1-$field2
os=
;;
*)
basic_machine=$field1
os=$field2
;;
esac
;;
esac
;;
-mint | -mint[0-9]*)
basic_machine=m68k-atari
os=-mint
*)
# Convert single-component short-hands not valid as part of
# multi-component configurations.
case $field1 in
386bsd)
basic_machine=i386-pc
os=bsd
;;
a29khif)
basic_machine=a29k-amd
os=udi
;;
adobe68k)
basic_machine=m68010-adobe
os=scout
;;
alliant)
basic_machine=fx80-alliant
os=
;;
altos | altos3068)
basic_machine=m68k-altos
os=
;;
am29k)
basic_machine=a29k-none
os=bsd
;;
amdahl)
basic_machine=580-amdahl
os=sysv
;;
amiga)
basic_machine=m68k-unknown
os=
;;
amigaos | amigados)
basic_machine=m68k-unknown
os=amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
os=sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
os=bsd
;;
aros)
basic_machine=i386-pc
os=aros
;;
aux)
basic_machine=m68k-apple
os=aux
;;
balance)
basic_machine=ns32k-sequent
os=dynix
;;
blackfin)
basic_machine=bfin-unknown
os=linux
;;
cegcc)
basic_machine=arm-unknown
os=cegcc
;;
convex-c1)
basic_machine=c1-convex
os=bsd
;;
convex-c2)
basic_machine=c2-convex
os=bsd
;;
convex-c32)
basic_machine=c32-convex
os=bsd
;;
convex-c34)
basic_machine=c34-convex
os=bsd
;;
convex-c38)
basic_machine=c38-convex
os=bsd
;;
cray)
basic_machine=j90-cray
os=unicos
;;
crds | unos)
basic_machine=m68k-crds
os=
;;
da30)
basic_machine=m68k-da30
os=
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
os=
;;
delta88)
basic_machine=m88k-motorola
os=sysv3
;;
dicos)
basic_machine=i686-pc
os=dicos
;;
djgpp)
basic_machine=i586-pc
os=msdosdjgpp
;;
ebmon29k)
basic_machine=a29k-amd
os=ebmon
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
os=ose
;;
gmicro)
basic_machine=tron-gmicro
os=sysv
;;
go32)
basic_machine=i386-pc
os=go32
;;
h8300hms)
basic_machine=h8300-hitachi
os=hms
;;
h8300xray)
basic_machine=h8300-hitachi
os=xray
;;
h8500hms)
basic_machine=h8500-hitachi
os=hms
;;
harris)
basic_machine=m88k-harris
os=sysv3
;;
hp300)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=hpux
;;
hppaosf)
basic_machine=hppa1.1-hp
os=osf
;;
hppro)
basic_machine=hppa1.1-hp
os=proelf
;;
i386mach)
basic_machine=i386-mach
os=mach
;;
vsta)
basic_machine=i386-pc
os=vsta
;;
isi68 | isi)
basic_machine=m68k-isi
os=sysv
;;
m68knommu)
basic_machine=m68k-unknown
os=linux
;;
magnum | m3230)
basic_machine=mips-mips
os=sysv
;;
merlin)
basic_machine=ns32k-utek
os=sysv
;;
mingw64)
basic_machine=x86_64-pc
os=mingw64
;;
mingw32)
basic_machine=i686-pc
os=mingw32
;;
mingw32ce)
basic_machine=arm-unknown
os=mingw32ce
;;
monitor)
basic_machine=m68k-rom68k
os=coff
;;
morphos)
basic_machine=powerpc-unknown
os=morphos
;;
moxiebox)
basic_machine=moxie-unknown
os=moxiebox
;;
msdos)
basic_machine=i386-pc
os=msdos
;;
msys)
basic_machine=i686-pc
os=msys
;;
mvs)
basic_machine=i370-ibm
os=mvs
;;
nacl)
basic_machine=le32-unknown
os=nacl
;;
ncr3000)
basic_machine=i486-ncr
os=sysv4
;;
netbsd386)
basic_machine=i386-pc
os=netbsd
;;
netwinder)
basic_machine=armv4l-rebel
os=linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=newsos
;;
news1000)
basic_machine=m68030-sony
os=newsos
;;
necv70)
basic_machine=v70-nec
os=sysv
;;
nh3000)
basic_machine=m68k-harris
os=cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=cxux
;;
nindy960)
basic_machine=i960-intel
os=nindy
;;
mon960)
basic_machine=i960-intel
os=mon960
;;
nonstopux)
basic_machine=mips-compaq
os=nonstopux
;;
os400)
basic_machine=powerpc-ibm
os=os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=ose
;;
os68k)
basic_machine=m68k-none
os=os68k
;;
paragon)
basic_machine=i860-intel
os=osf
;;
parisc)
basic_machine=hppa-unknown
os=linux
;;
pw32)
basic_machine=i586-unknown
os=pw32
;;
rdos | rdos64)
basic_machine=x86_64-pc
os=rdos
;;
rdos32)
basic_machine=i386-pc
os=rdos
;;
rom68k)
basic_machine=m68k-rom68k
os=coff
;;
sa29200)
basic_machine=a29k-amd
os=udi
;;
sei)
basic_machine=mips-sei
os=seiux
;;
sequent)
basic_machine=i386-sequent
os=
;;
sps7)
basic_machine=m68k-bull
os=sysv2
;;
st2000)
basic_machine=m68k-tandem
os=
;;
stratus)
basic_machine=i860-stratus
os=sysv4
;;
sun2)
basic_machine=m68000-sun
os=
;;
sun2os3)
basic_machine=m68000-sun
os=sunos3
;;
sun2os4)
basic_machine=m68000-sun
os=sunos4
;;
sun3)
basic_machine=m68k-sun
os=
;;
sun3os3)
basic_machine=m68k-sun
os=sunos3
;;
sun3os4)
basic_machine=m68k-sun
os=sunos4
;;
sun4)
basic_machine=sparc-sun
os=
;;
sun4os3)
basic_machine=sparc-sun
os=sunos3
;;
sun4os4)
basic_machine=sparc-sun
os=sunos4
;;
sun4sol2)
basic_machine=sparc-sun
os=solaris2
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
os=
;;
sv1)
basic_machine=sv1-cray
os=unicos
;;
symmetry)
basic_machine=i386-sequent
os=dynix
;;
t3e)
basic_machine=alphaev5-cray
os=unicos
;;
t90)
basic_machine=t90-cray
os=unicos
;;
toad1)
basic_machine=pdp10-xkl
os=tops20
;;
tpf)
basic_machine=s390x-ibm
os=tpf
;;
udi29k)
basic_machine=a29k-amd
os=udi
;;
ultra3)
basic_machine=a29k-nyu
os=sym1
;;
v810 | necv810)
basic_machine=v810-nec
os=none
;;
vaxv)
basic_machine=vax-dec
os=sysv
;;
vms)
basic_machine=vax-dec
os=vms
;;
vxworks960)
basic_machine=i960-wrs
os=vxworks
;;
vxworks68)
basic_machine=m68k-wrs
os=vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
os=vxworks
;;
xbox)
basic_machine=i686-pc
os=mingw32
;;
ymp)
basic_machine=ymp-cray
os=unicos
;;
*)
basic_machine=$1
os=
;;
esac
;;
esac
# Decode aliases for certain CPU-COMPANY combinations.
# Decode 1-component or ad-hoc basic machines
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
| aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][arm] \
| avr | avr32 \
| ba \
| be32 | be64 \
| bfin \
| c4x | c8051 | clipper | csky \
| d10v | d30v | dlx | dsp16xx \
| e2k | epiphany \
| fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
| k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
| open8 | or1k | or1knd | or32 \
| pdp10 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pru \
| pyramid \
| riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu \
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| visium \
| wasm32 \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
c54x)
basic_machine=tic54x-unknown
;;
c55x)
basic_machine=tic55x-unknown
;;
c6x)
basic_machine=tic6x-unknown
;;
leon|leon[3-9])
basic_machine=sparc-$basic_machine
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
w89k)
cpu=hppa1.1
vendor=winbond
;;
m9s12z | m68hcs12z | hcs12z | s12z)
basic_machine=s12z-unknown
os=-none
op50n)
cpu=hppa1.1
vendor=oki
;;
ms1)
basic_machine=mt-unknown
op60c)
cpu=hppa1.1
vendor=oki
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
ibm*)
cpu=i370
vendor=ibm
;;
xgate)
basic_machine=$basic_machine-unknown
os=-none
orion105)
cpu=clipper
vendor=highlevel
;;
xscaleeb)
basic_machine=armeb-unknown
mac | mpw | mac-mpw)
cpu=m68k
vendor=apple
;;
xscaleel)
basic_machine=armel-unknown
pmac | pmac-mpw)
cpu=powerpc
vendor=apple
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| ba-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| c8051-* | clipper-* | craynv-* | csky-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| e2k-* | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
| ip2k-* | iq2000-* \
| k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
| mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
| mips64r5900-* | mips64r5900el-* \
| mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
| nfp-* \
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| or1k*-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pru-* \
| pyramid-* \
| riscv32-* | riscv64-* \
| rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
| tron-* \
| ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| visium-* \
| wasm32-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
;;
# Recognize the basic CPU types without company name, with glob match.
xtensa*)
basic_machine=$basic_machine-unknown
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
basic_machine=i386-pc
os=-bsd
;;
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
cpu=m68000
vendor=att
;;
3b*)
basic_machine=we32k-att
;;
a29khif)
basic_machine=a29k-amd
os=-udi
;;
abacus)
basic_machine=abacus-unknown
;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
;;
alliant | fx80)
basic_machine=fx80-alliant
;;
altos | altos3068)
basic_machine=m68k-altos
;;
am29k)
basic_machine=a29k-none
os=-bsd
;;
amd64)
basic_machine=x86_64-pc
;;
amd64-*)
basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
amdahl)
basic_machine=580-amdahl
os=-sysv
;;
amiga | amiga-*)
basic_machine=m68k-unknown
;;
amigaos | amigados)
basic_machine=m68k-unknown
os=-amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
os=-bsd
;;
aros)
basic_machine=i386-pc
os=-aros
;;
asmjs)
basic_machine=asmjs-unknown
;;
aux)
basic_machine=m68k-apple
os=-aux
;;
balance)
basic_machine=ns32k-sequent
os=-dynix
;;
blackfin)
basic_machine=bfin-unknown
os=-linux
;;
blackfin-*)
basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
cpu=we32k
vendor=att
;;
bluegene*)
basic_machine=powerpc-ibm
os=-cnk
;;
c54x-*)
basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c55x-*)
basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c6x-*)
basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
c90)
basic_machine=c90-cray
os=-unicos
;;
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
convex-c1)
basic_machine=c1-convex
os=-bsd
;;
convex-c2)
basic_machine=c2-convex
os=-bsd
;;
convex-c32)
basic_machine=c32-convex
os=-bsd
;;
convex-c34)
basic_machine=c34-convex
os=-bsd
;;
convex-c38)
basic_machine=c38-convex
os=-bsd
;;
cray | j90)
basic_machine=j90-cray
os=-unicos
;;
craynv)
basic_machine=craynv-cray
os=-unicosmp
;;
cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
basic_machine=m68k-crds
;;
crisv32 | crisv32-* | etraxfs*)
basic_machine=crisv32-axis
;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
crx)
basic_machine=crx-unknown
os=-elf
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
cpu=powerpc
vendor=ibm
os=cnk
;;
decsystem10* | dec10*)
basic_machine=pdp10-dec
os=-tops10
cpu=pdp10
vendor=dec
os=tops10
;;
decsystem20* | dec20*)
basic_machine=pdp10-dec
os=-tops20
cpu=pdp10
vendor=dec
os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
;;
delta88)
basic_machine=m88k-motorola
os=-sysv3
;;
dicos)
basic_machine=i686-pc
os=-dicos
;;
djgpp)
basic_machine=i586-pc
os=-msdosdjgpp
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
cpu=m68k
vendor=motorola
;;
dpx2*)
basic_machine=m68k-bull
os=-sysv3
;;
e500v[12])
basic_machine=powerpc-unknown
os=$os"spe"
;;
e500v[12]-*)
basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=$os"spe"
;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
;;
elxsi)
basic_machine=elxsi-elxsi
os=-bsd
cpu=m68k
vendor=bull
os=sysv3
;;
encore | umax | mmax)
basic_machine=ns32k-encore
cpu=ns32k
vendor=encore
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
os=-ose
elxsi)
cpu=elxsi
vendor=elxsi
os=${os:-bsd}
;;
fx2800)
basic_machine=i860-alliant
cpu=i860
vendor=alliant
;;
genix)
basic_machine=ns32k-ns
;;
gmicro)
basic_machine=tron-gmicro
os=-sysv
;;
go32)
basic_machine=i386-pc
os=-go32
cpu=ns32k
vendor=ns
;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
h8300hms)
basic_machine=h8300-hitachi
os=-hms
;;
h8300xray)
basic_machine=h8300-hitachi
os=-xray
;;
h8500hms)
basic_machine=h8500-hitachi
os=-hms
;;
harris)
basic_machine=m88k-harris
os=-sysv3
;;
hp300-*)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=-bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=-hpux
cpu=hppa1.1
vendor=hitachi
os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
basic_machine=hppa1.0-hp
cpu=hppa1.0
vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
cpu=m68000
vendor=hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
cpu=m68k
vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
basic_machine=hppa1.0-hp
cpu=hppa1.0
vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
basic_machine=hppa1.1-hp
cpu=hppa1.1
vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
basic_machine=hppa1.1-hp
cpu=hppa1.1
vendor=hp
;;
hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
# FIXME: really hppa2.0-hp
basic_machine=hppa1.1-hp
cpu=hppa1.1
vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
basic_machine=hppa1.1-hp
cpu=hppa1.1
vendor=hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hppaosf)
basic_machine=hppa1.1-hp
os=-osf
;;
hppro)
basic_machine=hppa1.1-hp
os=-proelf
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
cpu=hppa1.0
vendor=hp
;;
i*86v32)
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv32
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
os=sysv32
;;
i*86v4*)
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv4
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
os=sysv4
;;
i*86v)
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-sysv
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
os=sysv
;;
i*86sol2)
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
i386mach)
basic_machine=i386-mach
os=-mach
cpu=`echo "$1" | sed -e 's/86.*/86/'`
vendor=pc
os=solaris2
;;
vsta)
basic_machine=i386-unknown
os=-vsta
j90 | j90-cray)
cpu=j90
vendor=cray
os=${os:-unicos}
;;
iris | iris4d)
basic_machine=mips-sgi
cpu=mips
vendor=sgi
case $os in
-irix*)
irix*)
;;
*)
os=-irix4
os=irix4
;;
esac
;;
isi68 | isi)
basic_machine=m68k-isi
os=-sysv
;;
leon-*|leon[3-9]-*)
basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
;;
merlin)
basic_machine=ns32k-utek
os=-sysv
;;
microblaze*)
basic_machine=microblaze-xilinx
;;
mingw64)
basic_machine=x86_64-pc
os=-mingw64
;;
mingw32)
basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
basic_machine=arm-unknown
os=-mingw32ce
;;
miniframe)
basic_machine=m68000-convergent
;;
*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
basic_machine=m68k-atari
os=-mint
;;
mips3*-*)
basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
;;
mips3*)
basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
;;
monitor)
basic_machine=m68k-rom68k
os=-coff
;;
morphos)
basic_machine=powerpc-unknown
os=-morphos
;;
moxiebox)
basic_machine=moxie-unknown
os=-moxiebox
;;
msdos)
basic_machine=i386-pc
os=-msdos
;;
ms1-*)
basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i686-pc
os=-msys
;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
nacl)
basic_machine=le32-unknown
os=-nacl
cpu=m68000
vendor=convergent
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
netbsd386)
basic_machine=i386-unknown
os=-netbsd
;;
netwinder)
basic_machine=armv4l-rebel
os=-linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
;;
news1000)
basic_machine=m68030-sony
os=-newsos
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
cpu=m68k
vendor=atari
os=mint
;;
news-3600 | risc-news)
basic_machine=mips-sony
os=-newsos
;;
necv70)
basic_machine=v70-nec
os=-sysv
cpu=mips
vendor=sony
os=newsos
;;
next | m*-next)
basic_machine=m68k-next
cpu=m68k
vendor=next
case $os in
-nextstep* )
openstep*)
;;
nextstep*)
;;
-ns2*)
os=-nextstep2
ns2*)
os=nextstep2
;;
*)
os=-nextstep3
os=nextstep3
;;
esac
;;
nh3000)
basic_machine=m68k-harris
os=-cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=-cxux
;;
nindy960)
basic_machine=i960-intel
os=-nindy
;;
mon960)
basic_machine=i960-intel
os=-mon960
;;
nonstopux)
basic_machine=mips-compaq
os=-nonstopux
;;
np1)
basic_machine=np1-gould
;;
neo-tandem)
basic_machine=neo-tandem
;;
nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem)
basic_machine=nsr-tandem
;;
nsv-tandem)
basic_machine=nsv-tandem
;;
nsx-tandem)
basic_machine=nsx-tandem
cpu=np1
vendor=gould
;;
op50n-* | op60c-*)
basic_machine=hppa1.1-oki
os=-proelf
;;
openrisc | openrisc-*)
basic_machine=or32-unknown
;;
os400)
basic_machine=powerpc-ibm
os=-os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
os=-ose
;;
os68k)
basic_machine=m68k-none
os=-os68k
cpu=hppa1.1
vendor=oki
os=proelf
;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
paragon)
basic_machine=i860-intel
os=-osf
;;
parisc)
basic_machine=hppa-unknown
os=-linux
;;
parisc-*)
basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
os=-linux
cpu=hppa1.1
vendor=hitachi
os=hiuxwe2
;;
pbd)
basic_machine=sparc-tti
cpu=sparc
vendor=tti
;;
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pc98)
basic_machine=i386-pc
;;
pc98-*)
basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
pentiumpro | p6 | 6x86 | athlon | athlon_*)
basic_machine=i686-pc
;;
pentiumii | pentium2 | pentiumiii | pentium3)
basic_machine=i686-pc
;;
pentium4)
basic_machine=i786-pc
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
cpu=m68k
vendor=tti
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
pentium4-*)
basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
pc532)
cpu=ns32k
vendor=pc532
;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=power-ibm
;;
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-* | ppcbe-*)
basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
cpu=pn
vendor=gould
;;
ppcle | powerpclittle)
basic_machine=powerpcle-unknown
power)
cpu=power
vendor=ibm
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
;;
ppc64) basic_machine=powerpc64-unknown
ps2)
cpu=i386
vendor=ibm
;;
ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
rm[46]00)
cpu=mips
vendor=siemens
;;
ppc64le | powerpc64little)
basic_machine=powerpc64le-unknown
rtpc | rtpc-*)
cpu=romp
vendor=ibm
;;
ppc64le-* | powerpc64little-*)
basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
sde)
cpu=mipsisa32
vendor=sde
os=${os:-elf}
;;
ps2)
basic_machine=i386-ibm
simso-wrs)
cpu=sparclite
vendor=wrs
os=vxworks
;;
pw32)
basic_machine=i586-unknown
os=-pw32
tower | tower-32)
cpu=m68k
vendor=ncr
;;
rdos | rdos64)
basic_machine=x86_64-pc
os=-rdos
vpp*|vx|vx-*)
cpu=f301
vendor=fujitsu
;;
rdos32)
basic_machine=i386-pc
os=-rdos
w65)
cpu=w65
vendor=wdc
;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
w89k-*)
cpu=hppa1.1
vendor=winbond
os=proelf
;;
rm[46]00)
basic_machine=mips-siemens
none)
cpu=none
vendor=none
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
leon|leon[3-9])
cpu=sparc
vendor=$basic_machine
;;
s390 | s390-*)
basic_machine=s390-ibm
leon-*|leon[3-9]-*)
cpu=sparc
vendor=`echo "$basic_machine" | sed 's/-.*//'`
;;
s390x | s390x-*)
basic_machine=s390x-ibm
*-*)
# shellcheck disable=SC2162
IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
;;
sa29200)
basic_machine=a29k-amd
os=-udi
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
cpu=$basic_machine
vendor=pc
;;
sb1)
basic_machine=mipsisa64sb1-unknown
# These rules are duplicated from below for sake of the special case above;
# i.e. things that normalized to x86 arches should also default to "pc"
pc98)
cpu=i386
vendor=pc
;;
sb1el)
basic_machine=mipsisa64sb1el-unknown
x64 | amd64)
cpu=x86_64
vendor=pc
;;
sde)
basic_machine=mipsisa32-sde
os=-elf
# Recognize the basic CPU types without company name.
*)
cpu=$basic_machine
vendor=unknown
;;
sei)
basic_machine=mips-sei
os=-seiux
esac
unset -v basic_machine
# Decode basic machines in the full and proper CPU-Company form.
case $cpu-$vendor in
# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
# some cases the only manufacturer, in others, it is the most popular.
craynv-unknown)
vendor=cray
os=${os:-unicosmp}
;;
sequent)
basic_machine=i386-sequent
c90-unknown | c90-cray)
vendor=cray
os=${os:-unicos}
;;
sh5el)
basic_machine=sh5le-unknown
fx80-unknown)
vendor=alliant
;;
simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
romp-unknown)
vendor=ibm
;;
sps7)
basic_machine=m68k-bull
os=-sysv2
mmix-unknown)
vendor=knuth
;;
spur)
basic_machine=spur-unknown
microblaze-unknown | microblazeel-unknown)
vendor=xilinx
;;
st2000)
basic_machine=m68k-tandem
rs6000-unknown)
vendor=ibm
;;
stratus)
basic_machine=i860-stratus
os=-sysv4
vax-unknown)
vendor=dec
;;
strongarm-* | thumb-*)
basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
pdp11-unknown)
vendor=dec
;;
sun2)
basic_machine=m68000-sun
we32k-unknown)
vendor=att
;;
sun2os3)
basic_machine=m68000-sun
os=-sunos3
cydra-unknown)
vendor=cydrome
;;
sun2os4)
basic_machine=m68000-sun
os=-sunos4
i370-ibm*)
vendor=ibm
;;
sun3os3)
basic_machine=m68k-sun
os=-sunos3
orion-unknown)
vendor=highlevel
;;
sun3os4)
basic_machine=m68k-sun
os=-sunos4
xps-unknown | xps100-unknown)
cpu=xps100
vendor=honeywell
;;
sun4os3)
basic_machine=sparc-sun
os=-sunos3
# Here we normalize CPU types with a missing or matching vendor
dpx20-unknown | dpx20-bull)
cpu=rs6000
vendor=bull
os=${os:-bosx}
;;
sun4os4)
basic_machine=sparc-sun
os=-sunos4
# Here we normalize CPU types irrespective of the vendor
amd64-*)
cpu=x86_64
;;
sun4sol2)
basic_machine=sparc-sun
os=-solaris2
blackfin-*)
cpu=bfin
os=linux
;;
sun3 | sun3-*)
basic_machine=m68k-sun
c54x-*)
cpu=tic54x
;;
sun4)
basic_machine=sparc-sun
c55x-*)
cpu=tic55x
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
c6x-*)
cpu=tic6x
;;
sv1)
basic_machine=sv1-cray
os=-unicos
e500v[12]-*)
cpu=powerpc
os=$os"spe"
;;
symmetry)
basic_machine=i386-sequent
os=-dynix
mips3*-*)
cpu=mips64
;;
t3e)
basic_machine=alphaev5-cray
os=-unicos
ms1-*)
cpu=mt
;;
t90)
basic_machine=t90-cray
os=-unicos
m68knommu-*)
cpu=m68k
os=linux
;;
tile*)
basic_machine=$basic_machine-unknown
os=-linux-gnu
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
cpu=s12z
;;
tx39)
basic_machine=mipstx39-unknown
openrisc-*)
cpu=or32
;;
tx39el)
basic_machine=mipstx39el-unknown
parisc-*)
cpu=hppa
os=linux
;;
toad1)
basic_machine=pdp10-xkl
os=-tops20
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
;;
tower | tower-32)
basic_machine=m68k-ncr
pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
cpu=i686
;;
tpf)
basic_machine=s390x-ibm
os=-tpf
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
cpu=i686
;;
udi29k)
basic_machine=a29k-amd
os=-udi
pentium4-*)
cpu=i786
;;
ultra3)
basic_machine=a29k-nyu
os=-sym1
pc98-*)
cpu=i386
;;
v810 | necv810)
basic_machine=v810-nec
os=-none
ppc-* | ppcbe-*)
cpu=powerpc
;;
vaxv)
basic_machine=vax-dec
os=-sysv
ppcle-* | powerpclittle-*)
cpu=powerpcle
;;
vms)
basic_machine=vax-dec
os=-vms
ppc64-*)
cpu=powerpc64
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
ppc64le-* | powerpc64little-*)
cpu=powerpc64le
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
sb1-*)
cpu=mipsisa64sb1
;;
vxworks68)
basic_machine=m68k-wrs
os=-vxworks
sb1el-*)
cpu=mipsisa64sb1el
;;
vxworks29k)
basic_machine=a29k-wrs
os=-vxworks
sh5e[lb]-*)
cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
;;
w65*)
basic_machine=w65-wdc
os=-none
spur-*)
cpu=spur
;;
w89k-*)
basic_machine=hppa1.1-winbond
os=-proelf
strongarm-* | thumb-*)
cpu=arm
;;
x64)
basic_machine=x86_64-pc
tx39-*)
cpu=mipstx39
;;
xbox)
basic_machine=i686-pc
os=-mingw32
tx39el-*)
cpu=mipstx39el
;;
xps | xps100)
basic_machine=xps100-honeywell
x64-*)
cpu=x86_64
;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
;;
none)
basic_machine=none-none
os=-none
cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;;
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
w89k)
basic_machine=hppa1.1-winbond
# Recognize the canonical CPU Types that limit and/or modify the
# company names they are paired with.
cr16-*)
os=${os:-elf}
;;
op50n)
basic_machine=hppa1.1-oki
;;
op60c)
basic_machine=hppa1.1-oki
;;
romp)
basic_machine=romp-ibm
crisv32-* | etraxfs*-*)
cpu=crisv32
vendor=axis
;;
mmix)
basic_machine=mmix-knuth
cris-* | etrax*-*)
cpu=cris
vendor=axis
;;
rs6000)
basic_machine=rs6000-ibm
crx-*)
os=${os:-elf}
;;
vax)
basic_machine=vax-dec
;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
neo-tandem)
cpu=neo
vendor=tandem
;;
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
nse-tandem)
cpu=nse
vendor=tandem
;;
cydra)
basic_machine=cydra-cydrome
nsr-tandem)
cpu=nsr
vendor=tandem
;;
orion)
basic_machine=orion-highlevel
nsv-tandem)
cpu=nsv
vendor=tandem
;;
orion105)
basic_machine=clipper-highlevel
nsx-tandem)
cpu=nsx
vendor=tandem
;;
mac | mpw | mac-mpw)
basic_machine=m68k-apple
s390-*)
cpu=s390
vendor=ibm
;;
pmac | pmac-mpw)
basic_machine=powerpc-apple
s390x-*)
cpu=s390x
vendor=ibm
;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
tile*-*)
os=${os:-linux-gnu}
;;
*)
echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
exit 1
# Recognize the canonical CPU types that are allowed with any
# company name.
case $cpu in
1750a | 580 \
| a29k \
| aarch64 | aarch64_be \
| abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
| alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \
| amdgcn \
| arc | arceb \
| arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
| ba \
| be32 | be64 \
| bfin | bs2000 \
| c[123]* | c30 | [cjt]90 | c4x \
| c8051 | clipper | craynv | csky | cydra \
| d10v | d30v | dlx | dsp16xx \
| e2k | elxsi | epiphany \
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
| h8300 | h8500 \
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i*86 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \
| k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64eb | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mmix \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
| none | np1 | ns16k | ns32k | nvptx \
| open8 \
| or1k* \
| or32 \
| orion \
| picochip \
| pdp10 | pdp11 | pj | pjl | pn | power \
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
| pyramid \
| riscv | riscv32 | riscv64 \
| rl78 | romp | rs6000 | rx \
| score \
| sh | shl \
| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
| sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
| sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
| spu \
| tahoe \
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \
| ubicom32 \
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \
| visium \
| w65 \
| wasm32 | wasm64 \
| we32k \
| x86 | x86_64 | xc16x | xgate | xps100 \
| xstormy16 | xtensa* \
| ymp \
| z8k | z80)
;;
*)
echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
exit 1
;;
esac
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
case $vendor in
digital*)
vendor=dec
;;
*-commodore*)
basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
commodore*)
vendor=cbm
;;
*)
;;
......@@ -1345,199 +1278,245 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
if [ x"$os" != x"" ]
if [ x$os != x ]
then
case $os in
# First match some system type aliases that might get confused
# with valid system types.
# -solaris* is a basic system type, with this one exception.
-auroraux)
os=-auroraux
# solaris* is a basic system type, with this one exception.
auroraux)
os=auroraux
;;
-solaris1 | -solaris1.*)
bluegene*)
os=cnk
;;
solaris1 | solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
-solaris)
os=-solaris2
solaris)
os=solaris2
;;
-unixware*)
os=-sysv4.2uw
unixware*)
os=sysv4.2uw
;;
-gnu/linux*)
gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
;;
# es1800 is here to avoid being matched by es* (a different OS)
-es1800*)
os=-ose
es1800*)
os=ose
;;
# Some version numbers need modification
chorusos*)
os=chorusos
;;
isc)
os=isc2.2
;;
sco6)
os=sco5v6
;;
sco5)
os=sco3.2v5
;;
sco4)
os=sco3.2v4
;;
sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
;;
sco3.2v[4-9]* | sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
;;
scout)
# Don't match below
;;
sco*)
os=sco3.2v2
;;
psos*)
os=psos
;;
# Now accept the basic system types.
# The portable systems comes first.
# Each alternative MUST end in a * to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* | -cloudabi* | -sortix* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
| -midnightbsd*)
# sysv* is not here because it comes later, after sysvr4.
gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
| *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | kopensolaris* | plan9* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* \
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
| knetbsd* | mirbsd* | netbsd* \
| bitrig* | openbsd* | solidbsd* | libertybsd* \
| ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
| bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
| ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
| udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
| chorusrdb* | cegcc* | glidix* \
| cygwin* | msys* | pe* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
| linux-newlib* | linux-musl* | linux-uclibc* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \
| interix* | uwin* | mks* | rhapsody* | darwin* \
| openstep* | oskit* | conix* | pw32* | nonstopux* \
| storm-chaos* | tops10* | tenex* | tops20* | its* \
| os2* | vos* | palmos* | uclinux* | nucleus* \
| morphos* | superux* | rtmk* | windiss* \
| powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
| skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
case $basic_machine in
x86-* | i*86-*)
qnx*)
case $cpu in
x86 | i*86)
;;
*)
os=-nto$os
os=nto-$os
;;
esac
;;
-nto-qnx*)
hiux*)
os=hiuxwe2
;;
nto-qnx*)
;;
-nto*)
nto*)
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -xray | -os68k* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
sim | xray | os68k* | v88r* \
| windows* | osx | abug | netware* | os9* \
| macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
;;
linux-dietlibc)
os=linux-dietlibc
;;
linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
lynx*178)
os=lynxos178
;;
-mac*)
lynx*5)
os=lynxos5
;;
lynx*)
os=lynxos
;;
mac*)
os=`echo "$os" | sed -e 's|mac|macos|'`
;;
-linux-dietlibc)
os=-linux-dietlibc
opened*)
os=openedition
;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
os400*)
os=os400
;;
-sunos5*)
sunos5*)
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
sunos6*)
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
;;
-opened*)
os=-openedition
;;
-os400*)
os=-os400
wince*)
os=wince
;;
-wince*)
os=-wince
utek*)
os=bsd
;;
-utek*)
os=-bsd
dynix*)
os=bsd
;;
-dynix*)
os=-bsd
acis*)
os=aos
;;
-acis*)
os=-aos
atheos*)
os=atheos
;;
-atheos*)
os=-atheos
syllable*)
os=syllable
;;
-syllable*)
os=-syllable
;;
-386bsd)
os=-bsd
386bsd)
os=bsd
;;
-ctix* | -uts*)
os=-sysv
ctix* | uts*)
os=sysv
;;
-nova*)
os=-rtmk-nova
nova*)
os=rtmk-nova
;;
-ns2)
os=-nextstep2
ns2)
os=nextstep2
;;
-nsk*)
os=-nsk
nsk*)
os=nsk
;;
# Preserve the version number of sinix5.
-sinix5.*)
sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
-sinix*)
os=-sysv4
sinix*)
os=sysv4
;;
-tpf*)
os=-tpf
tpf*)
os=tpf
;;
-triton*)
os=-sysv3
triton*)
os=sysv3
;;
-oss*)
os=-sysv3
oss*)
os=sysv3
;;
-svr4*)
os=-sysv4
svr4*)
os=sysv4
;;
-svr3)
os=-sysv3
svr3)
os=sysv3
;;
-sysvr4)
os=-sysv4
sysvr4)
os=sysv4
;;
# This must come after -sysvr4.
-sysv*)
# This must come after sysvr4.
sysv*)
;;
-ose*)
os=-ose
ose*)
os=ose
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
os=mint
;;
-zvmoe)
os=-zvmoe
zvmoe)
os=zvmoe
;;
-dicos*)
os=-dicos
dicos*)
os=dicos
;;
-pikeos*)
pikeos*)
# Until real need of OS specific support for
# particular features comes up, bare metal
# configurations are quite functional.
case $basic_machine in
case $cpu in
arm*)
os=-eabi
os=eabi
;;
*)
os=-elf
os=elf
;;
esac
;;
-nacl*)
nacl*)
;;
-ios)
ios)
;;
-none)
none)
;;
*-eabi)
;;
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
exit 1
;;
......@@ -1554,254 +1533,261 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
case $basic_machine in
case $cpu-$vendor in
score-*)
os=-elf
os=elf
;;
spu-*)
os=-elf
os=elf
;;
*-acorn)
os=-riscix1.2
os=riscix1.2
;;
arm*-rebel)
os=-linux
os=linux
;;
arm*-semi)
os=-aout
os=aout
;;
c4x-* | tic4x-*)
os=-coff
os=coff
;;
c8051-*)
os=-elf
os=elf
;;
clipper-intergraph)
os=clix
;;
hexagon-*)
os=-elf
os=elf
;;
tic54x-*)
os=-coff
os=coff
;;
tic55x-*)
os=-coff
os=coff
;;
tic6x-*)
os=-coff
os=coff
;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
os=tops20
;;
pdp11-*)
os=-none
os=none
;;
*-dec | vax-*)
os=-ultrix4.2
os=ultrix4.2
;;
m68*-apollo)
os=-domain
os=domain
;;
i386-sun)
os=-sunos4.0.2
os=sunos4.0.2
;;
m68000-sun)
os=-sunos3
os=sunos3
;;
m68*-cisco)
os=-aout
os=aout
;;
mep-*)
os=-elf
os=elf
;;
mips*-cisco)
os=-elf
os=elf
;;
mips*-*)
os=-elf
os=elf
;;
or32-*)
os=-coff
os=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
os=sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
os=sunos4.1.1
;;
pru-*)
os=-elf
os=elf
;;
*-be)
os=-beos
os=beos
;;
*-ibm)
os=-aix
os=aix
;;
*-knuth)
os=-mmixware
os=mmixware
;;
*-wec)
os=-proelf
os=proelf
;;
*-winbond)
os=-proelf
os=proelf
;;
*-oki)
os=-proelf
os=proelf
;;
*-hp)
os=-hpux
os=hpux
;;
*-hitachi)
os=-hiux
os=hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
os=-sysv
os=sysv
;;
*-cbm)
os=-amigaos
os=amigaos
;;
*-dg)
os=-dgux
os=dgux
;;
*-dolphin)
os=-sysv3
os=sysv3
;;
m68k-ccur)
os=-rtu
os=rtu
;;
m88k-omron*)
os=-luna
os=luna
;;
*-next)
os=-nextstep
os=nextstep
;;
*-sequent)
os=-ptx
os=ptx
;;
*-crds)
os=-unos
os=unos
;;
*-ns)
os=-genix
os=genix
;;
i370-*)
os=-mvs
os=mvs
;;
*-gould)
os=-sysv
os=sysv
;;
*-highlevel)
os=-bsd
os=bsd
;;
*-encore)
os=-bsd
os=bsd
;;
*-sgi)
os=-irix
os=irix
;;
*-siemens)
os=-sysv4
os=sysv4
;;
*-masscomp)
os=-rtu
os=rtu
;;
f30[01]-fujitsu | f700-fujitsu)
os=-uxpv
os=uxpv
;;
*-rom68k)
os=-coff
os=coff
;;
*-*bug)
os=-coff
os=coff
;;
*-apple)
os=-macos
os=macos
;;
*-atari*)
os=-mint
os=mint
;;
*-wrs)
os=vxworks
;;
*)
os=-none
os=none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
*-unknown)
case $vendor in
unknown)
case $os in
-riscix*)
riscix*)
vendor=acorn
;;
-sunos*)
sunos*)
vendor=sun
;;
-cnk*|-aix*)
cnk*|-aix*)
vendor=ibm
;;
-beos*)
beos*)
vendor=be
;;
-hpux*)
hpux*)
vendor=hp
;;
-mpeix*)
mpeix*)
vendor=hp
;;
-hiux*)
hiux*)
vendor=hitachi
;;
-unos*)
unos*)
vendor=crds
;;
-dgux*)
dgux*)
vendor=dg
;;
-luna*)
luna*)
vendor=omron
;;
-genix*)
genix*)
vendor=ns
;;
-mvs* | -opened*)
clix*)
vendor=intergraph
;;
mvs* | opened*)
vendor=ibm
;;
-os400*)
os400*)
vendor=ibm
;;
-ptx*)
ptx*)
vendor=sequent
;;
-tpf*)
tpf*)
vendor=ibm
;;
-vxsim* | -vxworks* | -windiss*)
vxsim* | vxworks* | windiss*)
vendor=wrs
;;
-aux*)
aux*)
vendor=apple
;;
-hms*)
hms*)
vendor=hitachi
;;
-mpw* | -macos*)
mpw* | macos*)
vendor=apple
;;
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
vendor=atari
;;
-vos*)
vos*)
vendor=stratus
;;
esac
basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
;;
esac
echo "$basic_machine$os"
echo "$cpu-$vendor-$os"
exit
# Local variables:
......
This source diff could not be displayed because it is too large. You can view the blob instead.
/*
* libev simple C++ wrapper classes
*
* Copyright (c) 2007,2008,2010 Marc Alexander Lehmann <libev@schmorp.de>
* Copyright (c) 2007,2008,2010,2018 Marc Alexander Lehmann <libev@schmorp.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
......@@ -113,13 +113,13 @@ namespace ev {
struct bad_loop
#if EV_USE_STDEXCEPT
: std::runtime_error
: std::exception
#endif
{
#if EV_USE_STDEXCEPT
bad_loop ()
: std::runtime_error ("libev event loop cannot be initialized, bad value of LIBEV_FLAGS?")
const char *what () const EV_NOEXCEPT
{
return "libev event loop cannot be initialized, bad value of LIBEV_FLAGS?";
}
#endif
};
......@@ -142,14 +142,14 @@ namespace ev {
struct loop_ref
{
loop_ref (EV_P) throw ()
loop_ref (EV_P) EV_NOEXCEPT
#if EV_MULTIPLICITY
: EV_AX (EV_A)
#endif
{
}
bool operator == (const loop_ref &other) const throw ()
bool operator == (const loop_ref &other) const EV_NOEXCEPT
{
#if EV_MULTIPLICITY
return EV_AX == other.EV_AX;
......@@ -158,7 +158,7 @@ namespace ev {
#endif
}
bool operator != (const loop_ref &other) const throw ()
bool operator != (const loop_ref &other) const EV_NOEXCEPT
{
#if EV_MULTIPLICITY
return ! (*this == other);
......@@ -168,27 +168,27 @@ namespace ev {
}
#if EV_MULTIPLICITY
bool operator == (const EV_P) const throw ()
bool operator == (const EV_P) const EV_NOEXCEPT
{
return this->EV_AX == EV_A;
}
bool operator != (const EV_P) const throw ()
bool operator != (const EV_P) const EV_NOEXCEPT
{
return (*this == EV_A);
return ! (*this == EV_A);
}
operator struct ev_loop * () const throw ()
operator struct ev_loop * () const EV_NOEXCEPT
{
return EV_AX;
}
operator const struct ev_loop * () const throw ()
operator const struct ev_loop * () const EV_NOEXCEPT
{
return EV_AX;
}
bool is_default () const throw ()
bool is_default () const EV_NOEXCEPT
{
return EV_AX == ev_default_loop (0);
}
......@@ -200,7 +200,7 @@ namespace ev {
ev_run (EV_AX_ flags);
}
void unloop (how_t how = ONE) throw ()
void unloop (how_t how = ONE) EV_NOEXCEPT
{
ev_break (EV_AX_ how);
}
......@@ -211,74 +211,74 @@ namespace ev {
ev_run (EV_AX_ flags);
}
void break_loop (how_t how = ONE) throw ()
void break_loop (how_t how = ONE) EV_NOEXCEPT
{
ev_break (EV_AX_ how);
}
void post_fork () throw ()
void post_fork () EV_NOEXCEPT
{
ev_loop_fork (EV_AX);
}
unsigned int backend () const throw ()
unsigned int backend () const EV_NOEXCEPT
{
return ev_backend (EV_AX);
}
tstamp now () const throw ()
tstamp now () const EV_NOEXCEPT
{
return ev_now (EV_AX);
}
void ref () throw ()
void ref () EV_NOEXCEPT
{
ev_ref (EV_AX);
}
void unref () throw ()
void unref () EV_NOEXCEPT
{
ev_unref (EV_AX);
}
#if EV_FEATURE_API
unsigned int iteration () const throw ()
unsigned int iteration () const EV_NOEXCEPT
{
return ev_iteration (EV_AX);
}
unsigned int depth () const throw ()
unsigned int depth () const EV_NOEXCEPT
{
return ev_depth (EV_AX);
}
void set_io_collect_interval (tstamp interval) throw ()
void set_io_collect_interval (tstamp interval) EV_NOEXCEPT
{
ev_set_io_collect_interval (EV_AX_ interval);
}
void set_timeout_collect_interval (tstamp interval) throw ()
void set_timeout_collect_interval (tstamp interval) EV_NOEXCEPT
{
ev_set_timeout_collect_interval (EV_AX_ interval);
}
#endif
// function callback
void once (int fd, int events, tstamp timeout, void (*cb)(int, void *), void *arg = 0) throw ()
void once (int fd, int events, tstamp timeout, void (*cb)(int, void *), void *arg = 0) EV_NOEXCEPT
{
ev_once (EV_AX_ fd, events, timeout, cb, arg);
}
// method callback
template<class K, void (K::*method)(int)>
void once (int fd, int events, tstamp timeout, K *object) throw ()
void once (int fd, int events, tstamp timeout, K *object) EV_NOEXCEPT
{
once (fd, events, timeout, method_thunk<K, method>, object);
}
// default method == operator ()
template<class K>
void once (int fd, int events, tstamp timeout, K *object) throw ()
void once (int fd, int events, tstamp timeout, K *object) EV_NOEXCEPT
{
once (fd, events, timeout, method_thunk<K, &K::operator ()>, object);
}
......@@ -292,7 +292,7 @@ namespace ev {
// no-argument method callback
template<class K, void (K::*method)()>
void once (int fd, int events, tstamp timeout, K *object) throw ()
void once (int fd, int events, tstamp timeout, K *object) EV_NOEXCEPT
{
once (fd, events, timeout, method_noargs_thunk<K, method>, object);
}
......@@ -306,7 +306,7 @@ namespace ev {
// simpler function callback
template<void (*cb)(int)>
void once (int fd, int events, tstamp timeout) throw ()
void once (int fd, int events, tstamp timeout) EV_NOEXCEPT
{
once (fd, events, timeout, simpler_func_thunk<cb>);
}
......@@ -320,7 +320,7 @@ namespace ev {
// simplest function callback
template<void (*cb)()>
void once (int fd, int events, tstamp timeout) throw ()
void once (int fd, int events, tstamp timeout) EV_NOEXCEPT
{
once (fd, events, timeout, simplest_func_thunk<cb>);
}
......@@ -332,12 +332,12 @@ namespace ev {
();
}
void feed_fd_event (int fd, int revents) throw ()
void feed_fd_event (int fd, int revents) EV_NOEXCEPT
{
ev_feed_fd_event (EV_AX_ fd, revents);
}
void feed_signal_event (int signum) throw ()
void feed_signal_event (int signum) EV_NOEXCEPT
{
ev_feed_signal_event (EV_AX_ signum);
}
......@@ -352,14 +352,14 @@ namespace ev {
struct dynamic_loop : loop_ref
{
dynamic_loop (unsigned int flags = AUTO) throw (bad_loop)
dynamic_loop (unsigned int flags = AUTO)
: loop_ref (ev_loop_new (flags))
{
if (!EV_AX)
throw bad_loop ();
}
~dynamic_loop () throw ()
~dynamic_loop () EV_NOEXCEPT
{
ev_loop_destroy (EV_AX);
EV_AX = 0;
......@@ -376,7 +376,7 @@ namespace ev {
struct default_loop : loop_ref
{
default_loop (unsigned int flags = AUTO) throw (bad_loop)
default_loop (unsigned int flags = AUTO)
#if EV_MULTIPLICITY
: loop_ref (ev_default_loop (flags))
#endif
......@@ -396,7 +396,7 @@ namespace ev {
default_loop &operator = (const default_loop &);
};
inline loop_ref get_default_loop () throw ()
inline loop_ref get_default_loop () EV_NOEXCEPT
{
#if EV_MULTIPLICITY
return ev_default_loop (0);
......@@ -425,13 +425,13 @@ namespace ev {
EV_PX;
// loop set
void set (EV_P) throw ()
void set (EV_P) EV_NOEXCEPT
{
this->EV_A = EV_A;
}
#endif
base (EV_PX) throw ()
base (EV_PX) EV_NOEXCEPT
#if EV_MULTIPLICITY
: EV_A (EV_A)
#endif
......@@ -439,7 +439,7 @@ namespace ev {
ev_init (this, 0);
}
void set_ (const void *data, void (*cb)(EV_P_ ev_watcher *w, int revents)) throw ()
void set_ (const void *data, void (*cb)(EV_P_ ev_watcher *w, int revents)) EV_NOEXCEPT
{
this->data = (void *)data;
ev_set_cb (static_cast<ev_watcher *>(this), cb);
......@@ -447,7 +447,7 @@ namespace ev {
// function callback
template<void (*function)(watcher &w, int)>
void set (void *data = 0) throw ()
void set (void *data = 0) EV_NOEXCEPT
{
set_ (data, function_thunk<function>);
}
......@@ -461,14 +461,14 @@ namespace ev {
// method callback
template<class K, void (K::*method)(watcher &w, int)>
void set (K *object) throw ()
void set (K *object) EV_NOEXCEPT
{
set_ (object, method_thunk<K, method>);
}
// default method == operator ()
template<class K>
void set (K *object) throw ()
void set (K *object) EV_NOEXCEPT
{
set_ (object, method_thunk<K, &K::operator ()>);
}
......@@ -482,7 +482,7 @@ namespace ev {
// no-argument callback
template<class K, void (K::*method)()>
void set (K *object) throw ()
void set (K *object) EV_NOEXCEPT
{
set_ (object, method_noargs_thunk<K, method>);
}
......@@ -501,76 +501,76 @@ namespace ev {
(static_cast<ev_watcher *>(this), events);
}
bool is_active () const throw ()
bool is_active () const EV_NOEXCEPT
{
return ev_is_active (static_cast<const ev_watcher *>(this));
}
bool is_pending () const throw ()
bool is_pending () const EV_NOEXCEPT
{
return ev_is_pending (static_cast<const ev_watcher *>(this));
}
void feed_event (int revents) throw ()
void feed_event (int revents) EV_NOEXCEPT
{
ev_feed_event (EV_A_ static_cast<ev_watcher *>(this), revents);
}
};
inline tstamp now (EV_P) throw ()
inline tstamp now (EV_P) EV_NOEXCEPT
{
return ev_now (EV_A);
}
inline void delay (tstamp interval) throw ()
inline void delay (tstamp interval) EV_NOEXCEPT
{
ev_sleep (interval);
}
inline int version_major () throw ()
inline int version_major () EV_NOEXCEPT
{
return ev_version_major ();
}
inline int version_minor () throw ()
inline int version_minor () EV_NOEXCEPT
{
return ev_version_minor ();
}
inline unsigned int supported_backends () throw ()
inline unsigned int supported_backends () EV_NOEXCEPT
{
return ev_supported_backends ();
}
inline unsigned int recommended_backends () throw ()
inline unsigned int recommended_backends () EV_NOEXCEPT
{
return ev_recommended_backends ();
}
inline unsigned int embeddable_backends () throw ()
inline unsigned int embeddable_backends () EV_NOEXCEPT
{
return ev_embeddable_backends ();
}
inline void set_allocator (void *(*cb)(void *ptr, long size) throw ()) throw ()
inline void set_allocator (void *(*cb)(void *ptr, long size) EV_NOEXCEPT) EV_NOEXCEPT
{
ev_set_allocator (cb);
}
inline void set_syserr_cb (void (*cb)(const char *msg) throw ()) throw ()
inline void set_syserr_cb (void (*cb)(const char *msg) EV_NOEXCEPT) EV_NOEXCEPT
{
ev_set_syserr_cb (cb);
}
#if EV_MULTIPLICITY
#define EV_CONSTRUCT(cppstem,cstem) \
(EV_PX = get_default_loop ()) throw () \
(EV_PX = get_default_loop ()) EV_NOEXCEPT \
: base<ev_ ## cstem, cppstem> (EV_A) \
{ \
}
#else
#define EV_CONSTRUCT(cppstem,cstem) \
() throw () \
() EV_NOEXCEPT \
{ \
}
#endif
......@@ -581,19 +581,19 @@ namespace ev {
\
struct cppstem : base<ev_ ## cstem, cppstem> \
{ \
void start () throw () \
void start () EV_NOEXCEPT \
{ \
ev_ ## cstem ## _start (EV_A_ static_cast<ev_ ## cstem *>(this)); \
} \
\
void stop () throw () \
void stop () EV_NOEXCEPT \
{ \
ev_ ## cstem ## _stop (EV_A_ static_cast<ev_ ## cstem *>(this)); \
} \
\
cppstem EV_CONSTRUCT(cppstem,cstem) \
\
~cppstem () throw () \
~cppstem () EV_NOEXCEPT \
{ \
stop (); \
} \
......@@ -612,7 +612,7 @@ namespace ev {
};
EV_BEGIN_WATCHER (io, io)
void set (int fd, int events) throw ()
void set (int fd, int events) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -620,7 +620,7 @@ namespace ev {
if (active) start ();
}
void set (int events) throw ()
void set (int events) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -628,7 +628,7 @@ namespace ev {
if (active) start ();
}
void start (int fd, int events) throw ()
void start (int fd, int events) EV_NOEXCEPT
{
set (fd, events);
start ();
......@@ -636,7 +636,7 @@ namespace ev {
EV_END_WATCHER (io, io)
EV_BEGIN_WATCHER (timer, timer)
void set (ev_tstamp after, ev_tstamp repeat = 0.) throw ()
void set (ev_tstamp after, ev_tstamp repeat = 0.) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -644,13 +644,13 @@ namespace ev {
if (active) start ();
}
void start (ev_tstamp after, ev_tstamp repeat = 0.) throw ()
void start (ev_tstamp after, ev_tstamp repeat = 0.) EV_NOEXCEPT
{
set (after, repeat);
start ();
}
void again () throw ()
void again () EV_NOEXCEPT
{
ev_timer_again (EV_A_ static_cast<ev_timer *>(this));
}
......@@ -663,7 +663,7 @@ namespace ev {
#if EV_PERIODIC_ENABLE
EV_BEGIN_WATCHER (periodic, periodic)
void set (ev_tstamp at, ev_tstamp interval = 0.) throw ()
void set (ev_tstamp at, ev_tstamp interval = 0.) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -671,13 +671,13 @@ namespace ev {
if (active) start ();
}
void start (ev_tstamp at, ev_tstamp interval = 0.) throw ()
void start (ev_tstamp at, ev_tstamp interval = 0.) EV_NOEXCEPT
{
set (at, interval);
start ();
}
void again () throw ()
void again () EV_NOEXCEPT
{
ev_periodic_again (EV_A_ static_cast<ev_periodic *>(this));
}
......@@ -686,7 +686,7 @@ namespace ev {
#if EV_SIGNAL_ENABLE
EV_BEGIN_WATCHER (sig, signal)
void set (int signum) throw ()
void set (int signum) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -694,7 +694,7 @@ namespace ev {
if (active) start ();
}
void start (int signum) throw ()
void start (int signum) EV_NOEXCEPT
{
set (signum);
start ();
......@@ -704,7 +704,7 @@ namespace ev {
#if EV_CHILD_ENABLE
EV_BEGIN_WATCHER (child, child)
void set (int pid, int trace = 0) throw ()
void set (int pid, int trace = 0) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -712,7 +712,7 @@ namespace ev {
if (active) start ();
}
void start (int pid, int trace = 0) throw ()
void start (int pid, int trace = 0) EV_NOEXCEPT
{
set (pid, trace);
start ();
......@@ -722,7 +722,7 @@ namespace ev {
#if EV_STAT_ENABLE
EV_BEGIN_WATCHER (stat, stat)
void set (const char *path, ev_tstamp interval = 0.) throw ()
void set (const char *path, ev_tstamp interval = 0.) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -730,14 +730,14 @@ namespace ev {
if (active) start ();
}
void start (const char *path, ev_tstamp interval = 0.) throw ()
void start (const char *path, ev_tstamp interval = 0.) EV_NOEXCEPT
{
stop ();
set (path, interval);
start ();
}
void update () throw ()
void update () EV_NOEXCEPT
{
ev_stat_stat (EV_A_ static_cast<ev_stat *>(this));
}
......@@ -746,25 +746,25 @@ namespace ev {
#if EV_IDLE_ENABLE
EV_BEGIN_WATCHER (idle, idle)
void set () throw () { }
void set () EV_NOEXCEPT { }
EV_END_WATCHER (idle, idle)
#endif
#if EV_PREPARE_ENABLE
EV_BEGIN_WATCHER (prepare, prepare)
void set () throw () { }
void set () EV_NOEXCEPT { }
EV_END_WATCHER (prepare, prepare)
#endif
#if EV_CHECK_ENABLE
EV_BEGIN_WATCHER (check, check)
void set () throw () { }
void set () EV_NOEXCEPT { }
EV_END_WATCHER (check, check)
#endif
#if EV_EMBED_ENABLE
EV_BEGIN_WATCHER (embed, embed)
void set_embed (struct ev_loop *embedded_loop) throw ()
void set_embed (struct ev_loop *embedded_loop) EV_NOEXCEPT
{
int active = is_active ();
if (active) stop ();
......@@ -772,7 +772,7 @@ namespace ev {
if (active) start ();
}
void start (struct ev_loop *embedded_loop) throw ()
void start (struct ev_loop *embedded_loop) EV_NOEXCEPT
{
set (embedded_loop);
start ();
......@@ -787,18 +787,18 @@ namespace ev {
#if EV_FORK_ENABLE
EV_BEGIN_WATCHER (fork, fork)
void set () throw () { }
void set () EV_NOEXCEPT { }
EV_END_WATCHER (fork, fork)
#endif
#if EV_ASYNC_ENABLE
EV_BEGIN_WATCHER (async, async)
void send () throw ()
void send () EV_NOEXCEPT
{
ev_async_send (EV_A_ static_cast<ev_async *>(this));
}
bool async_pending () throw ()
bool async_pending () EV_NOEXCEPT
{
return ev_async_pending (static_cast<ev_async *>(this));
}
......
.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.30)
.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29)
.\"
.\" Standard preamble:
.\" ========================================================================
......@@ -133,7 +133,7 @@
.\" ========================================================================
.\"
.IX Title "LIBEV 3"
.TH LIBEV 3 "2016-11-16" "libev-4.23" "libev - high performance full featured event loop"
.TH LIBEV 3 "2018-12-21" "libev-4.25" "libev - high performance full featured event loop"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
......@@ -538,9 +538,10 @@ make libev check for a fork in each iteration by enabling this flag.
This works by calling \f(CW\*(C`getpid ()\*(C'\fR on every iteration of the loop,
and thus this might slow down your event loop if you do a lot of loop
iterations and little real work, but is usually not noticeable (on my
GNU/Linux system for example, \f(CW\*(C`getpid\*(C'\fR is actually a simple 5\-insn sequence
without a system call and thus \fIvery\fR fast, but my GNU/Linux system also has
\&\f(CW\*(C`pthread_atfork\*(C'\fR which is even faster).
GNU/Linux system for example, \f(CW\*(C`getpid\*(C'\fR is actually a simple 5\-insn
sequence without a system call and thus \fIvery\fR fast, but my GNU/Linux
system also has \f(CW\*(C`pthread_atfork\*(C'\fR which is even faster). (Update: glibc
versions 2.25 apparently removed the \f(CW\*(C`getpid\*(C'\fR optimisation again).
.Sp
The big advantage of this flag is that you can forget about fork (and
forget about forgetting to tell libev about forking, although you still
......@@ -2252,11 +2253,11 @@ deterministic behaviour in this case (you can do nothing against
.IP "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)" 4
.IX Item "ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)"
.PD
Configure the timer to trigger after \f(CW\*(C`after\*(C'\fR seconds. If \f(CW\*(C`repeat\*(C'\fR
is \f(CW0.\fR, then it will automatically be stopped once the timeout is
reached. If it is positive, then the timer will automatically be
configured to trigger again \f(CW\*(C`repeat\*(C'\fR seconds later, again, and again,
until stopped manually.
Configure the timer to trigger after \f(CW\*(C`after\*(C'\fR seconds (fractional and
negative values are supported). If \f(CW\*(C`repeat\*(C'\fR is \f(CW0.\fR, then it will
automatically be stopped once the timeout is reached. If it is positive,
then the timer will automatically be configured to trigger again \f(CW\*(C`repeat\*(C'\fR
seconds later, again, and again, until stopped manually.
.Sp
The timer itself will do a best-effort at avoiding drift, that is, if
you configure a timer to trigger every 10 seconds, then it will normally
......@@ -2363,8 +2364,8 @@ it, as it uses a relative timeout).
.PP
\&\f(CW\*(C`ev_periodic\*(C'\fR watchers can also be used to implement vastly more complex
timers, such as triggering an event on each \*(L"midnight, local time\*(R", or
other complicated rules. This cannot be done with \f(CW\*(C`ev_timer\*(C'\fR watchers, as
those cannot react to time jumps.
other complicated rules. This cannot easily be done with \f(CW\*(C`ev_timer\*(C'\fR
watchers, as those cannot react to time jumps.
.PP
As with timers, the callback is guaranteed to be invoked only when the
point in time where it is supposed to trigger has passed. If multiple
......@@ -2463,10 +2464,30 @@ might be called at other times, too.
equal to the passed \f(CI\*(C`now\*(C'\fI value\fR.
.Sp
This can be used to create very complex timers, such as a timer that
triggers on \*(L"next midnight, local time\*(R". To do this, you would calculate the
next midnight after \f(CW\*(C`now\*(C'\fR and return the timestamp value for this. How
you do this is, again, up to you (but it is not trivial, which is the main
reason I omitted it as an example).
triggers on \*(L"next midnight, local time\*(R". To do this, you would calculate
the next midnight after \f(CW\*(C`now\*(C'\fR and return the timestamp value for
this. Here is a (completely untested, no error checking) example on how to
do this:
.Sp
.Vb 1
\& #include <time.h>
\&
\& static ev_tstamp
\& my_rescheduler (ev_periodic *w, ev_tstamp now)
\& {
\& time_t tnow = (time_t)now;
\& struct tm tm;
\& localtime_r (&tnow, &tm);
\&
\& tm.tm_sec = tm.tm_min = tm.tm_hour = 0; // midnight current day
\& ++tm.tm_mday; // midnight next day
\&
\& return mktime (&tm);
\& }
.Ve
.Sp
Note: this code might run into trouble on days that have more then two
midnights (beginning and end).
.RE
.RS 4
.RE
......@@ -3646,8 +3667,8 @@ notification, and the callback being invoked.
.SH "OTHER FUNCTIONS"
.IX Header "OTHER FUNCTIONS"
There are some other functions of possible interest. Described. Here. Now.
.IP "ev_once (loop, int fd, int events, ev_tstamp timeout, callback)" 4
.IX Item "ev_once (loop, int fd, int events, ev_tstamp timeout, callback)"
.IP "ev_once (loop, int fd, int events, ev_tstamp timeout, callback, arg)" 4
.IX Item "ev_once (loop, int fd, int events, ev_tstamp timeout, callback, arg)"
This function combines a simple timer and an I/O watcher, calls your
callback on whichever event happens first and automatically stops both
watchers. This is useful if you want to wait for a single event on an fd
......@@ -4107,15 +4128,15 @@ libev sources can be compiled as \*(C+. Therefore, code that uses the C \s-1API\
will work fine.
.PP
Proper exception specifications might have to be added to callbacks passed
to libev: exceptions may be thrown only from watcher callbacks, all
other callbacks (allocator, syserr, loop acquire/release and periodic
reschedule callbacks) must not throw exceptions, and might need a \f(CW\*(C`throw
()\*(C'\fR specification. If you have code that needs to be compiled as both C
and \*(C+ you can use the \f(CW\*(C`EV_THROW\*(C'\fR macro for this:
to libev: exceptions may be thrown only from watcher callbacks, all other
callbacks (allocator, syserr, loop acquire/release and periodic reschedule
callbacks) must not throw exceptions, and might need a \f(CW\*(C`noexcept\*(C'\fR
specification. If you have code that needs to be compiled as both C and
\&\*(C+ you can use the \f(CW\*(C`EV_NOEXCEPT\*(C'\fR macro for this:
.PP
.Vb 6
\& static void
\& fatal_error (const char *msg) EV_THROW
\& fatal_error (const char *msg) EV_NOEXCEPT
\& {
\& perror (msg);
\& abort ();
......@@ -4523,11 +4544,11 @@ in your include path (e.g. in libev/ when using \-Ilibev):
\&
\& ev_win32.c required on win32 platforms only
\&
\& ev_select.c only when select backend is enabled (which is enabled by default)
\& ev_poll.c only when poll backend is enabled (disabled by default)
\& ev_epoll.c only when the epoll backend is enabled (disabled by default)
\& ev_kqueue.c only when the kqueue backend is enabled (disabled by default)
\& ev_port.c only when the solaris port backend is enabled (disabled by default)
\& ev_select.c only when select backend is enabled
\& ev_poll.c only when poll backend is enabled
\& ev_epoll.c only when the epoll backend is enabled
\& ev_kqueue.c only when the kqueue backend is enabled
\& ev_port.c only when the solaris port backend is enabled
.Ve
.PP
\&\fIev.c\fR includes the backend files directly when enabled, so you only need
......
/*
* libev event processing core, watcher management
*
* Copyright (c) 2007,2008,2009,2010,2011,2012,2013 Marc Alexander Lehmann <libev@schmorp.de>
* Copyright (c) 2007-2018 Marc Alexander Lehmann <libev@schmorp.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
......@@ -164,6 +164,16 @@
#endif
/* OS X, in its infinite idiocy, actually HARDCODES
* a limit of 1024 into their select. Where people have brains,
* OS X engineers apparently have a vacuum. Or maybe they were
* ordered to have a vacuum, or they do anything for money.
* This might help. Or not.
* Note that this must be defined early, as other include files
* will rely on this define as well.
*/
#define _DARWIN_UNLIMITED_SELECT 1
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
......@@ -211,14 +221,6 @@
# undef EV_AVOID_STDIO
#endif
/* OS X, in its infinite idiocy, actually HARDCODES
* a limit of 1024 into their select. Where people have brains,
* OS X engineers apparently have a vacuum. Or maybe they were
* ordered to have a vacuum, or they do anything for money.
* This might help. Or not.
*/
#define _DARWIN_UNLIMITED_SELECT 1
/* this block tries to deduce configuration from header-defined symbols and defaults */
/* try to deduce the maximum number of signals on this platform */
......@@ -365,7 +367,7 @@
# define EV_HEAP_CACHE_AT EV_FEATURE_DATA
#endif
#ifdef ANDROID
#ifdef __ANDROID__
/* supposedly, android doesn't typedef fd_mask */
# undef EV_USE_SELECT
# define EV_USE_SELECT 0
......@@ -609,6 +611,8 @@ struct signalfd_siginfo
#define ECB_CPP (__cplusplus+0)
#define ECB_CPP11 (__cplusplus >= 201103L)
#define ECB_CPP14 (__cplusplus >= 201402L)
#define ECB_CPP17 (__cplusplus >= 201703L)
#if ECB_CPP
#define ECB_C 0
......@@ -620,6 +624,7 @@ struct signalfd_siginfo
#define ECB_C99 (ECB_STDC_VERSION >= 199901L)
#define ECB_C11 (ECB_STDC_VERSION >= 201112L)
#define ECB_C17 (ECB_STDC_VERSION >= 201710L)
#if ECB_CPP
#define ECB_EXTERN_C extern "C"
......@@ -658,11 +663,11 @@ struct signalfd_siginfo
#if __i386 || __i386__
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; orb $0, -1(%%esp)" : : : "memory")
#define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory")
#define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("")
#define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("" : : : "memory")
#elif ECB_GCC_AMD64
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory")
#define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory")
#define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("")
#define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("" : : : "memory")
#elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory")
#elif defined __ARM_ARCH_2__ \
......@@ -1677,11 +1682,11 @@ ev_printerr (const char *msg)
}
#endif
static void (*syserr_cb)(const char *msg) EV_THROW;
static void (*syserr_cb)(const char *msg) EV_NOEXCEPT;
ecb_cold
void
ev_set_syserr_cb (void (*cb)(const char *msg) EV_THROW) EV_THROW
ev_set_syserr_cb (void (*cb)(const char *msg) EV_NOEXCEPT) EV_NOEXCEPT
{
syserr_cb = cb;
}
......@@ -1710,7 +1715,7 @@ ev_syserr (const char *msg)
}
static void *
ev_realloc_emul (void *ptr, long size) EV_THROW
ev_realloc_emul (void *ptr, long size) EV_NOEXCEPT
{
/* some systems, notably openbsd and darwin, fail to properly
* implement realloc (x, 0) (as required by both ansi c-89 and
......@@ -1726,11 +1731,11 @@ ev_realloc_emul (void *ptr, long size) EV_THROW
return 0;
}
static void *(*alloc)(void *ptr, long size) EV_THROW = ev_realloc_emul;
static void *(*alloc)(void *ptr, long size) EV_NOEXCEPT = ev_realloc_emul;
ecb_cold
void
ev_set_allocator (void *(*cb)(void *ptr, long size) EV_THROW) EV_THROW
ev_set_allocator (void *(*cb)(void *ptr, long size) EV_NOEXCEPT) EV_NOEXCEPT
{
alloc = cb;
}
......@@ -1857,7 +1862,7 @@ typedef struct
#ifndef EV_HAVE_EV_TIME
ev_tstamp
ev_time (void) EV_THROW
ev_time (void) EV_NOEXCEPT
{
#if EV_USE_REALTIME
if (expect_true (have_realtime))
......@@ -1891,14 +1896,14 @@ get_clock (void)
#if EV_MULTIPLICITY
ev_tstamp
ev_now (EV_P) EV_THROW
ev_now (EV_P) EV_NOEXCEPT
{
return ev_rt_now;
}
#endif
void
ev_sleep (ev_tstamp delay) EV_THROW
ev_sleep (ev_tstamp delay) EV_NOEXCEPT
{
if (delay > 0.)
{
......@@ -1908,6 +1913,8 @@ ev_sleep (ev_tstamp delay) EV_THROW
EV_TS_SET (ts, delay);
nanosleep (&ts, 0);
#elif defined _WIN32
/* maybe this should round up, as ms is very low resolution */
/* compared to select (µs) or nanosleep (ns) */
Sleep ((unsigned long)(delay * 1e3));
#else
struct timeval tv;
......@@ -1992,7 +1999,7 @@ pendingcb (EV_P_ ev_prepare *w, int revents)
noinline
void
ev_feed_event (EV_P_ void *w, int revents) EV_THROW
ev_feed_event (EV_P_ void *w, int revents) EV_NOEXCEPT
{
W w_ = (W)w;
int pri = ABSPRI (w_);
......@@ -2063,7 +2070,7 @@ fd_event (EV_P_ int fd, int revents)
}
void
ev_feed_fd_event (EV_P_ int fd, int revents) EV_THROW
ev_feed_fd_event (EV_P_ int fd, int revents) EV_NOEXCEPT
{
if (fd >= 0 && fd < anfdmax)
fd_event_nocheck (EV_A_ fd, revents);
......@@ -2473,7 +2480,7 @@ evpipe_write (EV_P_ EV_ATOMIC_T *flag)
#ifdef _WIN32
WSABUF buf;
DWORD sent;
buf.buf = &buf;
buf.buf = (char *)&buf;
buf.len = 1;
WSASend (EV_FD_TO_WIN32_HANDLE (evpipe [1]), &buf, 1, &sent, 0, 0, 0);
#else
......@@ -2555,7 +2562,7 @@ pipecb (EV_P_ ev_io *iow, int revents)
/*****************************************************************************/
void
ev_feed_signal (int signum) EV_THROW
ev_feed_signal (int signum) EV_NOEXCEPT
{
#if EV_MULTIPLICITY
EV_P;
......@@ -2582,7 +2589,7 @@ ev_sighandler (int signum)
noinline
void
ev_feed_signal_event (EV_P_ int signum) EV_THROW
ev_feed_signal_event (EV_P_ int signum) EV_NOEXCEPT
{
WL w;
......@@ -2709,13 +2716,13 @@ childcb (EV_P_ ev_signal *sw, int revents)
#endif
ecb_cold int
ev_version_major (void) EV_THROW
ev_version_major (void) EV_NOEXCEPT
{
return EV_VERSION_MAJOR;
}
ecb_cold int
ev_version_minor (void) EV_THROW
ev_version_minor (void) EV_NOEXCEPT
{
return EV_VERSION_MINOR;
}
......@@ -2734,7 +2741,7 @@ enable_secure (void)
ecb_cold
unsigned int
ev_supported_backends (void) EV_THROW
ev_supported_backends (void) EV_NOEXCEPT
{
unsigned int flags = 0;
......@@ -2749,7 +2756,7 @@ ev_supported_backends (void) EV_THROW
ecb_cold
unsigned int
ev_recommended_backends (void) EV_THROW
ev_recommended_backends (void) EV_NOEXCEPT
{
unsigned int flags = ev_supported_backends ();
......@@ -2772,7 +2779,7 @@ ev_recommended_backends (void) EV_THROW
ecb_cold
unsigned int
ev_embeddable_backends (void) EV_THROW
ev_embeddable_backends (void) EV_NOEXCEPT
{
int flags = EVBACKEND_EPOLL | EVBACKEND_KQUEUE | EVBACKEND_PORT;
......@@ -2784,56 +2791,56 @@ ev_embeddable_backends (void) EV_THROW
}
unsigned int
ev_backend (EV_P) EV_THROW
ev_backend (EV_P) EV_NOEXCEPT
{
return backend;
}
#if EV_FEATURE_API
unsigned int
ev_iteration (EV_P) EV_THROW
ev_iteration (EV_P) EV_NOEXCEPT
{
return loop_count;
}
unsigned int
ev_depth (EV_P) EV_THROW
ev_depth (EV_P) EV_NOEXCEPT
{
return loop_depth;
}
void
ev_set_io_collect_interval (EV_P_ ev_tstamp interval) EV_THROW
ev_set_io_collect_interval (EV_P_ ev_tstamp interval) EV_NOEXCEPT
{
io_blocktime = interval;
}
void
ev_set_timeout_collect_interval (EV_P_ ev_tstamp interval) EV_THROW
ev_set_timeout_collect_interval (EV_P_ ev_tstamp interval) EV_NOEXCEPT
{
timeout_blocktime = interval;
}
void
ev_set_userdata (EV_P_ void *data) EV_THROW
ev_set_userdata (EV_P_ void *data) EV_NOEXCEPT
{
userdata = data;
}
void *
ev_userdata (EV_P) EV_THROW
ev_userdata (EV_P) EV_NOEXCEPT
{
return userdata;
}
void
ev_set_invoke_pending_cb (EV_P_ ev_loop_callback invoke_pending_cb) EV_THROW
ev_set_invoke_pending_cb (EV_P_ ev_loop_callback invoke_pending_cb) EV_NOEXCEPT
{
invoke_cb = invoke_pending_cb;
}
void
ev_set_loop_release_cb (EV_P_ void (*release)(EV_P) EV_THROW, void (*acquire)(EV_P) EV_THROW) EV_THROW
ev_set_loop_release_cb (EV_P_ void (*release)(EV_P) EV_NOEXCEPT, void (*acquire)(EV_P) EV_NOEXCEPT) EV_NOEXCEPT
{
release_cb = release;
acquire_cb = acquire;
......@@ -2843,7 +2850,7 @@ ev_set_loop_release_cb (EV_P_ void (*release)(EV_P) EV_THROW, void (*acquire)(EV
/* initialise a loop structure, must be zero-initialised */
noinline ecb_cold
static void
loop_init (EV_P_ unsigned int flags) EV_THROW
loop_init (EV_P_ unsigned int flags) EV_NOEXCEPT
{
if (!backend)
{
......@@ -3094,7 +3101,7 @@ loop_fork (EV_P)
ecb_cold
struct ev_loop *
ev_loop_new (unsigned int flags) EV_THROW
ev_loop_new (unsigned int flags) EV_NOEXCEPT
{
EV_P = (struct ev_loop *)ev_malloc (sizeof (struct ev_loop));
......@@ -3151,7 +3158,7 @@ array_verify (EV_P_ W *ws, int cnt)
#if EV_FEATURE_API
void ecb_cold
ev_verify (EV_P) EV_THROW
ev_verify (EV_P) EV_NOEXCEPT
{
#if EV_VERIFY
int i;
......@@ -3242,7 +3249,7 @@ struct ev_loop *
#else
int
#endif
ev_default_loop (unsigned int flags) EV_THROW
ev_default_loop (unsigned int flags) EV_NOEXCEPT
{
if (!ev_default_loop_ptr)
{
......@@ -3271,7 +3278,7 @@ ev_default_loop (unsigned int flags) EV_THROW
}
void
ev_loop_fork (EV_P) EV_THROW
ev_loop_fork (EV_P) EV_NOEXCEPT
{
postfork = 1;
}
......@@ -3285,7 +3292,7 @@ ev_invoke (EV_P_ void *w, int revents)
}
unsigned int
ev_pending_count (EV_P) EV_THROW
ev_pending_count (EV_P) EV_NOEXCEPT
{
int pri;
unsigned int count = 0;
......@@ -3302,10 +3309,11 @@ ev_invoke_pending (EV_P)
{
pendingpri = NUMPRI;
while (pendingpri) /* pendingpri possibly gets modified in the inner loop */
do
{
--pendingpri;
/* pendingpri possibly gets modified in the inner loop */
while (pendingcnt [pendingpri])
{
ANPENDING *p = pendings [pendingpri] + --pendingcnt [pendingpri];
......@@ -3315,6 +3323,7 @@ ev_invoke_pending (EV_P)
EV_FREQUENT_CHECK;
}
}
while (pendingpri);
}
#if EV_IDLE_ENABLE
......@@ -3733,37 +3742,37 @@ ev_run (EV_P_ int flags)
}
void
ev_break (EV_P_ int how) EV_THROW
ev_break (EV_P_ int how) EV_NOEXCEPT
{
loop_done = how;
}
void
ev_ref (EV_P) EV_THROW
ev_ref (EV_P) EV_NOEXCEPT
{
++activecnt;
}
void
ev_unref (EV_P) EV_THROW
ev_unref (EV_P) EV_NOEXCEPT
{
--activecnt;
}
void
ev_now_update (EV_P) EV_THROW
ev_now_update (EV_P) EV_NOEXCEPT
{
time_update (EV_A_ 1e100);
}
void
ev_suspend (EV_P) EV_THROW
ev_suspend (EV_P) EV_NOEXCEPT
{
ev_now_update (EV_A);
}
void
ev_resume (EV_P) EV_THROW
ev_resume (EV_P) EV_NOEXCEPT
{
ev_tstamp mn_prev = mn_now;
......@@ -3812,7 +3821,7 @@ clear_pending (EV_P_ W w)
}
int
ev_clear_pending (EV_P_ void *w) EV_THROW
ev_clear_pending (EV_P_ void *w) EV_NOEXCEPT
{
W w_ = (W)w;
int pending = w_->pending;
......@@ -3856,7 +3865,7 @@ ev_stop (EV_P_ W w)
noinline
void
ev_io_start (EV_P_ ev_io *w) EV_THROW
ev_io_start (EV_P_ ev_io *w) EV_NOEXCEPT
{
int fd = w->fd;
......@@ -3883,7 +3892,7 @@ ev_io_start (EV_P_ ev_io *w) EV_THROW
noinline
void
ev_io_stop (EV_P_ ev_io *w) EV_THROW
ev_io_stop (EV_P_ ev_io *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -3903,7 +3912,7 @@ ev_io_stop (EV_P_ ev_io *w) EV_THROW
noinline
void
ev_timer_start (EV_P_ ev_timer *w) EV_THROW
ev_timer_start (EV_P_ ev_timer *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -3928,7 +3937,7 @@ ev_timer_start (EV_P_ ev_timer *w) EV_THROW
noinline
void
ev_timer_stop (EV_P_ ev_timer *w) EV_THROW
ev_timer_stop (EV_P_ ev_timer *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -3959,7 +3968,7 @@ ev_timer_stop (EV_P_ ev_timer *w) EV_THROW
noinline
void
ev_timer_again (EV_P_ ev_timer *w) EV_THROW
ev_timer_again (EV_P_ ev_timer *w) EV_NOEXCEPT
{
EV_FREQUENT_CHECK;
......@@ -3986,7 +3995,7 @@ ev_timer_again (EV_P_ ev_timer *w) EV_THROW
}
ev_tstamp
ev_timer_remaining (EV_P_ ev_timer *w) EV_THROW
ev_timer_remaining (EV_P_ ev_timer *w) EV_NOEXCEPT
{
return ev_at (w) - (ev_is_active (w) ? mn_now : 0.);
}
......@@ -3994,7 +4003,7 @@ ev_timer_remaining (EV_P_ ev_timer *w) EV_THROW
#if EV_PERIODIC_ENABLE
noinline
void
ev_periodic_start (EV_P_ ev_periodic *w) EV_THROW
ev_periodic_start (EV_P_ ev_periodic *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4025,7 +4034,7 @@ ev_periodic_start (EV_P_ ev_periodic *w) EV_THROW
noinline
void
ev_periodic_stop (EV_P_ ev_periodic *w) EV_THROW
ev_periodic_stop (EV_P_ ev_periodic *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4054,7 +4063,7 @@ ev_periodic_stop (EV_P_ ev_periodic *w) EV_THROW
noinline
void
ev_periodic_again (EV_P_ ev_periodic *w) EV_THROW
ev_periodic_again (EV_P_ ev_periodic *w) EV_NOEXCEPT
{
/* TODO: use adjustheap and recalculation */
ev_periodic_stop (EV_A_ w);
......@@ -4070,7 +4079,7 @@ ev_periodic_again (EV_P_ ev_periodic *w) EV_THROW
noinline
void
ev_signal_start (EV_P_ ev_signal *w) EV_THROW
ev_signal_start (EV_P_ ev_signal *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4153,7 +4162,7 @@ ev_signal_start (EV_P_ ev_signal *w) EV_THROW
noinline
void
ev_signal_stop (EV_P_ ev_signal *w) EV_THROW
ev_signal_stop (EV_P_ ev_signal *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4194,7 +4203,7 @@ ev_signal_stop (EV_P_ ev_signal *w) EV_THROW
#if EV_CHILD_ENABLE
void
ev_child_start (EV_P_ ev_child *w) EV_THROW
ev_child_start (EV_P_ ev_child *w) EV_NOEXCEPT
{
#if EV_MULTIPLICITY
assert (("libev: child watchers are only supported in the default loop", loop == ev_default_loop_ptr));
......@@ -4211,7 +4220,7 @@ ev_child_start (EV_P_ ev_child *w) EV_THROW
}
void
ev_child_stop (EV_P_ ev_child *w) EV_THROW
ev_child_stop (EV_P_ ev_child *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4486,7 +4495,7 @@ infy_fork (EV_P)
#endif
void
ev_stat_stat (EV_P_ ev_stat *w) EV_THROW
ev_stat_stat (EV_P_ ev_stat *w) EV_NOEXCEPT
{
if (lstat (w->path, &w->attr) < 0)
w->attr.st_nlink = 0;
......@@ -4536,7 +4545,7 @@ stat_timer_cb (EV_P_ ev_timer *w_, int revents)
}
void
ev_stat_start (EV_P_ ev_stat *w) EV_THROW
ev_stat_start (EV_P_ ev_stat *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4567,7 +4576,7 @@ ev_stat_start (EV_P_ ev_stat *w) EV_THROW
}
void
ev_stat_stop (EV_P_ ev_stat *w) EV_THROW
ev_stat_stop (EV_P_ ev_stat *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4593,7 +4602,7 @@ ev_stat_stop (EV_P_ ev_stat *w) EV_THROW
#if EV_IDLE_ENABLE
void
ev_idle_start (EV_P_ ev_idle *w) EV_THROW
ev_idle_start (EV_P_ ev_idle *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4616,7 +4625,7 @@ ev_idle_start (EV_P_ ev_idle *w) EV_THROW
}
void
ev_idle_stop (EV_P_ ev_idle *w) EV_THROW
ev_idle_stop (EV_P_ ev_idle *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4640,7 +4649,7 @@ ev_idle_stop (EV_P_ ev_idle *w) EV_THROW
#if EV_PREPARE_ENABLE
void
ev_prepare_start (EV_P_ ev_prepare *w) EV_THROW
ev_prepare_start (EV_P_ ev_prepare *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4655,7 +4664,7 @@ ev_prepare_start (EV_P_ ev_prepare *w) EV_THROW
}
void
ev_prepare_stop (EV_P_ ev_prepare *w) EV_THROW
ev_prepare_stop (EV_P_ ev_prepare *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4678,7 +4687,7 @@ ev_prepare_stop (EV_P_ ev_prepare *w) EV_THROW
#if EV_CHECK_ENABLE
void
ev_check_start (EV_P_ ev_check *w) EV_THROW
ev_check_start (EV_P_ ev_check *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4693,7 +4702,7 @@ ev_check_start (EV_P_ ev_check *w) EV_THROW
}
void
ev_check_stop (EV_P_ ev_check *w) EV_THROW
ev_check_stop (EV_P_ ev_check *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4717,7 +4726,7 @@ ev_check_stop (EV_P_ ev_check *w) EV_THROW
#if EV_EMBED_ENABLE
noinline
void
ev_embed_sweep (EV_P_ ev_embed *w) EV_THROW
ev_embed_sweep (EV_P_ ev_embed *w) EV_NOEXCEPT
{
ev_run (w->other, EVRUN_NOWAIT);
}
......@@ -4775,7 +4784,7 @@ embed_idle_cb (EV_P_ ev_idle *idle, int revents)
#endif
void
ev_embed_start (EV_P_ ev_embed *w) EV_THROW
ev_embed_start (EV_P_ ev_embed *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4806,7 +4815,7 @@ ev_embed_start (EV_P_ ev_embed *w) EV_THROW
}
void
ev_embed_stop (EV_P_ ev_embed *w) EV_THROW
ev_embed_stop (EV_P_ ev_embed *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4826,7 +4835,7 @@ ev_embed_stop (EV_P_ ev_embed *w) EV_THROW
#if EV_FORK_ENABLE
void
ev_fork_start (EV_P_ ev_fork *w) EV_THROW
ev_fork_start (EV_P_ ev_fork *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4841,7 +4850,7 @@ ev_fork_start (EV_P_ ev_fork *w) EV_THROW
}
void
ev_fork_stop (EV_P_ ev_fork *w) EV_THROW
ev_fork_stop (EV_P_ ev_fork *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4864,7 +4873,7 @@ ev_fork_stop (EV_P_ ev_fork *w) EV_THROW
#if EV_CLEANUP_ENABLE
void
ev_cleanup_start (EV_P_ ev_cleanup *w) EV_THROW
ev_cleanup_start (EV_P_ ev_cleanup *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4881,7 +4890,7 @@ ev_cleanup_start (EV_P_ ev_cleanup *w) EV_THROW
}
void
ev_cleanup_stop (EV_P_ ev_cleanup *w) EV_THROW
ev_cleanup_stop (EV_P_ ev_cleanup *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4905,7 +4914,7 @@ ev_cleanup_stop (EV_P_ ev_cleanup *w) EV_THROW
#if EV_ASYNC_ENABLE
void
ev_async_start (EV_P_ ev_async *w) EV_THROW
ev_async_start (EV_P_ ev_async *w) EV_NOEXCEPT
{
if (expect_false (ev_is_active (w)))
return;
......@@ -4924,7 +4933,7 @@ ev_async_start (EV_P_ ev_async *w) EV_THROW
}
void
ev_async_stop (EV_P_ ev_async *w) EV_THROW
ev_async_stop (EV_P_ ev_async *w) EV_NOEXCEPT
{
clear_pending (EV_A_ (W)w);
if (expect_false (!ev_is_active (w)))
......@@ -4945,7 +4954,7 @@ ev_async_stop (EV_P_ ev_async *w) EV_THROW
}
void
ev_async_send (EV_P_ ev_async *w) EV_THROW
ev_async_send (EV_P_ ev_async *w) EV_NOEXCEPT
{
w->sent = 1;
evpipe_write (EV_A_ &async_pending);
......@@ -4992,7 +5001,7 @@ once_cb_to (EV_P_ ev_timer *w, int revents)
}
void
ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, void *arg), void *arg) EV_THROW
ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, void *arg), void *arg) EV_NOEXCEPT
{
struct ev_once *once = (struct ev_once *)ev_malloc (sizeof (struct ev_once));
......@@ -5025,7 +5034,7 @@ ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, vo
#if EV_WALK_ENABLE
ecb_cold
void
ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_THROW
ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_NOEXCEPT
{
int i, j;
ev_watcher_list *wl, *wn;
......
/*
* libev native API header
*
* Copyright (c) 2007,2008,2009,2010,2011,2012,2015 Marc Alexander Lehmann <libev@schmorp.de>
* Copyright (c) 2007-2018 Marc Alexander Lehmann <libev@schmorp.de>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modifica-
......@@ -43,14 +43,15 @@
#ifdef __cplusplus
# define EV_CPP(x) x
# if __cplusplus >= 201103L
# define EV_THROW noexcept
# define EV_NOEXCEPT noexcept
# else
# define EV_THROW throw ()
# define EV_NOEXCEPT
# endif
#else
# define EV_CPP(x)
# define EV_THROW
# define EV_NOEXCEPT
#endif
#define EV_THROW EV_NOEXCEPT /* pre-4.25, do not use in new code */
EV_CPP(extern "C" {)
......@@ -211,7 +212,7 @@ struct ev_loop;
/*****************************************************************************/
#define EV_VERSION_MAJOR 4
#define EV_VERSION_MINOR 22
#define EV_VERSION_MINOR 25
/* eventmask, revents, events... */
enum {
......@@ -339,7 +340,7 @@ typedef struct ev_periodic
ev_tstamp offset; /* rw */
ev_tstamp interval; /* rw */
ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) EV_THROW; /* rw */
ev_tstamp (*reschedule_cb)(struct ev_periodic *w, ev_tstamp now) EV_NOEXCEPT; /* rw */
} ev_periodic;
/* invoked when the given signal has been received */
......@@ -526,15 +527,15 @@ enum {
};
#if EV_PROTOTYPES
EV_API_DECL int ev_version_major (void) EV_THROW;
EV_API_DECL int ev_version_minor (void) EV_THROW;
EV_API_DECL int ev_version_major (void) EV_NOEXCEPT;
EV_API_DECL int ev_version_minor (void) EV_NOEXCEPT;
EV_API_DECL unsigned int ev_supported_backends (void) EV_THROW;
EV_API_DECL unsigned int ev_recommended_backends (void) EV_THROW;
EV_API_DECL unsigned int ev_embeddable_backends (void) EV_THROW;
EV_API_DECL unsigned int ev_supported_backends (void) EV_NOEXCEPT;
EV_API_DECL unsigned int ev_recommended_backends (void) EV_NOEXCEPT;
EV_API_DECL unsigned int ev_embeddable_backends (void) EV_NOEXCEPT;
EV_API_DECL ev_tstamp ev_time (void) EV_THROW;
EV_API_DECL void ev_sleep (ev_tstamp delay) EV_THROW; /* sleep for a while */
EV_API_DECL ev_tstamp ev_time (void) EV_NOEXCEPT;
EV_API_DECL void ev_sleep (ev_tstamp delay) EV_NOEXCEPT; /* sleep for a while */
/* Sets the allocation function to use, works like realloc.
* It is used to allocate and free memory.
......@@ -542,26 +543,26 @@ EV_API_DECL void ev_sleep (ev_tstamp delay) EV_THROW; /* sleep for a while */
* or take some potentially destructive action.
* The default is your system realloc function.
*/
EV_API_DECL void ev_set_allocator (void *(*cb)(void *ptr, long size) EV_THROW) EV_THROW;
EV_API_DECL void ev_set_allocator (void *(*cb)(void *ptr, long size) EV_NOEXCEPT) EV_NOEXCEPT;
/* set the callback function to call on a
* retryable syscall error
* (such as failed select, poll, epoll_wait)
*/
EV_API_DECL void ev_set_syserr_cb (void (*cb)(const char *msg) EV_THROW) EV_THROW;
EV_API_DECL void ev_set_syserr_cb (void (*cb)(const char *msg) EV_NOEXCEPT) EV_NOEXCEPT;
#if EV_MULTIPLICITY
/* the default loop is the only one that handles signals and child watchers */
/* you can call this as often as you like */
EV_API_DECL struct ev_loop *ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_THROW;
EV_API_DECL struct ev_loop *ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_NOEXCEPT;
#ifdef EV_API_STATIC
EV_API_DECL struct ev_loop *ev_default_loop_ptr;
#endif
EV_INLINE struct ev_loop *
ev_default_loop_uc_ (void) EV_THROW
ev_default_loop_uc_ (void) EV_NOEXCEPT
{
extern struct ev_loop *ev_default_loop_ptr;
......@@ -569,31 +570,31 @@ ev_default_loop_uc_ (void) EV_THROW
}
EV_INLINE int
ev_is_default_loop (EV_P) EV_THROW
ev_is_default_loop (EV_P) EV_NOEXCEPT
{
return EV_A == EV_DEFAULT_UC;
}
/* create and destroy alternative loops that don't handle signals */
EV_API_DECL struct ev_loop *ev_loop_new (unsigned int flags EV_CPP (= 0)) EV_THROW;
EV_API_DECL struct ev_loop *ev_loop_new (unsigned int flags EV_CPP (= 0)) EV_NOEXCEPT;
EV_API_DECL ev_tstamp ev_now (EV_P) EV_THROW; /* time w.r.t. timers and the eventloop, updated after each poll */
EV_API_DECL ev_tstamp ev_now (EV_P) EV_NOEXCEPT; /* time w.r.t. timers and the eventloop, updated after each poll */
#else
EV_API_DECL int ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_THROW; /* returns true when successful */
EV_API_DECL int ev_default_loop (unsigned int flags EV_CPP (= 0)) EV_NOEXCEPT; /* returns true when successful */
EV_API_DECL ev_tstamp ev_rt_now;
EV_INLINE ev_tstamp
ev_now (void) EV_THROW
ev_now (void) EV_NOEXCEPT
{
return ev_rt_now;
}
/* looks weird, but ev_is_default_loop (EV_A) still works if this exists */
EV_INLINE int
ev_is_default_loop (void) EV_THROW
ev_is_default_loop (void) EV_NOEXCEPT
{
return 1;
}
......@@ -607,17 +608,17 @@ EV_API_DECL void ev_loop_destroy (EV_P);
/* when you want to re-use it in the child */
/* you can call it in either the parent or the child */
/* you can actually call it at any time, anywhere :) */
EV_API_DECL void ev_loop_fork (EV_P) EV_THROW;
EV_API_DECL void ev_loop_fork (EV_P) EV_NOEXCEPT;
EV_API_DECL unsigned int ev_backend (EV_P) EV_THROW; /* backend in use by loop */
EV_API_DECL unsigned int ev_backend (EV_P) EV_NOEXCEPT; /* backend in use by loop */
EV_API_DECL void ev_now_update (EV_P) EV_THROW; /* update event loop time */
EV_API_DECL void ev_now_update (EV_P) EV_NOEXCEPT; /* update event loop time */
#if EV_WALK_ENABLE
/* walk (almost) all watchers in the loop of a given type, invoking the */
/* callback on every such watcher. The callback might stop the watcher, */
/* but do nothing else with the loop */
EV_API_DECL void ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_THROW;
EV_API_DECL void ev_walk (EV_P_ int types, void (*cb)(EV_P_ int type, void *w)) EV_NOEXCEPT;
#endif
#endif /* prototypes */
......@@ -637,46 +638,46 @@ enum {
#if EV_PROTOTYPES
EV_API_DECL int ev_run (EV_P_ int flags EV_CPP (= 0));
EV_API_DECL void ev_break (EV_P_ int how EV_CPP (= EVBREAK_ONE)) EV_THROW; /* break out of the loop */
EV_API_DECL void ev_break (EV_P_ int how EV_CPP (= EVBREAK_ONE)) EV_NOEXCEPT; /* break out of the loop */
/*
* ref/unref can be used to add or remove a refcount on the mainloop. every watcher
* keeps one reference. if you have a long-running watcher you never unregister that
* should not keep ev_loop from running, unref() after starting, and ref() before stopping.
*/
EV_API_DECL void ev_ref (EV_P) EV_THROW;
EV_API_DECL void ev_unref (EV_P) EV_THROW;
EV_API_DECL void ev_ref (EV_P) EV_NOEXCEPT;
EV_API_DECL void ev_unref (EV_P) EV_NOEXCEPT;
/*
* convenience function, wait for a single event, without registering an event watcher
* if timeout is < 0, do wait indefinitely
*/
EV_API_DECL void ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, void *arg), void *arg) EV_THROW;
EV_API_DECL void ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, void *arg), void *arg) EV_NOEXCEPT;
# if EV_FEATURE_API
EV_API_DECL unsigned int ev_iteration (EV_P) EV_THROW; /* number of loop iterations */
EV_API_DECL unsigned int ev_depth (EV_P) EV_THROW; /* #ev_loop enters - #ev_loop leaves */
EV_API_DECL void ev_verify (EV_P) EV_THROW; /* abort if loop data corrupted */
EV_API_DECL unsigned int ev_iteration (EV_P) EV_NOEXCEPT; /* number of loop iterations */
EV_API_DECL unsigned int ev_depth (EV_P) EV_NOEXCEPT; /* #ev_loop enters - #ev_loop leaves */
EV_API_DECL void ev_verify (EV_P) EV_NOEXCEPT; /* abort if loop data corrupted */
EV_API_DECL void ev_set_io_collect_interval (EV_P_ ev_tstamp interval) EV_THROW; /* sleep at least this time, default 0 */
EV_API_DECL void ev_set_timeout_collect_interval (EV_P_ ev_tstamp interval) EV_THROW; /* sleep at least this time, default 0 */
EV_API_DECL void ev_set_io_collect_interval (EV_P_ ev_tstamp interval) EV_NOEXCEPT; /* sleep at least this time, default 0 */
EV_API_DECL void ev_set_timeout_collect_interval (EV_P_ ev_tstamp interval) EV_NOEXCEPT; /* sleep at least this time, default 0 */
/* advanced stuff for threading etc. support, see docs */
EV_API_DECL void ev_set_userdata (EV_P_ void *data) EV_THROW;
EV_API_DECL void *ev_userdata (EV_P) EV_THROW;
EV_API_DECL void ev_set_userdata (EV_P_ void *data) EV_NOEXCEPT;
EV_API_DECL void *ev_userdata (EV_P) EV_NOEXCEPT;
typedef void (*ev_loop_callback)(EV_P);
EV_API_DECL void ev_set_invoke_pending_cb (EV_P_ ev_loop_callback invoke_pending_cb) EV_THROW;
EV_API_DECL void ev_set_invoke_pending_cb (EV_P_ ev_loop_callback invoke_pending_cb) EV_NOEXCEPT;
/* C++ doesn't allow the use of the ev_loop_callback typedef here, so we need to spell it out */
EV_API_DECL void ev_set_loop_release_cb (EV_P_ void (*release)(EV_P) EV_THROW, void (*acquire)(EV_P) EV_THROW) EV_THROW;
EV_API_DECL void ev_set_loop_release_cb (EV_P_ void (*release)(EV_P) EV_NOEXCEPT, void (*acquire)(EV_P) EV_NOEXCEPT) EV_NOEXCEPT;
EV_API_DECL unsigned int ev_pending_count (EV_P) EV_THROW; /* number of pending events, if any */
EV_API_DECL unsigned int ev_pending_count (EV_P) EV_NOEXCEPT; /* number of pending events, if any */
EV_API_DECL void ev_invoke_pending (EV_P); /* invoke all pending watchers */
/*
* stop/start the timer handling.
*/
EV_API_DECL void ev_suspend (EV_P) EV_THROW;
EV_API_DECL void ev_resume (EV_P) EV_THROW;
EV_API_DECL void ev_suspend (EV_P) EV_NOEXCEPT;
EV_API_DECL void ev_resume (EV_P) EV_NOEXCEPT;
#endif
#endif
......@@ -744,85 +745,85 @@ EV_API_DECL void ev_resume (EV_P) EV_THROW;
/* feeds an event into a watcher as if the event actually occurred */
/* accepts any ev_watcher type */
EV_API_DECL void ev_feed_event (EV_P_ void *w, int revents) EV_THROW;
EV_API_DECL void ev_feed_fd_event (EV_P_ int fd, int revents) EV_THROW;
EV_API_DECL void ev_feed_event (EV_P_ void *w, int revents) EV_NOEXCEPT;
EV_API_DECL void ev_feed_fd_event (EV_P_ int fd, int revents) EV_NOEXCEPT;
#if EV_SIGNAL_ENABLE
EV_API_DECL void ev_feed_signal (int signum) EV_THROW;
EV_API_DECL void ev_feed_signal_event (EV_P_ int signum) EV_THROW;
EV_API_DECL void ev_feed_signal (int signum) EV_NOEXCEPT;
EV_API_DECL void ev_feed_signal_event (EV_P_ int signum) EV_NOEXCEPT;
#endif
EV_API_DECL void ev_invoke (EV_P_ void *w, int revents);
EV_API_DECL int ev_clear_pending (EV_P_ void *w) EV_THROW;
EV_API_DECL int ev_clear_pending (EV_P_ void *w) EV_NOEXCEPT;
EV_API_DECL void ev_io_start (EV_P_ ev_io *w) EV_THROW;
EV_API_DECL void ev_io_stop (EV_P_ ev_io *w) EV_THROW;
EV_API_DECL void ev_io_start (EV_P_ ev_io *w) EV_NOEXCEPT;
EV_API_DECL void ev_io_stop (EV_P_ ev_io *w) EV_NOEXCEPT;
EV_API_DECL void ev_timer_start (EV_P_ ev_timer *w) EV_THROW;
EV_API_DECL void ev_timer_stop (EV_P_ ev_timer *w) EV_THROW;
EV_API_DECL void ev_timer_start (EV_P_ ev_timer *w) EV_NOEXCEPT;
EV_API_DECL void ev_timer_stop (EV_P_ ev_timer *w) EV_NOEXCEPT;
/* stops if active and no repeat, restarts if active and repeating, starts if inactive and repeating */
EV_API_DECL void ev_timer_again (EV_P_ ev_timer *w) EV_THROW;
EV_API_DECL void ev_timer_again (EV_P_ ev_timer *w) EV_NOEXCEPT;
/* return remaining time */
EV_API_DECL ev_tstamp ev_timer_remaining (EV_P_ ev_timer *w) EV_THROW;
EV_API_DECL ev_tstamp ev_timer_remaining (EV_P_ ev_timer *w) EV_NOEXCEPT;
#if EV_PERIODIC_ENABLE
EV_API_DECL void ev_periodic_start (EV_P_ ev_periodic *w) EV_THROW;
EV_API_DECL void ev_periodic_stop (EV_P_ ev_periodic *w) EV_THROW;
EV_API_DECL void ev_periodic_again (EV_P_ ev_periodic *w) EV_THROW;
EV_API_DECL void ev_periodic_start (EV_P_ ev_periodic *w) EV_NOEXCEPT;
EV_API_DECL void ev_periodic_stop (EV_P_ ev_periodic *w) EV_NOEXCEPT;
EV_API_DECL void ev_periodic_again (EV_P_ ev_periodic *w) EV_NOEXCEPT;
#endif
/* only supported in the default loop */
#if EV_SIGNAL_ENABLE
EV_API_DECL void ev_signal_start (EV_P_ ev_signal *w) EV_THROW;
EV_API_DECL void ev_signal_stop (EV_P_ ev_signal *w) EV_THROW;
EV_API_DECL void ev_signal_start (EV_P_ ev_signal *w) EV_NOEXCEPT;
EV_API_DECL void ev_signal_stop (EV_P_ ev_signal *w) EV_NOEXCEPT;
#endif
/* only supported in the default loop */
# if EV_CHILD_ENABLE
EV_API_DECL void ev_child_start (EV_P_ ev_child *w) EV_THROW;
EV_API_DECL void ev_child_stop (EV_P_ ev_child *w) EV_THROW;
EV_API_DECL void ev_child_start (EV_P_ ev_child *w) EV_NOEXCEPT;
EV_API_DECL void ev_child_stop (EV_P_ ev_child *w) EV_NOEXCEPT;
# endif
# if EV_STAT_ENABLE
EV_API_DECL void ev_stat_start (EV_P_ ev_stat *w) EV_THROW;
EV_API_DECL void ev_stat_stop (EV_P_ ev_stat *w) EV_THROW;
EV_API_DECL void ev_stat_stat (EV_P_ ev_stat *w) EV_THROW;
EV_API_DECL void ev_stat_start (EV_P_ ev_stat *w) EV_NOEXCEPT;
EV_API_DECL void ev_stat_stop (EV_P_ ev_stat *w) EV_NOEXCEPT;
EV_API_DECL void ev_stat_stat (EV_P_ ev_stat *w) EV_NOEXCEPT;
# endif
# if EV_IDLE_ENABLE
EV_API_DECL void ev_idle_start (EV_P_ ev_idle *w) EV_THROW;
EV_API_DECL void ev_idle_stop (EV_P_ ev_idle *w) EV_THROW;
EV_API_DECL void ev_idle_start (EV_P_ ev_idle *w) EV_NOEXCEPT;
EV_API_DECL void ev_idle_stop (EV_P_ ev_idle *w) EV_NOEXCEPT;
# endif
#if EV_PREPARE_ENABLE
EV_API_DECL void ev_prepare_start (EV_P_ ev_prepare *w) EV_THROW;
EV_API_DECL void ev_prepare_stop (EV_P_ ev_prepare *w) EV_THROW;
EV_API_DECL void ev_prepare_start (EV_P_ ev_prepare *w) EV_NOEXCEPT;
EV_API_DECL void ev_prepare_stop (EV_P_ ev_prepare *w) EV_NOEXCEPT;
#endif
#if EV_CHECK_ENABLE
EV_API_DECL void ev_check_start (EV_P_ ev_check *w) EV_THROW;
EV_API_DECL void ev_check_stop (EV_P_ ev_check *w) EV_THROW;
EV_API_DECL void ev_check_start (EV_P_ ev_check *w) EV_NOEXCEPT;
EV_API_DECL void ev_check_stop (EV_P_ ev_check *w) EV_NOEXCEPT;
#endif
# if EV_FORK_ENABLE
EV_API_DECL void ev_fork_start (EV_P_ ev_fork *w) EV_THROW;
EV_API_DECL void ev_fork_stop (EV_P_ ev_fork *w) EV_THROW;
EV_API_DECL void ev_fork_start (EV_P_ ev_fork *w) EV_NOEXCEPT;
EV_API_DECL void ev_fork_stop (EV_P_ ev_fork *w) EV_NOEXCEPT;
# endif
# if EV_CLEANUP_ENABLE
EV_API_DECL void ev_cleanup_start (EV_P_ ev_cleanup *w) EV_THROW;
EV_API_DECL void ev_cleanup_stop (EV_P_ ev_cleanup *w) EV_THROW;
EV_API_DECL void ev_cleanup_start (EV_P_ ev_cleanup *w) EV_NOEXCEPT;
EV_API_DECL void ev_cleanup_stop (EV_P_ ev_cleanup *w) EV_NOEXCEPT;
# endif
# if EV_EMBED_ENABLE
/* only supported when loop to be embedded is in fact embeddable */
EV_API_DECL void ev_embed_start (EV_P_ ev_embed *w) EV_THROW;
EV_API_DECL void ev_embed_stop (EV_P_ ev_embed *w) EV_THROW;
EV_API_DECL void ev_embed_sweep (EV_P_ ev_embed *w) EV_THROW;
EV_API_DECL void ev_embed_start (EV_P_ ev_embed *w) EV_NOEXCEPT;
EV_API_DECL void ev_embed_stop (EV_P_ ev_embed *w) EV_NOEXCEPT;
EV_API_DECL void ev_embed_sweep (EV_P_ ev_embed *w) EV_NOEXCEPT;
# endif
# if EV_ASYNC_ENABLE
EV_API_DECL void ev_async_start (EV_P_ ev_async *w) EV_THROW;
EV_API_DECL void ev_async_stop (EV_P_ ev_async *w) EV_THROW;
EV_API_DECL void ev_async_send (EV_P_ ev_async *w) EV_THROW;
EV_API_DECL void ev_async_start (EV_P_ ev_async *w) EV_NOEXCEPT;
EV_API_DECL void ev_async_stop (EV_P_ ev_async *w) EV_NOEXCEPT;
EV_API_DECL void ev_async_send (EV_P_ ev_async *w) EV_NOEXCEPT;
# endif
#if EV_COMPAT3
......
......@@ -413,9 +413,10 @@ make libev check for a fork in each iteration by enabling this flag.
This works by calling C<getpid ()> on every iteration of the loop,
and thus this might slow down your event loop if you do a lot of loop
iterations and little real work, but is usually not noticeable (on my
GNU/Linux system for example, C<getpid> is actually a simple 5-insn sequence
without a system call and thus I<very> fast, but my GNU/Linux system also has
C<pthread_atfork> which is even faster).
GNU/Linux system for example, C<getpid> is actually a simple 5-insn
sequence without a system call and thus I<very> fast, but my GNU/Linux
system also has C<pthread_atfork> which is even faster). (Update: glibc
versions 2.25 apparently removed the C<getpid> optimisation again).
The big advantage of this flag is that you can forget about fork (and
forget about forgetting to tell libev about forking, although you still
......@@ -2115,11 +2116,11 @@ C<SIGSTOP>).
=item ev_timer_set (ev_timer *, ev_tstamp after, ev_tstamp repeat)
Configure the timer to trigger after C<after> seconds. If C<repeat>
is C<0.>, then it will automatically be stopped once the timeout is
reached. If it is positive, then the timer will automatically be
configured to trigger again C<repeat> seconds later, again, and again,
until stopped manually.
Configure the timer to trigger after C<after> seconds (fractional and
negative values are supported). If C<repeat> is C<0.>, then it will
automatically be stopped once the timeout is reached. If it is positive,
then the timer will automatically be configured to trigger again C<repeat>
seconds later, again, and again, until stopped manually.
The timer itself will do a best-effort at avoiding drift, that is, if
you configure a timer to trigger every 10 seconds, then it will normally
......@@ -2226,8 +2227,8 @@ it, as it uses a relative timeout).
C<ev_periodic> watchers can also be used to implement vastly more complex
timers, such as triggering an event on each "midnight, local time", or
other complicated rules. This cannot be done with C<ev_timer> watchers, as
those cannot react to time jumps.
other complicated rules. This cannot easily be done with C<ev_timer>
watchers, as those cannot react to time jumps.
As with timers, the callback is guaranteed to be invoked only when the
point in time where it is supposed to trigger has passed. If multiple
......@@ -2323,10 +2324,28 @@ NOTE: I<< This callback must always return a time that is higher than or
equal to the passed C<now> value >>.
This can be used to create very complex timers, such as a timer that
triggers on "next midnight, local time". To do this, you would calculate the
next midnight after C<now> and return the timestamp value for this. How
you do this is, again, up to you (but it is not trivial, which is the main
reason I omitted it as an example).
triggers on "next midnight, local time". To do this, you would calculate
the next midnight after C<now> and return the timestamp value for
this. Here is a (completely untested, no error checking) example on how to
do this:
#include <time.h>
static ev_tstamp
my_rescheduler (ev_periodic *w, ev_tstamp now)
{
time_t tnow = (time_t)now;
struct tm tm;
localtime_r (&tnow, &tm);
tm.tm_sec = tm.tm_min = tm.tm_hour = 0; // midnight current day
++tm.tm_mday; // midnight next day
return mktime (&tm);
}
Note: this code might run into trouble on days that have more then two
midnights (beginning and end).
=back
......@@ -3519,7 +3538,7 @@ There are some other functions of possible interest. Described. Here. Now.
=over 4
=item ev_once (loop, int fd, int events, ev_tstamp timeout, callback)
=item ev_once (loop, int fd, int events, ev_tstamp timeout, callback, arg)
This function combines a simple timer and an I/O watcher, calls your
callback on whichever event happens first and automatically stops both
......@@ -3961,14 +3980,14 @@ libev sources can be compiled as C++. Therefore, code that uses the C API
will work fine.
Proper exception specifications might have to be added to callbacks passed
to libev: exceptions may be thrown only from watcher callbacks, all
other callbacks (allocator, syserr, loop acquire/release and periodic
reschedule callbacks) must not throw exceptions, and might need a C<throw
()> specification. If you have code that needs to be compiled as both C
and C++ you can use the C<EV_THROW> macro for this:
to libev: exceptions may be thrown only from watcher callbacks, all other
callbacks (allocator, syserr, loop acquire/release and periodic reschedule
callbacks) must not throw exceptions, and might need a C<noexcept>
specification. If you have code that needs to be compiled as both C and
C++ you can use the C<EV_NOEXCEPT> macro for this:
static void
fatal_error (const char *msg) EV_THROW
fatal_error (const char *msg) EV_NOEXCEPT
{
perror (msg);
abort ();
......@@ -4388,11 +4407,11 @@ in your include path (e.g. in libev/ when using -Ilibev):
ev_win32.c required on win32 platforms only
ev_select.c only when select backend is enabled (which is enabled by default)
ev_poll.c only when poll backend is enabled (disabled by default)
ev_epoll.c only when the epoll backend is enabled (disabled by default)
ev_kqueue.c only when the kqueue backend is enabled (disabled by default)
ev_port.c only when the solaris port backend is enabled (disabled by default)
ev_select.c only when select backend is enabled
ev_poll.c only when poll backend is enabled
ev_epoll.c only when the epoll backend is enabled
ev_kqueue.c only when the kqueue backend is enabled
ev_port.c only when the solaris port backend is enabled
F<ev.c> includes the backend files directly when enabled, so you only need
to compile this single file.
......
......@@ -239,7 +239,7 @@ inline_size
int
epoll_init (EV_P_ int flags)
{
#ifdef EPOLL_CLOEXEC
#if defined EPOLL_CLOEXEC && !defined __ANDROID__
backend_fd = epoll_create1 (EPOLL_CLOEXEC);
if (backend_fd < 0 && (errno == EINVAL || errno == ENOSYS))
......
......@@ -195,8 +195,8 @@ VARx(unsigned int, loop_depth) /* #ev_run enters - #ev_run leaves */
VARx(void *, userdata)
/* C++ doesn't support the ev_loop_callback typedef here. stinks. */
VAR (release_cb, void (*release_cb)(EV_P) EV_THROW)
VAR (acquire_cb, void (*acquire_cb)(EV_P) EV_THROW)
VAR (release_cb, void (*release_cb)(EV_P) EV_NOEXCEPT)
VAR (acquire_cb, void (*acquire_cb)(EV_P) EV_NOEXCEPT)
VAR (invoke_cb , ev_loop_callback invoke_cb)
#endif
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment