|
|
|
@ -10,67 +10,67 @@ More content will be added as the class progresses.
|
|
|
|
|
|
|
|
|
|
#### Pre-requisites
|
|
|
|
|
|
|
|
|
|
- Being able to program in C
|
|
|
|
|
- Ability to use the Linux CLI
|
|
|
|
|
- Being able to program in C
|
|
|
|
|
- Ability to use the Linux CLI
|
|
|
|
|
|
|
|
|
|
#### What is covered | What you are expected to learn
|
|
|
|
|
|
|
|
|
|
- Learning about Assembly language programming
|
|
|
|
|
- ARM Assembly
|
|
|
|
|
- x86 Assembly
|
|
|
|
|
- Learning about Assembly language programming
|
|
|
|
|
- ARM Assembly
|
|
|
|
|
- x86 Assembly
|
|
|
|
|
|
|
|
|
|
- Advance concepts of Linux (userspace)
|
|
|
|
|
- How a process gets created
|
|
|
|
|
- Creating threads
|
|
|
|
|
- Handling thread priority
|
|
|
|
|
- Multithreading
|
|
|
|
|
- Thread sync
|
|
|
|
|
- Advance concepts of Linux (userspace)
|
|
|
|
|
- How a process gets created
|
|
|
|
|
- Creating threads
|
|
|
|
|
- Handling thread priority
|
|
|
|
|
- Multithreading
|
|
|
|
|
- Thread sync
|
|
|
|
|
|
|
|
|
|
- Debugging (userspace)
|
|
|
|
|
- `valgrind`
|
|
|
|
|
- `gdb`
|
|
|
|
|
- AddressSanitizer
|
|
|
|
|
- Debugging (userspace)
|
|
|
|
|
- `valgrind`
|
|
|
|
|
- `gdb`
|
|
|
|
|
- AddressSanitizer
|
|
|
|
|
|
|
|
|
|
- Build System
|
|
|
|
|
- Makefiles
|
|
|
|
|
- Build System
|
|
|
|
|
- Makefiles
|
|
|
|
|
|
|
|
|
|
- DPDP and SPDK
|
|
|
|
|
- DPDP and SPDK
|
|
|
|
|
|
|
|
|
|
### Linux Programming
|
|
|
|
|
|
|
|
|
|
#### What is covered | What you are expected to learn
|
|
|
|
|
|
|
|
|
|
- Introduction to the Linux Kernel
|
|
|
|
|
|
|
|
|
|
- Basic entities in the Linux Kernel
|
|
|
|
|
- Process Management
|
|
|
|
|
- Sync various elements
|
|
|
|
|
- Memory management
|
|
|
|
|
- Device driver management
|
|
|
|
|
- Spinlock
|
|
|
|
|
|
|
|
|
|
- Device drivers
|
|
|
|
|
- Basic drivers
|
|
|
|
|
- Char drivers
|
|
|
|
|
- Misc drivers
|
|
|
|
|
- Platform drivers (dtb, dto)
|
|
|
|
|
- PWM drivers
|
|
|
|
|
- DRM + GPU drivers
|
|
|
|
|
- Block drivers
|
|
|
|
|
|
|
|
|
|
- Advance drivers
|
|
|
|
|
- USB
|
|
|
|
|
- PCIe
|
|
|
|
|
|
|
|
|
|
- Linux debugging techniques
|
|
|
|
|
- kgdb
|
|
|
|
|
- printk (not sure if this is supposed to be printk, not audible in recorded lectures)
|
|
|
|
|
- BPF
|
|
|
|
|
- JTAG
|
|
|
|
|
- Other infrastructure offered by the Linux Kernel
|
|
|
|
|
|
|
|
|
|
- Networking
|
|
|
|
|
- Stack overview
|
|
|
|
|
- Proogramming from user[space(?)] POV
|
|
|
|
|
- How it works inside the Linux Kernel
|
|
|
|
|
- Inner working of a driver
|
|
|
|
|
- Introduction to the Linux Kernel
|
|
|
|
|
|
|
|
|
|
- Basic entities in the Linux Kernel
|
|
|
|
|
- Process Management
|
|
|
|
|
- Sync various elements
|
|
|
|
|
- Memory management
|
|
|
|
|
- Device driver management
|
|
|
|
|
- Spinlock
|
|
|
|
|
|
|
|
|
|
- Device drivers
|
|
|
|
|
- Basic drivers
|
|
|
|
|
- Char drivers
|
|
|
|
|
- Misc drivers
|
|
|
|
|
- Platform drivers (dtb, dto)
|
|
|
|
|
- PWM drivers
|
|
|
|
|
- DRM + GPU drivers
|
|
|
|
|
- Block drivers
|
|
|
|
|
|
|
|
|
|
- Advance drivers
|
|
|
|
|
- USB
|
|
|
|
|
- PCIe
|
|
|
|
|
|
|
|
|
|
- Linux debugging techniques
|
|
|
|
|
- kgdb
|
|
|
|
|
- printk (not sure if this is supposed to be printk, not audible in recorded lectures)
|
|
|
|
|
- BPF
|
|
|
|
|
- JTAG
|
|
|
|
|
- Other infrastructure offered by the Linux Kernel
|
|
|
|
|
|
|
|
|
|
- Networking
|
|
|
|
|
- Stack overview
|
|
|
|
|
- Proogramming from user[space(?)] POV
|
|
|
|
|
- How it works inside the Linux Kernel
|
|
|
|
|
- Inner working of a driver
|
|
|
|
|