quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

ares_threads.h (2563B)


      1 /* MIT License
      2  *
      3  * Copyright (c) 2023 Brad House
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining a copy
      6  * of this software and associated documentation files (the "Software"), to deal
      7  * in the Software without restriction, including without limitation the rights
      8  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      9  * copies of the Software, and to permit persons to whom the Software is
     10  * furnished to do so, subject to the following conditions:
     11  *
     12  * The above copyright notice and this permission notice (including the next
     13  * paragraph) shall be included in all copies or substantial portions of the
     14  * Software.
     15  *
     16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     22  * SOFTWARE.
     23  *
     24  * SPDX-License-Identifier: MIT
     25  */
     26 #ifndef __ARES__THREADS_H
     27 #define __ARES__THREADS_H
     28 
     29 struct ares_thread_mutex;
     30 typedef struct ares_thread_mutex ares_thread_mutex_t;
     31 
     32 ares_thread_mutex_t             *ares_thread_mutex_create(void);
     33 void ares_thread_mutex_destroy(ares_thread_mutex_t *mut);
     34 void ares_thread_mutex_lock(ares_thread_mutex_t *mut);
     35 void ares_thread_mutex_unlock(ares_thread_mutex_t *mut);
     36 
     37 
     38 struct ares_thread_cond;
     39 typedef struct ares_thread_cond ares_thread_cond_t;
     40 
     41 ares_thread_cond_t             *ares_thread_cond_create(void);
     42 void          ares_thread_cond_destroy(ares_thread_cond_t *cond);
     43 void          ares_thread_cond_signal(ares_thread_cond_t *cond);
     44 void          ares_thread_cond_broadcast(ares_thread_cond_t *cond);
     45 ares_status_t ares_thread_cond_wait(ares_thread_cond_t  *cond,
     46                                     ares_thread_mutex_t *mut);
     47 ares_status_t ares_thread_cond_timedwait(ares_thread_cond_t  *cond,
     48                                          ares_thread_mutex_t *mut,
     49                                          unsigned long        timeout_ms);
     50 
     51 
     52 struct ares_thread;
     53 typedef struct ares_thread ares_thread_t;
     54 
     55 typedef void *(*ares_thread_func_t)(void *arg);
     56 ares_status_t ares_thread_create(ares_thread_t    **thread,
     57                                  ares_thread_func_t func, void *arg);
     58 ares_status_t ares_thread_join(ares_thread_t *thread, void **rv);
     59 
     60 #endif