forked from sysprog21/kecho
-
Notifications
You must be signed in to change notification settings - Fork 0
/
echo_server.h
52 lines (42 loc) · 1.23 KB
/
echo_server.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef ECHO_SERVER_H
#define ECHO_SERVER_H
#include <linux/atomic.h>
#include <linux/module.h>
#include <linux/workqueue.h>
#include <net/sock.h>
#define MODULE_NAME "kecho"
struct echo_server_param {
struct socket *listen_sock;
};
struct echo_service {
bool is_stopped;
struct list_head worker;
};
struct kecho {
struct socket *sock;
struct list_head list;
struct work_struct kecho_work;
};
enum {
TRACE_kzalloc_err = 1, // kzalloc 失敗的次數
TRACE_get_err, // get request 失敗的次數
TRACE_send_err, // send request 失敗的次數
TRACE_recvmsg, // recvmsg 的次數
TRACE_sendmsg, // sendmsg 的次數
TRACE_shutdown, // shutdown 的次數
TRACE_accept_err, // accept 失敗的次數
TRACE_work_err // 建立 work 失敗的次數
};
struct runtime_state {
atomic_t kzalloc_err, get_err;
atomic_t send_err, recvmsg;
atomic_t sendmsg, shutdown;
atomic_t accept_err, work_err;
};
#define TRACE(ops) \
do { \
if (TRACE_##ops) \
atomic_add(1, &states.ops); \
} while (0)
extern int echo_server_daemon(void *);
#endif