![]() |
Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
|
#include "conf.h"
#include "async.h"
#include "utils/config.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
Go to the source code of this file.
Data Structures | |
struct | ivshmem |
Enumerations | |
enum | RegisterOffsets { ISR_REG = 0 , IMR_REG = 1 , VM_ID_REG = 2 , BELL_REG = 3 } |
Variables | |
static int | reg_fd = 0 |
enum RegisterOffsets |
Enumerator | |
---|---|
ISR_REG | |
IMR_REG | |
VM_ID_REG | |
BELL_REG |
Definition at line 13 of file ivshmem/async.c.
void _add_completion | ( | async_meta_s * | meta, |
async_completion_s * | completion ) |
Definition at line 64 of file ivshmem/async.c.
References async_meta_s::lock, async_completion_s::outstanding, async_meta_s::outstanding, utils_list_add(), utils_spinlock_lock, and utils_spinlock_unlock.
Referenced by async_completion_wait(), and async_semaphore_inc().
int async_completion_check | ( | async_completion_s * | completion | ) |
Check if completion has been marked as completed.
completion | Completion to be checked. |
Definition at line 144 of file ivshmem/async.c.
Referenced by async_thread().
void async_completion_complete | ( | async_completion_s * | completion | ) |
Mark compl
as completed and notify pending async_completion_wait() callers.
completion | Completion to be marked as completed. |
Definition at line 129 of file ivshmem/async.c.
Referenced by async_condition_init(), async_condition_unlock(), async_condition_wait(), and async_semaphore_inc().
void async_completion_init | ( | async_meta_s * | meta, |
async_completion_s * | completion ) |
Create and register async_completion_s objects created in buff
.
meta | Pointer to async_meta_s that will 'own' this completion. |
completion | Completion to be initialized |
Definition at line 118 of file ivshmem/async.c.
Referenced by async_condition_init(), and async_semaphore_dec().
void async_completion_wait | ( | async_completion_s * | completion | ) |
Wait for compl
to be completed with async_completion_complete().
completion | Sleep untill it has been completed with async_completion_complete. |
Definition at line 135 of file ivshmem/async.c.
Referenced by async_condition_lock(), async_condition_wait(), and async_semaphore_dec().
void async_condition_init | ( | async_meta_s * | meta, |
async_condition_s * | cond ) |
Initialize semaphore.
meta | Pointer to async_meta_s that will 'own' this semaphore. |
cond | Condition to be initialized |
Definition at line 206 of file ivshmem/async.c.
void async_condition_lock | ( | async_condition_s * | cond | ) |
Lock on condition cond
.
cond | Condition to be read. |
Definition at line 213 of file ivshmem/async.c.
void async_condition_notify | ( | async_condition_s * | cond | ) |
Notify cond
.
cond
must be locked using async_condition_lock().cond | Condition to be notified. |
Definition at line 225 of file ivshmem/async.c.
void async_condition_unlock | ( | async_condition_s * | cond | ) |
Lock on condition cond
.
cond
must be locked using async_condition_lock().cond | Condition to be read. |
Definition at line 230 of file ivshmem/async.c.
void async_condition_wait | ( | async_condition_s * | cond | ) |
Wait on cond
.
cond
must be locked using async_condition_lock().cond | Condition to be read. |
Definition at line 218 of file ivshmem/async.c.
void async_meta_exit | ( | async_meta_s * | meta | ) |
De initialize an async_meta_s object.
meta | The async_meta_s object to be uninitialized. |
Definition at line 235 of file ivshmem/async.c.
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.
meta | An uninitialized async_meta_s object. |
Definition at line 89 of file ivshmem/async.c.
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.
meta | An uninitialized async_meta_s object. |
alloc | Allocator instance to be used for internall allocations. |
Definition at line 71 of file ivshmem/async.c.
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.
sem | Semaphore to be increased. |
Definition at line 181 of file ivshmem/async.c.
Referenced by async_condition_wait().
void async_semaphore_inc | ( | async_semaphore_s * | sem | ) |
Increase semaphore.
Increase(ie produce) sem
by one. This function will never block.
sem | Semaphore to be increased. |
Definition at line 161 of file ivshmem/async.c.
Referenced by async_condition_notify().
void async_semaphore_init | ( | async_meta_s * | meta, |
async_semaphore_s * | sem ) |
Initialize semaphore.
meta | Pointer to async_meta_s that will 'own' this semaphore. |
sem | Semaphore to be initialized |
Definition at line 149 of file ivshmem/async.c.
Referenced by async_condition_init().
int async_semaphore_value | ( | async_semaphore_s * | sem | ) |
Return value of sem
.
sem | Semaphore to be initialized |
Definition at line 156 of file ivshmem/async.c.
void * async_thread | ( | void * | data | ) |
Definition at line 37 of file ivshmem/async.c.
References async_completion_check(), getVmID(), async_completion_s::mutex, async_meta_s::outstanding, utils_list_node::owner, reg_fd, utils_list_del(), and utils_list_for_each_safe.
Referenced by async_meta_init_always().
unsigned int getVmID | ( | async_meta_s * | meta | ) |
Definition at line 31 of file ivshmem/async.c.
References async_meta_s::regs, ivshmem::regs, and VM_ID_REG.
Referenced by async_completion_wait(), async_meta_exit(), async_semaphore_dec(), and async_thread().
void wakeupVm | ( | async_meta_s * | meta, |
unsigned int | vm_id ) |
Definition at line 26 of file ivshmem/async.c.
References BELL_REG, async_meta_s::regs, and ivshmem::regs.
Referenced by async_completion_complete(), async_meta_exit(), and async_semaphore_dec().
|
static |
Definition at line 36 of file ivshmem/async.c.
Referenced by async_meta_init_always(), and async_thread().