diff options
author | Benoît Dejean <bdejean@src.gnome.org> | 2004-11-28 01:32:55 +0000 |
---|---|---|
committer | Benoît Dejean <bdejean@src.gnome.org> | 2004-11-28 01:32:55 +0000 |
commit | 2fa0dc1cd83e9c3fface9eddcda72f7bb76ba571 (patch) | |
tree | d47c1981fc02b81c38b62aba163f87f2df816147 /sysdeps/linux/glibtop_private.h | |
parent | faa80b7b2464b3fa34acd121d53661fd350c868e (diff) | |
download | libgtop-2fa0dc1cd83e9c3fface9eddcda72f7bb76ba571.tar.gz |
Added Added Removed
* Makefile.am:
* cpu.c:
* fsusage.c:
* glibtop_private.c: (get_scaled), (try_file_to_buffer),
(file_to_buffer): Added
* glibtop_private.h: Added
* glibtop_server.c: Removed
* glibtop_server.h:
* loadavg.c:
* mem.c:
* netload.c:
* open.c:
* prockernel.c:
* procmem.c:
* procsegment.c:
* procsignal.c:
* procstate.c:
* proctime.c:
* procuid.c:
* swap.c:
* sysinfo.c:
* uptime.c: Moved linux impl utils function from glibtop_server.* to
glibtob_private.* because glibtop_server.h is a public header.
Diffstat (limited to 'sysdeps/linux/glibtop_private.h')
-rw-r--r-- | sysdeps/linux/glibtop_private.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/sysdeps/linux/glibtop_private.h b/sysdeps/linux/glibtop_private.h new file mode 100644 index 00000000..5b9e69b6 --- /dev/null +++ b/sysdeps/linux/glibtop_private.h @@ -0,0 +1,122 @@ +/* Copyright (C) 2004 Benoît Dejean + This file is part of LibGTop 2.0. + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#ifndef __LINUX__GLIBTOP_PRIVATE_H__ +#define __LINUX__GLIBTOP_PRIVATE_H__ + +#include <glibtop.h> + +#include <glib.h> + +#include <fcntl.h> +#include <ctype.h> +#include <string.h> + +G_BEGIN_DECLS + +#define LINUX_VERSION_CODE(x,y,z) (0x10000*(x) + 0x100*(y) + z) + + +static inline char* +next_token(const char *p) +{ + while (isspace(*p)) p++; + return (char*) p; +} + +static inline char * +skip_token (const char *p) +{ + p = next_token(p); + while (*p && !isspace(*p)) p++; + p = next_token(p); + return (char *)p; +} + +static inline char * +skip_multiple_token (const char *p, size_t count) +{ + while(count--) + p = skip_token (p); + + return (char *)p; +} + + +static inline char * +skip_line (const char *p) +{ + while (*p && *p != '\n') p++; + return (char *) (*p ? p+1 : p); +} + + +unsigned long long +get_scaled(const char *buffer, const char *key); + + +/* aborts on error */ +void +file_to_buffer(glibtop *server, char *buffer, const char *filename); + +/* return < 0 on error, otherwise 0 on success */ +int +try_file_to_buffer(char *buffer, const char *format, ...); + + +/* some inline functions that wrap proc path + * as fast as macros :) + */ + +static inline int +proc_file_to_buffer (char *buffer, const char *fmt, pid_t pid) +{ + return try_file_to_buffer(buffer, fmt, pid); +} + +static inline int +proc_stat_to_buffer (char *buffer, pid_t pid) +{ + return proc_file_to_buffer (buffer, "/proc/%d/stat", pid); +} + +static inline int +proc_status_to_buffer (char *buffer, pid_t pid) +{ + return proc_file_to_buffer (buffer, "/proc/%d/status", pid); +} + +static inline int +proc_statm_to_buffer (char *buffer, pid_t pid) +{ + return proc_file_to_buffer (buffer, "/proc/%d/statm", pid); +} + + +static inline char * +proc_stat_after_cmd (char *p) +{ + p = strrchr (p, ')'); + if (G_LIKELY(p)) + *p++ = '\0'; + return p; +} +G_END_DECLS + +#endif /* __LINUX__GLIBTOP_PRIVATE_H__ */ |