summaryrefslogtreecommitdiff
path: root/md/notes/kernel/topics.md
blob: e2c107b29ec53b0c7029cfbeafbc691b27be7829 (plain) (blame)
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
title: Topics
keywords:blog,projects

#

Linux kernel programming topics, mostly for those who have some programming
experience and linux command line expertise. Making notes on all fundamental 
kernel API's and gathering all examples from all over the internet, all is
compiled and test on Raspberry Pi 4 kernel 6.6.20. No other versions of kernel
is checked. With move one to new SoC or new kernel all examples will also update
accordingly. 

## Topic

### Basics

[Compile kernel](/writeup/compile_linux_kernel.md)  
[Hello world driver](/writeup/kernel_hello_world.md)  
[Create thread](/notes/kernel/create_thread.md)  
[Sysfs](/notes/kernel/create_sysfs_entry.md)   
[Procfs](/notes/kernel/create_procfs_entry.md)  
[User mode helpers](/notes/kernel/usermode_helper.md)  
<!--[!IOCTL driver](/notes/kernel/ioctl_driver.md)  -->
<!--[!IRQ handler](/notes/kernel/irq_handler.md)  -->
<!-- Ramfs   -->
<!-- Write files to user space   -->
<!-- Read files from user space   -->
<!-- Create character device  -->
<!-- Create netfilter firewall  -->
<!-- DMA programming   -->



### Intermediate 

[Kernel /dev/hwrng](/writeup/kernel_dev_hwrng.md)  
[Netlink socket](/notes/kernel/netlink_socket.md)  
[Netfilter module](/notes/kernel/netfilter_module.md)  
<!-- Create syscall  -->
<!-- Dummy I2C driver  -->
<!-- Dummy SPI driver  -->
<!-- Create ADC driver  -->
<!-- Mutex'es -->
<!-- Threads -->
<!-- Locking -->
<!-- RB-trees -->  

### Deep into kernel

<!-- Virtual GPIO driver -->
<!-- Virtual Pinctrl driver -->
<!-- Create key logger  -->  
<!-- Create device tree entry  -->  
<!-- Netfilter ICMP filter -->
<!-- Bpf filter -->


### Kernel userspace

[Netlink show ip](/notes/kernel/netlink_show_ip.md)   

<!-- Netfilter set ip -->
<!-- khttpd -->