From 777ca48c9f080ff1cd2d3791b8e23504bda7be40 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Thu, 12 Nov 2020 13:36:18 -0500 Subject: [PATCH] Revert "[SystemZ][ZOS] Porting the time functions within libc++ to z/OS" This reverts commit 173b51169b838. That commit was applied incorrectly, and undid previous changes. That was clearly not intended. --- libcxx/include/CMakeLists.txt | 23 ------------------ libcxx/include/__threading_support | 4 ---- libcxx/include/support/ibm/nanosleep.h | 38 ------------------------------ libcxx/src/filesystem/filesystem_common.h | 39 +++++++++++-------------------- 4 files changed, 13 insertions(+), 91 deletions(-) delete mode 100644 libcxx/include/support/ibm/nanosleep.h diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt index df169560133..aab02768e5b 100644 --- a/libcxx/include/CMakeLists.txt +++ b/libcxx/include/CMakeLists.txt @@ -179,29 +179,6 @@ set(files wctype.h ) -if(LIBCXX_INSTALL_SUPPORT_HEADERS) - set(files - ${files} - support/android/locale_bionic.h - support/fuchsia/xlocale.h - support/ibm/limits.h - support/ibm/locale_mgmt_aix.h - support/ibm/nanosleep.h - support/ibm/support.h - support/ibm/xlocale.h - support/musl/xlocale.h - support/newlib/xlocale.h - support/solaris/floatingpoint.h - support/solaris/wchar.h - support/solaris/xlocale.h - support/win32/limits_msvc_win32.h - support/win32/locale_win32.h - support/xlocale/__nop_locale_mgmt.h - support/xlocale/__posix_l_fallback.h - support/xlocale/__strtonum_fallback.h - ) -endif() - configure_file("__config_site.in" "${LIBCXX_BINARY_DIR}/__config_site" @ONLY) diff --git a/libcxx/include/__threading_support b/libcxx/include/__threading_support index a9ab425d2e8..fe770a81c11 100644 --- a/libcxx/include/__threading_support +++ b/libcxx/include/__threading_support @@ -16,10 +16,6 @@ #include #include -#ifdef __MVS__ -#include -#endif - #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER #pragma GCC system_header #endif diff --git a/libcxx/include/support/ibm/nanosleep.h b/libcxx/include/support/ibm/nanosleep.h deleted file mode 100644 index c82f4eb0cd5..00000000000 --- a/libcxx/include/support/ibm/nanosleep.h +++ /dev/null @@ -1,38 +0,0 @@ -// -*- C++ -*- -//===----------------------------------------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef _LIBCPP_SUPPORT_IBM_NANOSLEEP_H -#define _LIBCPP_SUPPORT_IBM_NANOSLEEP_H - -#include - -inline int nanosleep(const struct timespec* req, struct timespec* rem) -{ - // The nanosleep() function is not available on z/OS. Therefore, we will call - // sleep() to sleep for whole seconds and usleep() to sleep for any remaining - // fraction of a second. Any remaining nanoseconds will round up to the next - // microsecond. - - useconds_t __micro_sec = (rem->tv_nsec + 999) / 1000; - if (__micro_sec > 999999) - { - ++rem->tv_sec; - __micro_sec -= 1000000; - } - while (rem->tv_sec) - rem->tv_sec = sleep(rem->tv_sec); - if (__micro_sec) { - rem->tv_nsec = __micro_sec * 1000; - return usleep(__micro_sec); - } - rem->tv_nsec = 0; - return 0; -} - -#endif // _LIBCPP_SUPPORT_IBM_NANOSLEEP_H diff --git a/libcxx/src/filesystem/filesystem_common.h b/libcxx/src/filesystem/filesystem_common.h index a82f6511368..dc55f93da70 100644 --- a/libcxx/src/filesystem/filesystem_common.h +++ b/libcxx/src/filesystem/filesystem_common.h @@ -198,8 +198,7 @@ private: using chrono::duration; using chrono::duration_cast; -using TimeSpec = struct timespec; -using TimeVal = struct timeval; +using TimeSpec = timespec; using StatT = struct stat; template ; #if defined(__APPLE__) -inline TimeSpec extract_mtime(StatT const& st) { return st.st_mtimespec; } -inline TimeSpec extract_atime(StatT const& st) { return st.st_atimespec; } -#elif defined(__MVS__) -inline TimeSpec extract_mtime(StatT const& st) { - TimeSpec TS = {st.st_mtime, 0}; - return TS; -} -inline TimeSpec extract_atime(StatT const& st) { - TimeSpec TS = {st.st_atime, 0}; - return TS; -} +TimeSpec extract_mtime(StatT const& st) { return st.st_mtimespec; } +TimeSpec extract_atime(StatT const& st) { return st.st_atimespec; } #else -inline TimeSpec extract_mtime(StatT const& st) { return st.st_mtim; } -inline TimeSpec extract_atime(StatT const& st) { return st.st_atim; } +TimeSpec extract_mtime(StatT const& st) { return st.st_mtim; } +TimeSpec extract_atime(StatT const& st) { return st.st_atim; } #endif -inline TimeVal make_timeval(TimeSpec const& ts) { +// allow the utimes implementation to compile even it we're not going +// to use it. + +bool posix_utimes(const path& p, std::array const& TS, + error_code& ec) { using namespace chrono; auto Convert = [](long nsec) { - using int_type = decltype(std::declval().tv_usec); + using int_type = decltype(std::declval< ::timeval>().tv_usec); auto dur = duration_cast(nanoseconds(nsec)).count(); return static_cast(dur); }; - TimeVal TV = {}; - TV.tv_sec = ts.tv_sec; - TV.tv_usec = Convert(ts.tv_nsec); - return TV; -} - -inline bool posix_utimes(const path& p, std::array const& TS, - error_code& ec) { - TimeVal ConvertedTS[2] = {make_timeval(TS[0]), make_timeval(TS[1])}; + struct ::timeval ConvertedTS[2] = {{TS[0].tv_sec, Convert(TS[0].tv_nsec)}, + {TS[1].tv_sec, Convert(TS[1].tv_nsec)}}; if (::utimes(p.c_str(), ConvertedTS) == -1) { ec = capture_errno(); return true; -- 2.11.0