Revert "Revert "New API to retrieve disk stats in Linux""

This reverts commit 7e214414bf.
This commit is contained in:
James Dominic P. Guana
2021-04-10 18:19:15 +08:00
committed by Robert Roth
parent 68b5269607
commit a067db0569
18 changed files with 272 additions and 3 deletions

74
include/glibtop/disk.h Normal file
View File

@@ -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

View File

@@ -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 */

View File

@@ -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;