======
time.h
======

.. 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-aarch64 <https://github.com/llvm/llvm-project/tree/main/libc/config/baremetal/aarch64/entrypoints.txt>`_

  - `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 | 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|     |         |         |         |         |         |         |         | |check| | |check| |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock_nanosleep     |         |         |         |                 |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| clock_settime       | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| ctime               | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| ctime_r             | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| difftime            | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| getdate             |         |         |         |                 |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| gettimeofday        | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| gmtime              | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| gmtime_r            | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| localtime           | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| localtime_r         | |check| | |check| |         |     |check|     |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| 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               |         |         |         |                 |         |         |         |         |         |         |         |         |         |
+---------------------+---------+---------+---------+-----------------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
