PatchworkOS
28a9544
A non-POSIX operating system.
Theme:
Default
Round
Robot
Loading...
Searching...
No Matches
socket.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
socket_type.h
"
4
#include <
kernel/fs/path.h
>
5
#include <
kernel/fs/sysfs.h
>
6
#include <
kernel/sync/rwmutex.h
>
7
#include <
kernel/utils/ref.h
>
8
9
#include <
sys/io.h
>
10
11
typedef
struct
socket_family
socket_family_t
;
12
64
typedef
enum
65
{
66
SOCKET_NEW
,
67
SOCKET_BOUND
,
68
SOCKET_LISTENING
,
69
SOCKET_CONNECTING
,
70
SOCKET_CONNECTED
,
71
SOCKET_CLOSING
,
72
SOCKET_CLOSED
,
73
SOCKET_STATE_AMOUNT
74
}
socket_state_t
;
75
80
typedef
struct
socket
81
{
82
ref_t
ref;
83
char
id
[
MAX_NAME
];
84
char
address
[
MAX_NAME
];
85
socket_family_t
* family;
86
socket_type_t
type;
87
path_flags_t
flags;
88
void
*
private
;
89
socket_state_t
currentState;
90
socket_state_t
nextState;
91
rwmutex_t
mutex
;
92
dentry_t
* ctlFile;
93
dentry_t
* dataFile;
94
dentry_t
* acceptFile;
95
}
socket_t
;
96
107
socket_t
*
socket_new
(
socket_family_t
* family,
socket_type_t
type,
path_flags_t
flags);
108
116
uint64_t
socket_start_transition
(
socket_t
* sock,
socket_state_t
state);
117
124
void
socket_continue_transition
(
socket_t
* sock,
socket_state_t
state);
125
132
void
socket_end_transition
(
socket_t
* sock,
uint64_t
result);
133
MAX_NAME
#define MAX_NAME
Maximum length of names.
Definition
MAX_NAME.h:11
path_flags_t
path_flags_t
Path flags.
Definition
path.h:83
socket_type_t
socket_type_t
Socket type enumeration.
Definition
socket_type.h:18
socket_state_t
socket_state_t
Socket states.
Definition
socket.h:65
socket_new
socket_t * socket_new(socket_family_t *family, socket_type_t type, path_flags_t flags)
Create a new socket.
Definition
socket.c:359
socket_continue_transition
void socket_continue_transition(socket_t *sock, socket_state_t state)
Without releasing the socket mutex, start a transition to a new target state.
Definition
socket.c:519
socket_start_transition
uint64_t socket_start_transition(socket_t *sock, socket_state_t state)
Starts a socket state transition.
Definition
socket.c:491
socket_end_transition
void socket_end_transition(socket_t *sock, uint64_t result)
Ends a socket state transition.
Definition
socket.c:528
SOCKET_CLOSED
@ SOCKET_CLOSED
Definition
socket.h:72
SOCKET_LISTENING
@ SOCKET_LISTENING
Definition
socket.h:68
SOCKET_STATE_AMOUNT
@ SOCKET_STATE_AMOUNT
Definition
socket.h:73
SOCKET_CONNECTED
@ SOCKET_CONNECTED
Definition
socket.h:70
SOCKET_NEW
@ SOCKET_NEW
Definition
socket.h:66
SOCKET_CLOSING
@ SOCKET_CLOSING
Definition
socket.h:71
SOCKET_BOUND
@ SOCKET_BOUND
Definition
socket.h:67
SOCKET_CONNECTING
@ SOCKET_CONNECTING
Definition
socket.h:69
address
static uintptr_t address
Mapped virtual address of the HPET registers.
Definition
hpet.c:93
mutex
static mtx_t mutex
Definition
heap.c:35
io.h
path.h
ref.h
rwmutex.h
socket_type.h
uint64_t
__UINT64_TYPE__ uint64_t
Definition
stdint.h:17
dentry_t
Directory entry structure.
Definition
dentry.h:83
ref_t
Reference counting structure.
Definition
ref.h:30
rwmutex_t
Read-Write Mutex structure.
Definition
rwmutex.h:42
socket_family_t
Socket Family structure.
Definition
socket_family.h:66
socket_t
Socket structure.
Definition
socket.h:81
sysfs.h
src
modules
net
socket.h
Generated by
1.9.8