summaryrefslogtreecommitdiff
path: root/examples/perfcounter/perf_writer_process.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2005-11-08 16:33:45 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:05:21 -0500
commit77460a90756dcaa54ec12bbcd30a5266286103d7 (patch)
treeaac95461d5cf4b3c0d9dc450bb78e8c2f6fef2d9 /examples/perfcounter/perf_writer_process.c
parent38b54d063d7fd262902324e5da15205542878adf (diff)
downloadsamba-77460a90756dcaa54ec12bbcd30a5266286103d7.tar.gz
r11579: syncing up perf counter code cfrom trunk
(This used to be commit 59c00924b67aa3d37a933731a56d03963ec7f1b5)
Diffstat (limited to 'examples/perfcounter/perf_writer_process.c')
-rw-r--r--examples/perfcounter/perf_writer_process.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/examples/perfcounter/perf_writer_process.c b/examples/perfcounter/perf_writer_process.c
new file mode 100644
index 00000000000..75a23dae515
--- /dev/null
+++ b/examples/perfcounter/perf_writer_process.c
@@ -0,0 +1,86 @@
+/*
+ * Unix SMB/CIFS implementation.
+ * Performance Counter Daemon
+ *
+ * Copyright (C) Marcin Krzysztof Porwit 2005
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "perf.h"
+
+void get_processinfo(PERF_DATA_BLOCK *data)
+{
+ int status;
+ struct sysinfo info;
+ status = sysinfo(&info);
+
+ data->processInfo.data->runningProcessCount = (unsigned int)info.procs;
+
+ return;
+}
+
+void init_processdata_desc(PERF_DATA_BLOCK *data)
+{
+ init_perf_counter(&(data->processInfo.processObjDesc),
+ &(data->processInfo.processObjDesc),
+ get_counter_id(data),
+ "Processes",
+ "%The Processes performance object displays aggregate information about processes on the machine.",
+ 0,
+ PERF_OBJECT);
+ init_perf_counter(&(data->processInfo.runningProcessCount),
+ &(data->processInfo.processObjDesc),
+ get_counter_id(data),
+ "Process Count",
+ "Process Count is the number of processes currently on the machine.",
+ PERF_SIZE_DWORD | PERF_TYPE_NUMBER | PERF_NUMBER_DECIMAL | PERF_DISPLAY_NO_SUFFIX,
+ PERF_COUNTER);
+
+ return;
+}
+
+void init_process_data(PERF_DATA_BLOCK *data)
+{
+ data->processInfo.data = calloc(1, sizeof(*data->processInfo.data));
+ if(!(data->processInfo.data))
+ {
+ perror("init_process_data: out of memory");
+ exit(1);
+ }
+
+ init_processdata_desc(data);
+
+ get_processinfo(data);
+
+ return;
+}
+
+void output_processinfo(PERF_DATA_BLOCK *data, RuntimeSettings rt, int tdb_flags)
+{
+ output_perf_counter(data->processInfo.runningProcessCount,
+ (unsigned long long)data->processInfo.data->runningProcessCount,
+ rt, tdb_flags);
+
+ return;
+}
+
+void output_process_desc(PERF_DATA_BLOCK *data, RuntimeSettings rt)
+{
+ output_perf_desc(data->processInfo.processObjDesc, rt);
+ output_perf_desc(data->processInfo.runningProcessCount, rt);
+
+ return;
+}