summaryrefslogtreecommitdiff
path: root/src/include/pcp/trace.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/pcp/trace.h')
-rw-r--r--src/include/pcp/trace.h110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/include/pcp/trace.h b/src/include/pcp/trace.h
new file mode 100644
index 0000000..af64d79
--- /dev/null
+++ b/src/include/pcp/trace.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 1997 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ */
+#ifndef _TRACE_H
+#define _TRACE_H
+
+/*
+ * Transaction monitoring PMDA (trace) public interface.
+ *
+ * An example program using this interface can be found at
+ * $PCP_DEMOS_DIR/trace/demo.c and contains further doumentation.
+ * Also refer to the pmdatrace(1) and pmdatrace(3) man pages and
+ * the Performance Co-Pilot Programmer's Guide.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Add a new entry to the table of transactions currently being monitored,
+ * or update an existing entry.
+ */
+extern int pmtracebegin(const char *);
+
+/*
+ * Make measurements recorded for the given transaction tag available
+ * through the trace PMDA.
+ */
+extern int pmtraceend(const char *);
+
+/*
+ * Cancel a transaction which began from an earlier call to pmtracebegin,
+ * without exporting new data through the trace PMDA.
+ */
+extern int pmtraceabort(const char *);
+
+/*
+ * An alternate form of measurement can be obtained using pmtracepoint.
+ * This is a count-only measurement, and will result in the trace PMDA
+ * exporting the number of times a given code point is passed (ie. the
+ * the number of times a particular label has been passed to pmtracepoint.
+ */
+extern int pmtracepoint(const char *);
+
+/*
+ * An extension to pmtracepoint is pmtraceobs, with similar semantics to
+ * pmtracepoint except allowing an arbitrary numeric value (double) to be
+ * exported up through the PMAPI.
+ */
+extern int pmtraceobs(const char *, double);
+
+/*
+ * Similar to pmtraceobs is pmtracecounter, with the only difference
+ * being the way the trace PMDA exports the given numeric value to
+ * PMAPI clients (exported with counter semantics, rather than with
+ * instantaneous semantics which is the case with pmtraceobs).
+ */
+extern int pmtracecounter(const char *, double);
+
+/*
+ * Should any of these routines return a negative value, the return value
+ * can be passed to pmtraceerrstr for the associated error message.
+ * This performs a lookup into a static error message table, so the returned
+ * pointer must not be freed.
+ */
+extern char *pmtraceerrstr(int);
+
+#define PMTRACE_ERR_BASE 12000
+#define PMTRACE_ERR_TAGNAME (-PMTRACE_ERR_BASE-0)
+#define PMTRACE_ERR_INPROGRESS (-PMTRACE_ERR_BASE-1)
+#define PMTRACE_ERR_NOPROGRESS (-PMTRACE_ERR_BASE-2)
+#define PMTRACE_ERR_NOSUCHTAG (-PMTRACE_ERR_BASE-3)
+#define PMTRACE_ERR_TAGTYPE (-PMTRACE_ERR_BASE-4)
+#define PMTRACE_ERR_TAGLENGTH (-PMTRACE_ERR_BASE-5)
+#define PMTRACE_ERR_IPC (-PMTRACE_ERR_BASE-6)
+#define PMTRACE_ERR_ENVFORMAT (-PMTRACE_ERR_BASE-7)
+#define PMTRACE_ERR_TIMEOUT (-PMTRACE_ERR_BASE-8)
+#define PMTRACE_ERR_VERSION (-PMTRACE_ERR_BASE-9)
+#define PMTRACE_ERR_PERMISSION (-PMTRACE_ERR_BASE-10)
+#define PMTRACE_ERR_CONNLIMIT (-PMTRACE_ERR_BASE-11)
+
+/*
+ * Diagnostic and state switching
+ */
+extern int pmtracestate(int code);
+
+#define PMTRACE_STATE_NONE 0 /* default: synchronous and no diagnostics */
+#define PMTRACE_STATE_API 1 /* debug: processing just below the API */
+#define PMTRACE_STATE_COMMS 2 /* debug: shows network-related activity */
+#define PMTRACE_STATE_PDU 4 /* debug: shows app<->PMDA IPC traffic */
+#define PMTRACE_STATE_PDUBUF 8 /* debug: internal IPC buffer management */
+#define PMTRACE_STATE_NOAGENT 16 /* debug: no PMDA communications at all */
+#define PMTRACE_STATE_ASYNC 32 /* control: use asynchronous PDU protocol */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TRACE_H */