Lines Matching refs:future
24 void future_free(future_t *future);
62 void future_ready(future_t *future, void *value) in future_ready() argument
64 assert(future != NULL); in future_ready()
65 assert(future->ready_can_be_called); in future_ready()
67 future->ready_can_be_called = false; in future_ready()
68 future->result = value; in future_ready()
69 osi_sem_give(&future->semaphore); in future_ready()
72 void *future_await(future_t *future) in future_await() argument
74 assert(future != NULL); in future_await()
77 if (future->semaphore) { in future_await()
78 osi_sem_take(&future->semaphore, OSI_SEM_MAX_TIMEOUT); in future_await()
81 void *result = future->result; in future_await()
82 future_free(future); in future_await()
86 void future_free(future_t *future) in future_free() argument
88 if (!future) { in future_free()
92 if (future->semaphore) { in future_free()
93 osi_sem_free(&future->semaphore); in future_free()
96 osi_free(future); in future_free()