Skip to content

Day14 - Event-Driven GPIO Driver

๐Ÿงฐ Build

make

๐Ÿš€ Load Driver

sudo insmod mygpio-irq.ko
dmesg | tail

๐Ÿ”Œ Device Node

ls -l /dev/mygpio

๐Ÿ’ก LED Control

echo led1=1 | sudo tee /dev/mygpio
echo led2=1 | sudo tee /dev/mygpio
echo all=0  | sudo tee /dev/mygpio

๐Ÿงช Test 1: Blocking Read

cat /dev/mygpio

Expected:

  • Waits for event
  • Press button โ†’ prints one line
  • Continues waiting

๐Ÿงช Test 2: Single Event

head -n 1 /dev/mygpio

Expected:

  • Exit after one event

๐Ÿงช Test 3: Non-blocking Read

python3 test_nonblock.py

Expected:

  • No event โ†’ EAGAIN
  • Event โ†’ data returned

๐Ÿงช Test 4: poll()

python3 test_poll.py

Expected:

  • Wait for event
  • Event triggers poll
  • read() returns data

๐Ÿงช Test 5: Rapid Press

  • Press button quickly multiple times

Expected:

  • Events queued
  • Possible drops if buffer full

โš ๏ธ Module Removal

sudo rmmod mygpio_irq

Note:

  • Will fail if device is open
  • This is expected (module refcount)

๐Ÿงน Unload

sudo rmmod mygpio_irq