1*f36776faSPeter RajnohaWhat:           /sys/.../uevent
2*f36776faSPeter RajnohaDate:           May 2017
3*f36776faSPeter RajnohaKernelVersion:  4.12
4*f36776faSPeter RajnohaContact:        Linux kernel mailing list <linux-kernel@vger.kernel.org>
5*f36776faSPeter RajnohaDescription:
6*f36776faSPeter Rajnoha                Enable passing additional variables for synthetic uevents that
7*f36776faSPeter Rajnoha                are generated by writing /sys/.../uevent file.
8*f36776faSPeter Rajnoha
9*f36776faSPeter Rajnoha                Recognized extended format is ACTION [UUID [KEY=VALUE ...].
10*f36776faSPeter Rajnoha
11*f36776faSPeter Rajnoha                The ACTION is compulsory - it is the name of the uevent action
12*f36776faSPeter Rajnoha                ("add", "change", "remove"). There is no change compared to
13*f36776faSPeter Rajnoha                previous functionality here. The rest of the extended format
14*f36776faSPeter Rajnoha                is optional.
15*f36776faSPeter Rajnoha
16*f36776faSPeter Rajnoha                You need to pass UUID first before any KEY=VALUE pairs.
17*f36776faSPeter Rajnoha                The UUID must be in "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
18*f36776faSPeter Rajnoha                format where 'x' is a hex digit. The UUID is considered to be
19*f36776faSPeter Rajnoha                a transaction identifier so it's possible to use the same UUID
20*f36776faSPeter Rajnoha                value for one or more synthetic uevents in which case we
21*f36776faSPeter Rajnoha                logically group these uevents together for any userspace
22*f36776faSPeter Rajnoha                listeners. The UUID value appears in uevent as
23*f36776faSPeter Rajnoha                "SYNTH_UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" environment
24*f36776faSPeter Rajnoha                variable.
25*f36776faSPeter Rajnoha
26*f36776faSPeter Rajnoha                If UUID is not passed in, the generated synthetic uevent gains
27*f36776faSPeter Rajnoha                "SYNTH_UUID=0" environment variable automatically.
28*f36776faSPeter Rajnoha
29*f36776faSPeter Rajnoha                The KEY=VALUE pairs can contain alphanumeric characters only.
30*f36776faSPeter Rajnoha                It's possible to define zero or more pairs - each pair is then
31*f36776faSPeter Rajnoha                delimited by a space character ' '. Each pair appears in
32*f36776faSPeter Rajnoha                synthetic uevent as "SYNTH_ARG_KEY=VALUE". That means the KEY
33*f36776faSPeter Rajnoha                name gains "SYNTH_ARG_" prefix to avoid possible collisions
34*f36776faSPeter Rajnoha                with existing variables.
35*f36776faSPeter Rajnoha
36*f36776faSPeter Rajnoha                Example of valid sequence written to the uevent file:
37*f36776faSPeter Rajnoha
38*f36776faSPeter Rajnoha                    add fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed A=1 B=abc
39*f36776faSPeter Rajnoha
40*f36776faSPeter Rajnoha                This generates synthetic uevent including these variables:
41*f36776faSPeter Rajnoha
42*f36776faSPeter Rajnoha                    ACTION=add
43*f36776faSPeter Rajnoha                    SYNTH_ARG_A=1
44*f36776faSPeter Rajnoha                    SYNTH_ARG_B=abc
45*f36776faSPeter Rajnoha                    SYNTH_UUID=fe4d7c9d-b8c6-4a70-9ef1-3d8a58d18eed
46*f36776faSPeter RajnohaUsers:
47*f36776faSPeter Rajnoha                udev, userspace tools generating synthetic uevents
48