Genre: eLearning | MP4 | Video: h264, 1280×720 | Audio: aac, 44100 Hz
Language: English | Size: 2.08 GB | Duration: 4h 56m

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


Should have a basic understanding of Linux Kernel modules

C language


Basics of Inline Assembly

Types of Inline Assembly: Basic and Extended

GCC Assembly Syntax: AT&T

Constraint strings

Input and output operands


Various use cases of Inline assembly in Linux kernel: Interrupts, I/O Ports, Atomic operations, CPUID, Control Registers, stamp counters etc

Deep understanding of system calls: Various ways of switching from user space to kernel space (int $0x80, sysenter/sysexit, syscall/sysret)


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

Who this course is for:

Linux Kernel Developers interested in gaining deep knowledge on how system call works





Please enter your comment!
Please enter your name here