Added "Servers and Daemons" section. Documented the glibtop_init ()
* white-papers.texi: Added "Servers and Daemons" section. * reference.texi: Documented the glibtop_init () function.
This commit is contained in:
@@ -19,6 +19,11 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
--- The Detailed Node Listing ---
|
||||
|
||||
About LibGTop
|
||||
@@ -32,6 +37,7 @@ LibGTop White Paper
|
||||
|
||||
* Introduction:: Introduction
|
||||
* Overview:: Overview
|
||||
* Servers and Daemons:: Servers and Daemons
|
||||
|
||||
Overview
|
||||
|
||||
@@ -71,7 +77,8 @@ Common Functions
|
||||
|
||||
Library Functions
|
||||
|
||||
* glibtop_sysdeps::
|
||||
* glibtop_init:: Server Initialization.
|
||||
* glibtop_sysdeps:: Server Sysdeps.
|
||||
* Library Parameters:: Library Parameters.
|
||||
|
||||
LibGTop Internals
|
||||
|
@@ -1505,12 +1505,103 @@ This are general library functions which can be used to get information
|
||||
about the library and to control its behavior.
|
||||
|
||||
@menu
|
||||
* glibtop_sysdeps::
|
||||
* glibtop_init:: Server Initialization.
|
||||
* glibtop_sysdeps:: Server Sysdeps.
|
||||
* Library Parameters:: Library Parameters.
|
||||
@end menu
|
||||
|
||||
@node glibtop_sysdeps, Library Parameters, Library Functions, Library Functions
|
||||
@subsection Sysdeps
|
||||
@node glibtop_init, glibtop_sysdeps, Library Functions, Library Functions
|
||||
@subsection Server Initialization
|
||||
|
||||
You do not need to worry about the @code{glibtop *} server structure if
|
||||
you don't need - the library exports a @code{glibtop_global_server}
|
||||
which you can use everywhere a @code{glibtop *} is expected.
|
||||
|
||||
Most of the library and all of the sysdeps function also have an alias
|
||||
(which is the function name without the @samp{_l}, @samp{_s} or @samp{_r}
|
||||
suffix) which don't take a @code{glibtop *} as argument but uses the
|
||||
@code{glibtop_global_server} instead.
|
||||
|
||||
@example
|
||||
@cartouche
|
||||
extern glibtop *glibtop_global_server;
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
Library function @code{glibtop_init}:
|
||||
|
||||
@example
|
||||
@cartouche
|
||||
glibtop *
|
||||
glibtop_init_r (glibtop **server_ptr, unsigned long features,
|
||||
unsigned flags);
|
||||
|
||||
void
|
||||
glibtop_init (void);
|
||||
@end cartouche
|
||||
@end example
|
||||
|
||||
This function initializes a LibGTop server. It is automatically called
|
||||
when you use any of the LibGTop functions and will use the global server
|
||||
in this case.
|
||||
|
||||
However, it's appreciated to call @code{glibtop_init} during the
|
||||
initialization of your application.
|
||||
|
||||
You can for instance use
|
||||
|
||||
@example
|
||||
glibtop_init ();
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
which is equivalent to
|
||||
|
||||
@example
|
||||
glibtop_init_r (&glibtop_global_server, 0, 0);
|
||||
@end example
|
||||
|
||||
Please note that the @code{server_ptr} argument is a pointer to a pointer
|
||||
(and thus is of type @code{glibtop **}).
|
||||
|
||||
To control what @code{glibtop_init} should actually do, you can use the
|
||||
@code{features} and @code{flags} arguments.
|
||||
|
||||
The @code{features} argument is a bit-mask (interpreted in the same way
|
||||
than @samp{sysdeps.features}) and tells the library which features you're
|
||||
interested in. The library will only start the server if this is required
|
||||
for any of those features.
|
||||
|
||||
You can use the following constants for the @code{flags} parameter to
|
||||
control the behavior of the library:
|
||||
|
||||
@table @code
|
||||
@item GLIBTOP_INIT_NO_INIT
|
||||
Tells the library to do nothing. If the value pointed to by the
|
||||
@code{server_ptr} argument is @code{NULL}, it will set it to the
|
||||
@code{glibtop_global_server} and then return.
|
||||
@item GLIBTOP_INIT_NO_OPEN
|
||||
Do the initialization, but do not start the server.
|
||||
@end table
|
||||
|
||||
To modify the way the @code{features} are interpretet, you can use the
|
||||
following constants for @code{flags} (as a bit mask):
|
||||
|
||||
@table @code
|
||||
@item GLIBTOP_FEATURES_NO_SERVER
|
||||
Never use the server, always call the sysdeps code directly.
|
||||
If you require any privileges to get them and you don't have those
|
||||
privileges, the this will obviously not work and the library will
|
||||
fail to return some or all of the requested values.
|
||||
@item GLIBTOP_FEATURES_EXCEPT
|
||||
Inverts the matching of the @code{features} parameter, i.e. if you use
|
||||
this flag this means that @code{features} are all the features you are
|
||||
@emph{not} interested in.
|
||||
Might be useful to say something like "I want everything but ppp".
|
||||
@end table
|
||||
|
||||
@node glibtop_sysdeps, Library Parameters, glibtop_init, Library Functions
|
||||
@subsection Server Sysdeps
|
||||
|
||||
Library function @code{glibtop_get_sysdeps}:
|
||||
|
||||
|
@@ -4,6 +4,7 @@
|
||||
@menu
|
||||
* Introduction:: Introduction
|
||||
* Overview:: Overview
|
||||
* Servers and Daemons:: Servers and Daemons
|
||||
@end menu
|
||||
|
||||
@node Introduction, Overview, White Paper, White Paper
|
||||
@@ -47,7 +48,7 @@ since there's more than just one single program that wants to use them - for
|
||||
instance @code{gtop} and the @code{multiload}, @code{cpumemusage} and
|
||||
@code{netload} panel applets.
|
||||
|
||||
@node Overview, , Introduction, White Paper
|
||||
@node Overview, Servers and Daemons, Introduction, White Paper
|
||||
@section Overview
|
||||
|
||||
This section should give you a short overview on how LibGTop was developed, which
|
||||
@@ -88,3 +89,48 @@ only contains the @dfn{features} which need privileges.
|
||||
Whenever we do not need any privileges to get all the data for some of the requested
|
||||
structures (here called @dfn{features}) the library calls the sysdeps code directly
|
||||
rather than using the server.
|
||||
|
||||
@node Servers and Daemons, , Overview, White Paper
|
||||
@section Servers and Daemons
|
||||
|
||||
LibGTop gives you the possibility to use different LibGTop "servers" and
|
||||
"daemons" in your application.
|
||||
|
||||
Normally you do not need to worry about this things since LibGTop auto-
|
||||
matically opens a pipe to its server it it's required, but this can also
|
||||
be customized to fit your needs.
|
||||
|
||||
For instance if you have a small applet which is only interested in disk
|
||||
usage there's no need to fork a separate server process since you don't
|
||||
need any privileges to get them on any of the supported systems. This can
|
||||
be archieved with a special call to @code{glibtop_init_r} on startup.
|
||||
|
||||
There's also an option to tell @code{glibtop_init_r} that you're only
|
||||
interested in several features - for instance cpu and memory usage. In
|
||||
this case LibGTop will only fork a server process if it's required to get
|
||||
cpu and memory.
|
||||
|
||||
You can also tell @code{glibtop_init_r} to start the server only on demand,
|
||||
this might become useful in command-line based programs. For graphical
|
||||
applications it's normally best to start the server directly during their
|
||||
initialization. The same applies for any time critical applications (since
|
||||
@code{fork} is an expensive operation on some systems this may lead to
|
||||
incorrect statistics).
|
||||
|
||||
LibGTop also allows you to talk to a remote machine using the
|
||||
@dfn{LibGTop daemon}. This daemon is based on @code{gnuserv} from
|
||||
GNU Emacs and should be run as an unprivileged user. It has support
|
||||
for either @code{xauth} or host based authorization.
|
||||
|
||||
This daemon itself behaves like a LibGTop client application, i.e. it
|
||||
forks a server process if this is required.
|
||||
|
||||
The main use for this daemon is when you want to monitor a machine which
|
||||
is either very slow or has very low disk space. In this case you don't need
|
||||
to install the whole client application (for instance GTop) on the remote
|
||||
machine but only a very small (maybe also statically linked) executable and
|
||||
run the graphical application on a more powerful machine.
|
||||
|
||||
It can also be used to monitor a remote machine over a very slow link such
|
||||
as a dialup connection since the conversation between LibGTop client and
|
||||
daemon uses much less bandwith than an ordinary X11 connection.
|
||||
|
Reference in New Issue
Block a user