[DTrace-devel] [PATCH 2/2 v2] Add freopen() and system() support
Kris Van Hees
kris.van.hees at oracle.com
Wed Aug 19 07:37:57 PDT 2020
On Tue, Aug 18, 2020 at 06:05:38PM -0700, Eugene Loh wrote:
> Initially posted about 3.5 weeks ago, but I don't think I've seen a
> response.
I was off for two weeks, and have been catching up on things the past week.
I'll be getting to these in the next day or two.
> On 08/11/2020 03:29 PM, Eugene Loh wrote:
> > Review please.
> >
> >
> > On 07/24/2020 12:50 PM, eugene.loh at oracle.com wrote:
> >> From: Eugene Loh <eugene.loh at oracle.com>
> >>
> >> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> >> ---
> >> libdtrace/dt_cg.c | 10 ----------
> >> libdtrace/dt_consume.c | 31 +++++++++++++++++++++++++++----
> >> libdtrace/dt_open.c | 8 ++++++++
> >> 3 files changed, 35 insertions(+), 14 deletions(-)
> >>
> >> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> >> index 2435b84d..3c454098 100644
> >> --- a/libdtrace/dt_cg.c
> >> +++ b/libdtrace/dt_cg.c
> >> @@ -579,11 +579,6 @@ dt_cg_act_exit(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> >> dt_regset_free(pcb->pcb_regs, dnp->dn_args->dn_reg);
> >> }
> >>
> >> -static void
> >> -dt_cg_act_freopen(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> >> -{
> >> -}
> >> -
> >> static void
> >> dt_cg_act_ftruncate(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> >> {
> >> @@ -760,11 +755,6 @@ dt_cg_act_symmod(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> >> {
> >> }
> >>
> >> -static void
> >> -dt_cg_act_system(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> >> -{
> >> -}
> >> -
> >> static void
> >> dt_cg_act_trace(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
> >> {
> >> diff --git a/libdtrace/dt_consume.c b/libdtrace/dt_consume.c
> >> index bd54ddee..f94459d9 100644
> >> --- a/libdtrace/dt_consume.c
> >> +++ b/libdtrace/dt_consume.c
> >> @@ -2397,6 +2397,10 @@ dt_consume_one(dtrace_hdl_t *dtp, FILE *fp, int cpu, char *buf,
> >> for (i = 0; i < pdat->dtpda_ddesc->dtdd_nrecs; i++) {
> >> int n;
> >> dtrace_recdesc_t *rec;
> >> + int (*func)(dtrace_hdl_t *, FILE *, void *,
> >> + const dtrace_probedata_t *,
> >> + const dtrace_recdesc_t *, uint_t,
> >> + const void *buf, size_t);
> >>
> >> rec = &pdat->dtpda_ddesc->dtdd_recs[i];
> >> if (rec->dtrd_action == DTRACEACT_EXIT)
> >> @@ -2414,13 +2418,32 @@ dt_consume_one(dtrace_hdl_t *dtp, FILE *fp, int cpu, char *buf,
> >> if (rval != DTRACE_CONSUME_THIS)
> >> return dt_set_errno(dtp, EDT_BADRVAL);
> >>
> >> - if (rec->dtrd_action == DTRACEACT_PRINTF) {
> >> + switch (rec->dtrd_action) {
> >> + case DTRACEACT_PRINTF:
> >> + func = dtrace_fprintf;
> >> + break;
> >> +/*
> >> + case DTRACEACT_PRINTA:
> >> + func = dtrace_fprinta;
> >> + break;
> >> +*/
> >> + case DTRACEACT_SYSTEM:
> >> + func = dtrace_system;
> >> + break;
> >> + case DTRACEACT_FREOPEN:
> >> + func = dtrace_freopen;
> >> + break;
> >> + default:
> >> + func = NULL;
> >> + break;
> >> + }
> >> +
> >> + if (func) {
> >> int nrecs;
> >>
> >> nrecs = pdat->dtpda_ddesc->dtdd_nrecs - i;
> >> - n = dtrace_fprintf(dtp, fp, rec->dtrd_format,
> >> - pdat, rec, nrecs, data,
> >> - size);
> >> + n = (*func)(dtp, fp, rec->dtrd_format, pdat,
> >> + rec, nrecs, data, size);
> >> if (n < 0)
> >> return -1;
> >> if (n > 0)
> >> diff --git a/libdtrace/dt_open.c b/libdtrace/dt_open.c
> >> index 5db72e45..eb24f141 100644
> >> --- a/libdtrace/dt_open.c
> >> +++ b/libdtrace/dt_open.c
> >> @@ -762,6 +762,14 @@ dt_vopen(int version, int flags, int *errp,
> >> for (i = 0; i < DTRACEOPT_MAX; i++)
> >> dtp->dt_options[i] = DTRACEOPT_UNSET;
> >>
> >> + /* FIXME: the default value of strsize must be set.
> >> + * In legacy DTrace, the value was read from the kernel
> >> + * in dt_options_load(). When string handling is done,
> >> + * we will introduce a real solution suitable for this
> >> + * version. For now, just set it here.
> >> + */
> >> + dtp->dt_options[DTRACEOPT_STRSIZE] = 256;
> >> +
> >> dtp->dt_cpp_argv[0] = (char *)strbasename(dtp->dt_cpp_path);
> >>
> >> snprintf(isadef, sizeof(isadef), "-D__SUNW_D_%u",
> >
> > _______________________________________________
> > DTrace-devel mailing list
> > DTrace-devel at oss.oracle.com
> > https://oss.oracle.com/mailman/listinfo/dtrace-devel
>
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list