13 while (!pipe->
sha[0]);
14 if (strcmp(pipe->
sha, ARAX_GIT_REV)) {
15 fprintf(stderr,
"Arax revision mismatch(%s vs %s)!", ARAX_GIT_REV, pipe->
sha);
23 printf(
"Initializing pipe.\n");
31 pipe->
sha[0] = ARAX_GIT_REV[0];
35 size -=
sizeof(*pipe);
118 return __sync_fetch_and_add(&(pipe->
processes), 1);
123 return __sync_fetch_and_add(&(pipe->
processes), -1);
129 int have_to_mmap = 1;
133 for (c = 0; c < ARAX_PROC_MAP_SIZE; c++) {
154 for (c = 0; c < ARAX_PROC_MAP_SIZE; c++) {
160 memmove(pipe->
proc_map + c, pipe->
proc_map + (c + 1), ARAX_PROC_MAP_SIZE - (c + 1));
161 pipe->
proc_map[ARAX_PROC_MAP_SIZE - 1] = 0;
167 int value = __sync_bool_compare_and_swap(&(pipe->
self), 0, pipe);
184 if (accel == accel_in_list) {
204 if (type && (type != accel->
type) )
228 if (strcmp(name, proc->
obj.
name) == 0) {
#define ARAX_PIPE_THOTTLE_DEBUG_FUNC(FUNC)
#define ARAX_PIPE_SHA_SIZE
#define ARAX_PIPE_THOTTLE_DEBUG_PARAMS
struct arax_pipe arax_pipe_s
enum arax_accel_type arax_accel_type_e
int arch_alloc_init_once(arch_alloc_s *alloc, size_t size)
void arch_alloc_init_always(arch_alloc_s *alloc)
void arch_alloc_exit(arch_alloc_s *alloc)
#define arax_assert(EXPR)
#define arax_assert_obj(OBJ, TYPE)
struct utils_list_node utils_list_node_s
#define utils_list_for_each(list, itr)
void async_condition_wait(async_condition_s *cond)
void async_condition_unlock(async_condition_s *cond)
void async_condition_notify(async_condition_s *cond)
void async_meta_init_once(async_meta_s *meta, arch_alloc_s *alloc)
void async_condition_init(async_meta_s *meta, async_condition_s *cond)
void async_condition_lock(async_condition_s *cond)
void async_meta_exit(async_meta_s *meta)
const char * arax_accel_get_name(arax_accel_s *accel)
int arax_object_repo_exit(arax_object_repo_s *repo)
void arax_object_repo_init(arax_object_repo_s *repo, arax_pipe_s *pipe)
utils_list_s * arax_object_list_lock(arax_object_repo_s *repo, arax_object_type_e type)
void arax_object_list_unlock(arax_object_repo_s *repo, arax_object_type_e type)
int arax_object_ref_dec(arax_object_s *obj)
int arax_pipe_have_orphan_vaccels(arax_pipe_s *pipe)
arax_proc_s * arax_pipe_find_proc(arax_pipe_s *pipe, const char *name)
int arax_pipe_have_to_mmap(arax_pipe_s *pipe, int pid)
const char * arax_pipe_get_revision(arax_pipe_s *pipe)
size_t arax_pipe_get_total_size(arax_pipe_s *pipe)
uint64_t arax_pipe_add_process(arax_pipe_s *pipe)
void arax_pipe_orphan_stop(arax_pipe_s *pipe)
void ARAX_PIPE_THOTTLE_DEBUG_FUNC arax_pipe_size_dec(arax_pipe_s *pipe, size_t sz ARAX_PIPE_THOTTLE_DEBUG_PARAMS)
int arax_pipe_exit(arax_pipe_s *pipe)
void arax_pipe_mark_unmap(arax_pipe_s *pipe, int pid)
void * arax_pipe_mmap_address(arax_pipe_s *pipe)
arax_vaccel_s * arax_pipe_get_orphan_vaccel(arax_pipe_s *pipe)
size_t arax_pipe_get_available_size(arax_pipe_s *pipe)
void ARAX_PIPE_THOTTLE_DEBUG_FUNC arax_pipe_size_inc(arax_pipe_s *pipe, size_t sz ARAX_PIPE_THOTTLE_DEBUG_PARAMS)
int arax_pipe_delete_accel(arax_pipe_s *pipe, arax_accel_s *accel)
void arax_pipe_add_orphan_vaccel(arax_pipe_s *pipe, arax_vaccel_s *vac)
void arax_pipe_remove_orphan_vaccel(arax_pipe_s *pipe, arax_vaccel_s *vac)
arax_pipe_s * arax_pipe_init(void *mem, size_t size, int enforce_version)
arax_accel_s * arax_pipe_find_accel(arax_pipe_s *pipe, const char *name, arax_accel_type_e type)
uint64_t arax_pipe_del_process(arax_pipe_s *pipe)
size_t arax_throttle_get_available_size(arax_throttle_s *thr)
void ARAX_THROTTLE_DEBUG_FUNC arax_throttle_size_dec(arax_throttle_s *thr, size_t sz ARAX_THROTTLE_DEBUG_PARAMS)
void ARAX_THROTTLE_DEBUG_FUNC arax_throttle_size_inc(arax_throttle_s *thr, size_t sz ARAX_THROTTLE_DEBUG_PARAMS)
void arax_throttle_init(async_meta_s *meta, arax_throttle_s *thr, size_t a_sz, size_t t_sz)
size_t arax_throttle_get_total_size(arax_throttle_s *thr)
utils_list_node_s * utils_list_del(utils_list_s *list, utils_list_node_s *node)
utils_list_node_s * utils_list_pop_head(utils_list_s *list)
int utils_list_node_linked(utils_list_node_s *node)
utils_list_s * utils_list_init(void *mem)
void utils_list_add(utils_list_s *list, utils_list_node_s *node)
#define utils_spinlock_lock(V)
#define utils_spinlock_unlock(V)
void utils_kv_init(utils_kv_s *kv)
utils_list_node_s vaccels
async_condition_s orphan_cond
uint64_t proc_map[ARAX_PROC_MAP_SIZE]
char sha[ARAX_PIPE_SHA_SIZE+1]
async_condition_s cntrl_ready_cond