Lines Matching refs:dtp
47 dtrace_sleep(dtrace_hdl_t *dtp)
49 dt_proc_hash_t *dph = dtp->dt_procs;
50 dtrace_optval_t policy = dtp->dt_options[DTRACEOPT_BUFPOLICY];
59 uintptr_t a = (uintptr_t)dtp + _dtrace_sleeptab[i].dtslt_offs;
61 dtrace_optval_t interval = dtp->dt_options[opt];
96 if (dtp->dt_prochdlr != NULL) {
101 dtp->dt_prochdlr(dprn->dprn_dpr->dpr_proc, err,
102 dtp->dt_procarg);
106 dt_free(dtp, dprn);
113 dtrace_status(dtrace_hdl_t *dtp)
115 int gen = dtp->dt_statusgen;
116 dtrace_optval_t interval = dtp->dt_options[DTRACEOPT_STATUSRATE];
119 if (!dtp->dt_active)
122 if (dtp->dt_stopped)
125 if (dtp->dt_laststatus != 0) {
126 if (now - dtp->dt_laststatus < interval)
129 dtp->dt_laststatus += interval;
131 dtp->dt_laststatus = now;
134 if (dt_ioctl(dtp, DTRACEIOC_STATUS, &dtp->dt_status[gen]) == -1)
135 return (dt_set_errno(dtp, errno));
137 dtp->dt_statusgen ^= 1;
139 if (dt_handle_status(dtp, &dtp->dt_status[dtp->dt_statusgen],
140 &dtp->dt_status[gen]) == -1)
143 if (dtp->dt_status[gen].dtst_exiting) {
144 if (!dtp->dt_stopped)
145 (void) dtrace_stop(dtp);
150 if (dtp->dt_status[gen].dtst_filled == 0)
153 if (dtp->dt_options[DTRACEOPT_BUFPOLICY] != DTRACEOPT_BUFPOLICY_FILL)
156 if (!dtp->dt_stopped) {
157 if (dtrace_stop(dtp) == -1)
165 dtrace_go(dtrace_hdl_t *dtp)
170 if (dtp->dt_active)
171 return (dt_set_errno(dtp, EINVAL));
180 if (dtp->dt_errprog != NULL &&
181 dtrace_program_exec(dtp, dtp->dt_errprog, NULL) == -1 && (
182 dtp->dt_errno != ENOTTY || dtp->dt_vector == NULL))
185 if ((dof = dtrace_getopt_dof(dtp)) == NULL)
188 err = dt_ioctl(dtp, DTRACEIOC_ENABLE, dof);
189 dtrace_dof_destroy(dtp, dof);
191 if (err == -1 && (errno != ENOTTY || dtp->dt_vector == NULL))
192 return (dt_set_errno(dtp, errno));
194 if (dt_ioctl(dtp, DTRACEIOC_GO, &dtp->dt_beganon) == -1) {
196 return (dt_set_errno(dtp, EDT_DESTRUCTIVE));
199 return (dt_set_errno(dtp, EDT_ISANON));
202 return (dt_set_errno(dtp, EDT_NOANON));
205 return (dt_set_errno(dtp, EDT_ENDTOOBIG));
208 return (dt_set_errno(dtp, EDT_BUFTOOSMALL));
210 return (dt_set_errno(dtp, errno));
213 dtp->dt_active = 1;
215 if (dt_options_load(dtp) == -1)
216 return (dt_set_errno(dtp, errno));
218 return (dt_aggregate_go(dtp));
222 dtrace_stop(dtrace_hdl_t *dtp)
224 int gen = dtp->dt_statusgen;
226 if (dtp->dt_stopped)
229 if (dt_ioctl(dtp, DTRACEIOC_STOP, &dtp->dt_endedon) == -1)
230 return (dt_set_errno(dtp, errno));
232 dtp->dt_stopped = 1;
237 if (dt_ioctl(dtp, DTRACEIOC_STATUS, &dtp->dt_status[gen]) == -1)
238 return (dt_set_errno(dtp, errno));
240 if (dt_handle_status(dtp, &dtp->dt_status[gen ^ 1],
241 &dtp->dt_status[gen]) == -1)
249 dtrace_work(dtrace_hdl_t *dtp, FILE *fp,
252 int status = dtrace_status(dtp);
253 dtrace_optval_t policy = dtp->dt_options[DTRACEOPT_BUFPOLICY];
265 dtp->dt_lastswitch = 0;
266 dtp->dt_lastagg = 0;
291 if (dtrace_aggregate_snap(dtp) == -1)
294 if (dtrace_consume(dtp, fp, pfunc, rfunc, arg) == -1)