12f4f452fSSiva Chandra Reddy //===-- Linux implementation of the cnd_wait function ---------------------===//
22f4f452fSSiva Chandra Reddy //
32f4f452fSSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42f4f452fSSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information.
52f4f452fSSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
62f4f452fSSiva Chandra Reddy //
72f4f452fSSiva Chandra Reddy //===----------------------------------------------------------------------===//
82f4f452fSSiva Chandra Reddy 
98379fc4aSSiva Chandra Reddy #include "CndVar.h"
108379fc4aSSiva Chandra Reddy 
112f4f452fSSiva Chandra Reddy #include "src/__support/common.h"
12*a5ee8183SSiva Chandra Reddy #include "src/__support/threads/mutex.h"
13*a5ee8183SSiva Chandra Reddy #include "src/threads/cnd_wait.h"
142f4f452fSSiva Chandra Reddy 
152f4f452fSSiva Chandra Reddy namespace __llvm_libc {
162f4f452fSSiva Chandra Reddy 
178379fc4aSSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, cnd_wait, (cnd_t * cond, mtx_t *mtx)) {
188379fc4aSSiva Chandra Reddy   CndVar *cndvar = reinterpret_cast<CndVar *>(cond);
198379fc4aSSiva Chandra Reddy   Mutex *mutex = reinterpret_cast<Mutex *>(mtx);
208379fc4aSSiva Chandra Reddy   return cndvar->wait(mutex);
212f4f452fSSiva Chandra Reddy }
222f4f452fSSiva Chandra Reddy 
232f4f452fSSiva Chandra Reddy } // namespace __llvm_libc
24