[DTrace-devel] [PATCH 04/19] Eliminate dt_pdesc
Eugene Loh
eugene.loh at oracle.com
Tue Sep 3 17:47:45 UTC 2024
Patch withdrawn. It's been squashed into v2 03/19.
On 8/29/24 01:25, eugene.loh at oracle.com wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
>
> The probe descriptions dt_pdesc are superfluous and are
> eliminated here.
>
> Consequently, we also no longer need the last args to
> dt_epid_add()
> dt_epid_lookup()
>
> Nor so we need to track prid in dt_link_construct().
>
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> ---
> libdtrace/dt_cc.c | 8 +-------
> libdtrace/dt_consume.c | 3 +--
> libdtrace/dt_handle.c | 2 +-
> libdtrace/dt_impl.h | 7 ++-----
> libdtrace/dt_map.c | 33 ++++++---------------------------
> 5 files changed, 11 insertions(+), 42 deletions(-)
>
> diff --git a/libdtrace/dt_cc.c b/libdtrace/dt_cc.c
> index cf3c5504..e66d76fb 100644
> --- a/libdtrace/dt_cc.c
> +++ b/libdtrace/dt_cc.c
> @@ -959,7 +959,6 @@ dt_link_construct(dtrace_hdl_t *dtp, const dt_probe_t *prp, dtrace_difo_t *dp,
> uint_t len = sdp->dtdo_brelen;
> const dof_relodesc_t *rp = sdp->dtdo_breltab;
> dof_relodesc_t *nrp = &dp->dtdo_breltab[rc];
> - dtrace_id_t prid = prp->desc->id;
> int no_deps = 0;
>
> if (idp != NULL) {
> @@ -1197,11 +1196,6 @@ dt_link_construct(dtrace_hdl_t *dtp, const dt_probe_t *prp, dtrace_difo_t *dp,
> case DT_CONST_STACK_SKIP:
> nrp->dofr_data = prp->prov->impl->stack_skip;
> continue;
> - default:
> - /* probe name -> value is probe id */
> - if (strchr(idp->di_name, ':') != NULL)
> - prid = rp->dofr_data;
> - continue;
> }
>
> continue;
> @@ -1218,7 +1212,7 @@ dt_link_construct(dtrace_hdl_t *dtp, const dt_probe_t *prp, dtrace_difo_t *dp,
> if (rdp == NULL)
> return -1;
> if (rdp->dtdo_ddesc != NULL) {
> - nepid = dt_epid_add(dtp, rdp->dtdo_ddesc, prid);
> + nepid = dt_epid_add(dtp, rdp->dtdo_ddesc);
> clid++;
> } else
> nepid = 0;
> diff --git a/libdtrace/dt_consume.c b/libdtrace/dt_consume.c
> index e3ce2d3b..88083b19 100644
> --- a/libdtrace/dt_consume.c
> +++ b/libdtrace/dt_consume.c
> @@ -2211,8 +2211,7 @@ dt_consume_one_probe(dtrace_hdl_t *dtp, FILE *fp, char *data, uint32_t size,
> pdat->dtpda_epid = epid;
> pdat->dtpda_data = data;
>
> - rval = dt_epid_lookup(dtp, epid, &pdat->dtpda_ddesc,
> - &pdat->dtpda_pdesc);
> + rval = dt_epid_lookup(dtp, epid, &pdat->dtpda_ddesc);
> if (rval != 0)
> return dt_set_errno(dtp, EDT_BADEPID);
> pdat->dtpda_pdesc = (dtrace_probedesc_t *)dtp->dt_probes[prid]->desc;
> diff --git a/libdtrace/dt_handle.c b/libdtrace/dt_handle.c
> index b1ba5f9f..79ecbac8 100644
> --- a/libdtrace/dt_handle.c
> +++ b/libdtrace/dt_handle.c
> @@ -150,7 +150,7 @@ dt_handle_err(dtrace_hdl_t *dtp, dtrace_probedata_t *data)
> */
> epid = DT_REC(uint64_t, 0);
>
> - if (dt_epid_lookup(dtp, epid, &errdd, &errpd) != 0)
> + if (dt_epid_lookup(dtp, epid, &errdd) != 0)
> return dt_set_errno(dtp, EDT_BADERROR);
> errpd = (dtrace_probedesc_t *)dtp->dt_probes[epid>>32]->desc;
> err.dteda_ddesc = errdd;
> diff --git a/libdtrace/dt_impl.h b/libdtrace/dt_impl.h
> index a2ae84f6..c2b18b0b 100644
> --- a/libdtrace/dt_impl.h
> +++ b/libdtrace/dt_impl.h
> @@ -345,7 +345,6 @@ struct dtrace_hdl {
> dtrace_epid_t dt_nextepid; /* next enabled probe ID to assign */
> size_t dt_maxprobe; /* max enabled probe ID */
> dtrace_datadesc_t **dt_ddesc; /* probe data descriptions */
> - dtrace_probedesc_t **dt_pdesc; /* probe descriptions for enabled prbs */
> size_t dt_maxagg; /* max aggregation ID */
> dtrace_aggdesc_t **dt_adesc; /* aggregation descriptions */
> struct dt_aggregate *dt_aggregate; /* aggregate */
> @@ -774,10 +773,8 @@ extern dtrace_datadesc_t *dt_datadesc_hold(dtrace_datadesc_t *ddp);
> extern void dt_datadesc_release(dtrace_hdl_t *, dtrace_datadesc_t *);
> extern dtrace_datadesc_t *dt_datadesc_create(dtrace_hdl_t *);
> extern int dt_datadesc_finalize(dtrace_hdl_t *, dtrace_datadesc_t *);
> -extern dtrace_epid_t dt_epid_add(dtrace_hdl_t *, dtrace_datadesc_t *,
> - dtrace_id_t);
> -extern int dt_epid_lookup(dtrace_hdl_t *, dtrace_epid_t, dtrace_datadesc_t **,
> - dtrace_probedesc_t **);
> +extern dtrace_epid_t dt_epid_add(dtrace_hdl_t *, dtrace_datadesc_t *);
> +extern int dt_epid_lookup(dtrace_hdl_t *, dtrace_epid_t, dtrace_datadesc_t **);
> extern void dt_epid_destroy(dtrace_hdl_t *);
> typedef void (*dt_cg_gap_f)(dt_pcb_t *, int);
> extern uint32_t dt_rec_add(dtrace_hdl_t *, dt_cg_gap_f, dtrace_actkind_t,
> diff --git a/libdtrace/dt_map.c b/libdtrace/dt_map.c
> index 87ce5707..9011da5d 100644
> --- a/libdtrace/dt_map.c
> +++ b/libdtrace/dt_map.c
> @@ -92,7 +92,7 @@ dt_datadesc_finalize(dtrace_hdl_t *dtp, dtrace_datadesc_t *ddp)
> * description.
> */
> dtrace_epid_t
> -dt_epid_add(dtrace_hdl_t *dtp, dtrace_datadesc_t *ddp, dtrace_id_t prid)
> +dt_epid_add(dtrace_hdl_t *dtp, dtrace_datadesc_t *ddp)
> {
> dtrace_id_t max = dtp->dt_maxprobe;
> dtrace_epid_t epid;
> @@ -101,27 +101,19 @@ dt_epid_add(dtrace_hdl_t *dtp, dtrace_datadesc_t *ddp, dtrace_id_t prid)
> if (epid >= max || dtp->dt_ddesc == NULL) {
> dtrace_id_t nmax = max ? (max << 1) : 2;
> dtrace_datadesc_t **nddesc;
> - dtrace_probedesc_t **npdesc;
>
> nddesc = dt_calloc(dtp, nmax, sizeof(void *));
> - npdesc = dt_calloc(dtp, nmax, sizeof(void *));
> - if (nddesc == NULL || npdesc == NULL) {
> - dt_free(dtp, nddesc);
> - dt_free(dtp, npdesc);
> + if (nddesc == NULL)
> return dt_set_errno(dtp, EDT_NOMEM);
> - }
>
> if (dtp->dt_ddesc != NULL) {
> size_t osize = max * sizeof(void *);
>
> memcpy(nddesc, dtp->dt_ddesc, osize);
> dt_free(dtp, dtp->dt_ddesc);
> - memcpy(npdesc, dtp->dt_pdesc, osize);
> - dt_free(dtp, dtp->dt_pdesc);
> }
>
> dtp->dt_ddesc = nddesc;
> - dtp->dt_pdesc = npdesc;
> dtp->dt_maxprobe = nmax;
> }
>
> @@ -129,14 +121,12 @@ dt_epid_add(dtrace_hdl_t *dtp, dtrace_datadesc_t *ddp, dtrace_id_t prid)
> return epid;
>
> dtp->dt_ddesc[epid] = dt_datadesc_hold(ddp);
> - dtp->dt_pdesc[epid] = (dtrace_probedesc_t *)dtp->dt_probes[prid]->desc;
>
> return epid;
> }
>
> int
> -dt_epid_lookup(dtrace_hdl_t *dtp, dtrace_epid_t epid, dtrace_datadesc_t **ddp,
> - dtrace_probedesc_t **pdp)
> +dt_epid_lookup(dtrace_hdl_t *dtp, dtrace_epid_t epid, dtrace_datadesc_t **ddp)
> {
> /* Remove the PRID portion of the EPID. */
> epid &= 0xffffffff;
> @@ -146,7 +136,6 @@ dt_epid_lookup(dtrace_hdl_t *dtp, dtrace_epid_t epid, dtrace_datadesc_t **ddp,
>
> dtrace_difo_t *rdp = dt_dlib_get_func_difo(dtp, dtp->dt_stmts[epid]->dtsd_clause);
> *ddp = dt_datadesc_hold(rdp->dtdo_ddesc); // FIXME what releases the hold?
> - *pdp = dtp->dt_pdesc[epid];
>
> return (*ddp == NULL) ? -1 : 0;
> }
> @@ -156,26 +145,16 @@ dt_epid_destroy(dtrace_hdl_t *dtp)
> {
> size_t i;
>
> - assert((dtp->dt_pdesc != NULL && dtp->dt_ddesc != NULL &&
> - dtp->dt_maxprobe > 0) || (dtp->dt_pdesc == NULL &&
> - dtp->dt_ddesc == NULL && dtp->dt_maxprobe == 0));
> -
> - if (dtp->dt_pdesc == NULL)
> - return;
> + assert((dtp->dt_ddesc != NULL && dtp->dt_maxprobe > 0) ||
> + (dtp->dt_ddesc == NULL && dtp->dt_maxprobe == 0));
>
> for (i = 0; i < dtp->dt_maxprobe; i++) {
> - if (dtp->dt_ddesc[i] == NULL) {
> - assert(dtp->dt_pdesc[i] == NULL);
> + if (dtp->dt_ddesc[i] == NULL)
> continue;
> - }
>
> dt_datadesc_release(dtp, dtp->dt_ddesc[i]);
> - assert(dtp->dt_pdesc[i] != NULL);
> }
>
> - free(dtp->dt_pdesc);
> - dtp->dt_pdesc = NULL;
> -
> free(dtp->dt_ddesc);
> dtp->dt_ddesc = NULL;
> dtp->dt_nextepid = 0;
More information about the DTrace-devel
mailing list