Skip to content

Commit ef87b79

Browse files
committed
Reorganize table of contents
1 parent 187c5aa commit ef87b79

File tree

1 file changed

+26
-16
lines changed

1 file changed

+26
-16
lines changed

README.md

+26-16
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,32 @@
11
# Complementary Programs for course "Linux Kernel Internals"
22

3+
This distribution is a collection of programs that are generally unrelated,
4+
except in that they all deal with the concurrent programming. The main
5+
purpose of these programs is to be illustrative and educational.
6+
37
## Project Listing
4-
- [tpool](tpool/): A lightweight thread pool.
5-
- [tinync](tinync/): A tiny `nc` implementation using coroutine.
6-
- [fiber](fiber/): A user-level thread (fiber) using `clone` system call.
7-
- [picosh](picosh/): A minimalist UNIX shell.
8-
- [httpd](httpd/): A multi-threaded web server.
9-
- [ringbuffer](ringbuffer/): A lock-less ring buffer.
10-
- [mbus](mbus/): A concurrent message bus.
11-
- [spmc](spmc/): A concurrent single-producer/multiple-consumer queue.
12-
- [map-reduce](map-reduce/): word counting using MapReduce.
13-
- [mpmc](mpmc/): A multiple-producer/multiple-consumer (MPMC) queue.
14-
- [channel](channel/): A Linux futex based Go channel implementation.
15-
- [redirect](redirect/): An I/O multiplexer to monitor stdin redirect using `timerfd` and `epoll`.
16-
- [rcu\_list](rcu_list/): A concurrent linked list utilizing the simplified RCU algorithm.
17-
- [ringbuf\_shm](ringbuf_shm/): An optimized lock-free ring buffer with shared memory.
18-
- [qsbr](qsbr/): An implementation of Quiescent state based reclamation (QSBR).
19-
- [preempt\_sched](preempt_sched/): A preemptive userspace multitasking based on a SIGALRM signal.
8+
* [Coroutine](https://en.wikipedia.org/wiki/Coroutine)
9+
- [tinync](tinync/): A tiny `nc` implementation using coroutine.
10+
- [fiber](fiber/): A user-level thread (fiber) using `clone` system call.
11+
- [preempt\_sched](preempt_sched/): A preemptive userspace multitasking based on a SIGALRM signal.
12+
* Multi-threading Paradigms
13+
- [tpool](tpool/): A lightweight thread pool.
14+
* [Producer–consumer problem](https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem)
15+
- [spmc](spmc/): A concurrent single-producer/multiple-consumer queue.
16+
- [mpmc](mpmc/): A multiple-producer/multiple-consumer (MPMC) queue.
17+
- [channel](channel/): A Linux futex based Go channel implementation.
18+
* [Lock-Free](https://en.wikipedia.org/wiki/Non-blocking_algorithm) Data Structure
19+
- [ringbuffer](ringbuffer/): A lock-less ring buffer.
20+
- [ringbuf\_shm](ringbuf_shm/): An optimized lock-free ring buffer with shared memory.
21+
- [mbus](mbus/): A concurrent message bus.
22+
* [Synchronization](https://en.wikipedia.org/wiki/Synchronization_(computer_science))
23+
- [rcu\_list](rcu_list/): A concurrent linked list utilizing the simplified RCU algorithm.
24+
- [qsbr](qsbr/): An implementation of Quiescent state based reclamation (QSBR).
25+
* Applications
26+
- [httpd](httpd/): A multi-threaded web server.
27+
- [map-reduce](map-reduce/): word counting using MapReduce.
28+
- [redirect](redirect/): An I/O multiplexer to monitor stdin redirect using `timerfd` and `epoll`.
29+
- [picosh](picosh/): A minimalist UNIX shell.
2030

2131
## License
2232

0 commit comments

Comments
 (0)