ARGOBOTS  0fe9a69fef0da01b7d13b05bf3ea11c116497027
abti.h
Go to the documentation of this file.
1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
2 /*
3  * See COPYRIGHT in top-level directory.
4  */
5 
6 #ifndef ABTI_H_INCLUDED
7 #define ABTI_H_INCLUDED
8 
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <stdint.h>
12 #include <inttypes.h>
13 #include <string.h>
14 #include <limits.h>
15 
16 #include "abt_config.h"
17 #include "abt.h"
18 
19 #ifndef ABT_CONFIG_DISABLE_ERROR_CHECK
20 #define ABTI_IS_ERROR_CHECK_ENABLED 1
21 #else
22 #define ABTI_IS_ERROR_CHECK_ENABLED 0
23 #endif
24 
25 #ifdef ABT_CONFIG_DISABLE_EXT_THREAD
26 #define ABTI_IS_EXT_THREAD_ENABLED 0
27 #else
28 #define ABTI_IS_EXT_THREAD_ENABLED 1
29 #endif
30 
31 #include "abtu.h"
32 #include "abti_error.h"
33 #include "abti_valgrind.h"
34 
35 /* Constants */
36 #define ABTI_SCHED_NUM_PRIO 3
37 
38 #define ABTI_SCHED_REQ_FINISH (1 << 0)
39 #define ABTI_SCHED_REQ_EXIT (1 << 1)
40 
41 #define ABTI_THREAD_REQ_JOIN (1 << 0)
42 #define ABTI_THREAD_REQ_TERMINATE (1 << 1)
43 #define ABTI_THREAD_REQ_CANCEL (1 << 2)
44 #define ABTI_THREAD_REQ_MIGRATE (1 << 3)
45 #define ABTI_THREAD_REQ_BLOCK (1 << 4)
46 #define ABTI_THREAD_REQ_ORPHAN (1 << 5)
47 #define ABTI_THREAD_REQ_NOPUSH (1 << 6)
48 #define ABTI_THREAD_REQ_NON_YIELD \
49  (ABTI_THREAD_REQ_CANCEL | ABTI_THREAD_REQ_MIGRATE | \
50  ABTI_THREAD_REQ_TERMINATE | ABTI_THREAD_REQ_BLOCK | \
51  ABTI_THREAD_REQ_ORPHAN | ABTI_THREAD_REQ_NOPUSH)
52 
53 #define ABTI_THREAD_INIT_ID 0xFFFFFFFFFFFFFFFF
54 #define ABTI_TASK_INIT_ID 0xFFFFFFFFFFFFFFFF
55 
56 #define ABTI_INDENT 4
57 
58 #define ABTI_SCHED_CONFIG_HTABLE_SIZE 8
59 #define ABTI_SCHED_CONFIG_UNUSED_INDEX INT_MIN
60 
61 #define ABT_THREAD_TYPE_FULLY_FLEDGED 0
62 #define ABT_THREAD_TYPE_DYNAMIC_PROMOTION 1
63 
64 #define ABTI_STACK_CHECK_TYPE_NONE 0
65 #define ABTI_STACK_CHECK_TYPE_CANARY 1
66 
70 };
71 
76 };
77 
78 #define ABTI_THREAD_TYPE_EXT ((ABTI_thread_type)0)
79 #define ABTI_THREAD_TYPE_THREAD ((ABTI_thread_type)(0x1 << 0))
80 #define ABTI_THREAD_TYPE_ROOT ((ABTI_thread_type)(0x1 << 1))
81 #define ABTI_THREAD_TYPE_PRIMARY ((ABTI_thread_type)(0x1 << 2))
82 #define ABTI_THREAD_TYPE_MAIN_SCHED ((ABTI_thread_type)(0x1 << 3))
83 #define ABTI_THREAD_TYPE_YIELDABLE ((ABTI_thread_type)(0x1 << 4))
84 #define ABTI_THREAD_TYPE_NAMED ((ABTI_thread_type)(0x1 << 5))
85 #define ABTI_THREAD_TYPE_MIGRATABLE ((ABTI_thread_type)(0x1 << 6))
86 
87 #define ABTI_THREAD_TYPE_MEM_MEMPOOL_DESC ((ABTI_thread_type)(0x1 << 7))
88 #define ABTI_THREAD_TYPE_MEM_MALLOC_DESC ((ABTI_thread_type)(0x1 << 8))
89 #define ABTI_THREAD_TYPE_MEM_MEMPOOL_DESC_STACK ((ABTI_thread_type)(0x1 << 9))
90 #define ABTI_THREAD_TYPE_MEM_MALLOC_DESC_STACK ((ABTI_thread_type)(0x1 << 10))
91 
92 #define ABTI_THREAD_TYPES_MEM \
93  (ABTI_THREAD_TYPE_MEM_MEMPOOL_DESC | ABTI_THREAD_TYPE_MEM_MALLOC_DESC | \
94  ABTI_THREAD_TYPE_MEM_MEMPOOL_DESC_STACK | \
95  ABTI_THREAD_TYPE_MEM_MALLOC_DESC_STACK)
96 
97 /* ABTI_MUTEX_ATTR_NONE must be 0. See ABT_MUTEX_INITIALIZER. */
98 #define ABTI_MUTEX_ATTR_NONE 0
99 /* ABTI_MUTEX_ATTR_RECURSIVE must be 1. See ABT_RECURSIVE_MUTEX_INITIALIZER. */
100 #define ABTI_MUTEX_ATTR_RECURSIVE 1
101 
102 /* Macro functions */
103 #define ABTI_UNUSED(a) (void)(a)
104 
105 /* Data Types */
106 typedef struct ABTI_global ABTI_global;
107 typedef struct ABTI_local ABTI_local;
109 typedef struct ABTI_xstream ABTI_xstream;
111 typedef struct ABTI_sched ABTI_sched;
115 typedef void *ABTI_sched_id; /* Scheduler id */
116 typedef uintptr_t ABTI_sched_kind; /* Scheduler kind */
117 typedef struct ABTI_pool ABTI_pool;
119 typedef struct ABTI_thread ABTI_thread;
121 typedef struct ABTI_ythread ABTI_ythread;
123 typedef uint32_t ABTI_thread_type;
124 typedef struct ABTI_key ABTI_key;
125 typedef struct ABTI_ktelem ABTI_ktelem;
126 typedef struct ABTI_ktable ABTI_ktable;
129 typedef struct ABTI_mutex ABTI_mutex;
130 typedef struct ABTI_cond ABTI_cond;
131 typedef struct ABTI_rwlock ABTI_rwlock;
133 typedef struct ABTI_future ABTI_future;
134 typedef struct ABTI_barrier ABTI_barrier;
136 typedef struct ABTI_timer ABTI_timer;
137 #ifndef ABT_CONFIG_DISABLE_TOOL_INTERFACE
138 typedef struct ABTI_tool_context ABTI_tool_context;
139 #endif
140 /* ID associated with native thread (e.g, Pthreads), which can distinguish
141  * execution streams and external threads */
142 struct ABTI_native_thread_id_opaque;
143 typedef struct ABTI_native_thread_id_opaque *ABTI_native_thread_id;
144 /* ID associated with thread (i.e., ULTs, tasklets, and external threads) */
145 struct ABTI_thread_id_opaque;
146 typedef struct ABTI_thread_id_opaque *ABTI_thread_id;
147 
148 /* Architecture-Dependent Definitions */
149 #include "abtd.h"
150 
151 /* Spinlock */
153 #include "abti_spinlock.h"
154 
155 /* Basic data structure and memory pool. */
156 #include "abti_sync_lifo.h"
157 #include "abti_mem_pool.h"
158 
159 /* Definitions */
163 };
164 
166  int attrs; /* bit-or'ed attributes */
167 };
168 
169 struct ABTI_mutex {
170  int attrs; /* attributes copied from ABTI_mutex_attr. Check
171  * ABT_(RECURSIVE_)MUTEX_INITIALIZER to see how
172  * this variable can be initialized. */
173  ABTI_spinlock lock; /* lock */
174  int nesting_cnt; /* nesting count (if recursive) */
175  ABTI_thread_id owner_id; /* owner's ID (if recursive) */
176 #ifndef ABT_CONFIG_USE_SIMPLE_MUTEX
177  ABTI_spinlock waiter_lock; /* lock */
178  ABTI_waitlist waitlist; /* waiting list */
179 #endif
180 };
181 
182 struct ABTI_global {
183  int max_xstreams; /* Largest rank used in Argobots. */
184  int num_xstreams; /* Current # of ESs */
185  ABTI_xstream *p_xstream_head; /* List of ESs (head). The list is sorted. */
187  xstream_list_lock; /* Spinlock protecting ES list. Any read and
188  * write to this list requires a lock.*/
189 
190  int num_cores; /* Number of CPU cores */
191  ABT_bool set_affinity; /* Whether CPU affinity is used */
192  ABT_bool use_logging; /* Whether logging is used */
193  ABT_bool use_debug; /* Whether debug output is used */
194  uint32_t key_table_size; /* Default key table size */
195  size_t thread_stacksize; /* Default stack size for ULT (in bytes) */
196  size_t sched_stacksize; /* Default stack size for sched (in bytes) */
197  uint32_t sched_event_freq; /* Default check frequency for sched */
198  uint64_t sched_sleep_nsec; /* Default nanoseconds for scheduler sleep */
199  ABTI_ythread *p_primary_ythread; /* Primary ULT */
200 
201  uint32_t
202  mutex_max_handovers; /* Default max. # of local handovers (unused) */
203  uint32_t mutex_max_wakeups; /* Default max. # of wakeups (unused) */
204  size_t huge_page_size; /* Huge page size */
205 #ifdef ABT_CONFIG_USE_MEM_POOL
206  size_t mem_page_size; /* Page size for memory allocation */
207  size_t mem_sp_size; /* Stack page size */
208  uint32_t mem_max_stacks; /* Max. # of stacks kept in each ES */
209  uint32_t mem_max_descs; /* Max. # of descriptors kept in each ES */
210  int mem_lp_alloc; /* How to allocate large pages */
211 
212  ABTI_mem_pool_global_pool mem_pool_stack; /* Pool of stack (default size) */
213  ABTI_mem_pool_global_pool mem_pool_desc; /* Pool of descriptors that can
214  * store ABTI_task. */
215 #ifndef ABT_CONFIG_DISABLE_EXT_THREAD
216  /* They are used for external threads. */
221 #endif
222 #endif
223 
224  ABT_bool print_config; /* Whether to print config on ABT_init */
225 
226 #ifndef ABT_CONFIG_DISABLE_TOOL_INTERFACE
227  ABTI_spinlock tool_writer_lock;
228 
229  ABT_tool_thread_callback_fn tool_thread_cb_f;
230  void *tool_thread_user_arg;
231  ABTD_atomic_uint64 tool_thread_event_mask_tagged;
232 #endif
233 };
234 
235 struct ABTI_local; /* Empty. */
236 
239  ABTI_local *(*get_local_f)(void);
241  void *(*get_local_ptr_f)(void);
243 };
244 
245 struct ABTI_xstream {
246  /* Linked list to manage all execution streams. */
249 
250  int rank; /* Rank */
252  ABTD_atomic_int state; /* State (ABT_xstream_state) */
253  ABTI_sched *p_main_sched; /* Main scheduler, which is the bottom of the
254  * linked list of schedulers */
255  ABTD_xstream_context ctx; /* ES context */
256 
258  *p_root_ythread; /* Root thread that schedulers the main scheduler. */
259  ABTI_pool *p_root_pool; /* Root pool that stores the main scheduler. */
260 
262  ABTI_thread *p_thread; /* Current running ULT/tasklet */
263 
264 #ifdef ABT_CONFIG_USE_MEM_POOL
267 #endif
268 };
269 
270 struct ABTI_sched {
271  ABTI_sched_used used; /* To know if it is used and how */
272  ABT_bool automatic; /* To know if automatic data free */
273  ABTI_sched_kind kind; /* Kind of the scheduler */
274  ABT_sched_type type; /* Can yield or not (ULT or task) */
276  ABT_pool *pools; /* Thread pools */
277  size_t num_pools; /* Number of thread pools */
278  ABTI_ythread *p_ythread; /* Associated ULT */
279  void *data; /* Data for a specific scheduler */
280 
281  /* Scheduler functions */
286 
287 #ifdef ABT_CONFIG_USE_DEBUG_LOG
288  uint64_t id; /* ID */
289 #endif
290 };
291 
293  int idx; /* Index of this element. */
294  ABT_sched_config_type type; /* Element type. */
295  char val[sizeof(double) > sizeof(void *)
296  ? sizeof(double)
297  : sizeof(void *)]; /* Memory for double, int, or pointer */
298  ABTI_sched_config_element *p_next; /* Next element. */
299 };
300 
303 };
304 
305 struct ABTI_pool {
306  ABT_pool_access access; /* Access mode */
307  ABT_bool automatic; /* To know if automatic data free */
308  /* NOTE: int32_t to check if still positive */
309  ABTD_atomic_int32 num_scheds; /* Number of associated schedulers */
310  ABTD_atomic_int32 num_blocked; /* Number of blocked ULTs */
311  void *data; /* Specific data */
312  uint64_t id; /* ID */
313 
314  /* Functions to manage units */
319 
320  /* Functions to manage the pool */
330 };
331 
347 };
348 
349 struct ABTI_thread {
352  ABTD_atomic_int is_in_pool; /* Whether this thread is in a pool. */
353  ABTI_thread_type type; /* Thread type */
354  ABT_unit unit; /* Unit enclosing this thread */
355  ABTI_xstream *p_last_xstream; /* Last ES where it ran */
356  ABTI_thread *p_parent; /* Parent thread */
357  void (*f_thread)(void *); /* Thread function */
358  void *p_arg; /* Thread function argument */
359  ABTD_atomic_int state; /* State (ABT_thread_state) */
361  ABTI_pool *p_pool; /* Associated pool */
362  ABTD_atomic_ptr p_keytable; /* Thread-specific data (ABTI_ktable *) */
363  ABT_unit_id id; /* ID */
364 };
365 
367  void *p_stack; /* Stack address */
368  size_t stacksize; /* Stack size (in bytes) */
369  ABTI_thread_type thread_type; /* Thread type */
370 #ifndef ABT_CONFIG_DISABLE_MIGRATION
371  ABT_bool migratable; /* Migratability */
372  void (*f_cb)(ABT_thread, void *); /* Callback function */
373  void *p_cb_arg; /* Callback function argument */
374 #endif
375 };
376 
378  void (*f_migration_cb)(ABT_thread, void *); /* Callback function */
379  void *p_migration_cb_arg; /* Callback function argument */
381  p_migration_pool; /* Destination of migration (ABTI_pool *) */
382 };
383 
384 struct ABTI_ythread {
385  ABTI_thread thread; /* Common thread definition */
386  ABTD_ythread_context ctx; /* Context */
387  void *p_stack; /* Stack address */
388  size_t stacksize; /* Stack size (in bytes) */
389 };
390 
391 struct ABTI_key {
392  void (*f_destructor)(void *value);
393  uint32_t id;
394 };
395 
396 struct ABTI_ktelem {
397  /* information of ABTI_key */
398  void (*f_destructor)(void *value);
399  uint32_t key_id;
400  void *value;
401  ABTD_atomic_ptr p_next; /* Next element (ABTI_ktelem *) */
402 };
403 
404 struct ABTI_ktable {
405  int size; /* size of the table */
406  ABTI_spinlock lock; /* Protects any new entry creation. */
407  void *p_used_mem;
408  void *p_extra_mem;
410  ABTD_atomic_ptr p_elems[1]; /* element array (ABTI_ktelem *) */
411 };
412 
413 struct ABTI_cond {
417 };
418 
419 struct ABTI_rwlock {
422  size_t reader_count;
424 };
425 
429  void *value;
430  size_t nbytes;
432 };
433 
434 struct ABTI_future {
438  void **array;
439  void (*p_callback)(void **arg);
441 };
442 
443 struct ABTI_barrier {
444  size_t num_waiters;
445  volatile size_t counter;
448 };
449 
451  uint32_t num_waiters;
452 #ifdef HAVE_PTHREAD_BARRIER_INIT
454 #else
455  ABTI_spinlock lock;
456  uint32_t counter;
457  ABTD_atomic_uint64 tag;
458 #endif
459 };
460 
461 struct ABTI_timer {
464 };
465 
466 #ifndef ABT_CONFIG_DISABLE_TOOL_INTERFACE
467 struct ABTI_tool_context {
468  ABTI_thread *p_caller;
469  ABTI_pool *p_pool;
471  *p_parent; /* Parent of the target thread. Used to get the depth */
472  ABT_sync_event_type sync_event_type;
473  void *p_sync_object; /* ABTI type */
474 };
475 #endif
476 
477 /* Global Data */
480 
481 /* ES Local Data */
483 
484 /* Execution Stream (ES) */
486  ABTI_xstream **pp_xstream);
488  ABTI_xstream **pp_local_xstream,
489  ABTI_xstream *p_xstream,
490  ABTI_ythread *p_ythread);
491 void ABTI_xstream_free(ABTI_global *p_global, ABTI_local *p_local,
492  ABTI_xstream *p_xstream, ABT_bool force_free);
493 void ABTI_xstream_schedule(void *p_arg);
494 void ABTI_xstream_run_unit(ABTI_global *p_global,
495  ABTI_xstream **pp_local_xstream, ABT_unit unit,
496  ABTI_pool *p_pool);
497 void ABTI_xstream_check_events(ABTI_xstream *p_xstream, ABTI_sched *p_sched);
498 void ABTI_xstream_print(ABTI_xstream *p_xstream, FILE *p_os, int indent,
499  ABT_bool print_sub);
500 
501 /* Scheduler */
506 void ABTI_sched_finish(ABTI_sched *p_sched);
507 void ABTI_sched_exit(ABTI_sched *p_sched);
508 ABTU_ret_err int ABTI_sched_create_basic(ABT_sched_predef predef, int num_pools,
509  ABT_pool *pools,
510  ABTI_sched_config *p_config,
511  ABTI_sched **pp_newsched);
512 void ABTI_sched_free(ABTI_global *p_global, ABTI_local *p_local,
513  ABTI_sched *p_sched, ABT_bool force_free);
515  ABTI_pool **);
517 size_t ABTI_sched_get_size(ABTI_sched *p_sched);
518 size_t ABTI_sched_get_total_size(ABTI_sched *p_sched);
519 size_t ABTI_sched_get_effective_size(ABTI_local *p_local, ABTI_sched *p_sched);
520 void ABTI_sched_print(ABTI_sched *p_sched, FILE *p_os, int indent,
521  ABT_bool print_sub);
522 void ABTI_sched_reset_id(void);
523 
524 /* Scheduler config */
526  int idx, void *p_val);
527 
528 /* Pool */
530  ABT_pool_access access,
531  ABT_bool automatic,
532  ABTI_pool **pp_newpool);
533 void ABTI_pool_free(ABTI_pool *p_pool);
535  ABTI_pool_def *p_def);
537  ABTI_pool_def *p_def);
538 void ABTI_pool_print(ABTI_pool *p_pool, FILE *p_os, int indent);
539 void ABTI_pool_reset_id(void);
540 
541 /* Work Unit */
543 
544 /* Threads */
546  ABTI_local *p_local,
547  ABTI_thread *p_thread,
548  ABTI_thread_mig_data **pp_mig_data);
549 void ABTI_thread_revive(ABTI_local *p_local, ABTI_pool *p_pool,
550  void (*thread_func)(void *), void *arg,
551  ABTI_thread *p_thread);
552 void ABTI_thread_join(ABTI_local **pp_local, ABTI_thread *p_thread);
553 void ABTI_thread_free(ABTI_global *p_global, ABTI_local *p_local,
554  ABTI_thread *p_thread);
555 void ABTI_thread_print(ABTI_thread *p_thread, FILE *p_os, int indent);
556 void ABTI_thread_reset_id(void);
558 
559 /* Yieldable threads */
561  ABTI_local *p_local,
562  ABTI_xstream *p_xstream,
563  ABTI_ythread **pp_root_ythread);
565  ABTI_local *p_local,
566  ABTI_xstream *p_xstream,
567  ABTI_ythread **p_ythread);
569  ABTI_local *p_local,
570  ABTI_xstream *p_xstream,
571  ABTI_sched *p_sched);
573  ABTI_local *p_local,
574  ABTI_pool *p_pool,
575  ABTI_sched *p_sched);
576 ABTU_noreturn void ABTI_ythread_exit(ABTI_xstream *p_local_xstream,
577  ABTI_ythread *p_ythread);
578 void ABTI_ythread_free_primary(ABTI_global *p_global, ABTI_local *p_local,
579  ABTI_ythread *p_ythread);
580 void ABTI_ythread_free_root(ABTI_global *p_global, ABTI_local *p_local,
581  ABTI_ythread *p_ythread);
582 void ABTI_ythread_set_blocked(ABTI_ythread *p_ythread);
583 void ABTI_ythread_suspend(ABTI_xstream **pp_local_xstream,
584  ABTI_ythread *p_ythread,
585  ABT_sync_event_type sync_event_type, void *p_sync);
586 void ABTI_ythread_set_ready(ABTI_local *p_local, ABTI_ythread *p_ythread);
587 void ABTI_ythread_print_stack(ABTI_ythread *p_ythread, FILE *p_os);
588 
589 /* Thread attributes */
590 void ABTI_thread_attr_print(ABTI_thread_attr *p_attr, FILE *p_os, int indent);
591 ABTU_ret_err int
593  ABTI_thread_attr **pp_dup_attr) ABTU_ret_err;
594 
595 /* Key */
596 void ABTI_ktable_free(ABTI_global *p_global, ABTI_local *p_local,
597  ABTI_ktable *p_ktable);
598 
599 /* Information */
600 void ABTI_info_print_config(ABTI_global *p_global, FILE *fp);
602 
603 #include "abti_timer.h"
604 #include "abti_log.h"
605 #include "abti_local.h"
606 #include "abti_global.h"
607 #include "abti_self.h"
608 #include "abti_pool.h"
609 #include "abti_sched.h"
610 #include "abti_config.h"
611 #include "abti_stream.h"
612 #include "abti_thread.h"
613 #include "abti_tool.h"
614 #include "abti_ythread.h"
615 #include "abti_thread_attr.h"
616 #include "abti_waitlist.h"
617 #include "abti_mutex.h"
618 #include "abti_mutex_attr.h"
619 #include "abti_cond.h"
620 #include "abti_rwlock.h"
621 #include "abti_eventual.h"
622 #include "abti_future.h"
623 #include "abti_barrier.h"
624 #include "abti_stream_barrier.h"
625 #include "abti_mem.h"
626 #include "abti_key.h"
627 
628 #endif /* ABTI_H_INCLUDED */
ABT_pool_pop_fn
ABT_unit(* ABT_pool_pop_fn)(ABT_pool)
Definition: abt.h:1412
ABTI_pool_def::p_init
ABT_pool_init_fn p_init
Definition: abti.h:338
ABTI_key
Definition: abti.h:391
gp_ABTI_local_func
ABTI_local_func gp_ABTI_local_func
Definition: local.c:23
ABTI_future::lock
ABTI_spinlock lock
Definition: abti.h:435
ABTI_pool_def::p_get_size
ABT_pool_get_size_fn p_get_size
Definition: abti.h:339
ABTI_eventual::ready
ABT_bool ready
Definition: abti.h:428
ABT_sched_predef
ABT_sched_predef
Predefined scheduler type.
Definition: abt.h:465
ABTI_sched::data
void * data
Definition: abti.h:279
ABTI_global::mem_pool_desc_ext
ABTI_mem_pool_local_pool mem_pool_desc_ext
Definition: abti.h:220
ABTI_SCHED_CONFIG_HTABLE_SIZE
#define ABTI_SCHED_CONFIG_HTABLE_SIZE
Definition: abti.h:58
ABTI_barrier::counter
volatile size_t counter
Definition: abti.h:445
ABTI_pool::num_blocked
ABTD_atomic_int32 num_blocked
Definition: abti.h:310
ABTI_xstream::ctx
ABTD_xstream_context ctx
Definition: abti.h:255
ABTI_global::sched_sleep_nsec
uint64_t sched_sleep_nsec
Definition: abti.h:198
abti_global.h
abti_ythread.h
ABTI_thread_mig_data::f_migration_cb
void(* f_migration_cb)(ABT_thread, void *)
Definition: abti.h:378
ABTD_time
struct timespec ABTD_time
Definition: abtd.h:91
ABT_bool
int ABT_bool
Boolean type.
Definition: abt.h:999
ABTI_global::sched_stacksize
size_t sched_stacksize
Definition: abti.h:196
ABTI_sched_config_element::val
char val[sizeof(double) > sizeof(void *) ? sizeof(double) :sizeof(void *)]
Definition: abti.h:297
ABTI_XSTREAM_TYPE_PRIMARY
@ ABTI_XSTREAM_TYPE_PRIMARY
Definition: abti.h:68
ABTI_future::array
void ** array
Definition: abti.h:438
abti_thread_attr.h
ABTI_sched_config::elements
ABTI_sched_config_element elements[ABTI_SCHED_CONFIG_HTABLE_SIZE]
Definition: abti.h:302
abti_key.h
ABTI_sched_get_total_size
size_t ABTI_sched_get_total_size(ABTI_sched *p_sched)
Definition: sched.c:906
ABTI_sched_create_basic
ABTU_ret_err int ABTI_sched_create_basic(ABT_sched_predef predef, int num_pools, ABT_pool *pools, ABTI_sched_config *p_config, ABTI_sched **pp_newsched)
Definition: sched.c:655
ABT_unit_is_in_pool_fn
ABT_bool(* ABT_unit_is_in_pool_fn)(ABT_unit)
Definition: abt.h:1405
ABTI_SCHED_NOT_USED
@ ABTI_SCHED_NOT_USED
Definition: abti.h:73
ABTD_atomic_int
Definition: abtd_atomic.h:15
abti_rwlock.h
ABTI_pool::p_print_all
ABT_pool_print_all_fn p_print_all
Definition: abti.h:329
abti_sched.h
ABTD_atomic_uint64
Definition: abtd_atomic.h:35
ABT_sched_run_fn
void(* ABT_sched_run_fn)(ABT_sched)
Definition: abt.h:1291
abti_cond.h
ABTI_pool_def::p_remove
ABT_pool_remove_fn p_remove
Definition: abti.h:344
ABTI_global::mem_lp_alloc
int mem_lp_alloc
Definition: abti.h:210
ABT_thread
struct ABT_thread_opaque * ABT_thread
Work unit handle type.
Definition: abt.h:888
ABTI_thread_mig_data::p_migration_pool
ABTD_atomic_ptr p_migration_pool
Definition: abti.h:381
ABTI_pool_def::p_print_all
ABT_pool_print_all_fn p_print_all
Definition: abti.h:346
ABTI_mem_pool_local_pool
Definition: abti_mem_pool.h:90
abti_thread.h
ABTI_xstream_schedule
void ABTI_xstream_schedule(void *p_arg)
ABTI_future
Definition: abti.h:434
ABTI_pool_def
Definition: abti.h:332
ABTI_global::mem_pool_stack
ABTI_mem_pool_global_pool mem_pool_stack
Definition: abti.h:212
ABTI_thread::type
ABTI_thread_type type
Definition: abti.h:353
ABTI_barrier::waitlist
ABTI_waitlist waitlist
Definition: abti.h:447
ABTI_thread_attr::migratable
ABT_bool migratable
Definition: abti.h:371
ABTI_sched_exit
void ABTI_sched_exit(ABTI_sched *p_sched)
Definition: sched.c:650
ABTI_mutex_attr::attrs
int attrs
Definition: abti.h:166
ABTI_sched_used
ABTI_sched_used
Definition: abti.h:72
abti_log.h
ABTI_eventual::lock
ABTI_spinlock lock
Definition: abti.h:427
ABTI_eventual
Definition: abti.h:426
ABTI_pool_reset_id
void ABTI_pool_reset_id(void)
Definition: pool.c:936
ABTD_xstream_context
Definition: abtd.h:21
ABTI_xstream_barrier
Definition: abti.h:450
ABTI_thread_print
void ABTI_thread_print(ABTI_thread *p_thread, FILE *p_os, int indent)
Definition: thread.c:2390
ABTI_rwlock::reader_count
size_t reader_count
Definition: abti.h:422
ABTI_ythread::stacksize
size_t stacksize
Definition: abti.h:388
abti_stream.h
abti_spinlock.h
ABT_pool_pop_wait_fn
ABT_unit(* ABT_pool_pop_wait_fn)(ABT_pool, double)
Definition: abt.h:1413
ABTI_sched::num_pools
size_t num_pools
Definition: abti.h:277
ABTI_thread::p_next
ABTI_thread * p_next
Definition: abti.h:351
ABTI_sched::automatic
ABT_bool automatic
Definition: abti.h:272
ABTI_xstream::rank
int rank
Definition: abti.h:250
gp_ABTI_global
ABTI_global * gp_ABTI_global
Definition: global.c:18
ABTI_thread::p_arg
void * p_arg
Definition: abti.h:358
abti_timer.h
ABTI_local_func
Definition: abti.h:237
ABTI_waitlist::p_tail
ABTI_thread * p_tail
Definition: abti.h:162
ABTU_noreturn
#define ABTU_noreturn
Definition: abtu.h:122
ABTI_thread::unit
ABT_unit unit
Definition: abti.h:354
ABTI_xstream::type
ABTI_xstream_type type
Definition: abti.h:251
ABTI_thread::request
ABTD_atomic_uint32 request
Definition: abti.h:360
ABTI_timer::end
ABTD_time end
Definition: abti.h:463
ABTI_xstream::mem_pool_stack
ABTI_mem_pool_local_pool mem_pool_stack
Definition: abti.h:265
abti_barrier.h
ABTI_pool::automatic
ABT_bool automatic
Definition: abti.h:307
ABTI_thread_get_id
ABT_unit_id ABTI_thread_get_id(ABTI_thread *p_thread)
Definition: thread.c:2490
ABTI_ktable::extra_mem_size
size_t extra_mem_size
Definition: abti.h:409
ABTI_global::print_config
ABT_bool print_config
Definition: abti.h:224
ABTI_thread_mig_data
Definition: abti.h:377
ABTD_XSTREAM_LOCAL
#define ABTD_XSTREAM_LOCAL
Definition: abtd.h:41
ABTI_thread_free
void ABTI_thread_free(ABTI_global *p_global, ABTI_local *p_local, ABTI_thread *p_thread)
Definition: thread.c:2329
abtd.h
ABTI_future::counter
ABTD_atomic_size counter
Definition: abti.h:436
ABTI_pool::u_create_from_thread
ABT_unit_create_from_thread_fn u_create_from_thread
Definition: abti.h:317
ABTI_eventual::nbytes
size_t nbytes
Definition: abti.h:430
ABTI_ythread_create_primary
ABTU_ret_err int ABTI_ythread_create_primary(ABTI_global *p_global, ABTI_local *p_local, ABTI_xstream *p_xstream, ABTI_ythread **p_ythread)
Definition: thread.c:2229
ABT_pool_pop_timedwait_fn
ABT_unit(* ABT_pool_pop_timedwait_fn)(ABT_pool, double)
Definition: abt.h:1414
ABTI_xstream_run_unit
void ABTI_xstream_run_unit(ABTI_global *p_global, ABTI_xstream **pp_local_xstream, ABT_unit unit, ABTI_pool *p_pool)
Definition: stream.c:1522
ABTI_thread
Definition: abti.h:349
ABTI_pool_get_fifo_def
ABTU_ret_err int ABTI_pool_get_fifo_def(ABT_pool_access access, ABTI_pool_def *p_def)
Definition: fifo.c:44
ABT_sched_type
ABT_sched_type
Scheduler's work unit type.
Definition: abt.h:490
ABTI_barrier
Definition: abti.h:443
ABTI_xstream
Definition: abti.h:245
ABTD_ythread_context
Definition: abtd_fcontext.h:33
ABT_pool_print_all_fn
int(* ABT_pool_print_all_fn)(ABT_pool, void *arg, void(*)(void *, ABT_unit))
Definition: abt.h:1417
abti_future.h
ABTI_future::num_compartments
size_t num_compartments
Definition: abti.h:437
ABTI_pool::p_push
ABT_pool_push_fn p_push
Definition: abti.h:323
ABTI_sched_config
Definition: abti.h:301
ABT_pool
struct ABT_pool_opaque * ABT_pool
Pool handle type.
Definition: abt.h:839
ABTI_sched_has_to_stop
ABT_bool ABTI_sched_has_to_stop(ABTI_local **pp_local, ABTI_sched *p_sched)
Definition: sched.c:865
ABTI_sched::p_ythread
ABTI_ythread * p_ythread
Definition: abti.h:278
ABTI_mutex::attrs
int attrs
Definition: abti.h:170
ABTI_waitlist
Definition: abti.h:160
ABTI_sched::type
ABT_sched_type type
Definition: abti.h:274
ABTI_pool_def::u_free
ABT_unit_free_fn u_free
Definition: abti.h:337
ABTI_xstream::p_next
ABTI_xstream * p_next
Definition: abti.h:248
ABTI_SCHED_IN_POOL
@ ABTI_SCHED_IN_POOL
Definition: abti.h:75
ABTI_thread_attr_print
void ABTI_thread_attr_print(ABTI_thread_attr *p_attr, FILE *p_os, int indent)
Definition: thread_attr.c:369
ABTI_thread_attr
Definition: abti.h:366
ABTI_sched::used
ABTI_sched_used used
Definition: abti.h:271
ABTI_pool
Definition: abti.h:305
ABT_unit_free_fn
void(* ABT_unit_free_fn)(ABT_unit *)
Definition: abt.h:1408
ABTI_spinlock
Definition: abti_spinlock.h:9
abti_pool.h
ABTI_sched_get_basic_wait_def
ABT_sched_def * ABTI_sched_get_basic_wait_def(void)
Definition: basic_wait.c:27
ABTI_cond
Definition: abti.h:413
ABTI_xstream_barrier::num_waiters
uint32_t num_waiters
Definition: abti.h:451
ABTI_pool_def::u_is_in_pool
ABT_unit_is_in_pool_fn u_is_in_pool
Definition: abti.h:335
ABT_sync_event_type
ABT_sync_event_type
Type of synchronization event.
Definition: abt.h:658
ABTI_rwlock::write_flag
int write_flag
Definition: abti.h:423
ABTI_global::use_logging
ABT_bool use_logging
Definition: abti.h:192
ABTI_pool_free
void ABTI_pool_free(ABTI_pool *p_pool)
Definition: pool.c:877
ABTI_info_check_print_all_thread_stacks
void ABTI_info_check_print_all_thread_stacks(void)
Definition: info.c:927
ABTI_timer
Definition: abti.h:461
ABTI_ythread_exit
ABTU_noreturn void ABTI_ythread_exit(ABTI_xstream *p_local_xstream, ABTI_ythread *p_ythread)
Definition: thread.c:2354
ABTI_pool::data
void * data
Definition: abti.h:311
ABTI_ythread_free_root
void ABTI_ythread_free_root(ABTI_global *p_global, ABTI_local *p_local, ABTI_ythread *p_ythread)
Definition: thread.c:2348
ABTI_ktable::p_extra_mem
void * p_extra_mem
Definition: abti.h:408
ABT_unit_id
uint64_t ABT_unit_id
Work unit ID type.
Definition: abt.h:877
ABTI_mutex::lock
ABTI_spinlock lock
Definition: abti.h:173
ABTI_rwlock
Definition: abti.h:419
ABT_pool_remove_fn
int(* ABT_pool_remove_fn)(ABT_pool, ABT_unit)
Definition: abt.h:1415
ABTI_global::mem_page_size
size_t mem_page_size
Definition: abti.h:206
ABT_pool_init_fn
int(* ABT_pool_init_fn)(ABT_pool, ABT_pool_config)
Definition: abt.h:1409
ABTI_thread::state
ABTD_atomic_int state
Definition: abti.h:359
ABTI_pool::u_is_in_pool
ABT_unit_is_in_pool_fn u_is_in_pool
Definition: abti.h:316
ABTI_global::thread_stacksize
size_t thread_stacksize
Definition: abti.h:195
ABTI_sched_id
void * ABTI_sched_id
Definition: abti.h:115
ABTI_pool::p_pop_wait
ABT_pool_pop_wait_fn p_pop_wait
Definition: abti.h:325
ABTI_pool::p_pop
ABT_pool_pop_fn p_pop
Definition: abti.h:324
ABTI_barrier::num_waiters
size_t num_waiters
Definition: abti.h:444
ABTD_atomic_int32
Definition: abtd_atomic.h:23
ABTI_global::huge_page_size
size_t huge_page_size
Definition: abti.h:204
ABTI_timer::start
ABTD_time start
Definition: abti.h:462
ABTI_xstream_free
void ABTI_xstream_free(ABTI_global *p_global, ABTI_local *p_local, ABTI_xstream *p_xstream, ABT_bool force_free)
Definition: stream.c:1555
ABTI_sched_finish
void ABTI_sched_finish(ABTI_sched *p_sched)
Definition: sched.c:645
ABTI_sched::free
ABT_sched_free_fn free
Definition: abti.h:284
ABTD_atomic_ptr
Definition: abtd_atomic.h:39
abti_stream_barrier.h
ABTI_sched_config_element::type
ABT_sched_config_type type
Definition: abti.h:294
ABTI_pool_create_basic
ABTU_ret_err int ABTI_pool_create_basic(ABT_pool_kind kind, ABT_pool_access access, ABT_bool automatic, ABTI_pool **pp_newpool)
Definition: pool.c:845
ABTI_xstream::p_main_sched
ABTI_sched * p_main_sched
Definition: abti.h:253
ABTI_pool::p_remove
ABT_pool_remove_fn p_remove
Definition: abti.h:327
ABT_sched_init_fn
int(* ABT_sched_init_fn)(ABT_sched, ABT_sched_config)
Definition: abt.h:1290
ABTI_thread_mig_data::p_migration_cb_arg
void * p_migration_cb_arg
Definition: abti.h:379
ABTI_sched_get_migration_pool
ABTU_ret_err int ABTI_sched_get_migration_pool(ABTI_sched *, ABTI_pool *, ABTI_pool **)
Definition: sched.c:889
ABTI_thread_attr::p_cb_arg
void * p_cb_arg
Definition: abti.h:373
ABTI_sched::get_migr_pool
ABT_sched_get_migr_pool_fn get_migr_pool
Definition: abti.h:285
ABTI_pool::u_get_thread
ABT_unit_get_thread_fn u_get_thread
Definition: abti.h:315
abti_mem.h
ABTI_global::sched_event_freq
uint32_t sched_event_freq
Definition: abti.h:197
ABTI_global::mem_pool_stack_lock
ABTI_spinlock mem_pool_stack_lock
Definition: abti.h:217
abti_config.h
ABTI_XSTREAM_TYPE_SECONDARY
@ ABTI_XSTREAM_TYPE_SECONDARY
Definition: abti.h:69
ABTI_rwlock::cond
ABTI_cond cond
Definition: abti.h:421
ABTI_sched_reset_id
void ABTI_sched_reset_id(void)
Definition: sched.c:1027
ABTI_thread_join
void ABTI_thread_join(ABTI_local **pp_local, ABTI_thread *p_thread)
Definition: thread.c:2324
ABTI_ktelem::value
void * value
Definition: abti.h:400
ABTI_sched_config_element::idx
int idx
Definition: abti.h:293
ABTD_atomic_uint32
Definition: abtd_atomic.h:27
ABTI_sched_get_basic_def
ABT_sched_def * ABTI_sched_get_basic_def(void)
Definition: basic.c:30
ABTI_sched_config_read
ABTU_ret_err int ABTI_sched_config_read(const ABTI_sched_config *p_config, int idx, void *p_val)
Definition: config.c:258
ABT_unit
struct ABT_unit_opaque * ABT_unit
Work unit handle type for scheduling.
Definition: abt.h:867
ABTI_sched_get_randws_def
ABT_sched_def * ABTI_sched_get_randws_def(void)
Definition: randws.c:31
abt_config.h
ABTI_global::mem_pool_stack_ext
ABTI_mem_pool_local_pool mem_pool_stack_ext
Definition: abti.h:218
ABTD_xstream_barrier
pthread_barrier_t ABTD_xstream_barrier
Definition: abtd.h:31
ABTI_ythread::ctx
ABTD_ythread_context ctx
Definition: abti.h:386
ABTI_xstream_print
void ABTI_xstream_print(ABTI_xstream *p_xstream, FILE *p_os, int indent, ABT_bool print_sub)
Definition: stream.c:1591
ABTI_pool_def::u_create_from_thread
ABT_unit_create_from_thread_fn u_create_from_thread
Definition: abti.h:336
ABTI_global::mutex_max_handovers
uint32_t mutex_max_handovers
Definition: abti.h:202
ABTI_cond::p_waiter_mutex
ABTI_mutex * p_waiter_mutex
Definition: abti.h:415
ABTI_pool_def::p_push
ABT_pool_push_fn p_push
Definition: abti.h:340
ABTI_global::mem_sp_size
size_t mem_sp_size
Definition: abti.h:207
ABTI_pool_def::p_pop_timedwait
ABT_pool_pop_timedwait_fn p_pop_timedwait
Definition: abti.h:343
ABTI_sched::pools
ABT_pool * pools
Definition: abti.h:276
ABTI_pool::p_get_size
ABT_pool_get_size_fn p_get_size
Definition: abti.h:322
ABTI_thread::is_in_pool
ABTD_atomic_int is_in_pool
Definition: abti.h:352
ABT_CONFIG_STATIC_CACHELINE_SIZE
#define ABT_CONFIG_STATIC_CACHELINE_SIZE
Definition: abt_config.h:69
ABTI_xstream::state
ABTD_atomic_int state
Definition: abti.h:252
ABTI_global::num_xstreams
int num_xstreams
Definition: abti.h:184
ABTI_pool::u_free
ABT_unit_free_fn u_free
Definition: abti.h:318
ABTI_pool::p_init
ABT_pool_init_fn p_init
Definition: abti.h:321
ABTI_global::p_primary_ythread
ABTI_ythread * p_primary_ythread
Definition: abti.h:199
ABTI_mutex::nesting_cnt
int nesting_cnt
Definition: abti.h:174
ABTI_local_func::padding2
char padding2[ABT_CONFIG_STATIC_CACHELINE_SIZE]
Definition: abti.h:242
ABTI_xstream::p_root_pool
ABTI_pool * p_root_pool
Definition: abti.h:259
ABTI_xstream_check_events
void ABTI_xstream_check_events(ABTI_xstream *p_xstream, ABTI_sched *p_sched)
Definition: stream.c:1539
abti_valgrind.h
ABTU_ret_err
#define ABTU_ret_err
Definition: abtu.h:138
ABTI_pool_def::p_free
ABT_pool_free_fn p_free
Definition: abti.h:345
ABTI_thread_attr::stacksize
size_t stacksize
Definition: abti.h:368
ABTI_sched_config_element::p_next
ABTI_sched_config_element * p_next
Definition: abti.h:298
ABTI_local_func::padding1
char padding1[ABT_CONFIG_STATIC_CACHELINE_SIZE]
Definition: abti.h:238
ABTI_thread_id
struct ABTI_thread_id_opaque * ABTI_thread_id
Definition: abti.h:146
ABTI_pool_def::p_pop_wait
ABT_pool_pop_wait_fn p_pop_wait
Definition: abti.h:342
abt.h
ABTI_global::p_xstream_head
ABTI_xstream * p_xstream_head
Definition: abti.h:185
ABTI_sched::kind
ABTI_sched_kind kind
Definition: abti.h:273
ABTI_xstream::mem_pool_desc
ABTI_mem_pool_local_pool mem_pool_desc
Definition: abti.h:266
ABTI_ythread_set_blocked
void ABTI_ythread_set_blocked(ABTI_ythread *p_ythread)
Definition: ythread.c:23
ABT_unit_get_thread_fn
ABT_thread(* ABT_unit_get_thread_fn)(ABT_unit)
Definition: abt.h:1403
ABTI_local_func::set_local_xstream_f
void(* set_local_xstream_f)(ABTI_xstream *)
Definition: abti.h:240
ABTI_global::xstream_list_lock
ABTI_spinlock xstream_list_lock
Definition: abti.h:187
ABTI_SCHED_MAIN
@ ABTI_SCHED_MAIN
Definition: abti.h:74
ABTI_pool::p_free
ABT_pool_free_fn p_free
Definition: abti.h:328
ABTI_thread_attr_dup
ABTU_ret_err int ABTI_thread_attr_dup(const ABTI_thread_attr *p_attr, ABTI_thread_attr **pp_dup_attr) ABTU_ret_err
Definition: thread_attr.c:413
ABTI_global::mutex_max_wakeups
uint32_t mutex_max_wakeups
Definition: abti.h:203
ABTI_sched::run
ABT_sched_run_fn run
Definition: abti.h:283
ABT_pool_push_fn
void(* ABT_pool_push_fn)(ABT_pool, ABT_unit)
Definition: abt.h:1411
ABTI_thread_type
uint32_t ABTI_thread_type
Definition: abti.h:123
ABTI_ktelem::key_id
uint32_t key_id
Definition: abti.h:399
ABTI_sched::request
ABTD_atomic_uint32 request
Definition: abti.h:275
ABTI_mem_pool_global_pool
Definition: abti_mem_pool.h:49
abti_waitlist.h
ABTI_global::key_table_size
uint32_t key_table_size
Definition: abti.h:194
abti_sync_lifo.h
ABTI_ktable
Definition: abti.h:404
ABTI_waitlist::p_head
ABTI_thread * p_head
Definition: abti.h:161
ABTI_key::id
uint32_t id
Definition: abti.h:393
ABTI_sched
Definition: abti.h:270
ABTI_xstream_start_primary
void ABTI_xstream_start_primary(ABTI_global *p_global, ABTI_xstream **pp_local_xstream, ABTI_xstream *p_xstream, ABTI_ythread *p_ythread)
Definition: stream.c:1493
ABTI_ythread_create_root
ABTU_ret_err int ABTI_ythread_create_root(ABTI_global *p_global, ABTI_local *p_local, ABTI_xstream *p_xstream, ABTI_ythread **pp_root_ythread)
Definition: thread.c:2257
ABTI_barrier::lock
ABTI_spinlock lock
Definition: abti.h:446
ABTI_xstream::p_root_ythread
ABTI_ythread * p_root_ythread
Definition: abti.h:258
ABTI_ythread
Definition: abti.h:384
ABTI_sched_kind
uintptr_t ABTI_sched_kind
Definition: abti.h:116
ABTI_sched_config_element
Definition: abti.h:292
ABTI_pool::access
ABT_pool_access access
Definition: abti.h:306
ABTI_pool_def::p_pop
ABT_pool_pop_fn p_pop
Definition: abti.h:341
abti_mem_pool.h
ABTI_global::mem_max_stacks
uint32_t mem_max_stacks
Definition: abti.h:208
ABTI_ythread_set_ready
void ABTI_ythread_set_ready(ABTI_local *p_local, ABTI_ythread *p_ythread)
Definition: ythread.c:65
ABTI_ktable::size
int size
Definition: abti.h:405
ABTI_mutex_attr
Definition: abti.h:165
ABTI_eventual::value
void * value
Definition: abti.h:429
abti_tool.h
ABTI_ythread_free_primary
void ABTI_ythread_free_primary(ABTI_global *p_global, ABTI_local *p_local, ABTI_ythread *p_ythread)
Definition: thread.c:2339
ABTD_atomic_size
Definition: abtd_atomic.h:19
ABTI_ythread_suspend
void ABTI_ythread_suspend(ABTI_xstream **pp_local_xstream, ABTI_ythread *p_ythread, ABT_sync_event_type sync_event_type, void *p_sync)
Definition: ythread.c:45
ABTI_eventual::waitlist
ABTI_waitlist waitlist
Definition: abti.h:431
ABTI_ktelem
Definition: abti.h:396
abti_eventual.h
ABTI_thread::p_parent
ABTI_thread * p_parent
Definition: abti.h:356
ABTI_ktelem::f_destructor
void(* f_destructor)(void *value)
Definition: abti.h:398
ABT_sched_def
A struct that defines a scheduler.
Definition: abt.h:1300
lp_ABTI_local
ABTD_XSTREAM_LOCAL ABTI_local * lp_ABTI_local
Definition: local.c:29
ABTI_future::waitlist
ABTI_waitlist waitlist
Definition: abti.h:440
ABTI_rwlock::mutex
ABTI_mutex mutex
Definition: abti.h:420
ABTI_ythread_create_main_sched
ABTU_ret_err int ABTI_ythread_create_main_sched(ABTI_global *p_global, ABTI_local *p_local, ABTI_xstream *p_xstream, ABTI_sched *p_sched)
Definition: thread.c:2284
ABT_sched_get_migr_pool_fn
ABT_pool(* ABT_sched_get_migr_pool_fn)(ABT_sched)
Definition: abt.h:1294
ABTI_global::use_debug
ABT_bool use_debug
Definition: abti.h:193
ABTI_thread::p_last_xstream
ABTI_xstream * p_last_xstream
Definition: abti.h:355
ABT_pool_get_size_fn
size_t(* ABT_pool_get_size_fn)(ABT_pool)
Definition: abt.h:1410
ABTI_ktable::p_used_mem
void * p_used_mem
Definition: abti.h:407
ABTI_sched::init
ABT_sched_init_fn init
Definition: abti.h:282
ABTI_thread_attr::p_stack
void * p_stack
Definition: abti.h:367
ABTI_ythread::p_stack
void * p_stack
Definition: abti.h:387
ABTI_pool_get_fifo_wait_def
ABTU_ret_err int ABTI_pool_get_fifo_wait_def(ABT_pool_access access, ABTI_pool_def *p_def)
Definition: fifo_wait.c:39
ABTI_sched_free
void ABTI_sched_free(ABTI_global *p_global, ABTI_local *p_local, ABTI_sched *p_sched, ABT_bool force_free)
Definition: sched.c:834
ABTI_ktelem::p_next
ABTD_atomic_ptr p_next
Definition: abti.h:401
ABTI_ythread_print_stack
void ABTI_ythread_print_stack(ABTI_ythread *p_ythread, FILE *p_os)
Definition: ythread.c:100
ABTI_thread::p_keytable
ABTD_atomic_ptr p_keytable
Definition: abti.h:362
ABTI_thread_get_mig_data
ABTU_ret_err int ABTI_thread_get_mig_data(ABTI_global *p_global, ABTI_local *p_local, ABTI_thread *p_thread, ABTI_thread_mig_data **pp_mig_data)
Definition: thread.c:2365
ABTI_ythread::thread
ABTI_thread thread
Definition: abti.h:385
ABTI_thread_attr::thread_type
ABTI_thread_type thread_type
Definition: abti.h:369
ABTI_thread::p_prev
ABTI_thread * p_prev
Definition: abti.h:350
ABTI_local
struct ABTI_local ABTI_local
Definition: abti.h:107
ABTI_xstream::ABTU_align_member_var
ABTU_align_member_var(ABT_CONFIG_STATIC_CACHELINE_SIZE) ABTI_thread *p_thread
ABTI_thread_attr::f_cb
void(* f_cb)(ABT_thread, void *)
Definition: abti.h:372
ABT_pool_free_fn
int(* ABT_pool_free_fn)(ABT_pool)
Definition: abt.h:1416
ABTI_global::set_affinity
ABT_bool set_affinity
Definition: abti.h:191
ABTI_thread_revive
void ABTI_thread_revive(ABTI_local *p_local, ABTI_pool *p_pool, void(*thread_func)(void *), void *arg, ABTI_thread *p_thread)
Definition: thread.c:2181
ABTI_ktable::p_elems
ABTD_atomic_ptr p_elems[1]
Definition: abti.h:410
ABTI_pool_print
void ABTI_pool_print(ABTI_pool *p_pool, FILE *p_os, int indent)
Definition: pool.c:887
ABTI_pool::id
uint64_t id
Definition: abti.h:312
abti_mutex_attr.h
ABTI_global
Definition: abti.h:182
ABTI_thread::f_thread
void(* f_thread)(void *)
Definition: abti.h:357
abtu.h
ABTI_unit_set_associated_pool
void ABTI_unit_set_associated_pool(ABT_unit unit, ABTI_pool *p_pool)
Definition: unit.c:52
ABTI_pool_def::u_get_thread
ABT_unit_get_thread_fn u_get_thread
Definition: abti.h:334
ABTI_ktable_free
void ABTI_ktable_free(ABTI_global *p_global, ABTI_local *p_local, ABTI_ktable *p_ktable)
Definition: key.c:232
ABTI_thread_reset_id
void ABTI_thread_reset_id(void)
Definition: thread.c:2485
ABTI_pool_def::access
ABT_pool_access access
Definition: abti.h:333
ABT_tool_thread_callback_fn
void(* ABT_tool_thread_callback_fn)(ABT_thread, ABT_xstream, uint64_t event, ABT_tool_context context, void *user_arg)
Definition: abt.h:1692
ABTI_thread::p_pool
ABTI_pool * p_pool
Definition: abti.h:361
ABTI_ythread_create_sched
ABTU_ret_err int ABTI_ythread_create_sched(ABTI_global *p_global, ABTI_local *p_local, ABTI_pool *p_pool, ABTI_sched *p_sched)
Definition: thread.c:2305
ABTI_global::num_cores
int num_cores
Definition: abti.h:190
ABTI_xstream::p_prev
ABTI_xstream * p_prev
Definition: abti.h:247
abti_error.h
ABTI_xstream_type
ABTI_xstream_type
Definition: abti.h:67
ABTI_native_thread_id
struct ABTI_native_thread_id_opaque * ABTI_native_thread_id
Definition: abti.h:143
ABTI_sched_get_size
size_t ABTI_sched_get_size(ABTI_sched *p_sched)
Definition: sched.c:633
ABT_sched_free_fn
int(* ABT_sched_free_fn)(ABT_sched)
Definition: abt.h:1292
ABTI_xstream_create_primary
ABTU_ret_err int ABTI_xstream_create_primary(ABTI_global *p_global, ABTI_xstream **pp_xstream)
Definition: stream.c:1472
ABT_pool_kind
ABT_pool_kind
Predefined pool type.
Definition: abt.h:504
ABTI_future::p_callback
void(* p_callback)(void **arg)
Definition: abti.h:439
ABTI_cond::waitlist
ABTI_waitlist waitlist
Definition: abti.h:416
ABTI_pool::num_scheds
ABTD_atomic_int32 num_scheds
Definition: abti.h:309
ABTI_global::max_xstreams
int max_xstreams
Definition: abti.h:183
abti_self.h
ABTI_ktable::lock
ABTI_spinlock lock
Definition: abti.h:406
ABTI_thread::id
ABT_unit_id id
Definition: abti.h:363
ABTI_global::mem_pool_desc_lock
ABTI_spinlock mem_pool_desc_lock
Definition: abti.h:219
ABTI_pool::p_pop_timedwait
ABT_pool_pop_timedwait_fn p_pop_timedwait
Definition: abti.h:326
ABTI_global::mem_pool_desc
ABTI_mem_pool_global_pool mem_pool_desc
Definition: abti.h:213
ABTI_cond::lock
ABTI_spinlock lock
Definition: abti.h:414
ABTI_global::mem_max_descs
uint32_t mem_max_descs
Definition: abti.h:209
ABTI_sched_get_effective_size
size_t ABTI_sched_get_effective_size(ABTI_local *p_local, ABTI_sched *p_sched)
Definition: sched.c:923
abti_local.h
ABTI_info_print_config
void ABTI_info_print_config(ABTI_global *p_global, FILE *fp)
Definition: info.c:998
ABTI_sched_get_prio_def
ABT_sched_def * ABTI_sched_get_prio_def(void)
Definition: prio.c:29
ABTI_mutex::owner_id
ABTI_thread_id owner_id
Definition: abti.h:175
ABTI_mutex
Definition: abti.h:169
ABTI_key::f_destructor
void(* f_destructor)(void *value)
Definition: abti.h:392
ABT_unit_create_from_thread_fn
ABT_unit(* ABT_unit_create_from_thread_fn)(ABT_thread)
Definition: abt.h:1406
ABTI_xstream_barrier::bar
ABTD_xstream_barrier bar
Definition: abti.h:453
ABT_sched_config_type
ABT_sched_config_type
A struct that sets and gets a scheduler configuration.
Definition: abt.h:1225
ABT_pool_access
ABT_pool_access
Pool access type.
Definition: abt.h:522
ABTI_sched_print
void ABTI_sched_print(ABTI_sched *p_sched, FILE *p_os, int indent, ABT_bool print_sub)
Definition: sched.c:953
abti_mutex.h