Skip to main content

Module device

Module device 

Source
Expand description

Wrappers de la famille device.

Cf. docs/specs/layer-0/family-device.md.

Trois sous-systèmes :

  • uevent (netlink) : UEventSocket (RAII) + uevent_socket_open ; UEventSocket::read reçoit via recvmsg et vérifie l’authenticité (nl_pid == 0, et uid == 0 du SCM_CREDENTIALS en mode USERSPACE) avant de décoder le message via [air_sys_types::UEventMessage].
  • evdev : evdev_read_events (lecture typée) et les ioctls dédiés EVIOC* (jamais d’ioctl générique, ADR-021 conv. 3).
  • sysfs : aucun wrapper (cf. spec sous-section 3 — c’est la famille fs).

Structs§

UEventSocket
Socket NETLINK_KOBJECT_UEVENT recevant les notifications de hotplug.

Functions§

evdev_abs_info
EVIOCGABS(axis) — plage et état d’un axe absolu.
evdev_device_id
EVIOCGID — identifiant bus/vendor/product/version.
evdev_driver_version
EVIOCGVERSION — version du protocole evdev du driver.
evdev_grab
EVIOCGRAB (argument 1) — capture exclusive du périphérique.
evdev_key_state
EVIOCGKEY(len) — état actuel (enfoncé/relâché) de toutes les touches.
evdev_led_state
EVIOCGLED(len) — état des LED.
evdev_name
EVIOCGNAME(len) — nom du périphérique (octets, possiblement non-UTF-8).
evdev_physical_location
EVIOCGPHYS(len) — emplacement physique (topologie).
evdev_properties
EVIOCGPROP(len) — propriétés du périphérique (INPUT_PROP_*).
evdev_read_events
Lit un lot d’événements dans events, sans allocation.
evdev_release
EVIOCGRAB (pointeur nul) — relâche la capture exclusive.
evdev_revoke
EVIOCREVOKE — révoque définitivement l’accès à ce FD (irréversible).
evdev_set_clock
EVIOCSCLOCKID — choisit l’horloge des horodatages des événements.
evdev_sound_state
EVIOCGSND(len) — état des sorties son.
evdev_supported_codes
EVIOCGBIT(event_type, len) — bitmap des codes supportés. event_type = None interroge les types supportés (EVIOCGBIT(0, len)).
evdev_switch_state
EVIOCGSW(len) — état des interrupteurs (capot, jack…).
evdev_unique_id
EVIOCGUNIQ(len) — identifiant unique (souvent vide).
uevent_socket_open
Ouvre un socket uevent lié aux groups demandés.