Blame doc/reference.texi

Packit Service 407539
@node Reference Manual, , White Paper, Top
Packit Service 407539
@chapter LibGTop Reference Manual
Packit Service 407539
Packit Service 407539
@menu
Packit Service 407539
* System Dependent::            System Dependent Functions.
Packit Service 407539
* Common Functions::            Common Functions.
Packit Service 407539
* Library Functions::           Library Functions.
Packit Service 407539
@end menu
Packit Service 407539
Packit Service 407539
@node System Dependent, Common Functions, Reference Manual, Reference Manual
Packit Service 407539
@section System Dependent Functions
Packit Service 407539
Packit Service 407539
@menu
Packit Service 407539
* glibtop_cpu::                 CPU Usage.
Packit Service 407539
* glibtop_mem::                 Memory Usage.
Packit Service 407539
* glibtop_swap::                Swap Usage.
Packit Service 407539
* glibtop_uptime::              System Uptime.
Packit Service 407539
* glibtop_loadavg::             Load Average.
Packit Service 407539
* glibtop_proclist::            Process List.
Packit Service 407539
* glibtop_proc_state::          Process State.
Packit Service 407539
* glibtop_proc_uid::            Process UID and TTY Information.
Packit Service 407539
* glibtop_proc_mem::            Process Memory Information.
Packit Service 407539
* glibtop_proc_time::           Process Time Information.
Packit Service 407539
* glibtop_proc_signal::         Process Signal Information.
Packit Service 407539
* glibtop_proc_kernel::         Process Kernel Data Information.
Packit Service 407539
* glibtop_proc_segment::        Process Segment Information.
Packit Service 407539
* glibtop_proc_args::           Process Arguments.
Packit Service 407539
* glibtop_proc_map::            Process Memory Maps.
Packit Service 407539
* glibtop_netload::             Network Load.
Packit Service 407539
* glibtop_ppp::                 PPP Usage.
Packit Service 407539
@end menu
Packit Service 407539
Packit Service 407539
@node glibtop_cpu, glibtop_mem, System Dependent, System Dependent
Packit Service 407539
@subsection CPU Usage
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_cpu}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void glibtop_get_cpu (glibtop_cpu *buf);
Packit Service 407539
void glibtop_get_cpu_l (glibtop *server, glibtop_cpu *buf);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_cpu} in @file{<glibtop/cpu.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_cpu     glibtop_cpu;
Packit Service 407539
Packit Service 407539
struct _glibtop_cpu
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        total,
Packit Service 407539
        user,
Packit Service 407539
        nice,
Packit Service 407539
        sys,
Packit Service 407539
        idle,
Packit Service 407539
        iowait,
Packit Service 407539
        irq,
Packit Service 407539
        softirq,
Packit Service 407539
        frequency,
Packit Service 407539
        xcpu_total [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_user [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_nice [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_sys  [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_idle [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_iowait [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_irq [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_softirq [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_flags;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
All CPU units are measured in @dfn{jiffies} which are normally 1/100th of a
Packit Service 407539
second (in which case @code{frequency} equals 100), but can also be in any
Packit Service 407539
other unit. To get seconds, divide them by @code{frequency}.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item total
Packit Service 407539
Number of clock ticks since system boot.
Packit Service 407539
Packit Service 407539
@item user
Packit Service 407539
Number of clock ticks the system spent in user mode.
Packit Service 407539
Packit Service 407539
@item nice
Packit Service 407539
Number of clock ticks the system spent in user mode (nice).
Packit Service 407539
Packit Service 407539
@item sys
Packit Service 407539
Number of clock ticks the system spent in system mode.
Packit Service 407539
Packit Service 407539
@item idle
Packit Service 407539
Number of clock ticks the system spent in the idle task.
Packit Service 407539
Packit Service 407539
@item iowait
Packit Service 407539
Number of clock ticks the system spent waiting for I/O to complete.
Packit Service 407539
Packit Service 407539
@item irq
Packit Service 407539
Number of clock ticks the system spent servicing interrupts.
Packit Service 407539
Packit Service 407539
@item softirq
Packit Service 407539
Number of clock ticks the system spent servicing softirqs.
Packit Service 407539
Packit Service 407539
@item frequency
Packit Service 407539
Tick frequency (default is 100).
Packit Service 407539
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The @samp{xcpu_} values are for SMP systems - they are the same than
Packit Service 407539
@code{total}, @code{user}, @code{nice}, @code{sys}, @code{idle},
Packit Service 407539
@code{iowait}, @code{irq} and @code{softirq}
Packit Service 407539
except that they are arrays of @code{GLIBTOP_NCPU} (defined in
Packit Service 407539
@file{<glibtop/cpu.h>}) elements and contain one value for each CPU
Packit Service 407539
in the system.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item xcpu_flags
Packit Service 407539
This is interpreted as a bit-field: on systems like Solaris, not all CPUs
Packit Service 407539
need to be running all the time, so we set the corresponding bit for each
Packit Service 407539
CPU that is currently running.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
Please note that all of the cpu values are absolute values measured in
Packit Service 407539
certain units (to get seconds, divide them by @code{frequency}) since system
Packit Service 407539
boot. To get percentual values, you need to call @code{glibtop_cpu}, save the
Packit Service 407539
result, wait some time and then call it again and divide the differences of
Packit Service 407539
the two values by the time you have waited.
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_mem, glibtop_swap, glibtop_cpu, System Dependent
Packit Service 407539
@subsection Memory Usage
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_mem}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void glibtop_get_mem (glibtop_mem *buf);
Packit Service 407539
void glibtop_get_mem_l (glibtop *server, glibtop_mem *buf);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_mem} in @file{<glibtop/mem.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_mem     glibtop_mem;
Packit Service 407539
Packit Service 407539
struct _glibtop_mem
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        total,
Packit Service 407539
        used,
Packit Service 407539
        free,
Packit Service 407539
        shared,
Packit Service 407539
        buffer,
Packit Service 407539
        cached,
Packit Service 407539
        user,
Packit Service 407539
        locked;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Unless explicitly stated otherwise, all memory units are in bytes.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item total
Packit Service 407539
Total physical memory.
Packit Service 407539
Packit Service 407539
@item used
Packit Service 407539
Used memory size.
Packit Service 407539
Packit Service 407539
@item free
Packit Service 407539
Free memory size.
Packit Service 407539
Packit Service 407539
@item shared
Packit Service 407539
Shared memory size.
Packit Service 407539
Packit Service 407539
This are both segments that are @code{mmap()}ed with @code{MAP_SHARED} and
Packit Service 407539
IPC Shared Memory segments.
Packit Service 407539
Packit Service 407539
@item buffer
Packit Service 407539
Size of buffers.
Packit Service 407539
Packit Service 407539
@item cached
Packit Service 407539
Size of cached memory.
Packit Service 407539
Packit Service 407539
@item user
Packit Service 407539
Memory used from user processes.
Packit Service 407539
Packit Service 407539
This is normally @code{total - free - shared - buffer - cached}.
Packit Service 407539
Packit Service 407539
@item locked
Packit Service 407539
Memory in locked segments.
Packit Service 407539
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_swap, glibtop_uptime, glibtop_mem, System Dependent
Packit Service 407539
@subsection Swap Usage
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_swap}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void glibtop_get_swap (glibtop_swap *buf);
Packit Service 407539
void glibtop_get_swap_l (glibtop *server, glibtop_swap *buf);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_swap} in @file{<glibtop/swap.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_swap    glibtop_swap;
Packit Service 407539
Packit Service 407539
struct _glibtop_swap
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        total,
Packit Service 407539
        used,
Packit Service 407539
        free,
Packit Service 407539
        pagein,
Packit Service 407539
        pageout;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
The following units are in bytes.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item total
Packit Service 407539
Total swap space in the system.
Packit Service 407539
Packit Service 407539
@item used
Packit Service 407539
Used swap space.
Packit Service 407539
Packit Service 407539
@item free
Packit Service 407539
Free swap space.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
You can use @code{pagein} and @code{pageout} to get some measure about how
Packit Service 407539
much the system is swapping at the moment. They're increased each time a page
Packit Service 407539
is swapped in or out, so you need to save this values, wait a little bit, get
Packit Service 407539
them again and then compare the two results to find out how much the system
Packit Service 407539
swapped in the meantime.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item pagein
Packit Service 407539
Total number of swap pages that have been brought in since system boot
Packit Service 407539
Packit Service 407539
@item pageout
Packit Service 407539
Total number of swap pages that have been brought out since system boot
Packit Service 407539
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_uptime, glibtop_loadavg, glibtop_swap, System Dependent
Packit Service 407539
@subsection Uptime
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_uptime}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void glibtop_get_uptime (glibtop_uptime *buf);
Packit Service 407539
void glibtop_get_uptime_l (glibtop *server, glibtop_uptime *buf);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_uptime} in @file{<glibtop/uptime.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_uptime  glibtop_uptime;
Packit Service 407539
Packit Service 407539
struct _glibtop_uptime
Packit Service 407539
@{
Packit Service 407539
    guint64 flags;
Packit Service 407539
    double uptime,
Packit Service 407539
        idletime;
Packit Service 407539
    guint64 boot_time;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
When porting LibGTop to a new system, you only need to implement @code{uptime}
Packit Service 407539
and @code{idletime} if there's a faster or better way to obtain them as using
Packit Service 407539
@code{glibtop_cpu} for it. Look at @file{sysdeps/freebsd/uptime.c} for an
Packit Service 407539
example on how to obtain them using @code{glibtop_cpu}.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item uptime
Packit Service 407539
Time in seconds since system boot.
Packit Service 407539
Packit Service 407539
@item idletime
Packit Service 407539
Time in seconds the system spent in the idle task since system boot.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The following one was from a request on the @samp{linux-kernel} mailing list;
Packit Service 407539
on a laptop with advanced power management @code{glibtop_cpu.total} may not
Packit Service 407539
reflect the correct boot time of the system if the power was turned off by
Packit Service 407539
means of APM in the meantime.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item boot_time
Packit Service 407539
Time of last system boot in seconds since the epoch.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_loadavg, glibtop_proclist, glibtop_uptime, System Dependent
Packit Service 407539
@subsection Load Average
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_loadavg}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void glibtop_get_loadavg (glibtop_loadavg *buf);
Packit Service 407539
void glibtop_get_loadavg_l (glibtop *server, glibtop_loadavg *buf);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_loadavg} in @file{<glibtop/loadavg.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_loadavg glibtop_loadavg;
Packit Service 407539
Packit Service 407539
struct _glibtop_loadavg
Packit Service 407539
@{
Packit Service 407539
    guint64 flags;
Packit Service 407539
    double loadavg [3];
Packit Service 407539
    guint64 nr_running,
Packit Service 407539
        nr_tasks,
Packit Service 407539
        last_pid;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item loadavg
Packit Service 407539
Packit Service 407539
Number of jobs running simultaneously averaged over 1, 5 and 15 minutes.
Packit Service 407539
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The following fields are Linux specific and deprecated. You don't need to
Packit Service 407539
implement them when porting LibGTop to a new system as they may be removed
Packit Service 407539
in a future version.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item nr_running
Packit Service 407539
Number of tasks currently running.
Packit Service 407539
Packit Service 407539
@item nr_tasks
Packit Service 407539
Total number of tasks.
Packit Service 407539
Packit Service 407539
@item last_pid
Packit Service 407539
Last PID.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proclist, glibtop_proc_state, glibtop_loadavg, System Dependent
Packit Service 407539
@subsection Process List
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proclist}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
unsigned *
Packit Service 407539
glibtop_get_proclist (glibtop_proclist *buf,
Packit Service 407539
                      gint64 which, gint64 arg);
Packit Service 407539
Packit Service 407539
unsigned *
Packit Service 407539
glibtop_get_proclist_l (glibtop *server, glibtop_proclist *buf,
Packit Service 407539
                        gint64 which, gint64 arg);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Constants for the @code{which} argument:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
#define GLIBTOP_KERN_PROC_ALL           0
Packit Service 407539
#define GLIBTOP_KERN_PROC_PID           1
Packit Service 407539
#define GLIBTOP_KERN_PROC_PGRP          2
Packit Service 407539
#define GLIBTOP_KERN_PROC_SESSION       3
Packit Service 407539
#define GLIBTOP_KERN_PROC_TTY           4
Packit Service 407539
#define GLIBTOP_KERN_PROC_UID           5
Packit Service 407539
#define GLIBTOP_KERN_PROC_RUID          6
Packit Service 407539
Packit Service 407539
#define GLIBTOP_KERN_PROC_MASK          15
Packit Service 407539
Packit Service 407539
#define GLIBTOP_EXCLUDE_IDLE            0x1000
Packit Service 407539
#define GLIBTOP_EXCLUDE_SYSTEM          0x2000
Packit Service 407539
#define GLIBTOP_EXCLUDE_NOTTY           0x4000
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proclist} in @file{<glibtop/proclist.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proclist        glibtop_proclist;
Packit Service 407539
Packit Service 407539
struct _glibtop_proclist
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        number,
Packit Service 407539
        total,
Packit Service 407539
        size;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
This function returns a list of all or a selected subset of all running
Packit Service 407539
processes. You can use the @code{which} and @code{arg} arguments to
Packit Service 407539
specify which processes should be returned.
Packit Service 407539
Packit Service 407539
You can use the following values for the @code{which} argument:
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_KERN_PROC_ALL
Packit Service 407539
Return information about all processes (the @code{arg} argument is ignored).
Packit Service 407539
Packit Service 407539
@item GLIBTOP_KERN_PROC_PID
Packit Service 407539
Return information about all process with the pid @var{PID} which is passed
Packit Service 407539
in @code{arg}. You can use this to find out whether some process still exists.
Packit Service 407539
Packit Service 407539
@item GLIBTOP_KERN_PROC_PGRP
Packit Service 407539
Return all processes in process group @var{PGRP} which is passed in
Packit Service 407539
@code{arg}.
Packit Service 407539
Packit Service 407539
@item GLIBTOP_KERN_PROC_SESSION
Packit Service 407539
Return all processes in session @var{SESSION} which is passed in @code{arg}.
Packit Service 407539
Packit Service 407539
@item GLIBTOP_KERN_PROC_TTY
Packit Service 407539
Return all processes which have the controlling tty @var{TTY} which is passed
Packit Service 407539
in @code{arg} (@var{TTY} is interpreted as device number).
Packit Service 407539
Packit Service 407539
@item GLIBTOP_KERN_PROC_UID
Packit Service 407539
Return all processes with effective uid @var{UID} which is passed in @code{arg}.
Packit Service 407539
Packit Service 407539
@item GLIBTOP_KERN_PROC_RUID
Packit Service 407539
Return all processes with real uid @var{RUID} which is passed in @code{arg}.
Packit Service 407539
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
You can alter the list of returned processes by using a binary OR of
Packit Service 407539
@code{which} and the following constants:
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_EXCLUDE_IDLE
Packit Service 407539
Exclude idle processes.
Packit Service 407539
@item GLIBTOP_EXCLUDE_SYSTEM
Packit Service 407539
Exclude system processes.
Packit Service 407539
@item GLIBTOP_EXCLUDE_NOTTY
Packit Service 407539
Exclude processes without a controlling terminal.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The return value of @code{glibtop_get_proclist} is either @code{NULL} on
Packit Service 407539
error or a @code{unsigned *} list of pids. Additionally, the following fields
Packit Service 407539
of @code{glibtop_proclist} are set:
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item number
Packit Service 407539
Number of entries in the returned list.
Packit Service 407539
Packit Service 407539
@item total
Packit Service 407539
Total size of the returned list (this equals @code{number * size}).
Packit Service 407539
Packit Service 407539
@item size
Packit Service 407539
Size of a single entry in the returned list
Packit Service 407539
(this equals @code{sizeof (unsigned)}).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The returned list is allocated using @code{g_malloc} and must be freed
Packit Service 407539
using @code{g_free} to avoid a memory leak.
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_state, glibtop_proc_uid, glibtop_proclist, System Dependent
Packit Service 407539
@subsection Process State
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_state}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_state (glibtop_proc_state *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_state_l (glibtop *server, glibtop_proc_state *buf,
Packit Service 407539
                          pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_state} in @file{<glibtop/procstate.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_state      glibtop_proc_state;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_state
Packit Service 407539
@{
Packit Service 407539
    guint64 flags;
Packit Service 407539
    char cmd[40];
Packit Service 407539
@ifset LIBGTOP-1-1
Packit Service 407539
    unsigned state;
Packit Service 407539
@end ifset
Packit Service 407539
@ifclear LIBGTOP-1-1
Packit Service 407539
    char state;
Packit Service 407539
@end ifclear
Packit Service 407539
    int uid,
Packit Service 407539
        gid,
Packit Service 407539
        ruid,
Packit Service 407539
        rgid;
Packit Service 407539
    int has_cpu,
Packit Service 407539
        processor,
Packit Service 407539
        last_processor;
Packit Service 407539
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item cmd
Packit Service 407539
Basename of the executable file in the call to @code{exec}.
Packit Service 407539
@item state
Packit Service 407539
@ifset LIBGTOP-1-1
Packit Service 407539
Process state (see the constants defined below).
Packit Service 407539
@end ifset
Packit Service 407539
@ifclear LIBGTOP-1-1
Packit Service 407539
Process state ('R' = running, 'S' = sleeping, 'D' = uninterruptible,
Packit Service 407539
'Z' = zombie, 'T' = stopped, 'I' = idle).
Packit Service 407539
Packit Service 407539
This was changed to an @code{unsigned} bitfield in LibGTop 1.1.x where there
Packit Service 407539
are also some constants for it.
Packit Service 407539
@end ifclear
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
When porting LibGTop, please @emph{try hard} to implement the following
Packit Service 407539
fields. For security reasons, it is @strong{very important} that you
Packit Service 407539
@strong{only} set the @code{flags} bits for those fields if their
Packit Service 407539
@strong{values are correct}.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item uid
Packit Service 407539
Effective UID of the process.
Packit Service 407539
@item gid
Packit Service 407539
Effective GID of the process.
Packit Service 407539
@item ruid
Packit Service 407539
Real UID of the process.
Packit Service 407539
@item rgid
Packit Service 407539
Read GID of the process.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The following fields are for SMP systems:
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item has_cpu
Packit Service 407539
This is either 0 or 1 depending on whether the process currently has a CPU
Packit Service 407539
or not.
Packit Service 407539
Packit Service 407539
@item processor
Packit Service 407539
This is the processor id of the CPU this process is currently running on
Packit Service 407539
(which can be used as index in the @samp{xcpu_} fields of @code{glibtop_cpu}
Packit Service 407539
for instance; since zero is a valid processor id, you must check @code{has_cpu}
Packit Service 407539
in this case to find out whether the process really has a CPU).
Packit Service 407539
Packit Service 407539
@item last_processor
Packit Service 407539
The is the processor id of the CPU the process was last running on.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@ifset LIBGTOP-1-1
Packit Service 407539
There are some constants for the @code{state} field:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
#define GLIBTOP_PROCESS_RUNNING                 1
Packit Service 407539
#define GLIBTOP_PROCESS_INTERRUPTIBLE           2
Packit Service 407539
#define GLIBTOP_PROCESS_UNINTERRUPTIBLE         4
Packit Service 407539
#define GLIBTOP_PROCESS_ZOMBIE                  8
Packit Service 407539
#define GLIBTOP_PROCESS_STOPPED                 16
Packit Service 407539
#define GLIBTOP_PROCESS_SWAPPING                32
Packit Service 407539
#define GLIBTOP_PROCESS_DEAD                    64
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
@end ifset
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_PROCESS_RUNNING
Packit Service 407539
The process is currently running.
Packit Service 407539
@item GLIBTOP_PROCESS_INTERRUPTIBLE
Packit Service 407539
The process is currently in an interruptible sleep.
Packit Service 407539
@item GLIBTOP_PROCESS_UNINTERRUPTIBLE
Packit Service 407539
The process is currently in uninterruptible sleep
Packit Service 407539
(the so-called @dfn{disk sleep}).
Packit Service 407539
@item GLIBTOP_PROCESS_ZOMBIE
Packit Service 407539
The process is a zombie.
Packit Service 407539
@item GLIBTOP_PROCESS_STOPPED
Packit Service 407539
The process is currently stopped (received @code{SIGSTOP}
Packit Service 407539
or attached to a debugger).
Packit Service 407539
@item GLIBTOP_PROCESS_SWAPPING
Packit Service 407539
The process is currently swapping.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_uid, glibtop_proc_mem, glibtop_proc_state, System Dependent
Packit Service 407539
@subsection Process UID and TTY information
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_uid}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_uid (glibtop_proc_uid *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_uid_l (glibtop *server, glibtop_proc_uid *buf,
Packit Service 407539
                        pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_uid} in @file{<glibtop/procuid.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_uid        glibtop_proc_uid;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_uid
Packit Service 407539
@{
Packit Service 407539
    guint64 flags;
Packit Service 407539
    int uid,
Packit Service 407539
        euid,
Packit Service 407539
        gid,
Packit Service 407539
        egid,
Packit Service 407539
        suid,
Packit Service 407539
        sgid,
Packit Service 407539
        fsuid,
Packit Service 407539
        fsgid,
Packit Service 407539
        pid,
Packit Service 407539
        ppid,
Packit Service 407539
        pgrp,
Packit Service 407539
        session,
Packit Service 407539
        tty,
Packit Service 407539
        tpgid,
Packit Service 407539
        priority,
Packit Service 407539
        nice,
Packit Service 407539
        ngroups,
Packit Service 407539
        groups [GLIBTOP_MAX_GROUPS];
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item uid
Packit Service 407539
User ID
Packit Service 407539
@item euid
Packit Service 407539
Effective User ID
Packit Service 407539
@item gid
Packit Service 407539
Group ID
Packit Service 407539
@item egid
Packit Service 407539
Effective Group ID
Packit Service 407539
@item pid
Packit Service 407539
Process ID
Packit Service 407539
@item ppid
Packit Service 407539
PID of parent process
Packit Service 407539
@item pgrp
Packit Service 407539
Process group ID
Packit Service 407539
@item session
Packit Service 407539
Session ID
Packit Service 407539
@item tty
Packit Service 407539
Full device number of controlling terminal
Packit Service 407539
@item tpgid
Packit Service 407539
Terminal process group ID
Packit Service 407539
@item priority
Packit Service 407539
Kernel scheduling priority.
Packit Service 407539
@item nice
Packit Service 407539
Standard unix nice level of process.
Packit Service 407539
@item ngroups
Packit Service 407539
Number of additional process groups.
Packit Service 407539
@item groups
Packit Service 407539
Array of additional process groups@*
Packit Service 407539
(@code{GLIBTOP_MAX_GROUPS} is defined in @file{<glibtop/procuid.h>}).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_mem, glibtop_proc_time, glibtop_proc_uid, System Dependent
Packit Service 407539
@subsection Process Memory information
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_mem}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_mem (glibtop_proc_mem *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_mem_l (glibtop *server, glibtop_proc_mem *buf,
Packit Service 407539
                        pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_mem} in @file{<glibtop/procmem.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_mem        glibtop_proc_mem;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_mem
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        size,
Packit Service 407539
        vsize,
Packit Service 407539
        resident,
Packit Service 407539
        share,
Packit Service 407539
        rss,
Packit Service 407539
        rss_rlim;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item size
Packit Service 407539
Total number of pages of memory.
Packit Service 407539
@item vsize
Packit Service 407539
Number of pages of virtual memory.
Packit Service 407539
@item resident
Packit Service 407539
Number of residnet set (non-swapped) pages.
Packit Service 407539
@item share
Packit Service 407539
Number of pages of shared (mmap\'d) memory.
Packit Service 407539
@item rss
Packit Service 407539
Number of pages the process has in real memory, minus 3 for administrative
Packit Service 407539
purposes.
Packit Service 407539
Packit Service 407539
This is just the pages which count towards text, data, or stack space.
Packit Service 407539
This does not include pages which have not been demand-loaded in, or which
Packit Service 407539
are swapped out.
Packit Service 407539
@item rss_rlim
Packit Service 407539
Current limit in bytes on the rss of the process (usually 2,147,483,647).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The description above is taken from the manual page of the @file{/proc}
Packit Service 407539
filesystem under Linux and is a little bit confusing, so I make this clear
Packit Service 407539
here. 
Packit Service 407539
Packit Service 407539
@strong{A word for people porting LibGTop to other systems:}
Packit Service 407539
Every operating system has its own idea about the memory usage of a process
Packit Service 407539
and also system utilities like @code{ps} show different things on different
Packit Service 407539
systems.
Packit Service 407539
Packit Service 407539
Nevertheless, we should try to make LibGTop as system independent as possible,
Packit Service 407539
so I give you some hints here how @code{glibtop_get_proc_mem} should work. 
Packit Service 407539
Packit Service 407539
@itemize @bullet
Packit Service 407539
@item
Packit Service 407539
When you use @code{mmap} with either @code{MAP_SHARED} or @code{MAP_PRIVATE},
Packit Service 407539
this should only affect the @code{vsize} of the process and none of its
Packit Service 407539
@code{size}, @code{resident}, @code{shared} and @code{rss} sizes.
Packit Service 407539
Packit Service 407539
@item
Packit Service 407539
As soon as you read some of the @code{mmap()}ed pages, they will be demand-
Packit Service 407539
oaded and thus count towards the @code{size} of the process.
Packit Service 407539
Packit Service 407539
Also - we assume there is enough free memory - they are resident in memory
Packit Service 407539
until they get stolen or swapped out and thus increase the @code{resident} and
Packit Service 407539
@code{rss} sizes of the process.
Packit Service 407539
Packit Service 407539
@item
Packit Service 407539
If the process has used @code{MAP_SHARED} and another process attaches the
Packit Service 407539
same file also @code{MAP_SHARED}, some of the pages are shared with this
Packit Service 407539
process and thus increase the @code{shared} sizes of both processes.
Packit Service 407539
Packit Service 407539
@item
Packit Service 407539
If the process has used @code{MAP_PRIVATE} and writes to the @code{mmap()}ed
Packit Service 407539
pages, the only difference to reading from them is that they get dirty and
Packit Service 407539
cannot be stolen any longer but will get swapped out.
Packit Service 407539
Packit Service 407539
@item
Packit Service 407539
When memory gets rare, clean pages are normally stolen, which decreases the
Packit Service 407539
@code{size}, @code{resident}, @code{shared} and @code{rss} sizes of the process.
Packit Service 407539
Packit Service 407539
@item
Packit Service 407539
When dirty pages are swapped out, this will not decrease the @code{size} of the
Packit Service 407539
process but only its @code{resident} and @code{rss} sizes (dirty pages cannot
Packit Service 407539
be shared).
Packit Service 407539
Packit Service 407539
@item
Packit Service 407539
The @code{vsize} of a process can @emph{only} be changed by the process
Packit Service 407539
itself when it requests or frees memory but @emph{never} due to swapping
Packit Service 407539
activity of the system.
Packit Service 407539
Packit Service 407539
@item
Packit Service 407539
If the @code{shared} size changes, this @emph{only} means that the number of
Packit Service 407539
pages that are currently shared with other processes has changed; if this
Packit Service 407539
happens, this will @emph{never} affect any of the other sizes of the process.
Packit Service 407539
@end itemize
Packit Service 407539
Packit Service 407539
The hints above describe how it works under Linux - but we should try to make
Packit Service 407539
@code{glibtop_get_proc_mem} show the same behavior under every other system.
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_time, glibtop_proc_signal, glibtop_proc_mem, System Dependent
Packit Service 407539
@subsection Process Time information
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_time}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_time (glibtop_proc_time *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_time_l (glibtop *server, glibtop_proc_time *buf,
Packit Service 407539
                         pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_time} in @file{<glibtop/proctime.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_time       glibtop_proc_time;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_time
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        start_time,
Packit Service 407539
        rtime,
Packit Service 407539
        utime,
Packit Service 407539
        stime,
Packit Service 407539
        cutime,
Packit Service 407539
        cstime,
Packit Service 407539
        timeout,
Packit Service 407539
        it_real_value,
Packit Service 407539
        frequency,
Packit Service 407539
        xcpu_utime [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_stime [GLIBTOP_NCPU],
Packit Service 407539
        xcpu_flags;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item start_time
Packit Service 407539
Start time of process in seconds since the epoch
Packit Service 407539
@item rtime
Packit Service 407539
Real time accumulated by process (should be @code{utime} + @code{stime})
Packit Service 407539
@item utime
Packit Service 407539
User-mode CPU time accumulated by process
Packit Service 407539
@item stime
Packit Service 407539
Kernel-mode CPU time accumulated by process
Packit Service 407539
@item cutime
Packit Service 407539
Cumulative utime of process and reaped children
Packit Service 407539
@item cstime
Packit Service 407539
Cumulative stime of process and reaped children
Packit Service 407539
@item timeout
Packit Service 407539
The time (in jiffies) of the process's next timeout
Packit Service 407539
@item it_real_value
Packit Service 407539
The time (in jiffies) before the next SIGALRM is sent to the process due
Packit Service 407539
to an interval timer.
Packit Service 407539
@item frequency
Packit Service 407539
Tick frequency
Packit Service 407539
@item xcpu_utime
Packit Service 407539
SMP user-mode CPU time accumulated by process
Packit Service 407539
@item xcpu_stime
Packit Service 407539
SMP kernel-mode CPU time accumulated by process
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
Packit Service 407539
Please note that under Linux, @code{start_time} value may be strange.
Packit Service 407539
Linux kernel defines @code{INITIAL_JIFFIES} which implies a time
Packit Service 407539
shift. Because @code{INITIAL_JIFFIES} is not user-space defined, we
Packit Service 407539
cannot use it to compute accurate @code{start_time}. On Linux2.6,
Packit Service 407539
@code{INITIAL_JIFFIES} is 300 so @code{start_time} is always 3s
Packit Service 407539
different from real start time of the given process. You may also get
Packit Service 407539
shift results if your system clock is not synchronised with your
Packit Service 407539
hardware clock. See @samp{man hwclock}.
Packit Service 407539
Packit Service 407539
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_signal, glibtop_proc_kernel, glibtop_proc_time, System Dependent
Packit Service 407539
@subsection Process Signal information
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_signal}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_signal (glibtop_proc_signal *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_signal_l (glibtop *server, glibtop_proc_signal *buf,
Packit Service 407539
                           pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_signal} in @file{<glibtop/procsignal.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_signal     glibtop_proc_signal;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_signal
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        signal [2],
Packit Service 407539
        blocked [2],
Packit Service 407539
        sigignore [2],
Packit Service 407539
        sigcatch [2];
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item signal
Packit Service 407539
Mask of pending signals
Packit Service 407539
@item blocked
Packit Service 407539
Mask of blocked signals
Packit Service 407539
@item sigignore
Packit Service 407539
Mask of ignored signals
Packit Service 407539
@item sigcatch
Packit Service 407539
Mask of caught signals
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
All signal masks are interpreted as bit mask; it is an array of two
Packit Service 407539
@code{guint64}'s so we can save 128 signals there.
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_kernel, glibtop_proc_segment, glibtop_proc_signal, System Dependent
Packit Service 407539
@subsection Process Kernel Data information
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_kernel}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_kernel (glibtop_proc_kernel *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_kernel_l (glibtop *server, glibtop_proc_kernel *buf,
Packit Service 407539
                           pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_kernel} in @file{<glibtop/prockernel.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_kernel     glibtop_proc_kernel;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_kernel
Packit Service 407539
@{
Packit Service 407539
    guint64 flags;
Packit Service 407539
    guint64 k_flags,
Packit Service 407539
        min_flt,
Packit Service 407539
        maj_flt,
Packit Service 407539
        cmin_flt,
Packit Service 407539
        cmaj_flt,
Packit Service 407539
        kstk_esp,
Packit Service 407539
        kstk_eip,
Packit Service 407539
        nwchan;
Packit Service 407539
    char wchan [40];
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item k_flags
Packit Service 407539
Kernel flags of the process. See the constants defined below.
Packit Service 407539
@item min_flt
Packit Service 407539
The number of minor faults the process has made, those which have not required
Packit Service 407539
loading a memory page from disk.
Packit Service 407539
@item maj_flt
Packit Service 407539
The number of major faults the process has made, those which have required loading
Packit Service 407539
a memory page from disk.
Packit Service 407539
@item cmin_flt
Packit Service 407539
The number of minor faults that the process and its children have made.
Packit Service 407539
@item cmaj_flt
Packit Service 407539
The number of major faults that the process and its children have made.
Packit Service 407539
@item kstk_esp
Packit Service 407539
The current value of @code{esp} (32-bit stack pointer), as found in the kernel stack
Packit Service 407539
page for the process.
Packit Service 407539
@item kstk_eip
Packit Service 407539
The current @code{eip} (32-bit instruction pointer).
Packit Service 407539
@item nwchan
Packit Service 407539
This is the "channel" in which the process is waiting. This is the address of a system
Packit Service 407539
call, and can be looked up in a namelist if you need a textual name.
Packit Service 407539
(If you have an up-to-date @file{/etc/psdatabase}, then try @code{ps -l} to see the
Packit Service 407539
WCHAN field in action).
Packit Service 407539
@item wchan
Packit Service 407539
This is the textual name of the @code{nwchan} field.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
There are some constants for the @code{k_flags} field:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
#define GLIBTOP_KFLAGS_STARTING         1
Packit Service 407539
#define GLIBTOP_KFLAGS_EXITING          2
Packit Service 407539
#define GLIBTOP_KFLAGS_PTRACED          4
Packit Service 407539
#define GLIBTOP_KFLAGS_TRACESYS         8
Packit Service 407539
#define GLIBTOP_KFLAGS_FORKNOEXEC       16
Packit Service 407539
#define GLIBTOP_KFLAGS_SUPERPRIV        32
Packit Service 407539
#define GLIBTOP_KFLAGS_DUMPEDCORE       64
Packit Service 407539
#define GLIBTOP_KFLAGS_SIGNALED         128
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_KFLAGS_STARTING
Packit Service 407539
Process is being created.
Packit Service 407539
@item GLIBTOP_KFLAGS_EXITING
Packit Service 407539
Process is exiting.
Packit Service 407539
@item GLIBTOP_KFLAGS_PTRACED
Packit Service 407539
Process is being traced (via @code{ptrace ()}).
Packit Service 407539
@item GLIBTOP_KFLAGS_TRACESYS
Packit Service 407539
Process is tracing system calls.
Packit Service 407539
@item GLIBTOP_KFLAGS_FORKNOEXEC
Packit Service 407539
Process @code{fork()}ed, but didn't @code{exec()} yet.
Packit Service 407539
@item GLIBTOP_KFLAGS_SUPERPRIV
Packit Service 407539
Process used super-user privileges.
Packit Service 407539
@item GLIBTOP_KFLAGS_DUMPEDCORE
Packit Service 407539
Process dumped core.
Packit Service 407539
@item GLIBTOP_KFLAGS_SIGNALED
Packit Service 407539
Process was killed by a signal.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_segment, glibtop_proc_args, glibtop_proc_kernel, System Dependent
Packit Service 407539
@subsection Process Segment information
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_segment}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_segment (glibtop_proc_segment *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_proc_segment_l (glibtop *server, glibtop_proc_segment *buf,
Packit Service 407539
                            pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_segment} in @file{<glibtop/procsegment.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_segment    glibtop_proc_segment;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_segment
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        text_rss,
Packit Service 407539
        shlib_rss,
Packit Service 407539
        data_rss,
Packit Service 407539
        stack_rss,
Packit Service 407539
        dirty_size,
Packit Service 407539
        start_code,
Packit Service 407539
        end_code,
Packit Service 407539
        start_stack;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item text_rss
Packit Service 407539
Text resident set size
Packit Service 407539
@item shlib_rss
Packit Service 407539
Shared-Lib resident set size
Packit Service 407539
@item data_rss
Packit Service 407539
Data resident set size
Packit Service 407539
@item stack_rss
Packit Service 407539
Stack resident set size
Packit Service 407539
@item dirty_size
Packit Service 407539
Total size of dirty pages
Packit Service 407539
@item start_code
Packit Service 407539
Address of beginning of code segment
Packit Service 407539
@item end_code
Packit Service 407539
Address of end of code segment
Packit Service 407539
@item start_stack
Packit Service 407539
Address of the bottom of stack segmen
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_args, glibtop_proc_map, glibtop_proc_segment, System Dependent
Packit Service 407539
@subsection Process Arguments
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_args}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
char *
Packit Service 407539
glibtop_get_proc_args(glibtop_proc_args *buf, pid_t pid,
Packit Service 407539
                         unsigned max_len);
Packit Service 407539
Packit Service 407539
char *
Packit Service 407539
glibtop_get_proc_args_l (glibtop *server, glibtop_proc_args *buf,
Packit Service 407539
                         pid_t pid, unsigned max_len);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_args} in @file{<glibtop/procargs.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_args       glibtop_proc_args;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_args
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        size;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Returns a string with all command line arguments of process @code{pid}
Packit Service 407539
(up to @code{max_len} characters, use zero to get all arguments).
Packit Service 407539
Packit Service 407539
The command line arguments in the returned string are separated by zero bytes;
Packit Service 407539
the lenght of this string is returned in the @code{size} field.
Packit Service 407539
Packit Service 407539
Remember to @code{g_free} the returned string to avoid a memory leak.
Packit Service 407539
Packit Service 407539
@strong{New functions}
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
char **
Packit Service 407539
glibtop_get_proc_argv(glibtop_proc_args *buf, pid_t pid,
Packit Service 407539
                         unsigned max_len);
Packit Service 407539
Packit Service 407539
char **
Packit Service 407539
glibtop_get_proc_argv_l (glibtop *server, glibtop_proc_args *buf,
Packit Service 407539
                         pid_t pid, unsigned max_len);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Returns a NULL-terminated array of strings with all arguments of
Packit Service 407539
process @code{pid} (up to @code{max_len} characters, use zero to get
Packit Service 407539
all arguments). @code{glibtop_get_proc_argv()} and
Packit Service 407539
@code{glibtop_get_proc_argv_l()} are wrappers to
Packit Service 407539
@code{glibtop_get_proc_args()} and @code{glibtop_get_proc_args_l()}
Packit Service 407539
that return process' arguments like the C @code{argv}.
Packit Service 407539
Packit Service 407539
Remember to @code{g_strfreev} the returned array to avoid a memory
Packit Service 407539
leak.
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_proc_map, glibtop_netload, glibtop_proc_args, System Dependent
Packit Service 407539
@subsection Process Memory Maps
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_proc_map}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
glibtop_map_entry *
Packit Service 407539
glibtop_get_proc_map (glibtop_proc_map *buf, pid_t pid);
Packit Service 407539
Packit Service 407539
glibtop_map_entry *
Packit Service 407539
glibtop_get_proc_map_l (glibtop *server, glibtop_proc_map *buf,
Packit Service 407539
                        pid_t pid);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_map} in @file{<glibtop/procmap.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_proc_map        glibtop_proc_map;
Packit Service 407539
Packit Service 407539
struct _glibtop_proc_map
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        number,
Packit Service 407539
        total,
Packit Service 407539
        size;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Returns a @code{glibtop_map_entry *} list (which needs to be freed with
Packit Service 407539
@code{g_free}) of memory maps of process @code{pid}.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item number
Packit Service 407539
Number of entries in the returned list.
Packit Service 407539
Packit Service 407539
@item total
Packit Service 407539
Total size of the returned list (this equals @code{number * size}).
Packit Service 407539
Packit Service 407539
@item size
Packit Service 407539
Size of a single entry in the returned list
Packit Service 407539
(this equals @code{sizeof (glibtop_map_entry)}).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_map_entry       glibtop_map_entry;
Packit Service 407539
Packit Service 407539
struct _glibtop_map_entry
Packit Service 407539
@{
Packit Service 407539
    guint64 flags, start, end, offset, perm, inode, device;
Packit Service 407539
    char filename [GLIBTOP_MAP_FILENAME_LEN+1];
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
The @code{flags} member is a bit field and specifies which of the other
Packit Service 407539
fields are valid:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
#define GLIBTOP_MAP_ENTRY_START         0
Packit Service 407539
#define GLIBTOP_MAP_ENTRY_END           1
Packit Service 407539
#define GLIBTOP_MAP_ENTRY_OFFSET        2
Packit Service 407539
#define GLIBTOP_MAP_ENTRY_PERM          3
Packit Service 407539
#define GLIBTOP_MAP_ENTRY_INODE         4
Packit Service 407539
#define GLIBTOP_MAP_ENTRY_DEVICE        5
Packit Service 407539
#define GLIBTOP_MAP_ENTRY_FILENAME      6
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Constants for the @code{perm} member:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
#define GLIBTOP_MAP_PERM_READ           1
Packit Service 407539
#define GLIBTOP_MAP_PERM_WRITE          2
Packit Service 407539
#define GLIBTOP_MAP_PERM_EXECUTE        4
Packit Service 407539
#define GLIBTOP_MAP_PERM_SHARED         8
Packit Service 407539
#define GLIBTOP_MAP_PERM_PRIVATE        16
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_netload, glibtop_ppp, glibtop_proc_map, System Dependent
Packit Service 407539
@subsection Network Load
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_netload}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_netload (glibtop_netload *buf, const char *interface);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_netload_l (glibtop *server, glibtop_netload *buf,
Packit Service 407539
                       const char *interface);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_netload} in @file{<glibtop/netload.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_netload glibtop_netload;
Packit Service 407539
Packit Service 407539
struct _glibtop_netload
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        if_flags,
Packit Service 407539
        mtu,
Packit Service 407539
        subnet,
Packit Service 407539
        address,
Packit Service 407539
        packets_in,
Packit Service 407539
        packets_out,
Packit Service 407539
        packets_total,
Packit Service 407539
        bytes_in,
Packit Service 407539
        bytes_out,
Packit Service 407539
        bytes_total,
Packit Service 407539
        errors_in,
Packit Service 407539
        errors_out,
Packit Service 407539
        errors_total,
Packit Service 407539
        collisions;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Returns network statistics for interface @code{interface} (which is the same
Packit Service 407539
than in @code{ifconfig}).
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item if_flags
Packit Service 407539
Interface flags. See the contants defined below.
Packit Service 407539
@item mtu
Packit Service 407539
Maximum Transfer Unit (MTU)
Packit Service 407539
@item subnet
Packit Service 407539
Subnet Address
Packit Service 407539
@item address
Packit Service 407539
Interface Address
Packit Service 407539
@item packets_in
Packit Service 407539
Total number of incoming packets
Packit Service 407539
@item packets_out
Packit Service 407539
Total number of outgoing packets
Packit Service 407539
@item packets_total
Packit Service 407539
Total number of packets
Packit Service 407539
@item bytes_in
Packit Service 407539
Total number of incoming bytes
Packit Service 407539
@item bytes_out
Packit Service 407539
Total number of outgoing bytes
Packit Service 407539
@item bytes_total
Packit Service 407539
Total number of bytes
Packit Service 407539
@item errors_in
Packit Service 407539
Total number of errors in incoming direction
Packit Service 407539
@item errors_out
Packit Service 407539
Total number of errors in outgoing direction
Packit Service 407539
@item errors_total
Packit Service 407539
Total number of errors
Packit Service 407539
@item collisions
Packit Service 407539
Total number of collisions
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
Please note that not all operating systems distinguish between incoming/outgoing
Packit Service 407539
bytes/packets/errors - in this case only the @samp{_total} fields are valid.
Packit Service 407539
Otherwise, they're just @samp{_in} plus @samp{_out}.
Packit Service 407539
Packit Service 407539
Constants for @code{if_flags}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
enum @{
Packit Service 407539
    GLIBTOP_IF_FLAGS_UP = 1,
Packit Service 407539
    GLIBTOP_IF_FLAGS_BROADCAST,
Packit Service 407539
    GLIBTOP_IF_FLAGS_DEBUG,
Packit Service 407539
    GLIBTOP_IF_FLAGS_LOOPBACK,
Packit Service 407539
    GLIBTOP_IF_FLAGS_POINTOPOINT,
Packit Service 407539
    GLIBTOP_IF_FLAGS_RUNNING,
Packit Service 407539
    GLIBTOP_IF_FLAGS_NOARP,
Packit Service 407539
    GLIBTOP_IF_FLAGS_PROMISC,
Packit Service 407539
    GLIBTOP_IF_FLAGS_ALLMULTI,
Packit Service 407539
    GLIBTOP_IF_FLAGS_OACTIVE,
Packit Service 407539
    GLIBTOP_IF_FLAGS_SIMPLEX,
Packit Service 407539
    GLIBTOP_IF_FLAGS_LINK0,
Packit Service 407539
    GLIBTOP_IF_FLAGS_LINK1,
Packit Service 407539
    GLIBTOP_IF_FLAGS_LINK2,
Packit Service 407539
    GLIBTOP_IF_FLAGS_ALTPHYS,
Packit Service 407539
    GLIBTOP_IF_FLAGS_MULTICAST
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_ppp,  , glibtop_netload, System Dependent
Packit Service 407539
@subsection PPP Statistics
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_ppp}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_ppp_l (glibtop *server, glibtop_ppp *buf,
Packit Service 407539
                   unsigned short device);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_ppp (glibtop_ppp *buf, unsigned short device);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_ppp} in @file{<glibtop/ppp.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_ppp     glibtop_ppp;
Packit Service 407539
Packit Service 407539
struct _glibtop_ppp
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        state,
Packit Service 407539
        bytes_in,
Packit Service 407539
        bytes_out;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item bytes_in
Packit Service 407539
Number of input bytes
Packit Service 407539
@item bytes_out
Packit Service 407539
Number of output bytes
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
There are some constants for @code{state}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
enum @{
Packit Service 407539
    GLIBTOP_PPP_STATE_UNKNOWN = 0,
Packit Service 407539
    GLIBTOP_PPP_STATE_HANGUP,
Packit Service 407539
    GLIBTOP_PPP_STATE_ONLINE
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_PPP_STATE_UNKNOWN
Packit Service 407539
LibGTop was unable to determine the current ppp state.
Packit Service 407539
@item GLIBTOP_PPP_STATE_HANGUP
Packit Service 407539
We're currently offline.
Packit Service 407539
@item GLIBTOP_PPP_STATE_ONLINE
Packit Service 407539
We're currently online.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node Common Functions, Library Functions, System Dependent, Reference Manual
Packit Service 407539
@section Common Functions
Packit Service 407539
Packit Service 407539
This are functions which a common implementation for all systems; we never
Packit Service 407539
use the server for them.
Packit Service 407539
Packit Service 407539
The file system code is taken from GNU Fileutils.
Packit Service 407539
Packit Service 407539
@menu
Packit Service 407539
* glibtop_mountlist::           Mount List.
Packit Service 407539
* glibtop_fsusage::             File System Usage.
Packit Service 407539
@end menu
Packit Service 407539
Packit Service 407539
@node glibtop_mountlist, glibtop_fsusage, Common Functions, Common Functions
Packit Service 407539
@subsection Mount List
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_mountlist}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
glibtop_mountentry *
Packit Service 407539
glibtop_get_mountlist_l (glibtop *server, glibtop_mountlist *buf,
Packit Service 407539
                         int all_fs);
Packit Service 407539
Packit Service 407539
glibtop_mountentry *
Packit Service 407539
glibtop_get_mountlist (glibtop_mountlist *buf, int all_fs);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
The @code{all_fs} parameter specifies whether information about all
Packit Service 407539
filesystems should be returned; this will include filesystem types like
Packit Service 407539
@code{autofs} and @code{procfs}. You should not use this in disk usage
Packit Service 407539
programs, but it can be useful to get a list of all currently mounted
Packit Service 407539
filesystems.
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_proc_map} in @file{<glibtop/procmap.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_mountlist       glibtop_mountlist;
Packit Service 407539
Packit Service 407539
struct _glibtop_mountlist
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        number,
Packit Service 407539
        total,
Packit Service 407539
        size;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Returns a @code{glibtop_mountentry *} list (which needs to be freed with
Packit Service 407539
@code{g_free}) of mounted filesystems.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item number
Packit Service 407539
Number of entries in the returned list.
Packit Service 407539
Packit Service 407539
@item total
Packit Service 407539
Total size of the returned list (this equals @code{number * size}).
Packit Service 407539
Packit Service 407539
@item size
Packit Service 407539
Size of a single entry in the returned list
Packit Service 407539
(this equals @code{sizeof (glibtop_mountentry)}).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_mountentry      glibtop_mountentry;
Packit Service 407539
Packit Service 407539
struct _glibtop_mountentry
Packit Service 407539
@{
Packit Service 407539
    guint64 dev;
Packit Service 407539
    char devname [GLIBTOP_MOUNTENTRY_LEN+1];
Packit Service 407539
    char mountdir [GLIBTOP_MOUNTENTRY_LEN+1];
Packit Service 407539
    char type [GLIBTOP_MOUNTENTRY_LEN+1];
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@code{GLIBTOP_MOUNTENTRY_LEN} is defined in @file{<glibtop.h>}.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item devname
Packit Service 407539
Full pathname (such as @samp{/dev/sdb1} for instance) to the mounted device.
Packit Service 407539
@item mountdir
Packit Service 407539
Full pathname of the mountpoint (such as @samp{/usr/local} for instance).
Packit Service 407539
@item type
Packit Service 407539
Filesystem type as a textual string (such as @samp{ext2fs}).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node glibtop_fsusage,  , glibtop_mountlist, Common Functions
Packit Service 407539
@subsection File System Usage
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_fsusage}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_fsusage_l (glibtop *server, glibtop_fsusage *buf,
Packit Service 407539
                       const char *mount_dir);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_fsusage (glibtop_fsusage *buf, const char *mount_dir);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_fsusage} in @file{<glibtop/fsusage.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_fsusage         glibtop_fsusage;
Packit Service 407539
Packit Service 407539
struct _glibtop_fsusage
Packit Service 407539
@{
Packit Service 407539
    guint64   flags,
Packit Service 407539
        blocks,
Packit Service 407539
        bfree,
Packit Service 407539
        bavail,
Packit Service 407539
        files,
Packit Service 407539
        ffree;
Packit Service 407539
    guint32   block_size;
Packit Service 407539
    guint64 read,
Packit Service 407539
        write;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item blocks
Packit Service 407539
Total blocks in the filesystem.
Packit Service 407539
@item bfree
Packit Service 407539
Free blocks available to the superuser.
Packit Service 407539
@item bavail
Packit Service 407539
Free blocks available to ordinary users.
Packit Service 407539
@item files
Packit Service 407539
Total file nodes.
Packit Service 407539
@item ffree
Packit Service 407539
Free file nodes.
Packit Service 407539
@item block_size
Packit Service 407539
Block size in bytes.
Packit Service 407539
@item read
Packit Service 407539
Total blocks read.
Packit Service 407539
@item write
Packit Service 407539
Total blocks written.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@page
Packit Service 407539
@node Library Functions,  , Common Functions, Reference Manual
Packit Service 407539
@section Library Functions
Packit Service 407539
Packit Service 407539
This are general library functions which can be used to get information
Packit Service 407539
about the library and to control its behavior.
Packit Service 407539
Packit Service 407539
@menu
Packit Service 407539
* glibtop_init::                Server Initialization.
Packit Service 407539
* glibtop_sysdeps::             Server Sysdeps.
Packit Service 407539
* Library Parameters::          Library Parameters.
Packit Service 407539
@end menu
Packit Service 407539
Packit Service 407539
@node glibtop_init, glibtop_sysdeps, Library Functions, Library Functions
Packit Service 407539
@subsection Server Initialization
Packit Service 407539
Packit Service 407539
You do not need to worry about the @code{glibtop *} server structure if
Packit Service 407539
you don't need - the library exports a @code{glibtop_global_server}
Packit Service 407539
which you can use everywhere a @code{glibtop *} is expected.
Packit Service 407539
Packit Service 407539
Most of the library and all of the sysdeps function also have an alias
Packit Service 407539
(which is the function name without the @samp{_l}, @samp{_s} or @samp{_r}
Packit Service 407539
suffix) which don't take a @code{glibtop *} as argument but uses the
Packit Service 407539
@code{glibtop_global_server} instead.
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
extern glibtop *glibtop_global_server;
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_init}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
glibtop *
Packit Service 407539
glibtop_init_r (glibtop **server_ptr, unsigned long features,
Packit Service 407539
                unsigned flags);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_init (void);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
This function initializes a LibGTop server. It is automatically called
Packit Service 407539
when you use any of the LibGTop functions and will use the global server
Packit Service 407539
in this case.
Packit Service 407539
Packit Service 407539
However, it's appreciated to call @code{glibtop_init} during the
Packit Service 407539
initialization of your application.
Packit Service 407539
Packit Service 407539
You can for instance use
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
glibtop_init ();
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@noindent
Packit Service 407539
which is equivalent to
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
glibtop_init_r (&glibtop_global_server, 0, 0);
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Please note that the @code{server_ptr} argument is a pointer to a pointer
Packit Service 407539
(and thus is of type @code{glibtop **}).
Packit Service 407539
Packit Service 407539
To control what @code{glibtop_init} should actually do, you can use the
Packit Service 407539
@code{features} and @code{flags} arguments.
Packit Service 407539
Packit Service 407539
The @code{features} argument is a bit-mask (interpreted in the same way
Packit Service 407539
than @samp{sysdeps.features}) and tells the library which features you're
Packit Service 407539
interested in. The library will only start the server if this is required
Packit Service 407539
for any of those features.
Packit Service 407539
Packit Service 407539
You can use the following constants for the @code{flags} parameter to
Packit Service 407539
control the behavior of the library:
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_INIT_NO_INIT
Packit Service 407539
Tells the library to do nothing. If the value pointed to by the
Packit Service 407539
@code{server_ptr} argument is @code{NULL}, it will set it to the
Packit Service 407539
@code{glibtop_global_server} and then return.
Packit Service 407539
@item GLIBTOP_INIT_NO_OPEN
Packit Service 407539
Do the initialization, but do not start the server.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
To modify the way the @code{features} are interpretet, you can use the
Packit Service 407539
following constants for @code{flags} (as a bit mask):
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_FEATURES_NO_SERVER
Packit Service 407539
Never use the server, always call the sysdeps code directly.
Packit Service 407539
If you require any privileges to get them and you don't have those
Packit Service 407539
privileges, the this will obviously not work and the library will
Packit Service 407539
fail to return some or all of the requested values.
Packit Service 407539
@item GLIBTOP_FEATURES_EXCEPT
Packit Service 407539
Inverts the matching of the @code{features} parameter, i.e. if you use
Packit Service 407539
this flag this means that @code{features} are all the features you are
Packit Service 407539
@emph{not} interested in.
Packit Service 407539
Might be useful to say something like "I want everything but ppp".
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
@node glibtop_sysdeps, Library Parameters, glibtop_init, Library Functions
Packit Service 407539
@subsection Server Sysdeps
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_sysdeps}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_get_sysdeps_r (glibtop *server, glibtop_sysdeps *buf);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_get_sysdeps (glibtop_sysdeps *buf);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
Declaration of @code{glibtop_sysdeps} in @file{<glibtop/sysdeps.h>}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
typedef struct _glibtop_sysdeps         glibtop_sysdeps;
Packit Service 407539
Packit Service 407539
struct _glibtop_sysdeps
Packit Service 407539
@{
Packit Service 407539
    guint64 flags,
Packit Service 407539
        features,
Packit Service 407539
        pointer_size,
Packit Service 407539
        cpu,
Packit Service 407539
        mem,
Packit Service 407539
        swap,
Packit Service 407539
        uptime,
Packit Service 407539
        loadavg,
Packit Service 407539
        shm_limits,
Packit Service 407539
        msg_limits,
Packit Service 407539
        sem_limits,
Packit Service 407539
        proclist,
Packit Service 407539
        proc_state,
Packit Service 407539
        proc_uid,
Packit Service 407539
        proc_mem,
Packit Service 407539
        proc_time,
Packit Service 407539
        proc_signal,
Packit Service 407539
        proc_kernel,
Packit Service 407539
        proc_segment,
Packit Service 407539
        proc_args,
Packit Service 407539
        proc_map,
Packit Service 407539
        mountlist,
Packit Service 407539
        fsusage,
Packit Service 407539
        netload,
Packit Service 407539
        ppp;
Packit Service 407539
@};
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item features
Packit Service 407539
This is a bit field (the so-called @dfn{server features}) stating
Packit Service 407539
for which features we need to use the server.
Packit Service 407539
@item pointer_size
Packit Service 407539
This was added in LibGTop 1.1.0 and tells you the number of bits a
Packit Service 407539
@code{void*} has in the server (this may be different from the
Packit Service 407539
size on the client machine if we're talking over the daemon to a
Packit Service 407539
remove machine).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The following constants from @file{<glibtop/sysdeps.h>} serve as bit-indices
Packit Service 407539
for the @code{features} field:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
#define GLIBTOP_SYSDEPS_CPU             0
Packit Service 407539
#define GLIBTOP_SYSDEPS_MEM             1
Packit Service 407539
#define GLIBTOP_SYSDEPS_SWAP            2
Packit Service 407539
#define GLIBTOP_SYSDEPS_UPTIME          3
Packit Service 407539
#define GLIBTOP_SYSDEPS_LOADAVG         4
Packit Service 407539
#define GLIBTOP_SYSDEPS_SHM_LIMITS      5
Packit Service 407539
#define GLIBTOP_SYSDEPS_MSG_LIMITS      6
Packit Service 407539
#define GLIBTOP_SYSDEPS_SEM_LIMITS      7
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROCLIST        8
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_STATE      9
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_UID        10
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_MEM        11
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_TIME       12
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_SIGNAL     13
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_KERNEL     14
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_SEGMENT    15
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_ARGS       16
Packit Service 407539
#define GLIBTOP_SYSDEPS_PROC_MAP        17
Packit Service 407539
#define GLIBTOP_SYSDEPS_MOUNTLIST       18
Packit Service 407539
#define GLIBTOP_SYSDEPS_FSUSAGE         19
Packit Service 407539
#define GLIBTOP_SYSDEPS_NETLOAD         20
Packit Service 407539
#define GLIBTOP_SYSDEPS_PPP             21
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
@node Library Parameters,  , glibtop_sysdeps, Library Functions
Packit Service 407539
@subsection Library Parameters
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_get_parameter}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
size_t
Packit Service 407539
glibtop_get_parameter_l (glibtop *server, const unsigned parameter,
Packit Service 407539
                         void *data_ptr, size_t data_size);
Packit Service 407539
Packit Service 407539
size_t
Packit Service 407539
glibtop_get_parameter (const unsigned parameter, void *data_ptr,
Packit Service 407539
                       size_t data_size);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
This function is used to retrieve a library parameter (see below for a more
Packit Service 407539
detailed description). It returns the size of the retrieved parameter on
Packit Service 407539
success, zero on failure or minus the actual size of the parameter if
Packit Service 407539
@code{data_size} was too small.
Packit Service 407539
Packit Service 407539
You may call this function with @code{data_ptr} set to @code{NULL} to get the
Packit Service 407539
actual size of a parameter (as a negative value).
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item parameter
Packit Service 407539
The parameter you want to retrieve (see below for constants).
Packit Service 407539
@item data_ptr
Packit Service 407539
Pointer to a place where the parameter should be stored.
Packit Service 407539
@item data_size
Packit Service 407539
Maximum size of the parameter.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
Library function @code{glibtop_set_parameter}:
Packit Service 407539
Packit Service 407539
@example
Packit Service 407539
@cartouche
Packit Service 407539
void
Packit Service 407539
glibtop_set_parameter_l (glibtop *server, const unsigned parameter,
Packit Service 407539
                         const void *data_ptr, size_t data_size);
Packit Service 407539
Packit Service 407539
void
Packit Service 407539
glibtop_set_parameter (const unsigned parameter, const void *data_ptr,
Packit Service 407539
                       size_t data_size);
Packit Service 407539
@end cartouche
Packit Service 407539
@end example
Packit Service 407539
Packit Service 407539
This function is used to modify a library parameter. Please not that you
Packit Service 407539
may not set all parameters since some of them are read-only.
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item parameter
Packit Service 407539
The parameter you want to modify (see below for constants).
Packit Service 407539
@item data_ptr
Packit Service 407539
Pointer to the value which should be set.
Packit Service 407539
@item data_size
Packit Service 407539
Size of the new value. For fixed-size parameters, this must match
Packit Service 407539
the exact size of the parameter or you'll get an error.
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
The following parameters are defined in @file{<glibtop/parameter.h>}:
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_PARAM_FEATURES
Packit Service 407539
This is a read-only @code{unsigned long} representing the @code{features}
Packit Service 407539
field of @code{glibtop_sysdeps}.
Packit Service 407539
@item GLIBTOP_PARAM_REQUIRED
Packit Service 407539
This is a @code{glibtop_sysdeps} structure specifying which features the
Packit Service 407539
client requires the library return. If it fails to get any of them, you'll
Packit Service 407539
get an error.
Packit Service 407539
@item GLIBTOP_PARAM_ERROR_METHOD
Packit Service 407539
This is an @code{unsigned} telling the library what to do if it fails to
Packit Service 407539
get any of the features that are marked as required via the
Packit Service 407539
@code{GLIBTOP_PARAM_REQUIRED} parameter (see below for constants).
Packit Service 407539
@end table
Packit Service 407539
Packit Service 407539
You can use the following constants for @code{GLIBTOP_PARAM_ERROR_METHOD}
Packit Service 407539
(defined in @file{<glibtop/open.h>}):
Packit Service 407539
Packit Service 407539
@table @code
Packit Service 407539
@item GLIBTOP_ERROR_METHOD_IGNORE
Packit Service 407539
Ignore the error condition.
Packit Service 407539
@item GLIBTOP_ERROR_METHOD_WARN_ONCE
Packit Service 407539
Warn once about the absense of some of the required features, then modify
Packit Service 407539
@code{GLIBTOP_PARAM_REQUIRED} so that the missing ones are no longer
Packit Service 407539
required. This is the prefered value for applications since it'll only
Packit Service 407539
print out the warning message once and not each time the library tries to
Packit Service 407539
get one of those features.
Packit Service 407539
@item GLIBTOP_ERROR_METHOD_WARN
Packit Service 407539
Warn each time the library fails to get some of the required features.
Packit Service 407539
@item GLIBTOP_ERROR_METHOD_ABORT
Packit Service 407539
Abort if the library fails to get some of the required features. This
Packit Service 407539
should not be used by applications.
Packit Service 407539
@end table
Packit Service 407539