PatchworkOS
Loading...
Searching...
No Matches
socket.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
kernel/fs/path.h
>
4
#include <
kernel/fs/sysfs.h
>
5
#include <
kernel/net/socket_type.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
Definition
hpet.c:12
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
socket_t::dataFile
dentry_t * dataFile
Definition
socket.h:93
socket_t::nextState
socket_state_t nextState
Definition
socket.h:90
socket_t::ctlFile
dentry_t * ctlFile
Definition
socket.h:92
socket_t::ref
ref_t ref
Definition
socket.h:82
socket_t::flags
path_flags_t flags
Definition
socket.h:87
socket_t::type
socket_type_t type
Definition
socket.h:86
socket_t::currentState
socket_state_t currentState
Definition
socket.h:89
socket_t::family
socket_family_t * family
Definition
socket.h:85
socket_t::acceptFile
dentry_t * acceptFile
Definition
socket.h:94
socket_t::mutex
rwmutex_t mutex
Definition
socket.h:91
sysfs.h
include
kernel
net
socket.h
Generated by
1.9.8