Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
arax_pipe.h
Go to the documentation of this file.
1#ifndef ARAX_PIPE_HEADER
2#define ARAX_PIPE_HEADER
3#include <arax.h>
4#include <utils/Kv.h>
5#include "utils/queue.h"
6#include "core/arax_accel.h"
7#include "core/arax_task.h"
8
9#ifdef __cplusplus
10extern "C" {
11#endif /* ifdef __cplusplus */
12
13typedef struct
14{
15 int pid;
18
19#define ARAX_PIPE_SHA_SIZE 48
20
48
59
65
72const char* arax_pipe_get_revision(arax_pipe_s *pipe);
73
81
91
102
107
117
124uint64_t arax_pipe_add_process(arax_pipe_s *pipe);
125
132uint64_t arax_pipe_del_process(arax_pipe_s *pipe);
133
139int arax_pipe_have_to_mmap(arax_pipe_s *pipe, int pid);
140
144void arax_pipe_mark_unmap(arax_pipe_s *pipe, int pid);
145
152
168arax_pipe_s* arax_pipe_init(void *mem, size_t size, int enforce_version);
169
178
188arax_accel_s* arax_pipe_find_accel(arax_pipe_s *pipe, const char *name,
189 arax_accel_type_e type);
190
198arax_proc_s* arax_pipe_find_proc(arax_pipe_s *pipe, const char *name);
199
209int arax_pipe_exit(arax_pipe_s *pipe);
210
211#ifdef ARAX_THROTTLE_DEBUG
212#define ARAX_PIPE_THOTTLE_DEBUG_PARAMS , const char *parent
213#define ARAX_PIPE_THOTTLE_DEBUG_FUNC(FUNC) __ ## FUNC
214#define arax_pipe_size_inc(PIPE, SZ) __arax_pipe_size_inc(PIPE, SZ, __func__)
215#define arax_pipe_size_dec(PIPE, SZ) __arax_pipe_size_dec(PIPE, SZ, __func__)
216#else
217#define ARAX_PIPE_THOTTLE_DEBUG_PARAMS
218#define ARAX_PIPE_THOTTLE_DEBUG_FUNC(FUNC) FUNC
219#endif
220
229
238
246
254
255#ifdef MMAP_FIXED
256#define pointer_to_offset(TYPE, BASE, \
257 VD) ( (TYPE) ( (void *) (VD) -(void *) (BASE) ) )
258#define offset_to_pointer(TYPE, BASE, \
259 VD) ( (TYPE) ( (char *) (BASE) + (size_t) (VD) ) )
260#else /* ifdef MMAP_FIXED */
261#define pointer_to_offset(TYPE, BASE, VD) ( (TYPE) VD )
262#define offset_to_pointer(TYPE, BASE, VD) ( (TYPE) VD )
263#endif /* ifdef MMAP_FIXED */
264
265#ifdef __cplusplus
266}
267#endif /* ifdef __cplusplus */
268
269#endif /* ifndef ARAX_PIPE_HEADER */
int arax_pipe_have_orphan_vaccels(arax_pipe_s *pipe)
Definition arax_pipe.c:73
#define ARAX_PIPE_THOTTLE_DEBUG_FUNC(FUNC)
Definition arax_pipe.h:218
arax_proc_s * arax_pipe_find_proc(arax_pipe_s *pipe, const char *name)
Definition arax_pipe.c:219
int arax_pipe_have_to_mmap(arax_pipe_s *pipe, int pid)
Definition arax_pipe.c:126
#define ARAX_PIPE_SHA_SIZE
Definition arax_pipe.h:19
void arax_controller_init_done()
Definition impl.c:143
const char * arax_pipe_get_revision(arax_pipe_s *pipe)
Definition arax_pipe.c:58
size_t arax_pipe_get_total_size(arax_pipe_s *pipe)
Definition arax_pipe.c:271
uint64_t arax_pipe_add_process(arax_pipe_s *pipe)
Definition arax_pipe.c:116
void arax_pipe_orphan_stop(arax_pipe_s *pipe)
Definition arax_pipe.c:109
int arax_pipe_exit(arax_pipe_s *pipe)
Definition arax_pipe.c:241
#define ARAX_PIPE_THOTTLE_DEBUG_PARAMS
Definition arax_pipe.h:217
void arax_pipe_mark_unmap(arax_pipe_s *pipe, int pid)
Definition arax_pipe.c:148
void * arax_pipe_mmap_address(arax_pipe_s *pipe)
Definition arax_pipe.c:165
arax_vaccel_s * arax_pipe_get_orphan_vaccel(arax_pipe_s *pipe)
Definition arax_pipe.c:78
size_t arax_pipe_get_available_size(arax_pipe_s *pipe)
Definition arax_pipe.c:265
int arax_pipe_delete_accel(arax_pipe_s *pipe, arax_accel_s *accel)
Definition arax_pipe.c:175
void arax_pipe_add_orphan_vaccel(arax_pipe_s *pipe, arax_vaccel_s *vac)
Definition arax_pipe.c:63
void arax_pipe_remove_orphan_vaccel(arax_pipe_s *pipe, arax_vaccel_s *vac)
Definition arax_pipe.c:100
arax_pipe_s * arax_pipe_init(void *mem, size_t size, int enforce_version)
Definition arax_pipe.c:5
arax_pipe_s * arax_controller_init_start()
Definition impl.c:138
struct arax_pipe arax_pipe_s
arax_accel_s * arax_pipe_find_accel(arax_pipe_s *pipe, const char *name, arax_accel_type_e type)
Definition arax_pipe.c:194
uint64_t arax_pipe_del_process(arax_pipe_s *pipe)
Definition arax_pipe.c:121
enum arax_accel_type arax_accel_type_e
volatile uint32_t utils_spinlock
Definition spinlock.h:10
void ARAX_PIPE_THOTTLE_DEBUG_FUNC arax_pipe_size_dec(arax_pipe_s *pipe, size_t sz ARAX_PIPE_THOTTLE_DEBUG_PARAMS)
Definition arax_pipe.c:259
void ARAX_PIPE_THOTTLE_DEBUG_FUNC arax_pipe_size_inc(arax_pipe_s *pipe, size_t sz ARAX_PIPE_THOTTLE_DEBUG_PARAMS)
Definition arax_pipe.c:253
utils_list_s orphan_vacs
Definition arax_pipe.h:41
async_condition_s orphan_cond
Definition arax_pipe.h:40
arax_throttle_s throttle
Definition arax_pipe.h:35
uint64_t processes
Definition arax_pipe.h:29
uint64_t shm_size
Definition arax_pipe.h:28
arch_alloc_s allocator
Definition arax_pipe.h:46
uint64_t proc_map[ARAX_PROC_MAP_SIZE]
Definition arax_pipe.h:31
uint64_t last_uid
Definition arax_pipe.h:32
utils_spinlock proc_lock
Definition arax_pipe.h:30
char sha[ARAX_PIPE_SHA_SIZE+1]
Definition arax_pipe.h:26
int cntrl_ready
Definition arax_pipe.h:37
utils_kv_s ass_kv
Definition arax_pipe.h:43
async_meta_s async
Definition arax_pipe.h:34
async_condition_s cntrl_ready_cond
Definition arax_pipe.h:38
void * self
Definition arax_pipe.h:27
utils_kv_s metrics_kv
Definition arax_pipe.h:44
arax_object_repo_s objs
Definition arax_pipe.h:33