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];
114 if (dtp->dt_prochdlr != NULL) {
119 dtp->dt_prochdlr(dprn->dprn_dpr->dpr_proc, err,
120 dtp->dt_procarg);
124 dt_free(dtp, dprn);
131 dtrace_status(dtrace_hdl_t *dtp)
133 int gen = dtp->dt_statusgen;
134 dtrace_optval_t interval = dtp->dt_options[DTRACEOPT_STATUSRATE];
137 if (!dtp->dt_active)
140 if (dtp->dt_stopped)
143 if (dtp->dt_laststatus != 0) {
144 if (now - dtp->dt_laststatus < interval)
147 dtp->dt_laststatus += interval;
149 dtp->dt_laststatus = now;
152 if (dt_ioctl(dtp, DTRACEIOC_STATUS, &dtp->dt_status[gen]) == -1)
153 return (dt_set_errno(dtp, errno));
155 dtp->dt_statusgen ^= 1;
157 if (dt_handle_status(dtp, &dtp->dt_status[dtp->dt_statusgen],
158 &dtp->dt_status[gen]) == -1)
161 if (dtp->dt_status[gen].dtst_exiting) {
162 if (!dtp->dt_stopped)
163 (void) dtrace_stop(dtp);
168 if (dtp->dt_status[gen].dtst_filled == 0)
171 if (dtp->dt_options[DTRACEOPT_BUFPOLICY] != DTRACEOPT_BUFPOLICY_FILL)
174 if (!dtp->dt_stopped) {
175 if (dtrace_stop(dtp) == -1)
183 dtrace_go(dtrace_hdl_t *dtp)
189 if (dtp->dt_active)
190 return (dt_set_errno(dtp, EINVAL));
199 if (dtp->dt_errprog != NULL &&
200 dtrace_program_exec(dtp, dtp->dt_errprog, NULL) == -1 && (
201 dtp->dt_errno != ENOTTY || dtp->dt_vector == NULL))
204 if ((dof = dtrace_getopt_dof(dtp)) == NULL)
209 r = dt_ioctl(dtp, DTRACEIOC_ENABLE, &args);
211 dtrace_dof_destroy(dtp, dof);
213 if (r == -1 && (error != ENOTTY || dtp->dt_vector == NULL))
214 return (dt_set_errno(dtp, error));
216 if (dt_ioctl(dtp, DTRACEIOC_GO, &dtp->dt_beganon) == -1) {
218 return (dt_set_errno(dtp, EDT_DESTRUCTIVE));
221 return (dt_set_errno(dtp, EDT_ISANON));
224 return (dt_set_errno(dtp, EDT_NOANON));
227 return (dt_set_errno(dtp, EDT_ENDTOOBIG));
230 return (dt_set_errno(dtp, EDT_BUFTOOSMALL));
232 return (dt_set_errno(dtp, errno));
235 dtp->dt_active = 1;
237 if (dt_options_load(dtp) == -1)
238 return (dt_set_errno(dtp, errno));
240 return (dt_aggregate_go(dtp));
244 dtrace_stop(dtrace_hdl_t *dtp)
246 int gen = dtp->dt_statusgen;
248 if (dtp->dt_stopped)
251 if (dt_ioctl(dtp, DTRACEIOC_STOP, &dtp->dt_endedon) == -1)
252 return (dt_set_errno(dtp, errno));
254 dtp->dt_stopped = 1;
259 if (dt_ioctl(dtp, DTRACEIOC_STATUS, &dtp->dt_status[gen]) == -1)
260 return (dt_set_errno(dtp, errno));
262 if (dt_handle_status(dtp, &dtp->dt_status[gen ^ 1],
263 &dtp->dt_status[gen]) == -1)
271 dtrace_work(dtrace_hdl_t *dtp, FILE *fp,
274 int status = dtrace_status(dtp);
275 dtrace_optval_t policy = dtp->dt_options[DTRACEOPT_BUFPOLICY];
287 dtp->dt_lastswitch = 0;
288 dtp->dt_lastagg = 0;
313 if (dtrace_aggregate_snap(dtp) == -1)
316 if (dtrace_consume(dtp, fp, pfunc, rfunc, arg) == -1)