Blame include/glibtop/procio.h

Packit d37888
/* Copyright (C) 2017 Robert Roth
Packit d37888
   This file is part of LibGTop.
Packit d37888
Packit d37888
   Contributed by Robert Roth <robert.roth.off@gmail.com>, February 2017.
Packit d37888
Packit d37888
   LibGTop is free software; you can redistribute it and/or modify it
Packit d37888
   under the terms of the GNU General Public License as published by
Packit d37888
   the Free Software Foundation; either version 2 of the License,
Packit d37888
   or (at your option) any later version.
Packit d37888
Packit d37888
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
Packit d37888
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit d37888
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit d37888
   for more details.
Packit d37888
Packit d37888
   You should have received a copy of the GNU General Public License
Packit d37888
   along with LibGTop; see the file COPYING. If not, write to the
Packit d37888
   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit d37888
   Boston, MA 02110-1301, USA.
Packit d37888
*/
Packit d37888
Packit d37888
#ifndef __GLIBTOP_PROCIO_H__
Packit d37888
#define __GLIBTOP_PROCIO_H__
Packit d37888
Packit d37888
#include <glibtop.h>
Packit d37888
#include <glibtop/global.h>
Packit d37888
Packit d37888
G_BEGIN_DECLS
Packit d37888
Packit d37888
#define GLIBTOP_PROC_IO_DISK_RCHAR	0
Packit d37888
#define GLIBTOP_PROC_IO_DISK_WCHAR	1
Packit d37888
#define GLIBTOP_PROC_IO_DISK_RBYTES	2
Packit d37888
#define GLIBTOP_PROC_IO_DISK_WBYTES	3
Packit d37888
Packit d37888
#define GLIBTOP_MAX_PROC_IO		3
Packit d37888
Packit d37888
typedef struct _glibtop_proc_io	glibtop_proc_io;
Packit d37888
Packit d37888
/* Time section */
Packit d37888
Packit d37888
/**
Packit d37888
 * glibtop_proc_io:
Packit d37888
 * @disk_rchar: The number of bytes which this task has caused to be read from storage. This
Packit d37888
 * is simply the sum of bytes which this process passed to read() and pread(), also including tty IO,
Packit d37888
 * and it is unaffected by whether or not actual physical disk IO was required.
Packit d37888
 * @disk_wchar: The number of bytes which this task has caused, or shall cause to be written
Packit d37888
 * to disk. Similar caveats apply here as with rchar.
Packit d37888
 * @disk_rbytes: Attempt to count the number of bytes which this process really did cause to
Packit d37888
 * be fetched from the storage layer. Done at the submit_bio() level, so it is
Packit d37888
 * accurate for block-backed filesystems.
Packit d37888
 * @disk_wbytes: Attempt to count the number of bytes which this process caused to be sent to
Packit d37888
 * the storage layer. This is done at page-dirtying time.
Packit d37888
 *
Packit d37888
 * Process disk io data filled by glibtop_get_proc_io().
Packit d37888
 *
Packit d37888
 */
Packit d37888
struct _glibtop_proc_io
Packit d37888
{
Packit d37888
	guint64	flags;
Packit d37888
	guint64 disk_rchar;
Packit d37888
	guint64 disk_wchar;
Packit d37888
	guint64 disk_rbytes;
Packit d37888
	guint64 disk_wbytes;
Packit d37888
Packit d37888
    /* reserved for future extensions, e.g. per-process netio */
Packit d37888
    guint64 reserved[10];
Packit d37888
};
Packit d37888
Packit d37888
Packit d37888
void glibtop_get_proc_io (glibtop_proc_io *buf, pid_t pid);
Packit d37888
Packit d37888
#if GLIBTOP_SUID_PROC_IO
Packit d37888
#define glibtop_get_proc_io_r	glibtop_get_proc_io_p
Packit d37888
#else
Packit d37888
#define glibtop_get_proc_io_r	glibtop_get_proc_io_s
Packit d37888
#endif
Packit d37888
Packit d37888
void glibtop_get_proc_io_l (glibtop *server, glibtop_proc_io *buf, pid_t pid);
Packit d37888
Packit d37888
#if GLIBTOP_SUID_PROC_IO
Packit d37888
void _glibtop_init_proc_io_p (glibtop *server);
Packit d37888
void glibtop_get_proc_io_p (glibtop *server, glibtop_proc_io *buf, pid_t pid);
Packit d37888
#else
Packit d37888
void _glibtop_init_proc_io_s (glibtop *server);
Packit d37888
void glibtop_get_proc_io_s (glibtop *server, glibtop_proc_io *buf, pid_t pid);
Packit d37888
#endif
Packit d37888
Packit d37888
Packit d37888
G_END_DECLS
Packit d37888
Packit d37888
#endif