- Process and Threads
- Process Scheduling
- Synchronization IPC mechanisms (mutex/spinlock/semaphore)
- Memory Management (Virtual memory/paging/translation)
- Producer and Consumer Problem
- Caching (cache coherency/cache line)
- Memory mapped IO/ IO Mapped IO
- Interrupt (Done)
- Context switch (process/ISR)
- Registers/instructions/execution (Done)
- ARM programmer's model (Done)
- UART (Done)
- SPI (Done)
- I2C (Done)
- RS232/422/485 (Done)
- Linux boot sequence
- Buffer sharing: DMA Buf & ION
- Wait events/Wait queues
- ISR handling (Top half/Bottom half)
- Bottom Half - Tasklet/Workqueue/SoftIRQ
- Platform driver
- Driver probe (Module init, driver register, compatibility string)
- Device Tree (Device nodes and parsing)
- Clocks/Regulators/GPIO/Pinctrl
- IOMMU/MMU
- Timer Library
- IOCTL, notify dirent
- kmalloc/vmalloc
- kmap/mmap/ioremap
- sysfs/debugfs/procfs
- What is static keywords? (Done)
- What is volatile for? (Done)
- Macro usage (Done)
- Network OSI layers (Done)
- TCP/UDP
- IP (Done)
- Ethernet
- Router/Switch
- Linked list (Done)
- reverse Linked list (Done)
- delete a node from the linked list (Done)
- delete duplicate (Done)
- detect cycle (Done)
- Implement hash table with linked list (Done)
- Implement queue with linked list (Done)
- String
- reverse string (Done)
- check whether it is palindrome (Done)
- implement strstr() (Done)
- implement atoi()/itoa()
- Circular buffer
- State machine (Done)
- Stack (Done)
- Queue (Done)
- Binary search tree (Done)
- DFS (Done)
- BFS (Done)
- Memory api
- safe memcpy/memmove (Done)
- sizeof (Done)
- alligned_malloc (Kinda Done)
- wrapper api to read/write arbitrary bytes with fix-byte API
- Bitewise operation (Done)
- hamming distance (Done)
- plus without using '+' (A plus B) (Done)
- reverse bits (Done)
- Power of 2 (Done)
- Add binary (Done)
- Single number (Done)
- Check endianess (Done)