Blame sysdeps/cygwin/glibtop_private.h

Packit Service 407539
/* Copyright (C) 2004 BenoƮt Dejean
Packit Service 407539
   This file is part of LibGTop 2.0.
Packit Service 407539
Packit Service 407539
   LibGTop is free software; you can redistribute it and/or modify it
Packit Service 407539
   under the terms of the GNU General Public License as published by
Packit Service 407539
   the Free Software Foundation; either version 2 of the License,
Packit Service 407539
   or (at your option) any later version.
Packit Service 407539
Packit Service 407539
   LibGTop is distributed in the hope that it will be useful, but WITHOUT
Packit Service 407539
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
Packit Service 407539
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit Service 407539
   for more details.
Packit Service 407539
Packit Service 407539
   You should have received a copy of the GNU General Public License
Packit Service 407539
   along with LibGTop; see the file COPYING. If not, write to the
Packit Service 407539
   Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit Service 407539
   Boston, MA 02110-1301, USA.
Packit Service 407539
*/
Packit Service 407539
Packit Service 407539
#ifndef __CYGWIN__GLIBTOP_PRIVATE_H__
Packit Service 407539
#define __CYGWIN__GLIBTOP_PRIVATE_H__
Packit Service 407539
Packit Service 407539
#include <glibtop.h>
Packit Service 407539
#include <glibtop/error.h>
Packit Service 407539
Packit Service 407539
#include <glib.h>
Packit Service 407539
Packit Service 407539
#include <fcntl.h>
Packit Service 407539
#include <ctype.h>
Packit Service 407539
#include <string.h>
Packit Service 407539
Packit Service 407539
G_BEGIN_DECLS
Packit Service 407539
Packit Service 407539
Packit Service 407539
static inline char*
Packit Service 407539
next_token(const char *p)
Packit Service 407539
{
Packit Service 407539
	while (isspace(*p)) p++;
Packit Service 407539
	return (char*) p;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
char *
Packit Service 407539
skip_token (const char *p);
Packit Service 407539
Packit Service 407539
static inline char *
Packit Service 407539
skip_multiple_token (const char *p, size_t count)
Packit Service 407539
{
Packit Service 407539
	while(count--)
Packit Service 407539
		p = skip_token (p);
Packit Service 407539
Packit Service 407539
	return (char *)p;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
Packit Service 407539
static inline char *
Packit Service 407539
skip_line (const char *p)
Packit Service 407539
{
Packit Service 407539
	while (*p && *p != '\n') p++;
Packit Service 407539
	return (char *) (*p ? p+1 : p);
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
/*
Packit Service 407539
 * Smart strtoul which handles binary suffixes
Packit Service 407539
 * e.g: get_scaled("Size: 32 kB", "Size:") == 32768
Packit Service 407539
 * key can be NULL if there's not prefix to strip (or prefix size is known
Packit Service 407539
 */
Packit Service 407539
unsigned long long
Packit Service 407539
get_scaled(const char *buffer, const char *key);
Packit Service 407539
Packit Service 407539
Packit Service 407539
/* aborts on error */
Packit Service 407539
void
Packit Service 407539
file_to_buffer(glibtop *server, char *buffer, size_t bufsiz, const char *filename);
Packit Service 407539
Packit Service 407539
/* return < 0 on error, otherwise 0 on success */
Packit Service 407539
int
Packit Service 407539
try_file_to_buffer(char *buffer, size_t bufsiz, const char *format, ...) G_GNUC_PRINTF(3, 4);
Packit Service 407539
Packit Service 407539
Packit Service 407539
/* some inline functions that wrap proc path
Packit Service 407539
 * as fast as macros :)
Packit Service 407539
 */
Packit Service 407539
Packit Service 407539
static inline int
Packit Service 407539
proc_file_to_buffer (char *buffer, size_t bufsiz, const char *fmt, pid_t pid)
Packit Service 407539
{
Packit Service 407539
	return try_file_to_buffer(buffer, bufsiz, fmt, pid);
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
static inline int
Packit Service 407539
proc_stat_to_buffer (char *buffer, size_t bufsiz, pid_t pid)
Packit Service 407539
{
Packit Service 407539
	return proc_file_to_buffer(buffer, bufsiz, "/proc/%d/stat", pid);
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
static inline int
Packit Service 407539
proc_status_to_buffer (char *buffer, size_t bufsiz, pid_t pid)
Packit Service 407539
{
Packit Service 407539
	return proc_file_to_buffer(buffer, bufsiz, "/proc/%d/status", pid);
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
static inline int
Packit Service 407539
proc_statm_to_buffer (char *buffer, size_t bufsiz, pid_t pid)
Packit Service 407539
{
Packit Service 407539
	return proc_file_to_buffer(buffer, bufsiz, "/proc/%d/statm", pid);
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
Packit Service 407539
static inline char *
Packit Service 407539
proc_stat_after_cmd (char *p)
Packit Service 407539
{
Packit Service 407539
	p = strrchr (p, ')');
Packit Service 407539
	if (G_LIKELY(p))
Packit Service 407539
		*p++ = '\0';
Packit Service 407539
	return p;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
Packit Service 407539
unsigned long
Packit Service 407539
get_boot_time(glibtop *server);
Packit Service 407539
Packit Service 407539
Packit Service 407539
size_t
Packit Service 407539
get_page_size(void);
Packit Service 407539
Packit Service 407539
Packit Service 407539
gboolean
Packit Service 407539
check_cpu_line(glibtop *server, const char *line, unsigned n);
Packit Service 407539
Packit Service 407539
Packit Service 407539
static inline gboolean
Packit Service 407539
check_cpu_line_warn(glibtop *server, const char *line, unsigned i)
Packit Service 407539
{
Packit Service 407539
	gboolean ret;
Packit Service 407539
Packit Service 407539
	ret = check_cpu_line(server, line, i);
Packit Service 407539
Packit Service 407539
	if (G_UNLIKELY(!ret))
Packit Service 407539
		glibtop_warn_io_r(server,
Packit Service 407539
				  "'%s' does not start with 'cpu%u'",
Packit Service 407539
				  line, i);
Packit Service 407539
Packit Service 407539
	return ret;
Packit Service 407539
}
Packit Service 407539
Packit Service 407539
Packit Service 407539
gboolean safe_readlink(const char *path, char *buf, size_t bufsiz);
Packit Service 407539
Packit Service 407539
Packit Service 407539
G_END_DECLS
Packit Service 407539
Packit Service 407539
#endif /* __CYGWIN__GLIBTOP_PRIVATE_H__ */