Split packet queues
This commit is contained in:
+13
-1
@@ -6,11 +6,23 @@ struct netdev;
|
||||
#define PACKET_DATA_MAX (4056)
|
||||
struct packet {
|
||||
size_t size;
|
||||
struct packet *prev, *next;
|
||||
struct netdev *dev;
|
||||
size_t refcount;
|
||||
char data[PACKET_DATA_MAX];
|
||||
};
|
||||
|
||||
struct packet_qh {
|
||||
struct packet *packet;
|
||||
struct packet_qh *prev, *next;
|
||||
};
|
||||
|
||||
struct packet_queue {
|
||||
struct packet_qh *head, *tail;
|
||||
};
|
||||
|
||||
void packet_ref(struct packet *p);
|
||||
void packet_unref(struct packet *p);
|
||||
|
||||
void packet_queue_init(struct packet_queue *q);
|
||||
void packet_queue_push(struct packet_queue *q, struct packet *p);
|
||||
struct packet *packet_queue_pop(struct packet_queue *q);
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
#include "sys/types.h"
|
||||
|
||||
struct vfs_ioctx;
|
||||
struct ofile;
|
||||
struct sockaddr;
|
||||
struct packet;
|
||||
|
||||
int raw_socket_open(struct vfs_ioctx *ioctx, struct ofile *fd, int dom, int type, int proto);
|
||||
ssize_t raw_socket_send(struct vfs_ioctx *ioctx, struct ofile *fd, const void *buf, size_t lim, struct sockaddr *sa, size_t salen);
|
||||
ssize_t raw_socket_recv(struct vfs_ioctx *ioctx, struct ofile *fd, void *buf, size_t lim, struct sockaddr *sa, size_t *salen);
|
||||
int raw_socket_bind(struct vfs_ioctx *ioctx, struct ofile *fd, struct sockaddr *sa, size_t len);
|
||||
int raw_setsockopt(struct vfs_ioctx *ioctx, struct ofile *fd, int optname, void *optval, size_t optlen);
|
||||
void raw_socket_close(struct vfs_ioctx *ioctx, struct ofile *fd);
|
||||
|
||||
void raw_packet_handle(struct packet *p);
|
||||
Reference in New Issue
Block a user