[libcxx-commits] [libcxx] 777ca48 - Revert "[SystemZ][ZOS] Porting the time functions within libc++ to z/OS"
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Nov 12 10:38:02 PST 2020
Author: Louis Dionne
Date: 2020-11-12T13:36:18-05:00
New Revision: 777ca48c9f080ff1cd2d3791b8e23504bda7be40
URL: https://github.com/llvm/llvm-project/commit/777ca48c9f080ff1cd2d3791b8e23504bda7be40
DIFF: https://github.com/llvm/llvm-project/commit/777ca48c9f080ff1cd2d3791b8e23504bda7be40.diff
LOG: 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.
Added:
Modified:
libcxx/include/CMakeLists.txt
libcxx/include/__threading_support
libcxx/src/filesystem/filesystem_common.h
Removed:
libcxx/include/support/ibm/nanosleep.h
################################################################################
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index df169560133f..aab02768e5b7 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 a9ab425d2e89..fe770a81c115 100644
--- a/libcxx/include/__threading_support
+++ b/libcxx/include/__threading_support
@@ -16,10 +16,6 @@
#include <iosfwd>
#include <errno.h>
-#ifdef __MVS__
-#include <support/ibm/nanosleep.h>
-#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 c82f4eb0cd5b..000000000000
--- 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 <unistd.h>
-
-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 a82f6511368a..dc55f93da70c 100644
--- a/libcxx/src/filesystem/filesystem_common.h
+++ b/libcxx/src/filesystem/filesystem_common.h
@@ -198,8 +198,7 @@ struct ErrorHandler {
using chrono::duration;
using chrono::duration_cast;
-using TimeSpec = struct timespec;
-using TimeVal = struct timeval;
+using TimeSpec = timespec;
using StatT = struct stat;
template <class FileTimeT, class TimeT,
@@ -382,38 +381,26 @@ struct time_util : time_util_base<FileTimeT, TimeT> {
using fs_time = time_util<file_time_type, time_t, TimeSpec>;
#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<TimeSpec, 2> const& TS,
+ error_code& ec) {
using namespace chrono;
auto Convert = [](long nsec) {
- using int_type = decltype(std::declval<TimeVal>().tv_usec);
+ using int_type = decltype(std::declval< ::timeval>().tv_usec);
auto dur = duration_cast<microseconds>(nanoseconds(nsec)).count();
return static_cast<int_type>(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<TimeSpec, 2> 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;
More information about the libcxx-commits
mailing list