gpio: sysfs: don't use sprintf() for 'value' attribute
A bench with 'perf record' shows that most of time spent in value_show() is spent in sprintf() --42.41%--sysfs_kf_read | |--39.73%--dev_attr_show | | | |--38.23%--value_show | | | | | |--29.22%--sprintf | | | | | |--2.94%--gpiod_get_value_cansleep | | | value_show() only returns "0\n" or "1\n", therefore the use of sprintf() can be avoided With this patch we get the following result with 'perf record' --13.89%--sysfs_kf_read | |--10.72%--dev_attr_show | | | |--9.44%--value_show | | | | | |--4.61%--gpiod_get_value_cansleep Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
9295c01253
commit
7a94b88cb7
|
@ -110,7 +110,9 @@ static ssize_t value_show(struct device *dev,
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
status = sprintf(buf, "%d\n", status);
|
buf[0] = '0' + status;
|
||||||
|
buf[1] = '\n';
|
||||||
|
status = 2;
|
||||||
err:
|
err:
|
||||||
mutex_unlock(&data->mutex);
|
mutex_unlock(&data->mutex);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue