miniOS
x86_64 hobby kernel with SMP, VFS, and POSIX process model
Loading...
Searching...
No Matches
unix_sock.h
Go to the documentation of this file.
1#ifndef _MINIOS_NET_UNIX_SOCK_H_
2#define _MINIOS_NET_UNIX_SOCK_H_
3
4#include <miniOS/types.h>
6
7#define UNIX_SOCK_POOL_SIZE 8
8#define UNIX_SOCK_BUF_SIZE 4096
9#define UNIX_SOCK_PATH_MAX 108
10#define UNIX_BACKLOG_MAX 4
11
12typedef enum {
17 UNIX_STATE_CONNECTING, /* queued in server backlog; peer not yet assigned */
19
20typedef struct unix_sock {
21 int in_use;
22 int ref_count; /* fd refs + backlog refs; freed when 0 */
25 struct unix_sock *peer; /* connected peer; NULL if not connected */
32
35int unix_sock_bind(unix_sock_t *s, const char *path);
37unix_sock_t *unix_sock_accept(unix_sock_t *server); /* blocks; returns new peer socket */
38int unix_sock_connect(unix_sock_t *s, const char *path); /* blocks until accepted */
39int unix_sock_write(unix_sock_t *s, const void *buf, size_t len);
40int unix_sock_read(unix_sock_t *s, void *buf, size_t len); /* blocks if empty */
44
45#endif /* _MINIOS_NET_UNIX_SOCK_H_ */
Definition spinlock.h:50
Definition unix_sock.h:20
struct unix_sock * peer
Definition unix_sock.h:25
struct unix_sock * backlog[UNIX_BACKLOG_MAX]
Definition unix_sock.h:26
char path[UNIX_SOCK_PATH_MAX]
Definition unix_sock.h:24
uint32_t buf_tail
Definition unix_sock.h:29
unix_state_t state
Definition unix_sock.h:23
int in_use
Definition unix_sock.h:21
uint8_t buf[UNIX_SOCK_BUF_SIZE]
Definition unix_sock.h:28
spinlock_t lock
Definition unix_sock.h:30
int backlog_tail
Definition unix_sock.h:27
int ref_count
Definition unix_sock.h:22
int backlog_head
Definition unix_sock.h:27
uint32_t buf_head
Definition unix_sock.h:29
unsigned int uint32_t
Definition types.h:34
unsigned char uint8_t
Definition types.h:28
#define UNIX_BACKLOG_MAX
Definition unix_sock.h:10
unix_state_t
Definition unix_sock.h:12
@ UNIX_STATE_FREE
Definition unix_sock.h:13
@ UNIX_STATE_CONNECTED
Definition unix_sock.h:16
@ UNIX_STATE_LISTENING
Definition unix_sock.h:15
@ UNIX_STATE_BOUND
Definition unix_sock.h:14
@ UNIX_STATE_CONNECTING
Definition unix_sock.h:17
unix_sock_t * unix_sock_alloc(void)
Definition unix_sock.c:39
unix_sock_t * unix_sock_accept(unix_sock_t *server)
Definition unix_sock.c:82
int unix_sock_bind(unix_sock_t *s, const char *path)
Definition unix_sock.c:63
int unix_sock_close(unix_sock_t *s)
Definition unix_sock.c:232
#define UNIX_SOCK_PATH_MAX
Definition unix_sock.h:9
int unix_sock_has_data(unix_sock_t *s)
Definition unix_sock.c:248
int unix_sock_write(unix_sock_t *s, const void *buf, size_t len)
Definition unix_sock.c:162
int unix_sock_read(unix_sock_t *s, void *buf, size_t len)
Definition unix_sock.c:190
int unix_sock_listen(unix_sock_t *s, int backlog)
Definition unix_sock.c:72
void unix_sock_free(unix_sock_t *s)
Definition unix_sock.c:54
int unix_sock_connect(unix_sock_t *s, const char *path)
Definition unix_sock.c:131
#define UNIX_SOCK_BUF_SIZE
Definition unix_sock.h:8
int unix_sock_socketpair(unix_sock_t **a, unix_sock_t **b)
Definition unix_sock.c:215
struct unix_sock unix_sock_t
uint32_t len
Definition virtio_net.c:1