Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
async_api.h File Reference
#include "arch/alloc.h"
+ Include dependency graph for async_api.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void async_meta_init_once (async_meta_s *meta, arch_alloc_s *alloc)
 
void async_meta_init_always (async_meta_s *meta)
 
void async_completion_init (async_meta_s *meta, async_completion_s *completion)
 
void async_completion_complete (async_completion_s *completion)
 
int async_completion_check (async_completion_s *completion)
 
void async_completion_wait (async_completion_s *completion)
 
void async_semaphore_init (async_meta_s *meta, async_semaphore_s *sem)
 
int async_semaphore_value (async_semaphore_s *sem)
 
void async_semaphore_inc (async_semaphore_s *sem)
 
void async_semaphore_dec (async_semaphore_s *sem)
 
void async_condition_init (async_meta_s *meta, async_condition_s *cond)
 
void async_condition_lock (async_condition_s *cond)
 
void async_condition_wait (async_condition_s *cond)
 
void async_condition_notify (async_condition_s *cond)
 
void async_condition_unlock (async_condition_s *cond)
 
void async_meta_exit (async_meta_s *meta)
 

Function Documentation

◆ async_completion_check()

int async_completion_check ( async_completion_s * completion)

Check if completion has been marked as completed.

Parameters
completionCompletion to be checked.
Returns
0 if not completed, !0 if completed.

Definition at line 144 of file ivshmem/async.c.

References async_completion_s::completed, and async_completion_s::mutex.

Referenced by async_thread().

+ Here is the caller graph for this function:

◆ async_completion_complete()

void async_completion_complete ( async_completion_s * completion)

Mark compl as completed and notify pending async_completion_wait() callers.

Parameters
completionCompletion to be marked as completed.

Definition at line 129 of file ivshmem/async.c.

References async_completion_s::completed, async_completion_s::meta, async_completion_s::mutex, async_completion_s::vm_id, and wakeupVm().

Referenced by arax_task_mark_done(), async_condition_init(), async_condition_unlock(), async_condition_wait(), and async_semaphore_inc().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_completion_init()

void async_completion_init ( async_meta_s * meta,
async_completion_s * completion )

Create and register async_completion_s objects created in buff.

Parameters
metaPointer to async_meta_s that will 'own' this completion.
completionCompletion to be initialized
Returns
Number of objects created, should be buff_size/async_completion_size().

Definition at line 118 of file ivshmem/async.c.

References async_completion_s::attr, async_completion_s::completed, async_completion_s::meta, async_completion_s::mutex, async_completion_s::outstanding, and utils_list_node_init().

Referenced by arax_task_alloc(), async_condition_init(), and async_semaphore_dec().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_completion_wait()

void async_completion_wait ( async_completion_s * completion)

Wait for compl to be completed with async_completion_complete().

Parameters
completionSleep untill it has been completed with async_completion_complete.

Definition at line 135 of file ivshmem/async.c.

References _add_completion(), async_completion_s::completed, getVmID(), async_completion_s::meta, async_completion_s::mutex, and async_completion_s::vm_id.

Referenced by arax_task_wait_done(), async_condition_lock(), async_condition_wait(), and async_semaphore_dec().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_condition_init()

void async_condition_init ( async_meta_s * meta,
async_condition_s * cond )

Initialize semaphore.

Parameters
metaPointer to async_meta_s that will 'own' this semaphore.
condCondition to be initialized

Definition at line 206 of file ivshmem/async.c.

References async_completion_complete(), async_completion_init(), async_condition_unlock(), async_semaphore_init(), async_condition_s::c_attr, async_condition_s::condition, async_condition_s::mutex, and async_condition_s::semaphore.

Referenced by arax_accel_init(), arax_pipe_init(), and arax_throttle_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_condition_lock()

void async_condition_lock ( async_condition_s * cond)

Lock on condition cond.

Parameters
condCondition to be read.

Definition at line 213 of file ivshmem/async.c.

References async_completion_wait(), and async_condition_s::mutex.

Referenced by _arax_init(), arax_accel_add_task(), arax_accel_add_vaccel(), arax_accel_del_vaccel(), arax_accel_get_assigned_vaccels(), arax_accel_wait_for_task(), ARAX_OBJ_DTOR_DECL(), arax_pipe_add_orphan_vaccel(), arax_pipe_get_orphan_vaccel(), arax_pipe_orphan_stop(), arax_pipe_remove_orphan_vaccel(), arax_throttle_size_dec(), and arax_throttle_size_inc().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_condition_notify()

void async_condition_notify ( async_condition_s * cond)

Notify cond.

Note
Prior to this call cond must be locked using async_condition_lock().
Parameters
condCondition to be notified.

Definition at line 225 of file ivshmem/async.c.

References async_semaphore_inc(), async_condition_s::condition, and async_condition_s::semaphore.

Referenced by arax_accel_add_task(), arax_accel_add_vaccel(), arax_accel_del_vaccel(), arax_controller_init_done(), arax_pipe_add_orphan_vaccel(), arax_pipe_orphan_stop(), and arax_throttle_size_inc().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_condition_unlock()

void async_condition_unlock ( async_condition_s * cond)

Lock on condition cond.

Note
Prior to this call cond must be locked using async_condition_lock().
Parameters
condCondition to be read.

Definition at line 230 of file ivshmem/async.c.

References async_completion_complete(), and async_condition_s::mutex.

Referenced by _arax_init(), arax_accel_add_task(), arax_accel_add_vaccel(), arax_accel_del_vaccel(), arax_accel_get_assigned_vaccels(), arax_accel_wait_for_task(), ARAX_OBJ_DTOR_DECL(), arax_pipe_add_orphan_vaccel(), arax_pipe_get_orphan_vaccel(), arax_pipe_orphan_stop(), arax_pipe_remove_orphan_vaccel(), arax_throttle_size_dec(), arax_throttle_size_inc(), and async_condition_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_condition_wait()

void async_condition_wait ( async_condition_s * cond)

Wait on cond.

Note
Prior to this call cond must be locked using async_condition_lock().
Parameters
condCondition to be read.

Definition at line 218 of file ivshmem/async.c.

References async_completion_complete(), async_completion_wait(), async_semaphore_dec(), async_condition_s::condition, async_completion_s::mutex, async_condition_s::mutex, and async_condition_s::semaphore.

Referenced by _arax_init(), arax_accel_wait_for_task(), arax_pipe_get_orphan_vaccel(), and arax_throttle_size_dec().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_meta_exit()

void async_meta_exit ( async_meta_s * meta)

De initialize an async_meta_s object.

Parameters
metaThe async_meta_s object to be uninitialized.

Definition at line 235 of file ivshmem/async.c.

References async_meta_s::fd, fd, getVmID(), async_meta_s::regs, async_meta_s::thread, and wakeupVm().

Referenced by arax_pipe_exit().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_meta_init_always()

void async_meta_init_always ( async_meta_s * meta)

Initialize a async_meta_s object on every node.

This will be called multiple times, once for every node.

Parameters
metaAn uninitialized async_meta_s object.

Definition at line 89 of file ivshmem/async.c.

References async_thread(), reg_fd, async_meta_s::regs, shm_file, async_meta_s::thread, utils_config_alloc_path(), utils_config_free_path(), and utils_config_get_str().

Referenced by _arax_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_meta_init_once()

void async_meta_init_once ( async_meta_s * meta,
arch_alloc_s * alloc )

Initialize a async_meta_s object once.

This will be called only once, on the first node.

Parameters
metaAn uninitialized async_meta_s object.
allocAllocator instance to be used for internall allocations.

Definition at line 71 of file ivshmem/async.c.

References async_meta_s::alloc, async_meta_s::lock, async_meta_s::outstanding, utils_config_alloc_path(), utils_config_free_path(), utils_config_get_bool(), utils_list_init(), and utils_spinlock_init.

Referenced by arax_pipe_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_semaphore_dec()

void async_semaphore_dec ( async_semaphore_s * sem)

Decrease semaphore.

Decrease(ie consume) sem by one. This function will block if async_semaphore_value() == 0.

Parameters
semSemaphore to be increased.

Definition at line 181 of file ivshmem/async.c.

References async_meta_s::alloc, arch_alloc_allocate(), arch_alloc_free, async_completion_init(), async_completion_wait(), getVmID(), async_semaphore_s::meta, async_completion_s::outstanding, async_semaphore_s::pending_list, async_semaphore_s::pending_lock, async_semaphore_s::sem, utils_list_add(), utils_spinlock_lock, utils_spinlock_unlock, async_semaphore_s::value, and wakeupVm().

Referenced by async_condition_wait().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_semaphore_inc()

void async_semaphore_inc ( async_semaphore_s * sem)

Increase semaphore.

Increase(ie produce) sem by one. This function will never block.

Parameters
semSemaphore to be increased.

Definition at line 161 of file ivshmem/async.c.

References _add_completion(), async_completion_complete(), utils_list_s::head, utils_list_s::length, async_semaphore_s::meta, utils_list_node::next, utils_list_node::owner, async_semaphore_s::pending_list, async_semaphore_s::pending_lock, async_semaphore_s::sem, utils_list_del(), utils_spinlock_lock, utils_spinlock_unlock, and async_semaphore_s::value.

Referenced by async_condition_notify().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_semaphore_init()

void async_semaphore_init ( async_meta_s * meta,
async_semaphore_s * sem )

Initialize semaphore.

Parameters
metaPointer to async_meta_s that will 'own' this semaphore.
semSemaphore to be initialized

Definition at line 149 of file ivshmem/async.c.

References async_semaphore_s::pending_list, async_semaphore_s::pending_lock, async_semaphore_s::sem, utils_list_init(), utils_spinlock_init, and async_semaphore_s::value.

Referenced by async_condition_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ async_semaphore_value()

int async_semaphore_value ( async_semaphore_s * sem)

Return value of sem.

Parameters
semSemaphore to be initialized

Definition at line 156 of file ivshmem/async.c.

References async_semaphore_s::sem, and async_semaphore_s::value.