aos/usr/echoserver/main.c
2022-05-17 15:19:12 +02:00

41 lines
1.1 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <aos/aos.h>
#include <aos/ump_binding.h>
#include <aos/aos_rpc.h>
static errval_t connect_server (void *arg, struct capref cap) {
debug_printf("Echo server: incoming connection\n");
struct paging_state *pstate = get_current_paging_state();
uint8_t *ump_data;
errval_t err = paging_map_frame(pstate, (void **)&ump_data, BASE_PAGE_SIZE, cap);
if (err_is_fail(err)) USER_PANIC_ERR(err, "Failed to map ump frame");
// TODO: Create an UMP channel
ump_data[0] = 123;
return SYS_ERR_OK;
}
int main (int argc, char *argv[]) {
errval_t err;
struct ump_binding_server server;
debug_printf("Echo server registering\n");
err = ump_binding_register(&server, UMP_SERVER_ECHO, connect_server, NULL);
if (err_is_fail(err)) USER_PANIC_ERR(err, "Failed to register UMP server");
debug_printf("Echo server listening\n");
struct waitset *default_ws = get_default_waitset();
while (true) {
err = event_dispatch(default_ws);
if (err_is_fail(err)) {
DEBUG_ERR(err, "in event_dispatch");
abort();
}
}
}