| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SYSROOT_ZIRCON_THREADS_H_ |
| #define SYSROOT_ZIRCON_THREADS_H_ |
| |
| #include <threads.h> |
| #include <zircon/compiler.h> |
| #include <zircon/types.h> |
| |
| __BEGIN_CDECLS |
| |
| // Get the zx_handle_t corresponding to the thrd_t. This handle is |
| // still owned by the C11 thread, and will not persist after the |
| // thread exits and is joined or detached. Callers must duplicate the |
| // handle, therefore, if they wish the thread handle to outlive the |
| // execution of the C11 thread. |
| zx_handle_t thrd_get_zx_handle(thrd_t t); |
| |
| // Converts a threads.h-style status value to an |zx_status_t|. |
| static inline zx_status_t __PURE thrd_status_to_zx_status(int thrd_status) { |
| switch (thrd_status) { |
| case thrd_success: |
| return ZX_OK; |
| case thrd_nomem: |
| return ZX_ERR_NO_MEMORY; |
| case thrd_timedout: |
| return ZX_ERR_TIMED_OUT; |
| case thrd_busy: |
| return ZX_ERR_SHOULD_WAIT; |
| default: |
| case thrd_error: |
| return ZX_ERR_INTERNAL; |
| } |
| } |
| |
| __END_CDECLS |
| |
| #endif // SYSROOT_ZIRCON_THREADS_H_ |