System Calls in deep

Linux Kernel Programming – System calls

What will you learn from this course?

What you’ll learn

  • Basics of Inline Assembly.
  • Writing examples for Inline Assembly.
  • Various places where inline assembly is used.
  • Adding a new system call to kernel.
  • Updating system call table.
  • VDSO and Virtual System Calls.

Course Content

  • Inline Assembly –> 24 lectures • 1hr 10min.
  • Linux Kernel Inline Assembly Examples –> 22 lectures • 1hr.
  • Introduction to System Calls –> 23 lectures • 1hr.
  • VDSO –> 5 lectures • 9min.
  • Adding a new system call –> 13 lectures • 54min.
  • Kernel Symbols –> 12 lectures • 43min.

System Calls in deep


  • Should have a basic understanding of Linux Kernel modules.
  • C language.

What will you learn from this course?

  • Basics of Inline Assembly
  • Types of Inline Assembly: Basic and Extended
  • GCC Assembly Syntax: AT&T
  • Constraint strings
  • Input and output operands
  • Clobbering
  • Various use cases of Inline assembly in Linux kernel: Interrupts, I/O Ports, Atomic operations, CPUID, Control Registers, Timestamp counters etc
  • Deep understanding of system calls: Various ways of switching from user space to kernel space (int $0x80, sysenter/sysexit, syscall/sysret)
  • VDSO
  • Adding a new system call which doesn’t accept any arguments
  • Adding a system call which accept argument
  • Kernel Symbols and Kernel Symbol table
  • Writing a kernel module which overwrite the kernel symbol table
  • Writing a kernel module which sniffs the parameters passed to a system call

Examples covered in this course:

  • Add two numbers in inline assembly
  • Add three numbers in inline assembly
  • Subtract, divide, multiply in inline assembly
  • Can we disable/enable interrupts in user space
  • Checking whether interrupts are enabled and disabled in user space
  • Enabling/Disabling interrupts in user space
  • Implementing simple locking to avoid race conditions: Lock prefix, compare and exchange instructions
  • And many
Get Tutorial