Memclave Artifact Documentation
Loading...
Searching...
No Matches
vud.h
Go to the documentation of this file.
1/* vud.h - vpim userspace driver */
2
3#ifndef ROUTER_VUD_H
4#define ROUTER_VUD_H
5
6#include "vud_pool.h"
7
8#include <stddef.h>
9#include <stdint.h>
10
11#define VUD_ALLOC_ANY -1
12
30
31typedef struct vud_rank {
32 volatile void* base;
33 int fd;
35 uint8_t key[32];
36 const char* next_sk;
39
45
51
62void vud_rank_nr_workers(vud_rank* rank, unsigned n);
63
70
76
82static inline const char* vud_error_str(vud_error err) {
83 static const char* table[VUD_KEY_XCHG + 1] = {
84 [VUD_OK] = "success",
85 [VUD_RANK_BUSY] = "rank is busy",
86 [VUD_NOT_FOUND] = "rank not found",
87 [VUD_MEMORY_ERR] = "memory error (mmap)",
88 [VUD_SYSTEM_ERR] = "system error (open)",
89 [VUD_CI_TIMEOUT] = "ci access timed out",
90 [VUD_INVALID_RES] = "invalid VCI response",
91 [VUD_EXPECTED_FAULT] = "DPUs are not all in fault",
92 [VUD_SK_NOT_FOUND] = "could not find requested subkernel",
93 [VUD_SK_TAG] = "cannot encrypt and tag subkernel",
94 [VUD_NOT_WAITING] = "DPU is not waiting for guest",
95 [VUD_SYMBOL_NOT_FOUND] = "symbol could not be found",
96 [VUD_SYMBOL_NOT_MRAM] = "symbol points to a non-MRAM region",
97 [VUD_SYSTEM_THREAD] = "system error (threading)",
98 [VUD_KEY_XCHG] = "key exchange failed",
99 };
100
101 if (err >= VUD_OK && err <= VUD_KEY_XCHG) {
102 return table[err];
103 }
104
105 return "unknown error";
106}
107
108
109#endif
Definition vud.h:31
uint8_t key[32]
Definition vud.h:35
const char * next_sk
Definition vud.h:36
int fd
Definition vud.h:33
vud_error err
Definition vud.h:34
vud_pool * pool
Definition vud.h:37
volatile void * base
Definition vud.h:32
void vud_rank_nr_workers(vud_rank *rank, unsigned n)
specify the number of worker threads
vud_error
Definition vud.h:13
@ VUD_OK
Definition vud.h:14
@ VUD_KEY_XCHG
Definition vud.h:28
@ VUD_SYMBOL_NOT_FOUND
Definition vud.h:25
@ VUD_NOT_FOUND
Definition vud.h:16
@ VUD_SYSTEM_ERR
Definition vud.h:18
@ VUD_SK_NOT_FOUND
Definition vud.h:22
@ VUD_NOT_WAITING
Definition vud.h:24
@ VUD_SK_TAG
Definition vud.h:23
@ VUD_SYMBOL_NOT_MRAM
Definition vud.h:26
@ VUD_MEMORY_ERR
Definition vud.h:17
@ VUD_EXPECTED_FAULT
Definition vud.h:21
@ VUD_CI_TIMEOUT
Definition vud.h:19
@ VUD_RANK_BUSY
Definition vud.h:15
@ VUD_SYSTEM_THREAD
Definition vud.h:27
@ VUD_INVALID_RES
Definition vud.h:20
uint8_t vud_rank_qry_mux(vud_rank *rank)
get the current mux state of one DPU line of a rank
void vud_rank_rel_mux(vud_rank *rank)
release control of the MUX continuing execution on the DPUs
void vud_rank_free(vud_rank *rank)
release the rank back to the os and free associated resources
vud_rank vud_rank_alloc(int rank_nr)
allocate a single vud rank
size_t n
Definition vud_ime.h:78
struct vud_pool vud_pool
Definition vud_pool.h:16