[PATCH 0/8] kernel: replace seq_puts by seq_putc

Maxim Moskalets posted 8 patches 1 year, 10 months ago
kernel/bpf/arraymap.c            |  6 +++---
kernel/bpf/bpf_struct_ops.c      |  2 +-
kernel/bpf/hashtab.c             |  4 ++--
kernel/bpf/local_storage.c       |  4 ++--
kernel/cgroup/cgroup.c           |  2 +-
kernel/cgroup/debug.c            |  6 +++---
kernel/latencytop.c              |  2 +-
kernel/locking/lockdep_proc.c    | 24 ++++++++++++------------
kernel/module/procfs.c           |  4 ++--
kernel/module/tracking.c         |  2 +-
kernel/sched/cpuacct.c           |  4 ++--
kernel/sched/debug.c             | 14 +++++++-------
kernel/time/test_udelay.c        |  2 +-
kernel/trace/trace_events_hist.c | 26 +++++++++++++-------------
kernel/trace/trace_events_user.c |  8 ++++----
kernel/trace/trace_hwlat.c       |  4 ++--
16 files changed, 57 insertions(+), 57 deletions(-)
[PATCH 0/8] kernel: replace seq_puts by seq_putc
Posted by Maxim Moskalets 1 year, 10 months ago
Using seq_putc for single characters is faster and more appropriate
than seq_puts, since only one character is passed and there is no need
to use a more powerful and less fast function.

Maxim Moskalets (8):
  bpf: replace seq_puts by seq_putc
  cgroup: replace seq_puts by seq_putc
  trace: replace seq_puts by seq_putc
  module: replace seq_puts by seq_putc
  sched: replace seq_puts by seq_putc
  locking: replace seq_puts by seq_putc
  time: replace seq_puts by seq_putc
  kernel: replace seq_puts by seq_putc

 kernel/bpf/arraymap.c            |  6 +++---
 kernel/bpf/bpf_struct_ops.c      |  2 +-
 kernel/bpf/hashtab.c             |  4 ++--
 kernel/bpf/local_storage.c       |  4 ++--
 kernel/cgroup/cgroup.c           |  2 +-
 kernel/cgroup/debug.c            |  6 +++---
 kernel/latencytop.c              |  2 +-
 kernel/locking/lockdep_proc.c    | 24 ++++++++++++------------
 kernel/module/procfs.c           |  4 ++--
 kernel/module/tracking.c         |  2 +-
 kernel/sched/cpuacct.c           |  4 ++--
 kernel/sched/debug.c             | 14 +++++++-------
 kernel/time/test_udelay.c        |  2 +-
 kernel/trace/trace_events_hist.c | 26 +++++++++++++-------------
 kernel/trace/trace_events_user.c |  8 ++++----
 kernel/trace/trace_hwlat.c       |  4 ++--
 16 files changed, 57 insertions(+), 57 deletions(-)


base-commit: 928a87efa42302a23bb9554be081a28058495f22
-- 
2.39.2
Re: [PATCH 0/8] kernel: replace seq_puts by seq_putc
Posted by Al Viro 1 year, 10 months ago
On Tue, Mar 26, 2024 at 09:45:14PM +0300, Maxim Moskalets wrote:
> Using seq_putc for single characters is faster and more appropriate
> than seq_puts, since only one character is passed and there is no need
> to use a more powerful and less fast function.

Could we simply do this:

static inline void seq_puts(struct seq_file *m, const char *s)
{
	if (__builtin_constant_p(*s) && s[0] && !s[1])
		seq_putc(m, s[0]);
	else
		__seq_puts(m, s);
}

IIRC, __builtin_constant_p(*s) is true when s is a string literal.
Works for recent gcc and clang...