summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJames Dominic P. Guana <guana.histark@gmail.com>2020-05-23 08:26:34 +0800
committerRobert Roth <robert.roth.off@gmail.com>2020-11-04 13:38:03 +0000
commit9e62440b314fbf87bbeca865a4223311314c52a3 (patch)
treea2d4e2598e52ba8863182d76515caaed1dce65ab /include
parentd49e17039e5ba43ab22e284b9764842011909984 (diff)
downloadlibgtop-9e62440b314fbf87bbeca865a4223311314c52a3.tar.gz
New API to retrieve disk stats in Linux
Diffstat (limited to 'include')
-rw-r--r--include/glibtop/disk.h74
-rw-r--r--include/glibtop/sysdeps.h4
-rw-r--r--include/glibtop/union.h2
3 files changed, 79 insertions, 1 deletions
diff --git a/include/glibtop/disk.h b/include/glibtop/disk.h
new file mode 100644
index 00000000..8843112c
--- /dev/null
+++ b/include/glibtop/disk.h
@@ -0,0 +1,74 @@
+/* Copyright (C) 1998-99 Martin Baulig
+ This file is part of LibGTop 1.0.
+
+ Contributed by James Dominic P. Guana <guana.histark@gmail.com>, May 2020.
+
+ LibGTop 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.
+
+ LibGTop 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 LibGTop; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef __GLIBTOP_DISK_H__
+#define __GLIBTOP_DISK_H__
+
+#include <glibtop.h>
+#include <glibtop/global.h>
+
+G_BEGIN_DECLS
+
+#define GLIBTOP_XDISK_SECTORS_READ 0
+#define GLIBTOP_XDISK_TIME_READ 1
+#define GLIBTOP_XDISK_SECTORS_WRITE 2
+#define GLIBTOP_XDISK_TIME_WRITE 3
+
+#define GLIBTOP_MAX_DISK 4
+
+/* Nobody should really be using more than 4 disk.
+ Yes we are :)
+ Nobody should really be using more than 32 disk.
+*/
+#define GLIBTOP_NDISK 1024
+
+typedef struct _glibtop_disk glibtop_disk;
+
+struct _glibtop_disk
+{
+ guint64 xdisk_sectors_read [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_SECTORS_READ */
+ guint64 xdisk_time_read [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_TIME_READ */
+ guint64 xdisk_sectors_write [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_SECTORS_WRITE */
+ guint64 xdisk_time_write [GLIBTOP_NDISK]; /* GLIBTOP_XDISK_TIME_WRITE */
+};
+
+void glibtop_get_disk(glibtop_disk *buf);
+
+#if GLIBTOP_SUID_DISK
+#define glibtop_get_disk_r glibtop_get_disk_p
+#else
+#define glibtop_get_disk_r glibtop_get_disk_s
+#endif
+
+void glibtop_get_disk_l (glibtop *server, glibtop_disk *buf);
+
+#if GLIBTOP_SUID_DISK
+void _glibtop_init_disk_p (glibtop *server);
+void glibtop_get_disk_p (glibtop *server, glibtop_disk *buf);
+#else
+void _glibtop_init_disk_s (glibtop *server);
+void glibtop_get_disk_s (glibtop *server, glibtop_disk *buf);
+#endif
+
+
+G_END_DECLS
+
+#endif
diff --git a/include/glibtop/sysdeps.h b/include/glibtop/sysdeps.h
index a18c69e6..a1db66d8 100644
--- a/include/glibtop/sysdeps.h
+++ b/include/glibtop/sysdeps.h
@@ -54,8 +54,9 @@ G_BEGIN_DECLS
#define GLIBTOP_SYSDEPS_PROC_WD 25
#define GLIBTOP_SYSDEPS_PROC_AFFINITY 26
#define GLIBTOP_SYSDEPS_PROC_IO 27
+#define GLIBTOP_SYSDEPS_DISK 28
-#define GLIBTOP_MAX_SYSDEPS 28
+#define GLIBTOP_MAX_SYSDEPS 29
/* The 'features' args to glibtop_init_* is an unsigned long */
G_STATIC_ASSERT((1UL << (GLIBTOP_MAX_SYSDEPS - 1)) <= ULONG_MAX);
@@ -69,6 +70,7 @@ struct _glibtop_sysdeps
guint64 flags;
guint64 features; /* server features */
guint64 cpu; /* glibtop_cpu */
+ guint64 disk; /* glibtop_cpu */
guint64 mem; /* glibtop_mem */
guint64 swap; /* glibtop_swap */
guint64 uptime; /* glibtop_uptime */
diff --git a/include/glibtop/union.h b/include/glibtop/union.h
index 334f0217..bda7c576 100644
--- a/include/glibtop/union.h
+++ b/include/glibtop/union.h
@@ -23,6 +23,7 @@
#define __GLIBTOP_UNION_H__
#include <glibtop/cpu.h>
+#include <glibtop/disk.h>
#include <glibtop/mem.h>
#include <glibtop/swap.h>
#include <glibtop/uptime.h>
@@ -60,6 +61,7 @@ typedef union _glibtop_union glibtop_union;
union _glibtop_union
{
glibtop_cpu cpu;
+ glibtop_disk disk;
glibtop_mem mem;
glibtop_swap swap;
glibtop_uptime uptime;