Что ещё есть в TLPI?
Продолжаем рассматривать примеры из The Linux Programming Interface (a.k.a. TLPI)
Inotify (inotify, inotify_init, inotify_watch)
- Чрезвычайно неудобен при мониторинг иерархии файлов, не масштабируется (сложно мониторить всю fs)
fanotify, fanotify_init, fanotify_mark
- Additional capabilities compared to the inotify(7) API include the ability to monitor all of the objects in a mounted filesystem, the ability to make access permission decisions, and the possibility to read or modify files before access by other applications.
- пример на shell
Терминалы и обработка сигналов (возможно, http://man7.org/tlpi/code/online/dist/tty/new_intr.c.html)
- ??
Они большей частью очень слабо документированы. Есть стандартные (которые встречаются не только в Linux), типа ioctl_tty/ioctl_console, socket (в Linux deprecated в пользу netlink), SCSI; есть специфичные, такие как alsa (SNCRV_*), v4l (media/uapi/, media/media_uapi), ioctl_ns, ioctl_iflags, evdev, rtc; кроме того, у ряда устройствоспецифичных драйверов (процессоры, сетевые карты, устройства хранения, USB-устройства) и файловых систем (fat, btrfs) есть собственные интерфейсы ioctl.
netlink — (ещё один) интерфейс для общения с ядром
V4L: media/uapi
Kernel connection multiplexor, networking/kcm.txt
Ну и вообще networking/scaling.txt
KVM, virtual/kvm/api.txt
DRM: gpu/drm-uapi.rst, https://events.linuxfoundation.org/sites/events/files/slides/brezillon-drm-kms.pdf
- KMS/modesetting
perf_event_open, uprobes, ftrace
Небольшой обзор инструментария интроспекции ядра, в основном на базеperf/bpf/*probes/ftrace, ну и ссылки на всякое