New file documenting LibGTop internals. Started to document all library
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE> * internals.texi: New file documenting LibGTop internals. * reference.texi: Started to document all library functions and finished the sysdeps and common references.
This commit is contained in:
committed by
Martin Baulig
parent
d97a151695
commit
76be244662
@@ -1,3 +1,9 @@
|
|||||||
|
1999-05-28 Martin Baulig <baulig@Stud.Informatik.Uni-Trier.DE>
|
||||||
|
|
||||||
|
* internals.texi: New file documenting LibGTop internals.
|
||||||
|
* reference.texi: Started to document all library functions and
|
||||||
|
finished the sysdeps and common references.
|
||||||
|
|
||||||
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
1999-05-16 Martin Baulig <martin@home-of-linux.org>
|
||||||
|
|
||||||
* main.texi: This is now the main file which will @include all
|
* main.texi: This is now the main file which will @include all
|
||||||
|
@@ -2,7 +2,7 @@ info_TEXINFOS = libgtop.texi
|
|||||||
|
|
||||||
libgtop_TEXINFOS = libgtop.texi about.texi reference.texi \
|
libgtop_TEXINFOS = libgtop.texi about.texi reference.texi \
|
||||||
auto-macros.texi version.texi main.texi \
|
auto-macros.texi version.texi main.texi \
|
||||||
white-paper.texi
|
white-paper.texi internals.texi
|
||||||
|
|
||||||
EXTRA_DIST = auto-macros.texi.in
|
EXTRA_DIST = auto-macros.texi.in
|
||||||
|
|
||||||
|
107
doc/internals.texi
Normal file
107
doc/internals.texi
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
@node LibGTop Internals, , Reference Manual, Top
|
||||||
|
@chapter LibGTop Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* General Internals:: General Internals
|
||||||
|
* Sysdeps Internals:: Sysdeps Internals
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node General Internals, Sysdeps Internals, LibGTop Internals, LibGTop Internals
|
||||||
|
@section General Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* glibtop:: The server structure
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node glibtop, , General Internals, General Internals
|
||||||
|
@subsection The server structure - @code{glibtop}
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
typedef struct _glibtop glibtop;
|
||||||
|
|
||||||
|
struct _glibtop
|
||||||
|
@{
|
||||||
|
unsigned flags;
|
||||||
|
unsigned method;
|
||||||
|
unsigned error_method;
|
||||||
|
#ifdef HAVE_GLIBTOP_MACHINE_H
|
||||||
|
glibtop_machine machine;
|
||||||
|
#endif
|
||||||
|
int input [2];
|
||||||
|
int output [2];
|
||||||
|
int socket;
|
||||||
|
int ncpu;
|
||||||
|
unsigned long os_version_code;
|
||||||
|
const char *name;
|
||||||
|
const char *server_command;
|
||||||
|
const char *server_host;
|
||||||
|
const char *server_user;
|
||||||
|
const char *server_rsh;
|
||||||
|
unsigned long features;
|
||||||
|
unsigned long server_port;
|
||||||
|
glibtop_sysdeps sysdeps;
|
||||||
|
glibtop_sysdeps required;
|
||||||
|
glibtop_sysdeps wanted;
|
||||||
|
pid_t pid;
|
||||||
|
@};
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@node Sysdeps Internals, , General Internals, LibGTop Internals
|
||||||
|
@section Sysdeps Internals
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* glibtop_open_s:: Non-privileged initializations
|
||||||
|
* glibtop_close_s:: Non-privileged cleanups
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node glibtop_open_s, glibtop_close_s, Sysdeps Internals, Sysdeps Internals
|
||||||
|
@subsection glibtop_open_s
|
||||||
|
|
||||||
|
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
||||||
|
initialize a server. It should do all initializations that do not need any
|
||||||
|
privileges.
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_open_s (glibtop *server, const char *program_name,
|
||||||
|
const unsigned long features,
|
||||||
|
const unsigned flags);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item server
|
||||||
|
Pointer to the @code{glibtop} server structure.
|
||||||
|
@item program_name
|
||||||
|
Name of the calling program; the implementation will usually
|
||||||
|
set @samp{server->name} to this so it'll be used as the program
|
||||||
|
name in error messages.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
Typically, this function will set @code{server->name}, @code{server->ncpu} and
|
||||||
|
@code{server->os_version_code} and initialize any of the @code{server->machine}
|
||||||
|
fields which do not need any privileges.
|
||||||
|
|
||||||
|
It is normally implemented in @file{open.c} in the sysdeps directory.
|
||||||
|
|
||||||
|
@node glibtop_close_s, , glibtop_open_s, Sysdeps Internals
|
||||||
|
@subsection glibtop_close_s
|
||||||
|
|
||||||
|
This function is used in the non-suid sysdeps library @samp{-lgtop_sysdeps} to
|
||||||
|
clean-up a server when it's no longer used.
|
||||||
|
|
||||||
|
It must free all resources that were allocated in @code{glibtop_open_s}.
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_close_s (glibtop *server);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
It is normally implemented in @file{close.c} in the sysdeps directory, but may
|
||||||
|
be empty.
|
||||||
|
|
@@ -4,13 +4,7 @@
|
|||||||
* About:: About LibGTop
|
* About:: About LibGTop
|
||||||
* White Paper:: LibGTop White Paper
|
* White Paper:: LibGTop White Paper
|
||||||
* Reference Manual:: LibGTop Reference Manual
|
* Reference Manual:: LibGTop Reference Manual
|
||||||
|
* LibGTop Internals:: LibGTop Internals
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -48,6 +42,7 @@ LibGTop Reference Manual
|
|||||||
|
|
||||||
* System Dependent:: System Dependent Functions.
|
* System Dependent:: System Dependent Functions.
|
||||||
* Common Functions:: Common Functions.
|
* Common Functions:: Common Functions.
|
||||||
|
* Library Functions:: Library Functions.
|
||||||
|
|
||||||
System Dependent Functions
|
System Dependent Functions
|
||||||
|
|
||||||
@@ -73,9 +68,29 @@ Common Functions
|
|||||||
|
|
||||||
* glibtop_mountlist:: Mount List.
|
* glibtop_mountlist:: Mount List.
|
||||||
* glibtop_fsusage:: File System Usage.
|
* glibtop_fsusage:: File System Usage.
|
||||||
|
|
||||||
|
Library Functions
|
||||||
|
|
||||||
|
* glibtop_sysdeps::
|
||||||
|
* Library Parameters:: Library Parameters.
|
||||||
|
|
||||||
|
LibGTop Internals
|
||||||
|
|
||||||
|
* General Internals:: General Internals
|
||||||
|
* Sysdeps Internals:: Sysdeps Internals
|
||||||
|
|
||||||
|
General Internals
|
||||||
|
|
||||||
|
* glibtop:: The server structure
|
||||||
|
|
||||||
|
Sysdeps Internals
|
||||||
|
|
||||||
|
* glibtop_open_s:: Non-privileged initializations
|
||||||
|
* glibtop_close_s:: Non-privileged cleanups
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@include about.texi
|
@include about.texi
|
||||||
@include white-paper.texi
|
@include white-paper.texi
|
||||||
@include reference.texi
|
@include reference.texi
|
||||||
|
@include internals.texi
|
||||||
|
|
||||||
|
@@ -1,9 +1,10 @@
|
|||||||
@node Reference Manual, , White Paper, Top
|
@node Reference Manual, LibGTop Internals, White Paper, Top
|
||||||
@chapter LibGTop Reference Manual
|
@chapter LibGTop Reference Manual
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* System Dependent:: System Dependent Functions.
|
* System Dependent:: System Dependent Functions.
|
||||||
* Common Functions:: Common Functions.
|
* Common Functions:: Common Functions.
|
||||||
|
* Library Functions:: Library Functions.
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node System Dependent, Common Functions, Reference Manual, Reference Manual
|
@node System Dependent, Common Functions, Reference Manual, Reference Manual
|
||||||
@@ -1349,7 +1350,7 @@ We're currently online.
|
|||||||
@end table
|
@end table
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@node Common Functions, , System Dependent, Reference Manual
|
@node Common Functions, Library Functions, System Dependent, Reference Manual
|
||||||
@section Common Functions
|
@section Common Functions
|
||||||
|
|
||||||
This are functions which a common implementation for all systems; we never
|
This are functions which a common implementation for all systems; we never
|
||||||
@@ -1362,7 +1363,6 @@ The file system code is taken from GNU Fileutils.
|
|||||||
* glibtop_fsusage:: File System Usage.
|
* glibtop_fsusage:: File System Usage.
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@page
|
|
||||||
@node glibtop_mountlist, glibtop_fsusage, Common Functions, Common Functions
|
@node glibtop_mountlist, glibtop_fsusage, Common Functions, Common Functions
|
||||||
@subsection Mount List
|
@subsection Mount List
|
||||||
|
|
||||||
@@ -1497,3 +1497,204 @@ Free file nodes.
|
|||||||
|
|
||||||
Blocks are usually 512 bytes.
|
Blocks are usually 512 bytes.
|
||||||
|
|
||||||
|
@page
|
||||||
|
@node Library Functions, , Common Functions, Reference Manual
|
||||||
|
@section Library Functions
|
||||||
|
|
||||||
|
This are general library functions which can be used to get information
|
||||||
|
about the library and to control its behavior.
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* glibtop_sysdeps::
|
||||||
|
* Library Parameters:: Library Parameters.
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node glibtop_sysdeps, Library Parameters, Library Functions, Library Functions
|
||||||
|
@subsection Sysdeps
|
||||||
|
|
||||||
|
Library function @code{glibtop_get_sysdeps}:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_get_sysdeps_r (glibtop *server, glibtop_sysdeps *buf);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_get_sysdeps (glibtop_sysdeps *buf);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
Declaration of @code{glibtop_sysdeps} in @file{<glibtop/sysdeps.h>}:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
typedef struct _glibtop_sysdeps glibtop_sysdeps;
|
||||||
|
|
||||||
|
struct _glibtop_sysdeps
|
||||||
|
@{
|
||||||
|
u_int64_t flags,
|
||||||
|
features,
|
||||||
|
pointer_size,
|
||||||
|
cpu,
|
||||||
|
mem,
|
||||||
|
swap,
|
||||||
|
uptime,
|
||||||
|
loadavg,
|
||||||
|
shm_limits,
|
||||||
|
msg_limits,
|
||||||
|
sem_limits,
|
||||||
|
proclist,
|
||||||
|
proc_state,
|
||||||
|
proc_uid,
|
||||||
|
proc_mem,
|
||||||
|
proc_time,
|
||||||
|
proc_signal,
|
||||||
|
proc_kernel,
|
||||||
|
proc_segment,
|
||||||
|
proc_args,
|
||||||
|
proc_map,
|
||||||
|
mountlist,
|
||||||
|
fsusage,
|
||||||
|
netload,
|
||||||
|
ppp;
|
||||||
|
@};
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item features
|
||||||
|
This is a bit field (the so-called @dfn{server features}) stating
|
||||||
|
for which features we need to use the server.
|
||||||
|
@item pointer_size
|
||||||
|
This was added in LibGTop 1.1.0 and tells you the number of bits a
|
||||||
|
@code{void*} has in the server (this may be different from the
|
||||||
|
size on the client machine if we're talking over the daemon to a
|
||||||
|
remove machine).
|
||||||
|
@end table
|
||||||
|
|
||||||
|
The following constants from @file{<glibtop/sysdeps.h>} serve as bit-indices
|
||||||
|
for the @code{features} field:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
#define GLIBTOP_SYSDEPS_CPU 0
|
||||||
|
#define GLIBTOP_SYSDEPS_MEM 1
|
||||||
|
#define GLIBTOP_SYSDEPS_SWAP 2
|
||||||
|
#define GLIBTOP_SYSDEPS_UPTIME 3
|
||||||
|
#define GLIBTOP_SYSDEPS_LOADAVG 4
|
||||||
|
#define GLIBTOP_SYSDEPS_SHM_LIMITS 5
|
||||||
|
#define GLIBTOP_SYSDEPS_MSG_LIMITS 6
|
||||||
|
#define GLIBTOP_SYSDEPS_SEM_LIMITS 7
|
||||||
|
#define GLIBTOP_SYSDEPS_PROCLIST 8
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_STATE 9
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_UID 10
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_MEM 11
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_TIME 12
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_SIGNAL 13
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_KERNEL 14
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_SEGMENT 15
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_ARGS 16
|
||||||
|
#define GLIBTOP_SYSDEPS_PROC_MAP 17
|
||||||
|
#define GLIBTOP_SYSDEPS_MOUNTLIST 18
|
||||||
|
#define GLIBTOP_SYSDEPS_FSUSAGE 19
|
||||||
|
#define GLIBTOP_SYSDEPS_NETLOAD 20
|
||||||
|
#define GLIBTOP_SYSDEPS_PPP 21
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@node Library Parameters, , glibtop_sysdeps, Library Functions
|
||||||
|
@subsection Library Parameters
|
||||||
|
|
||||||
|
Library function @code{glibtop_get_parameter}:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
size_t
|
||||||
|
glibtop_get_parameter_l (glibtop *server, const unsigned parameter,
|
||||||
|
void *data_ptr, size_t data_size);
|
||||||
|
|
||||||
|
size_t
|
||||||
|
glibtop_get_parameter (const unsigned parameter, void *data_ptr,
|
||||||
|
size_t data_size);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
This function is used to retrieve a library parameter (see below for a more
|
||||||
|
detailed description). It returns the size of the retrieved parameter on
|
||||||
|
success, zero on failure or minus the actual size of the parameter if
|
||||||
|
@code{data_size} was too small.
|
||||||
|
|
||||||
|
You may call this function with @code{data_ptr} set to @code{NULL} to get the
|
||||||
|
actual size of a parameter (as a negative value).
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item parameter
|
||||||
|
The parameter you want to retrieve (see below for constants).
|
||||||
|
@item data_ptr
|
||||||
|
Pointer to a place where the parameter should be stored.
|
||||||
|
@item data_size
|
||||||
|
Maximum size of the parameter.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
Library function @code{glibtop_set_parameter}:
|
||||||
|
|
||||||
|
@example
|
||||||
|
@cartouche
|
||||||
|
void
|
||||||
|
glibtop_set_parameter_l (glibtop *server, const unsigned parameter,
|
||||||
|
const void *data_ptr, size_t data_size);
|
||||||
|
|
||||||
|
void
|
||||||
|
glibtop_set_parameter (const unsigned parameter, const void *data_ptr,
|
||||||
|
size_t data_size);
|
||||||
|
@end cartouche
|
||||||
|
@end example
|
||||||
|
|
||||||
|
This function is used to modify a library parameter. Please not that you
|
||||||
|
may not set all parameters since some of them are read-only.
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item parameter
|
||||||
|
The parameter you want to modify (see below for constants).
|
||||||
|
@item data_ptr
|
||||||
|
Pointer to the value which should be set.
|
||||||
|
@item data_size
|
||||||
|
Size of the new value. For fixed-size parameters, this must match
|
||||||
|
the exact size of the parameter or you'll get an error.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
The following parameters are defined in @file{<glibtop/parameter.h>}:
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item GLIBTOP_PARAM_FEATURES
|
||||||
|
This is a read-only @code{unsigned long} representing the @code{features}
|
||||||
|
field of @code{glibtop_sysdeps}.
|
||||||
|
@item GLIBTOP_PARAM_REQUIRED
|
||||||
|
This is a @code{glibtop_sysdeps} structure specifying which features the
|
||||||
|
client requires the library return. If it fails to get any of them, you'll
|
||||||
|
get an error.
|
||||||
|
@item GLIBTOP_PARAM_ERROR_METHOD
|
||||||
|
This is an @code{unsigned} telling the library what to do if it fails to
|
||||||
|
get any of the features that are marked as required via the
|
||||||
|
@code{GLIBTOP_PARAM_REQUIRED} parameter (see below for constants).
|
||||||
|
@end table
|
||||||
|
|
||||||
|
You can use the following constants for @code{GLIBTOP_PARAM_ERROR_METHOD}
|
||||||
|
(defined in @file{<glibtop/open.h>}):
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item GLIBTOP_ERROR_METHOD_IGNORE
|
||||||
|
Ignore the error condition.
|
||||||
|
@item GLIBTOP_ERROR_METHOD_WARN_ONCE
|
||||||
|
Warn once about the absense of some of the required features, then modify
|
||||||
|
@code{GLIBTOP_PARAM_REQUIRED} so that the missing ones are no longer
|
||||||
|
required. This is the prefered value for applications since it'll only
|
||||||
|
print out the warning message once and not each time the library tries to
|
||||||
|
get one of those features.
|
||||||
|
@item GLIBTOP_ERROR_METHOD_WARN
|
||||||
|
Warn each time the library fails to get some of the required features.
|
||||||
|
@item GLIBTOP_ERROR_METHOD_ABORT
|
||||||
|
Abort if the library fails to get some of the required features. This
|
||||||
|
should not be used by applications.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user