* same with xv6
[mascara-docs.git] / i386 / MIT / course / src / git.lab / inc / ns.h
blob3b4233da5fa0465e486dc51b8880adb0db9c8729
1 // See COPYRIGHT for copyright information.
3 #ifndef JOS_INC_NS_H
4 #define JOS_INC_NS_H
6 #include <inc/types.h>
7 #include <inc/mmu.h>
8 #include <lwip/sockets.h>
10 struct jif_pkt {
11 int jp_len;
12 char jp_data[0];
15 // Definitions for requests from clients to network server
16 enum {
17 // The following messages pass a page containing an Nsipc.
18 // Accept returns a Nsret_accept on the request page.
19 NSREQ_ACCEPT = 1,
20 NSREQ_BIND,
21 NSREQ_SHUTDOWN,
22 NSREQ_CLOSE,
23 NSREQ_CONNECT,
24 NSREQ_LISTEN,
25 // Recv returns a Nsret_recv on the request page.
26 NSREQ_RECV,
27 NSREQ_SEND,
28 NSREQ_SOCKET,
30 // The following two messages pass a page containing a struct jif_pkt
31 NSREQ_INPUT,
32 // NSREQ_OUTPUT, unlike all other messages, is sent *from* the
33 // network server, to the output environment
34 NSREQ_OUTPUT,
36 // The following message passes no page
37 NSREQ_TIMER,
40 union Nsipc {
41 struct Nsreq_accept {
42 int req_s;
43 } accept;
45 struct Nsret_accept {
46 struct sockaddr ret_addr;
47 socklen_t ret_addrlen;
48 } acceptRet;
50 struct Nsreq_bind {
51 int req_s;
52 struct sockaddr req_name;
53 socklen_t req_namelen;
54 } bind;
56 struct Nsreq_shutdown {
57 int req_s;
58 int req_how;
59 } shutdown;
61 struct Nsreq_close {
62 int req_s;
63 } close;
65 struct Nsreq_connect {
66 int req_s;
67 struct sockaddr req_name;
68 socklen_t req_namelen;
69 } connect;
71 struct Nsreq_listen {
72 int req_s;
73 int req_backlog;
74 } listen;
76 struct Nsreq_recv {
77 int req_s;
78 int req_len;
79 unsigned int req_flags;
80 } recv;
82 struct Nsret_recv {
83 char ret_buf[0];
84 } recvRet;
86 struct Nsreq_send {
87 int req_s;
88 int req_size;
89 unsigned int req_flags;
90 char req_buf[0];
91 } send;
93 struct Nsreq_socket {
94 int req_domain;
95 int req_type;
96 int req_protocol;
97 } socket;
99 struct jif_pkt pkt;
101 // Ensure Nsipc is one page
102 char _pad[PGSIZE];
105 #endif // !JOS_INC_NS_H