mirror of
https://github.com/darlinghq/darling-libcxx.git
synced 2024-12-02 17:06:18 +00:00
323ade3e70
One of the aspects of CloudABI is that it aims to help you write code that is thread-safe out of the box. This is very important if you want to write libraries that are easy to reuse. For CloudABI we decided to not provide the thread-unsafe functions. So far this is working out pretty well, as thread-unsafety issues are detected really early on. The following patch adds a knob to libc++, _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS, that can be set to disable thread-unsafe functions that can easily be avoided in practice. The following functions are not thread-safe: - <clocale>: locale handles should be preferred over setlocale(). - <cstdlib>: mbrlen(), mbrtowc() and wcrtomb() should be preferred over their non-restartable counterparts. - <ctime>: asctime(), ctime(), gmtime() and localtime() are not thread-safe. The first two are also deprecated by POSIX. Differential Revision: http://reviews.llvm.org/D8703 Reviewed by: marshall git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@240527 91177308-0d34-0410-b5e6-96231b3b80d8
75 lines
1.4 KiB
C++
75 lines
1.4 KiB
C++
// -*- C++ -*-
|
|
//===---------------------------- ctime -----------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is dual licensed under the MIT and the University of Illinois Open
|
|
// Source Licenses. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _LIBCPP_CTIME
|
|
#define _LIBCPP_CTIME
|
|
|
|
/*
|
|
ctime synopsis
|
|
|
|
Macros:
|
|
|
|
NULL
|
|
CLOCKS_PER_SEC
|
|
|
|
namespace std
|
|
{
|
|
|
|
Types:
|
|
|
|
clock_t
|
|
size_t
|
|
time_t
|
|
tm
|
|
|
|
clock_t clock();
|
|
double difftime(time_t time1, time_t time0);
|
|
time_t mktime(tm* timeptr);
|
|
time_t time(time_t* timer);
|
|
char* asctime(const tm* timeptr);
|
|
char* ctime(const time_t* timer);
|
|
tm* gmtime(const time_t* timer);
|
|
tm* localtime(const time_t* timer);
|
|
size_t strftime(char* restrict s, size_t maxsize, const char* restrict format,
|
|
const tm* restrict timeptr);
|
|
|
|
} // std
|
|
|
|
*/
|
|
|
|
#include <__config>
|
|
#include <time.h>
|
|
|
|
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
|
using ::clock_t;
|
|
using ::size_t;
|
|
using ::time_t;
|
|
using ::tm;
|
|
using ::clock;
|
|
using ::difftime;
|
|
using ::mktime;
|
|
using ::time;
|
|
#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
|
|
using ::asctime;
|
|
using ::ctime;
|
|
using ::gmtime;
|
|
using ::localtime;
|
|
#endif
|
|
using ::strftime;
|
|
|
|
_LIBCPP_END_NAMESPACE_STD
|
|
|
|
#endif // _LIBCPP_CTIME
|