Thread (18 messages) 18 messages, 4 authors, 2015-06-01

Re: [PATCH net-next 02/14] sfc: Add sysfs entry for flags (link control and primary)

From: Edward Cree <hidden>
Date: 2015-05-29 13:09:13

On 29/05/15 11:48, David Laight wrote:
From: Shradha Shah
quoted
Sent: 29 May 2015 11:01
On  every adapter there will be one primary PF per adaptor and
one link control PF per port.
...
quoted
+	return sprintf(buf, "%d\n",
+		       ((efx->mcdi->fn_flags) &
+			(1 << MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL))
+		       ? 1 : 0);
Horrid expression.
Why not:
	(efx->mcdi->fn_flags >> MC_CMD_DRV_ATTACH_EXT_OUT_FLAG_LINKCTRL) & 1
I think the idea is that this is more explicit about what it's doing.
It's a toss-up which is more readable / idiomatic; I prefer the OP version.
(They probably compile to the same thing, though I haven't checked.)
using sprintf() is also excessive. Maybe:
	*buf = '0' + (expression);
	return 1;
That loses the '\n'; it's annoying when you cat a file and it doesn't end in a '\n', because it gloms onto your shell prompt.
sprintf isn't really that expensive, this isn't likely to be called very frequently.
You may also need to check for buffer overrun.
In fact Documentation/filesystems/sysfs.txt says that "show() should always use scnprintf()" and that "The buffer will always be PAGE_SIZE bytes in length."
So if we want to be consistent, it should be

	return scnprintf(buf, PAGE_SIZE, "%d\n", expression);

although it'd be rather surprising if either 0\n or 1\n were ever too big for PAGE_SIZE :grin:.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help