blob: 0f3bfe882fec6e467bacb7dd8aaeb6cf76ace9f1 [file] [log] [blame] [edit]
/*
* Copyright 2019, Data61, CSIRO (ABN 41 687 119 230)
*
* SPDX-License-Identifier: GPL-2.0-only
*/
#pragma once
#include <camkes/dataport.h>
typedef struct picoserver_event {
int socket_fd;
uint16_t events;
int num_events_left;
} picoserver_event_t;
#define ENCODE_DMA_ADDRESS(buf) ({ \
dataport_ptr_t wrapped_ptr = dataport_wrap_ptr(buf); \
void *new_buf = (void *)(((uintptr_t)wrapped_ptr.id << 32) | ((uintptr_t)wrapped_ptr.offset)); \
new_buf; })
#define DECODE_DMA_ADDRESS(buf) ({\
dataport_ptr_t wrapped_ptr = {.id = ((uintptr_t)buf >> 32), .offset = (uintptr_t)buf & MASK(32)}; \
void *ptr = dataport_unwrap_ptr(wrapped_ptr); \
ptr; })
typedef struct tx_msg tx_msg_t;
struct tx_msg {
int socket_fd;
size_t total_len;
size_t done_len;
uint32_t src_addr;
uint16_t remote_port;
tx_msg_t *next;
void *cookie_save;
void *client_cookie;
char buf[];
};