diff --git a/autogen.pl b/autogen.pl index 1396f7a46b6..ecc726b54eb 100755 --- a/autogen.pl +++ b/autogen.pl @@ -11,6 +11,7 @@ # Copyright (c) 2020 Amazon.com, Inc. or its affiliates. # All Rights reserved. # +# Copyright (c) 2025 Nanook Consulting All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -81,12 +82,6 @@ # Patch program my $patch_prog = "patch"; -# Solaris "patch" doesn't understand unified diffs, and will cause -# autogen.pl to hang with a "File to patch:" prompt. Default to Linux -# "patch", but use "gpatch" on Solaris. -if ($^O eq "solaris") { - $patch_prog = "gpatch"; -} $username = $ENV{USER} || getpwuid($>); $full_hostname = $ENV{HOSTNAME} || `hostname`; diff --git a/config/ompi_setup_java.m4 b/config/ompi_setup_java.m4 index 02029b83dd6..8339fe3cccb 100644 --- a/config/ompi_setup_java.m4 +++ b/config/ompi_setup_java.m4 @@ -18,6 +18,7 @@ dnl Copyright (c) 2013 Intel, Inc. All rights reserved. dnl Copyright (c) 2015-2018 Research Organization for Information Science dnl and Technology (RIST). All rights reserved. dnl Copyright (c) 2017 FUJITSU LIMITED. All rights reserved. +dnl Copyright (c) 2025 Nanook Consulting All rights reserved. dnl $COPYRIGHT$ dnl dnl Additional copyrights may follow @@ -128,17 +129,6 @@ AC_DEFUN([_OMPI_SETUP_JAVA],[ [AC_MSG_RESULT([not found])])]) fi - if test "$ompi_java_found" = "0"; then - # Solaris - ompi_java_dir=/usr/java - AC_MSG_CHECKING([for Java in Solaris locations]) - AS_IF([test -d $ompi_java_dir && test -r "$ompi_java_dir/include/jni.h"], - [AC_MSG_RESULT([found ($ompi_java_dir)]) - with_jdk_headers=$ompi_java_dir/include - with_jdk_bindir=$ompi_java_dir/bin - ompi_java_found=1], - [AC_MSG_RESULT([not found])]) - fi ], [ompi_java_found=1]) @@ -188,11 +178,6 @@ EOF # too. Ugh. AS_IF([test -d "$with_jdk_headers/linux"], [OMPI_JDK_CPPFLAGS="$OMPI_JDK_CPPFLAGS -I$with_jdk_headers/linux"]) - # Solaris JDK also require -I/solaris. - # See if that's there, and if so, add a -I for that, - # too. Ugh. - AS_IF([test -d "$with_jdk_headers/solaris"], - [OMPI_JDK_CPPFLAGS="$OMPI_JDK_CPPFLAGS -I$with_jdk_headers/solaris"]) # Darwin JDK also require -I/darwin. # See if that's there, and if so, add a -I for that, # too. Ugh. diff --git a/config/opal_check_os_flavors.m4 b/config/opal_check_os_flavors.m4 deleted file mode 100644 index fd7ae323f7b..00000000000 --- a/config/opal_check_os_flavors.m4 +++ /dev/null @@ -1,69 +0,0 @@ -dnl -*- shell-script -*- -dnl -dnl Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. -dnl Copyright (c) 2014 Intel, Inc. All rights reserved. -dnl Copyright (c) 2014 Research Organization for Information Science -dnl and Technology (RIST). All rights reserved. -dnl -dnl $COPYRIGHT$ -dnl -dnl Additional copyrights may follow -dnl -dnl $HEADER$ -dnl - -# OPAL_CHECK_OS_FLAVOR_SPECIFIC() -# ---------------------------------------------------- -# Helper macro from OPAL-CHECK-OS-FLAVORS(), below. -# $1 = macro to look for -# $2 = suffix of env variable to set with results -AC_DEFUN([OPAL_CHECK_OS_FLAVOR_SPECIFIC], -[ - AC_MSG_CHECKING([$1]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM( - [[#ifndef $1 - #this is not $1, error - #endif - ]])], - [opal_found_$2=yes], - [opal_found_$2=no]) - AC_MSG_RESULT([$opal_found_$2]) -])dnl - -# OPAL_CHECK_OS_FLAVORS() -# ---------------------------------------------------- -# Try to figure out the various OS flavors out there. -# -AC_DEFUN([OPAL_CHECK_OS_FLAVORS], -[ - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__NetBSD__], [netbsd]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__FreeBSD__], [freebsd]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__OpenBSD__], [openbsd]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__DragonFly__], [dragonfly]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__386BSD__], [386bsd]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__bsdi__], [bsdi]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__APPLE__], [apple]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__linux__], [linux]) - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__sun__], [sun]) - AS_IF([test "$opal_found_sun" = "no"], - OPAL_CHECK_OS_FLAVOR_SPECIFIC([__sun], [sun])) - - AS_IF([test "$opal_found_sun" = "yes"], - [opal_have_solaris=1 - CFLAGS="$CFLAGS -D_REENTRANT" - CPPFLAGS="$CPPFLAGS -D_REENTRANT"], - [opal_have_solaris=0]) - AC_DEFINE_UNQUOTED([OPAL_HAVE_SOLARIS], - [$opal_have_solaris], - [Whether or not we have solaris]) - - # check for sockaddr_in (a good sign we have TCP) - AC_CHECK_HEADERS([netdb.h netinet/in.h netinet/tcp.h]) - AC_CHECK_TYPES([struct sockaddr_in], - [opal_found_sockaddr=yes], - [opal_found_sockaddr=no], - [AC_INCLUDES_DEFAULT -#ifdef HAVE_NETINET_IN_H -#include -#endif]) -])dnl diff --git a/configure.ac b/configure.ac index 46cc5d612f3..8dea10cb32a 100644 --- a/configure.ac +++ b/configure.ac @@ -29,6 +29,7 @@ # Copyright (c) 2019 Triad National Security, LLC. All rights # reserved. # Copyright (c) 2023 Jeffrey M. Squyres. All rights reserved. +# Copyright (c) 2025 Nanook Consulting All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -995,7 +996,7 @@ AC_CACHE_SAVE opal_show_title "System-specific tests" ################################## -OPAL_CHECK_OS_FLAVORS +OAC_CHECK_OS_FLAVORS diff --git a/opal/mca/if/bsdx_ipv4/configure.m4 b/opal/mca/if/bsdx_ipv4/configure.m4 index d572cc44d70..a373b58f949 100644 --- a/opal/mca/if/bsdx_ipv4/configure.m4 +++ b/opal/mca/if/bsdx_ipv4/configure.m4 @@ -3,6 +3,8 @@ # Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2015 Research Organization for Information Science # and Technology (RIST). All rights reserved. +# Copyright (c) 2025 Nanook Consulting All rights reserved. +# Copyright (c) 2025 Jeffrey M. Squyres. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -22,25 +24,26 @@ AC_DEFUN([MCA_opal_if_bsdx_ipv4_COMPILE_MODE], [ AC_DEFUN([MCA_opal_if_bsdx_ipv4_CONFIG], [ AC_CONFIG_FILES([opal/mca/if/bsdx_ipv4/Makefile]) - AC_REQUIRE([OPAL_CHECK_OS_FLAVORS]) + AC_REQUIRE([OAC_CHECK_OS_FLAVORS]) - # If we found struct sockaddr and we're on any of the BSDs, we're + # If we previously found struct sockaddr_in (we don't repeat the + # AC CHECK_TYPES test here simply because it's cumbersome with all + # the required #includes) and we're on any of the BSDs, we're # happy. I.e., this: #if defined(__NetBSD__) || defined(__FreeBSD__) || \ # defined(__OpenBSD__) || defined(__DragonFly__) - AC_MSG_CHECKING([struct sockaddr]) - AS_IF([test "$opal_found_sockaddr" = "yes"], - [AC_MSG_RESULT([yes (cached)]) + AC_MSG_CHECKING([struct sockaddr_in again]) + AS_IF([test "$ac_cv_type_struct_sockaddr_in" = "yes"], + [AC_MSG_RESULT([yes (OPAL cached)]) AC_MSG_CHECKING([NetBSD, FreeBSD, OpenBSD, or DragonFly]) - AS_IF([test "$opal_found_netbsd" = "yes" || \ - test "$opal_found_freebsd" = "yes" || \ - test "$opal_found_openbsd" = "yes" || \ - test "$opal_found_dragonfly" = "yes"], + AS_IF([test "$oac_found_netbsd" = "yes" || \ + test "$oac_found_freebsd" = "yes" || \ + test "$oac_found_openbsd" = "yes" || \ + test "$oac_found_dragonfly" = "yes"], [AC_MSG_RESULT([yes]) $1], [AC_MSG_RESULT([no]) $2])], - [AC_MSG_RESULT([no (cached)]) + [AC_MSG_RESULT([no (OPAL cached)]) $2]) ]) - diff --git a/opal/mca/if/bsdx_ipv6/configure.m4 b/opal/mca/if/bsdx_ipv6/configure.m4 index 4b2122f7012..ed38208e65e 100644 --- a/opal/mca/if/bsdx_ipv6/configure.m4 +++ b/opal/mca/if/bsdx_ipv6/configure.m4 @@ -3,6 +3,8 @@ # Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2015 Research Organization for Information Science # and Technology (RIST). All rights reserved. +# Copyright (c) 2025 Nanook Consulting All rights reserved. +# Copyright (c) 2025 Jeffrey M. Squyres. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -22,26 +24,28 @@ AC_DEFUN([MCA_opal_if_bsdx_ipv6_COMPILE_MODE], [ AC_DEFUN([MCA_opal_if_bsdx_ipv6_CONFIG], [ AC_CONFIG_FILES([opal/mca/if/bsdx_ipv6/Makefile]) - AC_REQUIRE([OPAL_CHECK_OS_FLAVORS]) + AC_REQUIRE([OAC_CHECK_OS_FLAVORS]) - # If we found struct sockaddr and we're on any of the BSDs, we're + # If we previously found struct sockaddr_in6 (we don't repeat the + # AC CHECK_TYPES test here simply because it's cumbersome with all + # the required #includes) and we're on any of the BSDs, we're # happy. I.e., this: #if defined( __NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || \ # defined(__386BSD__) || defined(__bsdi__) || defined(__APPLE__) - AC_MSG_CHECKING([struct sockaddr]) - AS_IF([test "$opal_found_sockaddr" = "yes"], - [AC_MSG_RESULT([yes (cached)]) + AC_MSG_CHECKING([struct sockaddr_in6 again]) + AS_IF([test "$ac_cv_type_struct_sockaddr_in6" = "yes"], + [AC_MSG_RESULT([yes (OPAL cached)]) AC_MSG_CHECKING([some flavor of BSD]) - AS_IF([test "$opal_found_netbsd" = "yes" || \ - test "$opal_found_freebsd" = "yes" || \ - test "$opal_found_openbsd" = "yes" || \ - test "$opal_found_386bsd" = "yes" || \ - test "$opal_found_bsdi" = "yes" || - test "$opal_found_apple" = "yes"], + AS_IF([test "$oac_found_netbsd" = "yes" || \ + test "$oac_found_freebsd" = "yes" || \ + test "$oac_found_openbsd" = "yes" || \ + test "$oac_found_386bsd" = "yes" || \ + test "$oac_found_bsdi" = "yes" || + test "$oac_found_apple" = "yes"], [AC_MSG_RESULT([yes]) $1], [AC_MSG_RESULT([no]) $2])], - [AC_MSG_RESULT([no (cached)]) + [AC_MSG_RESULT([no (OPAL cached)]) $2]) ])dnl diff --git a/opal/mca/if/linux_ipv6/configure.m4 b/opal/mca/if/linux_ipv6/configure.m4 index 583d59e93fe..096fdbe5665 100644 --- a/opal/mca/if/linux_ipv6/configure.m4 +++ b/opal/mca/if/linux_ipv6/configure.m4 @@ -3,6 +3,8 @@ # Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2015 Research Organization for Information Science # and Technology (RIST). All rights reserved. +# Copyright (c) 2025 Nanook Consulting All rights reserved. +# Copyright (c) 2025 Jeffrey M. Squyres. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -22,12 +24,13 @@ AC_DEFUN([MCA_opal_if_linux_ipv6_COMPILE_MODE], [ AC_DEFUN([MCA_opal_if_linux_ipv6_CONFIG], [ AC_CONFIG_FILES([opal/mca/if/linux_ipv6/Makefile]) - AC_REQUIRE([OPAL_CHECK_OS_FLAVORS]) + AC_REQUIRE([OAC_CHECK_OS_FLAVORS]) - AC_MSG_CHECKING([if we are on Linux with TCP]) - # If we have struct sockaddr and we're on Linux, then we're - # happy. - AS_IF([test "$opal_found_sockaddr" = "yes" && test "$opal_found_linux" = "yes"], + # If we previously found struct sockaddr_in6 (we don't repeat the + # AC CHECK_TYPES test here simply because it's cumbersome with all + # the required #includes) and we're on Linux, we're happy. + AC_MSG_CHECKING([for Linux with struct sockaddr_in6]) + AS_IF([test "$ac_cv_type_struct_sockaddr_in6" = "yes" && test "$oac_found_linux" = "yes"], [AC_MSG_RESULT([yes]) $1], [AC_MSG_RESULT([no]) diff --git a/opal/mca/if/posix_ipv4/configure.m4 b/opal/mca/if/posix_ipv4/configure.m4 index 73548efb985..f5574434937 100644 --- a/opal/mca/if/posix_ipv4/configure.m4 +++ b/opal/mca/if/posix_ipv4/configure.m4 @@ -3,6 +3,8 @@ # Copyright (c) 2010 Cisco Systems, Inc. All rights reserved. # Copyright (c) 2015 Research Organization for Information Science # and Technology (RIST). All rights reserved. +# Copyright (c) 2025 Nanook Consulting All rights reserved. +# Copyright (c) 2025 Jeffrey M. Squyres. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -25,22 +27,24 @@ AC_DEFUN([MCA_opal_if_posix_ipv4_CONFIG], [ OPAL_VAR_SCOPE_PUSH([opal_if_posix_ipv4_happy]) opal_if_posix_ipv4_happy=no - AC_REQUIRE([OPAL_CHECK_OS_FLAVORS]) + AC_REQUIRE([OAC_CHECK_OS_FLAVORS]) - # If we found struct sockaddr and we're NOT on most of the BSDs, - # we're happy. I.e., if posix but not: + # If we previously found struct sockaddr_in (we don't repeat the + # AC CHECK_TYPES test here simply because it's cumbersome with all + # the required #includes) and we're NOT on most of the BSDs, we're + # happy. I.e., this: #if defined(__NetBSD__) || defined(__FreeBSD__) || \ # defined(__OpenBSD__) || defined(__DragonFly__) - AC_MSG_CHECKING([struct sockaddr]) - AS_IF([test "$opal_found_sockaddr" = "yes"], - [AC_MSG_RESULT([yes (cached)]) + AC_MSG_CHECKING([struct sockaddr_in again]) + AS_IF([test "$ac_cv_type_struct_sockaddr_in" = "yes"], + [AC_MSG_RESULT([yes (OPAL cached)]) AC_MSG_CHECKING([not NetBSD, FreeBSD, OpenBSD, or DragonFly]) - AS_IF([test "$opal_found_netbsd" = "no" && test "$opal_found_freebsd" = "no" && test "$opal_found_openbsd" = "no" && test "$opal_found_dragonfly" = "no"], + AS_IF([test "$oac_found_netbsd" = "no" && test "$oac_found_freebsd" = "no" && test "$oac_found_openbsd" = "no" && test "$oac_found_dragonfly" = "no"], [AC_MSG_RESULT([yes]) opal_if_posix_ipv4_happy=yes], [AC_MSG_RESULT([no])] )], - [AC_MSG_RESULT([no (cached)])] + [AC_MSG_RESULT([no (OPAL cached)])] ) AS_IF([test "$opal_if_posix_ipv4_happy" = "yes"], diff --git a/opal/mca/shmem/posix/shmem_posix_common_utils.c b/opal/mca/shmem/posix/shmem_posix_common_utils.c index 5e1f5416757..4b6d164e145 100644 --- a/opal/mca/shmem/posix/shmem_posix_common_utils.c +++ b/opal/mca/shmem/posix/shmem_posix_common_utils.c @@ -19,6 +19,7 @@ * reserved. * Copyright (c) 2022 IBM Corporation. All rights reserved * + * Copyright (c) 2025 Nanook Consulting All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -33,15 +34,9 @@ # include #endif /* HAVE_FCNTL_H */ #include -#if OPAL_HAVE_SOLARIS && !defined(_POSIX_C_SOURCE) -# define _POSIX_C_SOURCE 200112L /* Required for shm_{open,unlink} decls */ +#ifdef HAVE_SYS_MMAN_H # include -# undef _POSIX_C_SOURCE -#else -# ifdef HAVE_SYS_MMAN_H -# include -# endif /* HAVE_SYS_MMAN_H */ -#endif +#endif /* HAVE_SYS_MMAN_H */ #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ diff --git a/opal/mca/shmem/posix/shmem_posix_module.c b/opal/mca/shmem/posix/shmem_posix_module.c index a2f781819e6..ef1843535f7 100644 --- a/opal/mca/shmem/posix/shmem_posix_module.c +++ b/opal/mca/shmem/posix/shmem_posix_module.c @@ -17,6 +17,7 @@ * Copyright (c) 2019 Triad National Security, LLC. All rights * reserved. * Copyright (c) 2022 IBM Corporation. All rights reserved + * Copyright (c) 2025 Nanook Consulting All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -30,15 +31,9 @@ #ifdef HAVE_FCNTL_H # include #endif /* HAVE_FCNTL_H */ -#if OPAL_HAVE_SOLARIS && !defined(_POSIX_C_SOURCE) -# define _POSIX_C_SOURCE 200112L /* Required for shm_{open,unlink} decls */ +#ifdef HAVE_SYS_MMAN_H # include -# undef _POSIX_C_SOURCE -#else -# ifdef HAVE_SYS_MMAN_H -# include -# endif /* HAVE_SYS_MMAN_H */ -#endif +#endif /* HAVE_SYS_MMAN_H */ #ifdef HAVE_UNISTD_H # include #endif /* HAVE_UNISTD_H */ diff --git a/opal/mca/threads/pthreads/configure.m4 b/opal/mca/threads/pthreads/configure.m4 index 0bf263e7570..126653dc008 100644 --- a/opal/mca/threads/pthreads/configure.m4 +++ b/opal/mca/threads/pthreads/configure.m4 @@ -16,6 +16,7 @@ # Copyright (c) 2019 Sandia National Laboratories. All rights reserved. # Copyright (c) 2019 Triad National Security, LLC. All rights # reserved. +# Copyright (c) 2025 Nanook Consulting All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow @@ -363,23 +364,15 @@ AC_DEFUN([OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS],[ # -Kthread: # -kthread: FreeBSD kernel threads # -pthread: Modern GCC (most all platforms) -# -pthreads: GCC on solaris # -mthreads: -# -mt: Solaris native compilers / HP-UX aCC +# -mt: HP-UX aCC # # Put -mt before -mthreads because HP-UX aCC will properly compile # with -mthreads (reading as -mt), but emit a warning about unknown -# flags hreads. Stupid compilers. +# flags "hreads". Stupid compilers. OPAL_VAR_SCOPE_PUSH([pflags]) -case "${host_cpu}-${host_os}" in - *solaris*) - pflags="-pthread -pthreads -mt" - ;; - *) - pflags="-Kthread -kthread -pthread -pthreads -mt -mthreads" - ;; -esac +pflags="-Kthread -kthread -pthread -pthreads -mt -mthreads" # Only run C++ and Fortran if those compilers were found @@ -705,7 +698,7 @@ AC_DEFUN([MCA_opal_threads_pthreads_COMPILE_MODE], [ # If component was selected, $1 will be 1 and we should set the base header AC_DEFUN([MCA_opal_threads_pthreads_POST_CONFIG],[ - AS_IF([test "$1" = "1"], + AS_IF([test "$1" = "1"], [opal_thread_type_found="pthreads" AC_DEFINE_UNQUOTED([MCA_threads_base_include_HEADER], ["opal/mca/threads/pthreads/threads_pthreads_threads.h"], diff --git a/opal/util/path.c b/opal/util/path.c index 6931de8756b..9e4200a9384 100644 --- a/opal/util/path.c +++ b/opal/util/path.c @@ -17,6 +17,7 @@ * Copyright (c) 2016 University of Houston. All rights reserved. * Copyright (c) 2016 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2025 Nanook Consulting All rights reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -86,7 +87,7 @@ #endif /* - * Note that some OS's (e.g., NetBSD and Solaris) have statfs(), but + * Note that some OS's (e.g., NetBSD has statfs(), but * no struct statfs (!). So check to make sure we have struct statfs * before allowing the use of statfs(). */ @@ -409,8 +410,8 @@ char *opal_find_absolute_path(char *app_name) /** * Read real FS type from /etc/mtab, needed to translate autofs fs type into real fs type - * TODO: solaris? OSX? - * Limitations: autofs on solaris/osx will be assumed as "nfs" type + * TODO: OSX? + * Limitations: autofs on osx will be assumed as "nfs" type */ static char *opal_check_mtab(char *dev_path) @@ -457,10 +458,6 @@ static char *opal_check_mtab(char *dev_path) * statvfs (const char *path, struct statvfs *buf); * with unsigned long f_fsid; -- returns wrong info * return 0 success, -1 on failure with errno set. - * Solaris: - * statvfs (const char *path, struct statvfs *buf); - * with f_basetype, contains a string of length FSTYPSZ - * return 0 success, -1 on failure with errno set. * FreeBSD: * statfs(const char *path, struct statfs *buf); * with f_fstypename, contains a string of length MFSNAMELEN diff --git a/oshmem/mca/memheap/ptmalloc/malloc.c b/oshmem/mca/memheap/ptmalloc/malloc.c index f5a77108e25..0b11a6fb327 100644 --- a/oshmem/mca/memheap/ptmalloc/malloc.c +++ b/oshmem/mca/memheap/ptmalloc/malloc.c @@ -1263,9 +1263,6 @@ extern void* sbrk(ptrdiff_t); #if USE_LOCKS #ifndef WIN32 #include -#if defined (__SVR4) && defined (__sun) /* solaris */ -#include -#endif /* solaris */ #else #ifndef _M_AMD64 /* These are already defined on AMD64 builds */ @@ -1544,15 +1541,11 @@ static FORCEINLINE int pthread_acquire_lock (MLOCK_T *sl) { break; } if ((++spins & SPINS_PER_YIELD) == 0) { -#if defined (__SVR4) && defined (__sun) /* solaris */ - thr_yield(); -#else #ifdef linux sched_yield(); #else /* no-op yield on unknown systems */ ; #endif /* linux */ -#endif /* solaris */ } } }