[DTrace-devel] [PATCH 6/9] Move some ustack code closer to stack code to prepare for consolidation
Kris Van Hees
kris.van.hees at oracle.com
Wed Jan 24 07:01:06 UTC 2024
I do not believe this patch is necessary. For one, this could have been
done in the patch that introduces this function without any loss of clarity.
But also, as I mention in my comments on patch [7/9] om the series, I do not
believe that you need to split out the argument handling into separate
functions.
On Thu, Oct 05, 2023 at 05:14:04PM -0400, eugene.loh at oracle.com wrote:
>
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> ---
> libdtrace/dt_cg.c | 72 +++++++++++++++++++++++------------------------
> 1 file changed, 36 insertions(+), 36 deletions(-)
>
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 389e4dba..6cae8814 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -2189,6 +2189,42 @@ dt_cg_stack_nframes(dtrace_hdl_t *dtp, dt_node_t *dnp)
> return nframes;
> }
>
> +static uint64_t
> +dt_cg_ustack_arg(dtrace_hdl_t *dtp, dt_node_t *dnp)
> +{
> + int nframes = dtp->dt_options[DTRACEOPT_USTACKFRAMES];
> + int strsize = 0;
> + dt_node_t *arg0 = dnp->dn_args;
> + dt_node_t *arg1 = arg0 != NULL ? arg0->dn_list : NULL;
> +
> + if (nframes == DTRACEOPT_UNSET)
> + nframes = _dtrace_ustackframes;
> +
> + if (arg0 != NULL) {
> + if (!dt_node_is_posconst(arg0))
> + dnerror(arg0, D_USTACK_FRAMES, "ustack( ) argument #1 "
> + "must be a non-zero positive integer "
> + "constant\n");
> +
> + nframes = arg0->dn_value;
> + }
> +
> + if (nframes > dtp->dt_options[DTRACEOPT_MAXFRAMES])
> + nframes = dtp->dt_options[DTRACEOPT_MAXFRAMES];
> +
> + if (arg1 != NULL) {
> + if (arg1->dn_kind != DT_NODE_INT ||
> + ((arg1->dn_flags & DT_NF_SIGNED) &&
> + (int64_t)arg1->dn_value < 0))
> + dnerror(arg1, D_USTACK_STRSIZE, "ustack( ) argument #2 "
> + "must be a positive integer constant\n");
> +
> + strsize = arg1->dn_value;
> + }
> +
> + return DTRACE_USTACK_ARG(nframes, strsize);
> +}
> +
> static void
> dt_cg_act_stack(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> {
> @@ -2378,42 +2414,6 @@ dt_cg_act_trunc(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> dt_cg_store_val(pcb, trunc, DTRACEACT_LIBACT, NULL, DT_ACT_TRUNC);
> }
>
> -static uint64_t
> -dt_cg_ustack_arg(dtrace_hdl_t *dtp, dt_node_t *dnp)
> -{
> - int nframes = dtp->dt_options[DTRACEOPT_USTACKFRAMES];
> - int strsize = 0;
> - dt_node_t *arg0 = dnp->dn_args;
> - dt_node_t *arg1 = arg0 != NULL ? arg0->dn_list : NULL;
> -
> - if (nframes == DTRACEOPT_UNSET)
> - nframes = _dtrace_ustackframes;
> -
> - if (arg0 != NULL) {
> - if (!dt_node_is_posconst(arg0))
> - dnerror(arg0, D_USTACK_FRAMES, "ustack( ) argument #1 "
> - "must be a non-zero positive integer "
> - "constant\n");
> -
> - nframes = arg0->dn_value;
> - }
> -
> - if (nframes > dtp->dt_options[DTRACEOPT_MAXFRAMES])
> - nframes = dtp->dt_options[DTRACEOPT_MAXFRAMES];
> -
> - if (arg1 != NULL) {
> - if (arg1->dn_kind != DT_NODE_INT ||
> - ((arg1->dn_flags & DT_NF_SIGNED) &&
> - (int64_t)arg1->dn_value < 0))
> - dnerror(arg1, D_USTACK_STRSIZE, "ustack( ) argument #2 "
> - "must be a positive integer constant\n");
> -
> - strsize = arg1->dn_value;
> - }
> -
> - return DTRACE_USTACK_ARG(nframes, strsize);
> -}
> -
> static void
> dt_cg_act_ustack(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> {
> --
> 2.18.4
>
>
More information about the DTrace-devel
mailing list