* [PATCH] docs: leds: uleds: Make the documentation match the code. @ 2026-04-02 20:27 Björn Persson 2026-04-23 15:26 ` Lee Jones 0 siblings, 1 reply; 6+ messages in thread From: Björn Persson @ 2026-04-02 20:27 UTC (permalink / raw) To: Lee Jones, Pavel Machek Cc: Jonathan Corbet, Shuah Khan, linux-leds, linux-doc, linux-kernel From: Björn Persson <Bjorn@Rombobjörn.se> · max_brightness must be set. Leaving it uninitialized or just omitting it won't work. · The maximum brightness is not 255 but the value given to max_brightness. · Brightness values must be read as ints, not bytes. · The ints are signed, so the word "unsigned" is misleading. Signed-off-by: Björn Persson <Bjorn@Rombobjörn.se> --- Documentation/leds/uleds.rst | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Documentation/leds/uleds.rst b/Documentation/leds/uleds.rst index 83221098009c..9875a0fa4185 100644 --- a/Documentation/leds/uleds.rst +++ b/Documentation/leds/uleds.rst @@ -17,16 +17,20 @@ structure to it (found in kernel public header file linux/uleds.h):: struct uleds_user_dev { char name[LED_MAX_NAME_SIZE]; + int max_brightness; }; -A new LED class device will be created with the name given. The name can be -any valid sysfs device node name, but consider using the LED class naming -convention of "devicename:color:function". +A new LED class device will be created with the given name and maximum +brightness. The name can be any valid sysfs device node name, but consider +using the LED class naming convention of "devicename:color:function". -The current brightness is found by reading a single byte from the character -device. Values are unsigned: 0 to 255. Reading will block until the brightness -changes. The device node can also be polled to notify when the brightness value -changes. +Although max_brightness is a signed int, only positive values are valid: +1 to INT_MAX. + +The current brightness is found by reading a whole int from the character +device. The possible values are 0 to max_brightness. Reading will block until +the brightness changes. The device node can also be polled to notify when the +brightness value changes. The LED class device will be removed when the open file handle to /dev/uleds is closed. -- 2.53.0 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] docs: leds: uleds: Make the documentation match the code. 2026-04-02 20:27 [PATCH] docs: leds: uleds: Make the documentation match the code Björn Persson @ 2026-04-23 15:26 ` Lee Jones 2026-04-24 17:47 ` Björn Persson 0 siblings, 1 reply; 6+ messages in thread From: Lee Jones @ 2026-04-23 15:26 UTC (permalink / raw) To: Björn Persson Cc: Pavel Machek, Jonathan Corbet, Shuah Khan, linux-leds, linux-doc, linux-kernel On Thu, 02 Apr 2026, Björn Persson wrote: > From: Björn Persson <Bjorn@Rombobjörn.se> > > · max_brightness must be set. Leaving it uninitialized or just omitting it > won't work. What are these points? How do you even type one of those? Anyway, proper sentences / paragraphs is better. > · The maximum brightness is not 255 but the value given to max_brightness. > > · Brightness values must be read as ints, not bytes. > > · The ints are signed, so the word "unsigned" is misleading. > > Signed-off-by: Björn Persson <Bjorn@Rombobjörn.se> > --- > Documentation/leds/uleds.rst | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > > diff --git a/Documentation/leds/uleds.rst b/Documentation/leds/uleds.rst > index 83221098009c..9875a0fa4185 100644 > --- a/Documentation/leds/uleds.rst > +++ b/Documentation/leds/uleds.rst > @@ -17,16 +17,20 @@ structure to it (found in kernel public header file linux/uleds.h):: > > struct uleds_user_dev { > char name[LED_MAX_NAME_SIZE]; > + int max_brightness; > }; > > -A new LED class device will be created with the name given. The name can be > -any valid sysfs device node name, but consider using the LED class naming > -convention of "devicename:color:function". > +A new LED class device will be created with the given name and maximum Did you mean to revers "name given"? A "given name" usually means something else. > +brightness. The name can be any valid sysfs device node name, but consider > +using the LED class naming convention of "devicename:color:function". > > -The current brightness is found by reading a single byte from the character > -device. Values are unsigned: 0 to 255. Reading will block until the brightness > -changes. The device node can also be polled to notify when the brightness value > -changes. > +Although max_brightness is a signed int, only positive values are valid: > +1 to INT_MAX. What about 0? > +The current brightness is found by reading a whole int from the character Try not to shorten names in documentation "integer". Why do we need to specify "whole"? > +device. The possible values are 0 to max_brightness. Reading will block until > +the brightness changes. The device node can also be polled to notify when the > +brightness value changes. > > The LED class device will be removed when the open file handle to /dev/uleds > is closed. > -- > 2.53.0 > -- Lee Jones [李琼斯] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] docs: leds: uleds: Make the documentation match the code. 2026-04-23 15:26 ` Lee Jones @ 2026-04-24 17:47 ` Björn Persson 2026-05-07 13:11 ` Lee Jones 0 siblings, 1 reply; 6+ messages in thread From: Björn Persson @ 2026-04-24 17:47 UTC (permalink / raw) To: Lee Jones Cc: Pavel Machek, Jonathan Corbet, Shuah Khan, linux-leds, linux-doc, linux-kernel [-- Attachment #1: Type: text/plain, Size: 3298 bytes --] Lee Jones wrote: > On Thu, 02 Apr 2026, Björn Persson wrote: > > > From: Björn Persson <Bjorn@Rombobjörn.se> > > > > · max_brightness must be set. Leaving it uninitialized or just omitting it > > won't work. > > What are these points? How do you even type one of those? The bullet point is the character U+00B7 middle dot. I type it with AltGr-period on a Swedish keyboard in Fedora. I don't know what keymap your distro uses for your keyboard. I hear some keyboards lack an AltGr key. > Anyway, proper sentences / paragraphs is better. You mean you dislike bulleted lists? Or if you mean that the first sentence doesn't begin with a capital M, that's because identifiers are case-sensitive in C. There is no Max_brightness, and if it were defined, it would be different from max_brightness. Otherwise I don't understand what you mean with "proper sentences", as I don't see any grammatical errors. > > -A new LED class device will be created with the name given. The name can be > > -any valid sysfs device node name, but consider using the LED class naming > > -convention of "devicename:color:function". > > +A new LED class device will be created with the given name and maximum > > Did you mean to revers "name given"? A "given name" usually means > something else. I felt that "the name and maximum brightness given" would be grammatically awkward. To prevent misinterpretation, how about replacing "given" with a synonym? Perhaps "the specified name and maximum brightness"? Another option is "the given maximum brightness and name", but it feels a little odd to mention the brightness before the name. > > +Although max_brightness is a signed int, only positive values are valid: > > +1 to INT_MAX. > > What about 0? That will get you an EINVAL from uleds.c – presumably because a brightness interval from 0 to 0 would be pointless. That LED would never be lit. > > +The current brightness is found by reading a whole int from the character > > Try not to shorten names in documentation "integer". The type is named "int" in C. There are many integer types, but it would be wrong to try to read a uint16_t or a size_t or any other integer type. The document needs to use the actual type name to make it clear to the reader that they must read sizeof(int) bytes. > Why do we need to specify "whole"? Because you can't read it piecemeal. Usually when you read from a disk file, a pipe, a TCP socket or some other bytestream, the system call will let you read one byte at a time if you want. A reader might assume that /dev/uleds works the same way. From a datagram socket you can read the beginning of a datagram and discard the part that doesn't fit in your buffer. To a reader with a little-endian system and max_brightness ≤ 255, it might seem logical that they'd be able to read the first byte and discard the bits that will always be zero. I thought "whole" would communicate to the reader that they must read sizeof(int) bytes in a single system call. It seems this wording wasn't enough to get the point across that it's necessary to read an int, a whole int, and nothing but an int. Do you think the document needs to expound that point more? Björn Persson [-- Attachment #2: OpenPGP digital signatur --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] docs: leds: uleds: Make the documentation match the code. 2026-04-24 17:47 ` Björn Persson @ 2026-05-07 13:11 ` Lee Jones 2026-05-10 19:43 ` Björn Persson 0 siblings, 1 reply; 6+ messages in thread From: Lee Jones @ 2026-05-07 13:11 UTC (permalink / raw) To: Björn Persson Cc: Pavel Machek, Jonathan Corbet, Shuah Khan, linux-leds, linux-doc, linux-kernel On Fri, 24 Apr 2026, Björn Persson wrote: > Lee Jones wrote: > > On Thu, 02 Apr 2026, Björn Persson wrote: > > > > > From: Björn Persson <Bjorn@Rombobjörn.se> > > > > > > · max_brightness must be set. Leaving it uninitialized or just omitting it > > > won't work. > > > > What are these points? How do you even type one of those? > > The bullet point is the character U+00B7 middle dot. I type it with > AltGr-period on a Swedish keyboard in Fedora. I don't know what keymap > your distro uses for your keyboard. I hear some keyboards lack an AltGr > key. Please use ASCII or you'll freak out the Luddites (like me)! - or * is fine. > > Anyway, proper sentences / paragraphs is better. > > You mean you dislike bulleted lists? > > Or if you mean that the first sentence doesn't begin with a capital M, > that's because identifiers are case-sensitive in C. There is no > Max_brightness, and if it were defined, it would be different from > max_brightness. > > Otherwise I don't understand what you mean with "proper sentences", as > I don't see any grammatical errors. By all means use bullet points for lists, but a slab list of changes in place of sentences is a little odd. Simply describe your changes as you would speak to another human. > > > -A new LED class device will be created with the name given. The name can be > > > -any valid sysfs device node name, but consider using the LED class naming > > > -convention of "devicename:color:function". > > > +A new LED class device will be created with the given name and maximum > > > > Did you mean to revers "name given"? A "given name" usually means > > something else. > > I felt that "the name and maximum brightness given" would be > grammatically awkward. > > To prevent misinterpretation, how about replacing "given" with a > synonym? Perhaps "the specified name and maximum brightness"? Another This is nice. > option is "the given maximum brightness and name", but it feels a > little odd to mention the brightness before the name. > > > > +Although max_brightness is a signed int, only positive values are valid: > > > +1 to INT_MAX. > > > > What about 0? > > That will get you an EINVAL from uleds.c – presumably because a > brightness interval from 0 to 0 would be pointless. That LED would never > be lit. Ah, this is MAX brightness. Okay so it's impossible to set a LED to always off. > > > +The current brightness is found by reading a whole int from the character > > > > Try not to shorten names in documentation "integer". > > The type is named "int" in C. There are many integer types, but it would > be wrong to try to read a uint16_t or a size_t or any other integer > type. The document needs to use the actual type name to make it clear to > the reader that they must read sizeof(int) bytes. Right, but you're not writing in C. > > Why do we need to specify "whole"? > > Because you can't read it piecemeal. Usually when you read from a disk > file, a pipe, a TCP socket or some other bytestream, the system call > will let you read one byte at a time if you want. A reader might assume > that /dev/uleds works the same way. > > From a datagram socket you can read the beginning of a datagram and > discard the part that doesn't fit in your buffer. To a reader with a > little-endian system and max_brightness ≤ 255, it might seem logical > that they'd be able to read the first byte and discard the bits that > will always be zero. > > I thought "whole" would communicate to the reader that they must read > sizeof(int) bytes in a single system call. > > It seems this wording wasn't enough to get the point across that it's > necessary to read an int, a whole int, and nothing but an int. Do you > think the document needs to expound that point more? I think it needs rephrasing a little. "Current brightness is obtained from the character device. It is read in as an integer and must be done so in one go. Or words to that effect. -- Lee Jones ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] docs: leds: uleds: Make the documentation match the code. 2026-05-07 13:11 ` Lee Jones @ 2026-05-10 19:43 ` Björn Persson 2026-05-13 13:45 ` Lee Jones 0 siblings, 1 reply; 6+ messages in thread From: Björn Persson @ 2026-05-10 19:43 UTC (permalink / raw) To: Lee Jones Cc: Pavel Machek, Jonathan Corbet, Shuah Khan, linux-leds, linux-doc, linux-kernel [-- Attachment #1: Type: text/plain, Size: 1086 bytes --] Lee Jones wrote: > On Fri, 24 Apr 2026, Björn Persson wrote: > > > Lee Jones wrote: > > > On Thu, 02 Apr 2026, Björn Persson wrote: > > > > > > > +The current brightness is found by reading a whole int from the character > > > > > > Try not to shorten names in documentation "integer". > > > > The type is named "int" in C. There are many integer types, but it would > > be wrong to try to read a uint16_t or a size_t or any other integer > > type. The document needs to use the actual type name to make it clear to > > the reader that they must read sizeof(int) bytes. > > Right, but you're not writing in C. That's technically true, as I wrote my program in C++. It's far from my favorite, but I had to use a language that can include C header files and use C types, because /dev/uleds is a very C-centric interface. If API documentation isn't allowed to name a type, then I withdraw the patch. It's pointless to continue. The next programmer will also have to read the code to find out what the true API is, like I did. Björn Persson [-- Attachment #2: OpenPGP digital signatur --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] docs: leds: uleds: Make the documentation match the code. 2026-05-10 19:43 ` Björn Persson @ 2026-05-13 13:45 ` Lee Jones 0 siblings, 0 replies; 6+ messages in thread From: Lee Jones @ 2026-05-13 13:45 UTC (permalink / raw) To: Björn Persson Cc: Pavel Machek, Jonathan Corbet, Shuah Khan, linux-leds, linux-doc, linux-kernel On Sun, 10 May 2026, Björn Persson wrote: > Lee Jones wrote: > > On Fri, 24 Apr 2026, Björn Persson wrote: > > > > > Lee Jones wrote: > > > > On Thu, 02 Apr 2026, Björn Persson wrote: > > > > > > > > > +The current brightness is found by reading a whole int from the character > > > > > > > > Try not to shorten names in documentation "integer". > > > > > > The type is named "int" in C. There are many integer types, but it would > > > be wrong to try to read a uint16_t or a size_t or any other integer > > > type. The document needs to use the actual type name to make it clear to > > > the reader that they must read sizeof(int) bytes. > > > > Right, but you're not writing in C. > > That's technically true, as I wrote my program in C++. It's far from my > favorite, but I had to use a language that can include C header files > and use C types, because /dev/uleds is a very C-centric interface. > > If API documentation isn't allowed to name a type, then I withdraw the > patch. It's pointless to continue. The next programmer will also have to > read the code to find out what the true API is, like I did. It's not that it's "not allowed". 90% of my review comments are suggestions. These ones are for simply for the sake of readability. Equally, I'm also not coming up for blackmail or hissy fits. If you don't want to continue with the review process, no one is going to beg you. -- Lee Jones ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-05-13 13:45 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-02 20:27 [PATCH] docs: leds: uleds: Make the documentation match the code Björn Persson 2026-04-23 15:26 ` Lee Jones 2026-04-24 17:47 ` Björn Persson 2026-05-07 13:11 ` Lee Jones 2026-05-10 19:43 ` Björn Persson 2026-05-13 13:45 ` Lee Jones
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox