llvm/libc/docs/date_and_time.rst

=======================
Date and Time Functions
=======================

.. include:: check.rst

---------------
Source location
---------------

-   The main source for time functions is located at: ``libc/src/time``

---------------------
Implementation Status
---------------------

* To check date and time functions enabled for Linux:

  - `linux-x86_64 <https://github.com/llvm/llvm-project/tree/main/libc/config/linux/x86_64/entrypoints.txt>`_

  - `linux-aarch64 <https://github.com/llvm/llvm-project/tree/main/libc/config/linux/aarch64/entrypoints.txt>`_

  - `linux-aarch32 <https://github.com/llvm/llvm-project/tree/main/libc/config/linux/arm/entrypoints.txt>`_

  - `linux-riscv and linux-riscv32 <https://github.com/llvm/llvm-project/tree/main/libc/config/linux/riscv/entrypoints.txt>`_

* To check date and time functions enabled for Windows:

  - `windows-x86_64 <https://github.com/llvm/llvm-project/tree/main/libc/config/windows/entrypoints.txt>`_

  - windows-aarch64 - to be added

* To check date and time functions enabled for macOS:

  - `darwin-x86_64 <https://github.com/llvm/llvm-project/tree/main/libc/config/darwin/x86_64/entrypoints.txt>`_

  - `darwin-aarch64 <https://github.com/llvm/llvm-project/tree/main/libc/config/darwin/arm/entrypoints.txt>`_

* To check date and time functions enabled for GPU:

  - `gpu-entrypoints <https://github.com/llvm/llvm-project/tree/main/libc/config/gpu/entrypoints.txt>`_

* To check date and time functions enabled for embedded system:

  - `barebone-aarch32 <https://github.com/llvm/llvm-project/tree/main/libc/config/baremetal/arm/entrypoints.txt>`_

  - barebone-riscv32 - to be added

+---------------------+-----------------------------------------------+-------------------+-------------------+-------------------+-------------------+
| <Func>              |  Linux                                        | Windows           | MacOS             | Embedded          | GPU               |
|                     +---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
|                     | x86_64  | aarch64 | aarch32 | riscv64/riscv32 | x86_64  | aarch64 | x86_64  | aarch64 | aarch32 | riscv32 | AMD     | nVidia  |
+=====================+=========+=========+=========+=================+=========+=========+=========+=========+=========+=========+=========+=========+
| asctime             | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| asctime_r           | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| ctime               | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| ctime_r             | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock               | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock_getcpuclockid |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock_getres        |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock_gettime       | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock_nanosleep     |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock_settime       |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| ctime               |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| ctime_r             |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| difftime            | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| getdate             |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| gettimeofday        | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| gmtime              | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| gmtime_r            | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| localtime           |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| localtime_r         |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| mktime              | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| nanosleep           | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| strftime            |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| strptime            |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| time                | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| timer_create        |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| timer_delete        |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| timer_gettime       |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| timer_getoverrun    |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| timer_settime       |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+
| tzset               |         |         |         |                 |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+