socket: handle control data, change recv and send arguments

This commit is contained in:
Matheus
2024-09-01 13:20:12 -03:00
parent fe1102224e
commit 997fbc4e2e
7 changed files with 170 additions and 37 deletions
+28 -2
View File
@@ -26,12 +26,38 @@ int sockfs_close(vnode_t *node, int flags, cred_t *cred) {
int sockfs_read(vnode_t *node, void *buffer, size_t size, uintmax_t offset, int flags, size_t *readc, cred_t *cred) {
socket_t *socket = SOCKFS_SOCKET_FROM_NODE(node);
return socket->ops->recv(socket, NULL, buffer, size, flags, readc);
sockdesc_t desc = {
.addr = NULL,
.buffer = buffer,
.count = size,
.flags = flags,
.donecount = 0,
.ctrl = NULL,
.ctrllen = 0
};
int e = socket->ops->recv(socket, &desc);
*readc = desc.donecount;
return e;
}
int sockfs_write(vnode_t *node, void *buffer, size_t size, uintmax_t offset, int flags, size_t *writec, cred_t *cred) {
socket_t *socket = SOCKFS_SOCKET_FROM_NODE(node);
return socket->ops->send(socket, NULL, buffer, size, flags, writec);
sockdesc_t desc = {
.addr = NULL,
.buffer = buffer,
.count = size,
.flags = flags,
.donecount = 0,
.ctrl = NULL,
.ctrllen = 0
};
int e = socket->ops->send(socket, &desc);
*writec = desc.donecount;
return e;
}
int sockfs_poll(vnode_t *node, polldata_t *data, int events) {