Writing Your First Kernel Module

Linux From Scratch · 3:19

Listen on 93

Lyrics

[Verse 1]
Deep beneath the applications that we see each day
Lives a kernel space so different from the user's way
No malloc here, no printf calls to help you debug
Just kernel memory and printk when your code gets stuck

[Chorus]
Init and exit, that's the way
Module load and cleanup, every day
Register your driver, claim your space
Kernel module dancing in the system's embrace
From user land to kernel land
Understanding where you stand

[Verse 2]
Start with hashtag include, bring the headers that you need
Linux slash module dot h, that's the kernel's creed
Module underscore init marks your entry function clear
Module underscore exit when it's time to disappear

[Chorus]
Init and exit, that's the way
Module load and cleanup, every day
Register your driver, claim your space
Kernel module dancing in the system's embrace
From user land to kernel land
Understanding where you stand

[Verse 3]
No floating point allowed, interrupts can steal your time
GFP underscore KERNEL when you need memory sublime
Return zero for success, negative for error state
Static functions keep it clean, don't pollute the kernel's gate

[Bridge]
Makefile magic, obj dash m
Point to kernel build and then
Make will compile your C code
Insert mod to load your node

[Chorus]
Init and exit, that's the way
Module load and cleanup, every day
Register your driver, claim your space
Kernel module dancing in the system's embrace
From user land to kernel land
Understanding where you stand

[Verse 4]
Register your device node, claim your major number slot
Character or block device, choose the type that fits your plot
File operations structure holds your read and write and more
Open, close, and ioctl knocking at your driver's door

[Outro]
Hello kernel, goodbye user space
Welcome to the driver's place
Module loaded, system knows
That's how kernel programming goes

← Device Trees: Hardware Description Language | Character and Block Device Drivers →