All of lore.kernel.org
 help / color / mirror / Atom feed
From: Donald Hunter <donald.hunter@gmail.com>
To: Jakub Kicinski <kuba@kernel.org>
Cc: davem@davemloft.net,  netdev@vger.kernel.org,
	 edumazet@google.com, pabeni@redhat.com,  andrew+netdev@lunn.ch,
	 horms@kernel.org, almasrymina@google.com,  sdf@fomichev.me
Subject: Re: [PATCH net-next 3/5] tools: ynl-gen: print alloc helper for multi-val attrs
Date: Wed, 23 Jul 2025 10:07:11 +0100	[thread overview]
Message-ID: <m2ldof9sxs.fsf@gmail.com> (raw)
In-Reply-To: <20250722161927.3489203-4-kuba@kernel.org>

Jakub Kicinski <kuba@kernel.org> writes:

> In general YNL provides allocation and free helpers for types.
> For pure nested structs which are used as multi-attr (and therefore
> have to be allocated dynamically) we already print a free helper
> as it's needed by free of the containing struct.
>
> Add printing of the alloc helper for consistency. The helper
> takes the number of entries to allocate as an argument, e.g.:
>
>   static inline struct netdev_queue_id *netdev_queue_id_alloc(unsigned int n)
>   {
> 	return calloc(n, sizeof(struct netdev_queue_id));
>   }
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
>  tools/net/ynl/pyynl/ynl_gen_c.py | 19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen_c.py
> index dc78542e6c88..0394b786aa93 100755
> --- a/tools/net/ynl/pyynl/ynl_gen_c.py
> +++ b/tools/net/ynl/pyynl/ynl_gen_c.py
> @@ -2472,11 +2472,22 @@ _C_KW = {
>      return 'obj'
>  
>  
> -def print_alloc_wrapper(ri, direction):
> +def print_alloc_wrapper(ri, direction, struct=None):
>      name = op_prefix(ri, direction)
> -    ri.cw.write_func_prot(f'static inline struct {name} *', f"{name}_alloc", [f"void"])
> +    struct_name = name
> +    if ri.type_name_conflict:
> +        struct_name += '_'
> +
> +    arg = ["void"]

Minor nit: maybe should be args since it is a list, or change it to
arg = "void" and listify in the write_func_prot() call.

Reviewed-by: Donald Hunter <donald.hunter@gmail.com>

> +    cnt = "1"
> +    if struct and struct.in_multi_val:
> +        arg = ["unsigned int n"]
> +        cnt = "n"
> +
> +    ri.cw.write_func_prot(f'static inline struct {struct_name} *',
> +                          f"{name}_alloc", arg)
>      ri.cw.block_start()
> -    ri.cw.p(f'return calloc(1, sizeof(struct {name}));')
> +    ri.cw.p(f'return calloc({cnt}, sizeof(struct {struct_name}));')
>      ri.cw.block_end()
>  
>  
> @@ -2547,6 +2558,8 @@ _C_KW = {
>      _print_type(ri, "", struct)
>  
>      if struct.request and struct.in_multi_val:
> +        print_alloc_wrapper(ri, "", struct)
> +        ri.cw.nl()
>          free_rsp_nested_prototype(ri)
>          ri.cw.nl()

  reply	other threads:[~2025-07-23  9:16 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-22 16:19 [PATCH net-next 0/5] tools: ynl-gen: print setters for multi-val attrs Jakub Kicinski
2025-07-22 16:19 ` [PATCH net-next 1/5] tools: ynl-gen: don't add suffix for pure types Jakub Kicinski
2025-07-23  8:52   ` Donald Hunter
2025-07-22 16:19 ` [PATCH net-next 2/5] tools: ynl-gen: move free printing to the print_type_full() helper Jakub Kicinski
2025-07-23  8:58   ` Donald Hunter
2025-07-22 16:19 ` [PATCH net-next 3/5] tools: ynl-gen: print alloc helper for multi-val attrs Jakub Kicinski
2025-07-23  9:07   ` Donald Hunter [this message]
2025-07-22 16:19 ` [PATCH net-next 4/5] tools: ynl-gen: print setters " Jakub Kicinski
2025-07-23  9:15   ` Donald Hunter
2025-07-22 16:19 ` [PATCH net-next 5/5] selftests: drv-net: devmem: use new mattr ynl helpers Jakub Kicinski
2025-07-22 21:05   ` Mina Almasry
2025-07-23  9:15   ` Donald Hunter
2025-07-22 23:37 ` [PATCH net-next 0/5] tools: ynl-gen: print setters for multi-val attrs Stanislav Fomichev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2ldof9sxs.fsf@gmail.com \
    --to=donald.hunter@gmail.com \
    --cc=almasrymina@google.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sdf@fomichev.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.