kernel: re-implement sending handles via port messages

This commit is contained in:
2026-03-01 19:10:01 +00:00
parent b1bdb89ca4
commit 36c5ac7837
23 changed files with 399 additions and 168 deletions

View File

@@ -2,6 +2,7 @@
#define MANGO_LOG_H_
#include <mango/status.h>
#include <mango/types.h>
#undef TRACE
@@ -9,18 +10,18 @@ extern kern_status_t kern_log(const char *s);
#define kern_logf(...) \
do { \
char s[128]; \
snprintf(s, sizeof s, __VA_ARGS__); \
kern_log(s); \
char __logbuf[128]; \
snprintf(__logbuf, sizeof __logbuf, __VA_ARGS__); \
kern_log(__logbuf); \
} while (0)
#ifdef TRACE
#define kern_trace(...) kern_log(__VA_ARGS__)
#define kern_tracef(...) \
do { \
char s[128]; \
snprintf(s, sizeof s, __VA_ARGS__); \
kern_log(s); \
char __logbuf[128]; \
snprintf(__logbuf, sizeof __logbuf, __VA_ARGS__); \
kern_log(__logbuf); \
} while (0)
#else
#define kern_trace(...)

View File

@@ -14,28 +14,21 @@ extern kern_status_t port_disconnect(kern_handle_t port);
extern kern_status_t msg_send(
kern_handle_t port,
const struct iovec *req_data,
size_t req_data_count,
struct iovec *resp_data,
size_t resp_data_count);
const kern_msg_t *msg,
kern_msg_t *out_response);
extern kern_status_t msg_recv(
kern_handle_t channel,
msgid_t *out_id,
struct iovec *out_data,
size_t out_data_count);
extern kern_status_t msg_recv(kern_handle_t channel, kern_msg_t *out);
extern kern_status_t msg_reply(
kern_handle_t channel,
msgid_t id,
const struct iovec *reply_data,
size_t reply_data_count);
const kern_msg_t *response);
extern kern_status_t msg_read(
kern_handle_t channel,
msgid_t id,
size_t offset,
struct iovec *out,
kern_iovec_t *out,
size_t out_count,
size_t *nr_read);
@@ -43,7 +36,7 @@ extern kern_status_t msg_write(
kern_handle_t channel,
msgid_t id,
size_t offset,
const struct iovec *in,
const kern_iovec_t *in,
size_t nr_in,
size_t *nr_written);