mirror of
https://github.com/troglobit/finit.git
synced 2026-10-31 13:00:32 +00:00
keventd: add class/<subsystem>/<name> and driver/<name> conditions
dev/<X> only fires when a device gets a /dev node, which leaves a lot of
embedded-relevant hardware uncoverable: DSA switch cores, IIO sensors,
LEDs, backlight, PHYs, regulators -- all live purely under sysfs.
Two new condition namespaces:
class/<subsystem>/<sysname> asserted on every sysfs class device add
(e.g. <class/leds/blue>)
driver/<name> asserted while the driver is bound to at
least one device (e.g. <driver/mt7530>)
A driver can bind to several devices, so driver/ conditions are
refcounted: asserted on first bind, cleared when the last device is
unbound.
dev_cond() is generalized into a static cond_emit(prefix, rel, set) so
class_cond() and driver_cond() share the same mkpath + symlink/erase
code. The name avoids colliding with src/cond.h's public cond_path()
helper (unrelated function that returns a condition's filesystem path).
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
6 files changed
+174
-13
No files matched your search
+9
-1
@@ -177,7 +177,8 @@ Built-in Conditions
|
||||
|
||||
Finit comes with a set of plugins for conditions:
|
||||
|
||||
- `keventd`: provides `<dev/...>` and `<sys/pwr/...>`
|
||||
- `keventd`: provides `<dev/...>`, `<class/...>`, `<driver/...>`, and
|
||||
`<sys/pwr/...>`
|
||||
- `devmon` (built-in fallback for `<dev/...>` without keventd)
|
||||
- `netlink`: provides `<net/...>`
|
||||
- `pidfile`: provides `<pid/...>`
|
||||
@@ -191,6 +192,11 @@ condition is cleared. If keventd is not in use (an external device
|
||||
manager like udevd is used instead), the `devmon` built-in provides the
|
||||
same conditions by monitoring `/dev` and `/dev/dir` with inotify.
|
||||
|
||||
keventd also asserts `class/<subsystem>/<name>` for devices that have
|
||||
no `/dev` node, e.g. LEDs and DSA switch ports, and `driver/<name>`
|
||||
while a driver is bound to at least one device. See
|
||||
[keventd](keventd.md) for details.
|
||||
|
||||
The `pidfile` plugin recursively watches `/run/` for PID files created
|
||||
by the monitored services, and sets a corresponding condition in the
|
||||
`pid/` namespace.
|
||||
@@ -234,6 +240,8 @@ Built-in conditions:
|
||||
- `usr/foo`
|
||||
- `boot/arg`
|
||||
- `dev/node` and `dev/dir/node`
|
||||
- `class/<subsystem>/<name>`
|
||||
- `driver/<name>`
|
||||
|
||||
> [!NOTE]
|
||||
> Here, `up` means administratively up, the interface flag `IFF_UP`.
|
||||
|
||||
Reference in new issue
Block a user