rem: FILE *fp = pd->dtpa_fp; dtrace_hdl_t *dtp = pd->dtpa_dtp;
context: dt_print_agg(const dtrace_aggdata_t *aggdata, void *arg){	int i, err = 0;	dt_print_aggdata_t *pd = arg;	dtrace_aggdesc_t *agg = aggdata->dtada_desc;	FILE *fp = pd->dtpa_fp;	dtrace_hdl_t *dtp = pd->dtpa_dtp;	dtrace_aggvarid_t aggvarid = pd->dtpa_id;	uintptr_t data = (uintptr_t)aggdata->dtada_data;	if (pd->dtpa_allunprint) {		if (agg->dtagd_flags & DTRACE_AGD_PRINTED)			return (0);	} else {		/*		 * If we're not printing all unprinted aggregations, then the		 * aggregation variable ID denotes a specific aggregation		 * variable that we should print -- skip any other aggregations		 * that we encounter.		 */		if (agg->dtagd_nrecs == 0)			return (0);		if (aggvarid != *(dtrace_aggvarid_t *)(data +		    agg->dtagd_rec[0].dtrd_offset))			return (0);	}	/*	 * Iterate over each record description, printing the traced data,	 * skipping the first datum (the tuple member created by the compiler).	 */	for (i = 1; err >= 0 && i < agg->dtagd_nrecs; i++) {		dtrace_recdesc_t *rec = &agg->dtagd_rec[i];		dtrace_actkind_t act = rec->dtrd_action;		caddr_t addr = aggdata->dtada_data + rec->dtrd_offset;		size_t size = rec->dtrd_size;		uint64_t normal;		normal = DTRACEACT_ISAGG(act) ? aggdata->dtada_normal : 1;		if (act == DTRACEACT_STACK) {			err = dt_print_stack(dtp, fp, NULL, addr,			    rec->dtrd_arg, rec->dtrd_size / rec->dtrd_arg);			goto nextrec;		}		if (act == DTRACEACT_USTACK || act == DTRACEACT_JSTACK) {			err = dt_print_ustack(dtp, fp, NULL, addr,			    rec->dtrd_arg);			goto nextrec;		}		if (act == DTRACEACT_USYM || act == DTRACEACT_UADDR) {			err = dt_print_usym(dtp, fp, addr, act);			goto nextrec;		}		if (act == DTRACEACT_UMOD) {			err = dt_print_umod(dtp, fp, NULL, addr);			goto nextrec;		}		if (act == DTRACEACT_SYM) {			err = dt_print_sym(dtp, fp, NULL, addr);			goto nextrec;		}		if (act == DTRACEACT_MOD) {			err = dt_print_mod(dtp, fp, NULL, addr);			goto nextrec;		}		if (act == DTRACEAGG_QUANTIZE) {			err = dt_print_quantize(dtp, fp, addr, size, normal);			goto nextrec;		}		if (act == DTRACEAGG_LQUANTIZE) {			err = dt_print_lquantize(dtp, fp, addr, size, normal);			goto nextrec;		}		if (act == DTRACEAGG_AVG) {			err = dt_print_average(dtp, fp, addr, size, normal);			goto nextrec;		}		switch (size) {		case sizeof (uint64_t):			err = dt_printf(dtp, fp, " %16lld",			    /* LINTED - alignment */			    (long long)*((uint64_t *)addr) / normal);			break;		case sizeof (uint32_t):			/* LINTED - alignment */			err = dt_printf(dtp, fp, " %8d", *((uint32_t *)addr) /			    (uint32_t)normal);			break;		case sizeof (uint16_t):			/* LINTED - alignment */			err = dt_printf(dtp, fp, " %5d", *((uint16_t *)addr) /			    (uint32_t)normal);			break;		case sizeof (uint8_t):			err = dt_printf(dtp, fp, " %3d", *((uint8_t *)addr) /			    (uint32_t)normal);			break;		default:			err = dt_print_bytes(dtp, fp, addr, size, 50, 0);			break;		}nextrec:		if (dt_buffered_flush(dtp, NULL, rec, aggdata) < 0)			return (-1);	}	if (err >= 0)		err = dt_printf(dtp, fp, "\n");	if (dt_buffered_flush(dtp, NULL, NULL, aggdata) < 0)		return (-1);	if (!pd->dtpa_allunprint)		agg->dtagd_flags |= DTRACE_AGD_PRINTED;	return (err < 0 ? -1 : 0);}