Add socket support for mips

This commit is contained in:
2025-04-29 18:53:48 -04:00
parent 37bf95704e
commit 74cfa5f949
3 changed files with 187 additions and 13 deletions

49
sys.h
View File

@@ -44,9 +44,9 @@ int bind(int sockfd, const void* sockaddr, socklen_t addrlen);
int listen(int fd, int backlog);
int accept(int sockfd, void* addr, socklen_t* addrlen);
int connect(int sockfd, void* addr, socklen_t addrlen);
int64_t sendto(int sockfd, const void* buf, size_t size, int flags, const void* sockaddr, socklen_t addrlen);
ssize_t sendto(int sockfd, const void* buf, size_t size, int flags, const void* sockaddr, socklen_t addrlen);
#define send(sockfd, buf, size, flags) sendto(sockfd, buf, size, flags, 0, 0)
int64_t recvfrom(int sockfd, const void* buf, size_t size, int flags, const void* sockaddr, socklen_t addrlen);
ssize_t recvfrom(int sockfd, const void* buf, size_t size, int flags, const void* sockaddr, socklen_t addrlen);
#define recv(sockfd, buf, size, flags) recvfrom(sockfd, buf, size, flags, 0, 0)
// Socket Domain constants
typedef unsigned short sa_family_t;
@@ -61,19 +61,46 @@ typedef unsigned short sa_family_t;
#define AF_CAN 29 /* Controller Area Network */
#define AF_BLUETOOTH 31 /* Bluetooth sockets */
// Socket type constants
enum sock_type {
SOCK_STREAM = 1,
SOCK_DGRAM = 2,
SOCK_RAW = 3,
SOCK_RDM = 4,
SOCK_SEQPACKET = 5,
SOCK_DCCP = 6,
SOCK_PACKET = 10,
};
#if defined(__mips__)
// File: include/asm-mips/socket.h
enum sock_type {
SOCK_DGRAM = 1,
SOCK_STREAM = 2,
SOCK_RAW = 3,
SOCK_RDM = 4,
SOCK_SEQPACKET = 5,
SOCK_DCCP = 6,
SOCK_PACKET = 10,
};
#define SOL_SOCKET 0xffff
#define SO_DEBUG 0x0001 /* Record debugging information. */
#define SO_REUSEADDR 0x0004 /* Allow reuse of local addresses. */
#define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */
#define SO_ERROR 0x1007 /* get error status and clear */
#define SO_DONTROUTE 0x0010 /* Don't do local routing. */
#define SO_BROADCAST 0x0020 /* Allow transmission of broadcast messages. */
#define SO_SNDBUF 0x1001 /* Send buffer size. */
#define SO_RCVBUF 0x1002 /* Receive buffer. */
#define SO_KEEPALIVE 0x0008 /* Keep connections alive and send SIGPIPE when they die. */
#define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */
#define SO_LINGER 0x0080 /* Block on close of a reliable socket to transmit pending data. */
#define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */
#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
#define SO_SNDLOWAT 0x1003 /* send low-water mark */
#define SO_RCVTIMEO 0x1006 /* receive timeout */
#define SO_SNDTIMEO 0x1005 /* send timeout */
#else
enum sock_type {
SOCK_STREAM = 1,
SOCK_DGRAM = 2,
SOCK_RAW = 3,
SOCK_RDM = 4,
SOCK_SEQPACKET = 5,
SOCK_DCCP = 6,
SOCK_PACKET = 10,
};
#define SOL_SOCKET 1
#define SO_DEBUG 1