Projects to explore internal workings of Linux systems
investigate_vxlan : Setup a VXLAN communication and explore the packet structure
investigate_tcpcksum_offload : Understand how TCP/UDP/IP hardware checksum offload is enabled by a network device driver
investigate_ReceivePacketSteering : Explore how a parallel processing concept is implemented in Linux
investigate_VlanStripping : Explore how the driver works with the hardware to obtain VLAN tag information after a VLAN strip operation
investigate_Promiscuous_mode : Explore how a packet capture program instructs the hardware to allow for listening on all frames on the wire.
investigate_malloc : Explores how malloc works and what happens at the system level.
investigate_mmap : Explores how to use mmap() call and how it works generally.
investigate_coredumps : Observing how to generate and use core dumps for user space programs.
investigate_cow : Exploring the Copy on Write mechanism in action
investigate_stack_x86_64 : Explores how the program stack is used during a function call and return on an x86_64 architecture
investigate_stack_arm32 : Explores how the program stack is used during a function call and return on an ARM 32-bit architecture
investigate_stack_arm64 : Explores how the program stack is used during a function call and return on an ARM 64-bit architecture
investigate_threads : Observing how threads are represented in the kernel and the effect of signals on them.
investigate_staticlibs : Exploring the difference in memory map of a program that is statically and dynamically linked.
investigate_ioctl : Exploring how the ioctl call is used and the kernel stack trace for 2 codes, one handled by the kernel, and the other handled by the network device driver.
investigate_macros : Explores the difference between macro,inline and regular functions.
investigate_recursive_macros : Explore if C macros can be used to create infinite recursions.
investigate_bitfield_space : Explore how much space in memory a 'C' bitfield implementation takes