kernel module: fix fops... and move its documentation into README

Sometimes I wonder if anyone has ever run this tutorial, otherwise how
can such basic bugs persist for so long?

test_all.sh: crete
This commit is contained in:
Ciro Santilli
2018-06-29 08:40:15 +01:00
parent 7f3671894f
commit 0cd1a2b602
7 changed files with 98 additions and 64 deletions

View File

@@ -1,43 +1,30 @@
#!/bin/sh
set -e
set -x
# Setup
f=/sys/kernel/debug/lkmc_fops
insmod /fops.ko
cd /sys/kernel/debug/lkmc_fops
## Basic read.
cat f
# => abcd
# dmesg => open
# dmesg => read
# dmesg => len = [0-9]+
# dmesg => close
# read
[ "$(cat "$f")" = abcd ]
## Basic write
# write
printf 01 > "$f"
[ "$(cat "$f")" = 01cd ]
printf '01' >f
# dmesg => open
# dmesg => write
# dmesg => len = 1
# dmesg => buf = a
# dmesg => close
# ENOSPC
printf abcd > "$f"
set +e
printf 12345 > "$f"
exit_status="$?"
set -e
[ "$exit_status" -eq 8 ]
[ "$(cat "$f")" = abcd ]
cat f
# => 01cd
# dmesg => open
# dmesg => read
# dmesg => len = [0-9]+
# dmesg => close
# seek
printf 1234 > "$f"
printf z | dd bs=1 of="$f" seek=2
[ "$(cat "$f")" = 12z4 ]
## ENOSPC
printf '1234' >f
printf '12345' >f
echo "$?"
# => 8
cat f
# => 1234
## seek
printf '1234' >f
printf 'z' | dd bs=1 of=f seek=2
cat f
# => 12z4
# Teardown
rmmod fops