summaryrefslogtreecommitdiff
path: root/usr/src/lib/libdtrace/common/dt_pq.h
diff options
context:
space:
mode:
authorAdam H. Leventhal <ahl@delphix.com>2012-07-25 19:05:31 -0400
committerAdam H. Leventhal <ahl@delphix.com>2012-07-25 19:05:31 -0400
commite5803b76927480e8f9b67b22201c484ccf4c2bcf (patch)
treeb745b1558831f07bf4527082dad827ff9366393b /usr/src/lib/libdtrace/common/dt_pq.h
parentff50e8e5ae1af23788a33c5296dd2009f3b8baf7 (diff)
downloadillumos-gate-e5803b76927480e8f9b67b22201c484ccf4c2bcf.tar.gz
3021 option for time-ordered output from dtrace(1M)
3022 DTrace: keys should not affect the sort order when sorting by value 3023 it should be possible to dereference dynamic variables 3024 D integer narrowing needs some work 3025 register leak in D code generation 3026 libdtrace should set LD_NOLAZYLOAD=1 to help the pid provider Reviewed by: Bryan Cantrill <bmc@joyent.com> Reviewed by: Eric Schrock <eschrock@delphix.com> Reviewed by: Matt Ahrens <mahrens@delphix.com> Approved by: Garrett D'Amore <garrett@damore.org>
Diffstat (limited to 'usr/src/lib/libdtrace/common/dt_pq.h')
-rw-r--r--usr/src/lib/libdtrace/common/dt_pq.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/usr/src/lib/libdtrace/common/dt_pq.h b/usr/src/lib/libdtrace/common/dt_pq.h
new file mode 100644
index 0000000000..8184a90c66
--- /dev/null
+++ b/usr/src/lib/libdtrace/common/dt_pq.h
@@ -0,0 +1,51 @@
+/*
+ * CDDL HEADER START
+ *
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source. A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2012 by Delphix. All rights reserved.
+ */
+
+#ifndef _DT_PQ_H
+#define _DT_PQ_H
+
+#include <dtrace.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef uint64_t (*dt_pq_value_f)(void *, void *);
+
+typedef struct dt_pq {
+ dtrace_hdl_t *dtpq_hdl; /* dtrace handle */
+ void **dtpq_items; /* array of elements */
+ uint_t dtpq_size; /* count of allocated elements */
+ uint_t dtpq_last; /* next free slot */
+ dt_pq_value_f dtpq_value; /* callback to get the value */
+ void *dtpq_arg; /* callback argument */
+} dt_pq_t;
+
+extern dt_pq_t *dt_pq_init(dtrace_hdl_t *, uint_t size, dt_pq_value_f, void *);
+extern void dt_pq_fini(dt_pq_t *);
+
+extern void dt_pq_insert(dt_pq_t *, void *);
+extern void *dt_pq_pop(dt_pq_t *);
+extern void *dt_pq_walk(dt_pq_t *, uint_t *);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DT_PQ_H */