-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplan
66 lines (54 loc) · 1.15 KB
/
plan
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
RAII style
- upper level atomic/pthread/lock
scoped_lock(rcu, mutex, ...) framework
debug framework
thread framework
struct thread_info {
void *init();
void *work();
}
work(){
init();
barrier();
self_work();
}
taskflow
struct task {
void (*func)(void);
struct edge {
struct task **node;
int nr_node;
int size;
spinlock_t lock;
} in_edge, out_edge;
};
struct taskflow {
struct task *start;
int nr_task;
};
simple rcu ---------------- v
workqueue ----------------- v
thread -------------------- v
scoped_lock --------------- v
RAII object
taskflow
mlrcu
hazard pointer
concurrent linked list
** hash table
- https://www.kernel.org/doc/Documentation/RCU/rculist_nulls.rst
receiver and sender
softirq: signal (with the task) to workqueue thread?
---
basic container - hash table
- hash function crc32c
- table[NR_xx]->linked_list
- recycle: simple rcu + workqueue
=> related: linked list, workqueue, simple rcu (async)
- Safe object
- refcount
debug framework
- print, macro
- thread framework
- centralized barrier
- workqueue: (auto join)