#undef NDEBUG
#endif
+#define _POSIX_C_SOURCE 200809L
+
#include <assert.h>
#include <stdio.h>
#include <unistd.h>
set_sync_flag(&info->flag, true);
}
-static bool reject_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint16_t port, const void *data, size_t len) {
- (void)mesh;
- (void)channel;
- (void)port;
- (void)data;
- (void)len;
-
- return false;
-}
-
static void receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
(void)mesh;
(void)channel;
return true;
}
-int main(int argc, char *argv[]) {
- (void)argc;
- (void)argv;
+int main(void) {
+ init_sync_flag(&b_received_flag);
meshlink_set_log_cb(NULL, MESHLINK_WARNING, log_cb);
memset(out_infos, 0, sizeof(out_infos));
for(size_t i = 0; i < nchannels; i++) {
+ init_sync_flag(&in_infos[i].aio_infos[0].flag);
+ init_sync_flag(&in_infos[i].aio_infos[1].flag);
+ init_sync_flag(&out_infos[i].aio_infos[0].flag);
+ init_sync_flag(&out_infos[i].aio_infos[1].flag);
+
in_infos[i].data = malloc(size);
assert(in_infos[i].data);
out_infos[i].data = outdata;
mesh_b->priv = in_infos;
- meshlink_set_channel_accept_cb(mesh_a, reject_cb);
meshlink_set_channel_accept_cb(mesh_b, accept_cb);
// Start both instances
// The non-AIO transfer should have completed before everything else
assert(!timespec_lt(&out_infos[i].aio_infos[0].ts, &b_received_ts));
assert(!timespec_lt(&in_infos[i].aio_infos[0].ts, &b_received_ts));
+
+ free(in_infos[i].data);
}
// Clean up.
close_meshlink_pair(mesh_a, mesh_b);
+ free(outdata);
}