41 lines
1.1 KiB
C
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();
|
|
}
|
|
}
|
|
}
|