diff options
| author | Siva Chandra Reddy <sivachandra@google.com> | 2021-08-27 18:49:40 +0000 |
|---|---|---|
| committer | Siva Chandra Reddy <sivachandra@google.com> | 2021-09-01 19:41:52 +0000 |
| commit | 2f4f452f166bbbf0d39193f0e68d680d235e64ba (patch) | |
| tree | a0ce2efa807e428cf4904b9997c0779368722f9b /libc/src | |
| parent | ccbb4c8b4ffd00588f0c21c7e5208bf210b26a53 (diff) | |
[libc] Add a skeleton for C standard condition variable functions.
This patch adds a skeleton as a preparatory step for the next patch which
adds the actual implementations of the condition variable functions.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D108947
Diffstat (limited to 'libc/src')
| -rw-r--r-- | libc/src/threads/CMakeLists.txt | 35 | ||||
| -rw-r--r-- | libc/src/threads/cnd_broadcast.h | 20 | ||||
| -rw-r--r-- | libc/src/threads/cnd_destroy.h | 20 | ||||
| -rw-r--r-- | libc/src/threads/cnd_init.h | 20 | ||||
| -rw-r--r-- | libc/src/threads/cnd_signal.h | 20 | ||||
| -rw-r--r-- | libc/src/threads/cnd_wait.h | 20 | ||||
| -rw-r--r-- | libc/src/threads/linux/CMakeLists.txt | 55 | ||||
| -rw-r--r-- | libc/src/threads/linux/cnd_broadcast.cpp | 16 | ||||
| -rw-r--r-- | libc/src/threads/linux/cnd_destroy.cpp | 16 | ||||
| -rw-r--r-- | libc/src/threads/linux/cnd_init.cpp | 16 | ||||
| -rw-r--r-- | libc/src/threads/linux/cnd_signal.cpp | 16 | ||||
| -rw-r--r-- | libc/src/threads/linux/cnd_wait.cpp | 18 |
12 files changed, 272 insertions, 0 deletions
diff --git a/libc/src/threads/CMakeLists.txt b/libc/src/threads/CMakeLists.txt index a5d9589e44f3..de72701bef75 100644 --- a/libc/src/threads/CMakeLists.txt +++ b/libc/src/threads/CMakeLists.txt @@ -50,3 +50,38 @@ add_entrypoint_object( DEPENDS .${LIBC_TARGET_OS}.mtx_unlock ) + +add_entrypoint_object( + cnd_init + ALIAS + DEPENDS + .${LIBC_TARGET_OS}.cnd_init +) + +add_entrypoint_object( + cnd_destroy + ALIAS + DEPENDS + .${LIBC_TARGET_OS}.cnd_destroy +) + +add_entrypoint_object( + cnd_wait + ALIAS + DEPENDS + .${LIBC_TARGET_OS}.cnd_wait +) + +add_entrypoint_object( + cnd_signal + ALIAS + DEPENDS + .${LIBC_TARGET_OS}.cnd_signal +) + +add_entrypoint_object( + cnd_broadcast + ALIAS + DEPENDS + .${LIBC_TARGET_OS}.cnd_broadcast +) diff --git a/libc/src/threads/cnd_broadcast.h b/libc/src/threads/cnd_broadcast.h new file mode 100644 index 000000000000..219341bc4498 --- /dev/null +++ b/libc/src/threads/cnd_broadcast.h @@ -0,0 +1,20 @@ +//===-- Implementation header for cnd_broadcast function --------*- 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 LLVM_LIBC_SRC_THREADS_CND_BROADCAST_H +#define LLVM_LIBC_SRC_THREADS_CND_BROADCAST_H + +#include "include/threads.h" + +namespace __llvm_libc { + +int cnd_broadcast(cnd_t *cond); + +} // namespace __llvm_libc + +#endif // LLVM_LIBC_SRC_THREADS_CND_BROADCAST_H diff --git a/libc/src/threads/cnd_destroy.h b/libc/src/threads/cnd_destroy.h new file mode 100644 index 000000000000..4fa1ea18b5e2 --- /dev/null +++ b/libc/src/threads/cnd_destroy.h @@ -0,0 +1,20 @@ +//===-- Implementation header for cnd_destroy function ----------*- 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 LLVM_LIBC_SRC_THREADS_CND_DESTROY_H +#define LLVM_LIBC_SRC_THREADS_CND_DESTROY_H + +#include "include/threads.h" + +namespace __llvm_libc { + +void cnd_destroy(cnd_t *cond); + +} // namespace __llvm_libc + +#endif // LLVM_LIBC_SRC_THREADS_CND_DESTROY_H diff --git a/libc/src/threads/cnd_init.h b/libc/src/threads/cnd_init.h new file mode 100644 index 000000000000..8c14c88342e3 --- /dev/null +++ b/libc/src/threads/cnd_init.h @@ -0,0 +1,20 @@ +//===-- Implementation header for cnd_init function -------------*- 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 LLVM_LIBC_SRC_THREADS_CND_INIT_H +#define LLVM_LIBC_SRC_THREADS_CND_INIT_H + +#include "include/threads.h" + +namespace __llvm_libc { + +int cnd_init(cnd_t *cond); + +} // namespace __llvm_libc + +#endif // LLVM_LIBC_SRC_THREADS_CND_INIT_H diff --git a/libc/src/threads/cnd_signal.h b/libc/src/threads/cnd_signal.h new file mode 100644 index 000000000000..d85802dda484 --- /dev/null +++ b/libc/src/threads/cnd_signal.h @@ -0,0 +1,20 @@ +//===-- Implementation header for cnd_signal function -----------*- 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 LLVM_LIBC_SRC_THREADS_CND_SIGNAL_H +#define LLVM_LIBC_SRC_THREADS_CND_SIGNAL_H + +#include "include/threads.h" + +namespace __llvm_libc { + +int cnd_signal(cnd_t *cond); + +} // namespace __llvm_libc + +#endif // LLVM_LIBC_SRC_THREADS_CND_SIGNAL_H diff --git a/libc/src/threads/cnd_wait.h b/libc/src/threads/cnd_wait.h new file mode 100644 index 000000000000..5f9ac0884676 --- /dev/null +++ b/libc/src/threads/cnd_wait.h @@ -0,0 +1,20 @@ +//===-- Implementation header for cnd_wait function -------------*- 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 LLVM_LIBC_SRC_THREADS_CND_WAIT_H +#define LLVM_LIBC_SRC_THREADS_CND_WAIT_H + +#include "include/threads.h" + +namespace __llvm_libc { + +int cnd_wait(cnd_t *cond, mtx_t *mutex); + +} // namespace __llvm_libc + +#endif // LLVM_LIBC_SRC_THREADS_CND_WAIT_H diff --git a/libc/src/threads/linux/CMakeLists.txt b/libc/src/threads/linux/CMakeLists.txt index b28850b94d8f..abf38fabb8ae 100644 --- a/libc/src/threads/linux/CMakeLists.txt +++ b/libc/src/threads/linux/CMakeLists.txt @@ -113,3 +113,58 @@ add_entrypoint_object( .threads_utils libc.include.threads ) + +add_entrypoint_object( + cnd_init + SRCS + cnd_init.cpp + HDRS + ../cnd_init.h + DEPENDS + .threads_utils + libc.include.threads +) + +add_entrypoint_object( + cnd_destroy + SRCS + cnd_destroy.cpp + HDRS + ../cnd_destroy.h + DEPENDS + .threads_utils + libc.include.threads +) + +add_entrypoint_object( + cnd_wait + SRCS + cnd_wait.cpp + HDRS + ../cnd_wait.h + DEPENDS + .threads_utils + libc.include.threads +) + +add_entrypoint_object( + cnd_signal + SRCS + cnd_signal.cpp + HDRS + ../cnd_signal.h + DEPENDS + .threads_utils + libc.include.threads +) + +add_entrypoint_object( + cnd_broadcast + SRCS + cnd_broadcast.cpp + HDRS + ../cnd_broadcast.h + DEPENDS + .threads_utils + libc.include.threads +) diff --git a/libc/src/threads/linux/cnd_broadcast.cpp b/libc/src/threads/linux/cnd_broadcast.cpp new file mode 100644 index 000000000000..e10f9fa6c228 --- /dev/null +++ b/libc/src/threads/linux/cnd_broadcast.cpp @@ -0,0 +1,16 @@ +//===-- Linux implementation of the cnd_broadcast function ----------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#include "src/threads/cnd_broadcast.h" +#include "src/__support/common.h" + +namespace __llvm_libc { + +LLVM_LIBC_FUNCTION(int, cnd_broadcast, (cnd_t * cond)) { return thrd_success; } + +} // namespace __llvm_libc diff --git a/libc/src/threads/linux/cnd_destroy.cpp b/libc/src/threads/linux/cnd_destroy.cpp new file mode 100644 index 000000000000..ac8a852a9739 --- /dev/null +++ b/libc/src/threads/linux/cnd_destroy.cpp @@ -0,0 +1,16 @@ +//===-- Linux implementation of the cnd_destroy function ------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#include "src/threads/cnd_destroy.h" +#include "src/__support/common.h" + +namespace __llvm_libc { + +LLVM_LIBC_FUNCTION(void, cnd_destroy, (cnd_t * cond)) { } + +} // namespace __llvm_libc diff --git a/libc/src/threads/linux/cnd_init.cpp b/libc/src/threads/linux/cnd_init.cpp new file mode 100644 index 000000000000..f034695227b7 --- /dev/null +++ b/libc/src/threads/linux/cnd_init.cpp @@ -0,0 +1,16 @@ +//===-- Linux implementation of the cnd_init function ---------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#include "src/threads/cnd_init.h" +#include "src/__support/common.h" + +namespace __llvm_libc { + +LLVM_LIBC_FUNCTION(int, cnd_init, (cnd_t * cond)) { return thrd_success; } + +} // namespace __llvm_libc diff --git a/libc/src/threads/linux/cnd_signal.cpp b/libc/src/threads/linux/cnd_signal.cpp new file mode 100644 index 000000000000..8ef16a355e7b --- /dev/null +++ b/libc/src/threads/linux/cnd_signal.cpp @@ -0,0 +1,16 @@ +//===-- Linux implementation of the cnd_signal function -------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#include "src/threads/cnd_signal.h" +#include "src/__support/common.h" + +namespace __llvm_libc { + +LLVM_LIBC_FUNCTION(int, cnd_signal, (cnd_t * cond)) { return thrd_success; } + +} // namespace __llvm_libc diff --git a/libc/src/threads/linux/cnd_wait.cpp b/libc/src/threads/linux/cnd_wait.cpp new file mode 100644 index 000000000000..e2dda46d2dc9 --- /dev/null +++ b/libc/src/threads/linux/cnd_wait.cpp @@ -0,0 +1,18 @@ +//===-- Linux implementation of the cnd_wait function ---------------------===// +// +// 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 +// +//===----------------------------------------------------------------------===// + +#include "src/threads/cnd_wait.h" +#include "src/__support/common.h" + +namespace __llvm_libc { + +LLVM_LIBC_FUNCTION(int, cnd_wait, (cnd_t * cond, mtx_t *mutex)) { + return thrd_success; +} + +} // namespace __llvm_libc |
