fs/ext4
fs/ext4/Kconfig
fs/ext4/Makefile
fs/ext4/code.c
(Aus fs/ext4/Kconfig)
config
leitet eine Konfigurationsoption ein, dahinter der Bezeichner der Optiontristate
bezeichnet den Typ der Option (tristate
, bool
, int
, string
, …)select
wählt zusätzliche Optionen, wenn diese Option aktiviert wirdhelp
ist selbst erklärenddepends
→ Beschreibt Abhängigkeiten zu anderen OptionenCONFIG_
zur Verfügungobj-y += foo.o
: Übersetze Datei foo.c
immerobj-m += foo.o
: Übersetze Datei foo.c
, wenn die Modulunterstützung aktiv istobj-$(CONFIG_FOO) += foo.o
foo.c
, wenn Konfigurationsoption CONFIG_FOO
entweder y oder m ist(Aus fs/Makefile)
(Aus fs/ext4/Makefile)
ext4.o
besteht aus mehreren Quellcodedateienext4-y :=
(Aus fs/read_write.c:468)
UNIX
-Paradigma
struct file_operations
:(Aus include/linux/fs.h:2109)
struct file
(Aus include/linux/fs.h:940)
printf()
(Formatstring, Argumente, …)printk()
, Semantik ist aber gleich!pr_err
, pr_info
, pr_debug
, …printk_ratelimited()
🤔pr_debug
:vmalloc
/vfree
kmalloc
/kfree
kmalloc
-Flags
GFP_KERNEL
: „Allocate normal kernel ram. May sleep.”GFP_NOWAIT
: „Allocation will not sleep.”GFP_ATOMIC
: „Allocation will not sleep. May use emergency pools.”clone()
, wie beim Systemaufruf fork()
Thread erstellen:
struct *task_struct kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[],...)
Erstellten Thread aufwecken:
int wake_up_process(struct task_struct *tsk)
Warten bis der Thread sich beendet:
int kthread_stop(struct task_struct *tsk)
Soll der Thread anhalten?
bool kthread_should_stop(void)
Weitere Funktionen und „Dokumentation” finden sich in include/linux/kthread.h
(Siehe Kapitel 10 in „Linux Kernel Development” [2])
spin_lock
/spin_unlock
_bh
, _irq
, _irqsave
down
/up
(Besser: down_interruptible
)mutex_lock
/mutex_unlock
drivers/sst/sst_common.c
in Zeile 146 bzw. 171)BoundedBuffer
aus unserem Treiber. Fragt gerne nach.)get_random_uX()
– siehe include/linux/random.hstrcpy()
, strcmp()
, … (Dokumentation)kstrtol()
(Dokumentation) oder sscanf()
(Dokumentation)drivers/sst/boundedbuffer.{c,h}
→ Im Zweifel eine Ausgabe und einen Fehlercode zurückgegeben