summaryrefslogtreecommitdiffstats
path: root/include/bmon/group.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/bmon/group.h')
-rw-r--r--include/bmon/group.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/include/bmon/group.h b/include/bmon/group.h
new file mode 100644
index 0000000..b952aac
--- /dev/null
+++ b/include/bmon/group.h
@@ -0,0 +1,100 @@
+/*
+ * bmon/group.h Group Management
+ *
+ * Copyright (c) 2001-2013 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2013 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef __BMON_GROUP_H_
+#define __BMON_GROUP_H_
+
+#include <bmon/bmon.h>
+
+struct element;
+
+enum {
+ GT_MAJOR,
+ GT_MINOR,
+ __GT_MAX,
+};
+
+#define GT_MAX (__GT_MAX - 1)
+
+#define GROUP_COL_MAX (__GT_MAX * 2)
+
+struct group_hdr
+{
+ char * gh_name;
+ char * gh_title;
+ char * gh_column[GROUP_COL_MAX];
+ struct list_head gh_list;
+};
+
+extern struct group_hdr * group_lookup_hdr(const char *);
+extern int group_new_hdr(const char *, const char *,
+ const char *, const char *,
+ const char *, const char *);
+extern int group_new_derived_hdr(const char *,
+ const char *,
+ const char *);
+
+struct element_group
+{
+ char * g_name;
+ struct group_hdr * g_hdr;
+
+ struct list_head g_elements;
+ unsigned int g_nelements;
+
+ /* Currently selected element in this group */
+ struct element * g_current;
+
+ struct list_head g_list;
+};
+
+#define GROUP_CREATE 1
+
+extern struct element_group * group_lookup(const char *, int);
+extern void reset_update_flags(void);
+extern void free_unused_elements(void);
+extern void calc_rates(void);
+
+extern void group_foreach(
+ void (*cb)(struct element_group *,
+ void *),
+ void *);
+extern void group_foreach_recursive(
+ void (*cb)(struct element_group *,
+ struct element *, void *),
+ void *);
+
+extern void group_foreach_element(struct element_group *,
+ void (*cb)(struct element_group *,
+ struct element *, void *),
+ void *);
+
+extern struct element_group * group_current(void);
+extern struct element_group * group_select_first(void);
+extern struct element_group * group_select_last(void);
+extern struct element_group * group_select_next(void);
+extern struct element_group * group_select_prev(void);
+
+#endif