[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251013165005.83659-5-ast@fiberby.net>
Date: Mon, 13 Oct 2025 16:50:01 +0000
From: Asbjørn Sloth Tønnesen <ast@...erby.net>
To: "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: Asbjørn Sloth Tønnesen <ast@...erby.net>,
Alexei Starovoitov <ast@...nel.org>,
Andrew Lunn <andrew+netdev@...n.ch>,
Arkadiusz Kubalewski <arkadiusz.kubalewski@...el.com>,
Daniel Borkmann <daniel@...earbox.net>,
Daniel Zahka <daniel.zahka@...il.com>,
Donald Hunter <donald.hunter@...il.com>,
Jacob Keller <jacob.e.keller@...el.com>,
Jesper Dangaard Brouer <hawk@...nel.org>,
Jiri Pirko <jiri@...nulli.us>,
Joe Damato <jdamato@...tly.com>,
John Fastabend <john.fastabend@...il.com>,
Jonathan Corbet <corbet@....net>,
Simon Horman <horms@...nel.org>,
Stanislav Fomichev <sdf@...ichev.me>,
Toke Høiland-Jørgensen <toke@...hat.com>,
Vadim Fedorenko <vadim.fedorenko@...ux.dev>,
Willem de Bruijn <willemb@...gle.com>,
bpf@...r.kernel.org,
netdev@...r.kernel.org,
linux-doc@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH net-next 4/6] tools: ynl-gen: add generic p_wrap() helper
Previously only write_func_prot() was performing line wrapping.
As the next patch in this series also requires line wrapping,
then this patch introduces a generic line wrapping helper in
CodeWriter called p_wrap(), which can be used in both cases.
This patch causes a change in the generated prototype for
psp_device_get_locked(), as the skb argument actually fits
on the first line, while not exceeding 80 characters.
No functional changes.
Signed-off-by: Asbjørn Sloth Tønnesen <ast@...erby.net>
---
net/psp/psp-nl-gen.h | 4 +--
tools/net/ynl/pyynl/ynl_gen_c.py | 42 +++++++++++++++++++-------------
2 files changed, 27 insertions(+), 19 deletions(-)
diff --git a/net/psp/psp-nl-gen.h b/net/psp/psp-nl-gen.h
index 25268ed11fb56..ac5f59b4f498c 100644
--- a/net/psp/psp-nl-gen.h
+++ b/net/psp/psp-nl-gen.h
@@ -14,8 +14,8 @@
/* Common nested types */
extern const struct nla_policy psp_keys_nl_policy[PSP_A_KEYS_SPI + 1];
-int psp_device_get_locked(const struct genl_split_ops *ops,
- struct sk_buff *skb, struct genl_info *info);
+int psp_device_get_locked(const struct genl_split_ops *ops, struct sk_buff *skb,
+ struct genl_info *info);
int psp_assoc_device_get_locked(const struct genl_split_ops *ops,
struct sk_buff *skb, struct genl_info *info);
void
diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen_c.py
index b00762721280c..1201c2ac352ea 100755
--- a/tools/net/ynl/pyynl/ynl_gen_c.py
+++ b/tools/net/ynl/pyynl/ynl_gen_c.py
@@ -1693,6 +1693,27 @@ class CodeWriter:
ind += add_ind
self._out.write('\t' * ind + line + '\n')
+ def p_wrap(self, prefix, parts):
+ assert(len(parts) > 0)
+ ts = 8
+ pfx_len = len(prefix)
+ pfx_ind_tabs = pfx_len // ts
+ pfx_ind = '\t' * pfx_ind_tabs + ' ' * (pfx_len % ts)
+ max_len = 80 - (self._ind * ts)
+ is_first_line = True
+ buf = f'{prefix}{parts[0]}'
+ for part in parts[1:]:
+ next_buf = f'{buf} {part}'
+ if len(next_buf) <= max_len:
+ buf = next_buf
+ else:
+ self.p(buf)
+ buf = f'{pfx_ind}{part}'
+ if is_first_line:
+ max_len -= pfx_ind_tabs * (ts-1)
+ is_first_line = False
+ self.p(buf)
+
def nl(self):
self._nl = True
@@ -1751,23 +1772,10 @@ class CodeWriter:
v = ''
elif qual_ret[-1] != '*':
v += ' '
- v += name + '('
- ind = '\t' * (len(v) // 8) + ' ' * (len(v) % 8)
- delta_ind = len(v) - len(ind)
- v += args[0]
- i = 1
- while i < len(args):
- next_len = len(v) + len(args[i])
- if v[0] == '\t':
- next_len += delta_ind
- if next_len > 76:
- self.p(v + ',')
- v = ind
- else:
- v += ', '
- v += args[i]
- i += 1
- self.p(v + ')' + suffix)
+
+ parts = [f'{arg},' for arg in args[:-1]]
+ parts.append(f'{args[-1]}){suffix}')
+ self.p_wrap(f'{v}{name}(', parts)
def write_func_lvar(self, local_vars):
if not local_vars:
--
2.51.0
Powered by blists - more mailing lists