New directory. New directory. New directory.
2000-01-01 Martin Baulig <martin@home-of-linux.org> * backends/: New directory. * backends/server/: New directory. * backends/sysdeps/: New directory. * include/glibtop/backend.h: New file. * include/glibtop/call-vector.h.in: New file. Template file for `call-vector.h'. * include/glibtop/call-vector.pl: New file. Creates 'call-vector.h' from `call-vector.h.in'. * include/glibtop/errors.h (GLIBTOP_ERROR_NO_SUCH_BACKEND): New error constant. (GLIBTOP_ERROR_NOT_IMPLEMENTED): New error constant. * include/glibtop/limits.h (GLIBTOP_BACKEND_NAME_LEN): New constant. * glibtop-server-private.h (glibtop_server_private): Added `GSList *backend_list' and removed `input', `output', `socket' and `pid'. * lib/command.c: Removed. Moved to `backends/server/'. * lib/read.c: Removed. Moved to `backends/server/'. * lib/read_data.c: Removed. Moved to `backends/server/'. * lib/write.c: Removed. Moved to `backends/server/'.
This commit is contained in:
committed by
Martin Baulig
parent
8797d18587
commit
75ed7287d1
@@ -1,2 +1,3 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
call-vector.h
|
||||
|
@@ -9,4 +9,15 @@ glibtop_HEADERS = close.h loadavg.h prockernel.h procstate.h \
|
||||
parameter.h mountlist.h fsusage.h procmap.h signal.h \
|
||||
inodedb.h sysinfo.h ppp.h procargs.h netload.h \
|
||||
netinfo.h interfaces.h limits.h array.h compat_10.h \
|
||||
errors.h glib-arrays.h
|
||||
errors.h glib-arrays.h backend.h call-vector.h
|
||||
|
||||
BUILT_SOURCES = call-vector.h
|
||||
|
||||
call-vector.h: call-vector.pl call-vector.h.in $(top_builddir)/config.h $(top_srcdir)/features.def $(top_srcdir)/scripts/c_types.pl
|
||||
$(PERL) -I $(top_srcdir)/scripts $(srcdir)/call-vector.pl $(top_srcdir)/features.def $(srcdir)/call-vector.h.in > tmp-t
|
||||
mv tmp-t call-vector.h
|
||||
|
||||
EXTRA_DIST = call-vector.pl call-vector.h.in
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
|
82
include/glibtop/backend.h
Normal file
82
include/glibtop/backend.h
Normal file
@@ -0,0 +1,82 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_BACKEND_H__
|
||||
#define __GLIBTOP_BACKEND_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/global.h>
|
||||
|
||||
#include <glibtop/call-vector.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
|
||||
typedef struct _glibtop_backend_info glibtop_backend_info;
|
||||
typedef struct _glibtop_backend_private glibtop_backend_private;
|
||||
|
||||
typedef struct _glibtop_backend glibtop_backend;
|
||||
|
||||
typedef int (*glibtop_backend_open_func_t) (glibtop *, glibtop_backend *,
|
||||
u_int64_t, const char **);
|
||||
typedef int (*glibtop_backend_close_func_t) (glibtop *, glibtop_backend *);
|
||||
|
||||
struct _glibtop_backend_info
|
||||
{
|
||||
const char *name;
|
||||
glibtop_backend_open_func_t open;
|
||||
glibtop_backend_close_func_t close;
|
||||
glibtop_call_vector *call_vector;
|
||||
};
|
||||
|
||||
struct _glibtop_backend
|
||||
{
|
||||
glibtop_backend_info *info;
|
||||
glibtop_backend_private *_priv;
|
||||
};
|
||||
|
||||
long
|
||||
glibtop_register_backend (glibtop_backend_info *info);
|
||||
|
||||
void
|
||||
glibtop_unregister_backend (long id);
|
||||
|
||||
glibtop_backend_info *
|
||||
glibtop_backend_by_id (long id);
|
||||
|
||||
glibtop_backend_info *
|
||||
glibtop_backend_by_name (const char *backend_name);
|
||||
|
||||
void
|
||||
glibtop_init_backends (void);
|
||||
|
||||
int
|
||||
glibtop_open_backend_l (glibtop *server, const char *backend_name,
|
||||
u_int64_t features, const char **backend_args);
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
|
||||
#endif
|
45
include/glibtop/call-vector.h.in
Normal file
45
include/glibtop/call-vector.h.in
Normal file
@@ -0,0 +1,45 @@
|
||||
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
@@AUTOGEN_COMMENT@@
|
||||
|
||||
/* Copyright (C) 1998-99 Martin Baulig
|
||||
This file is part of LibGTop 1.0.
|
||||
|
||||
Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998.
|
||||
|
||||
LibGTop is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
LibGTop is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with LibGTop; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef __GLIBTOP_CALL_VECTOR_H__
|
||||
#define __GLIBTOP_CALL_VECTOR_H__
|
||||
|
||||
#include <glibtop.h>
|
||||
#include <glibtop/union.h>
|
||||
|
||||
BEGIN_LIBGTOP_DECLS
|
||||
|
||||
typedef struct _glibtop_call_vector glibtop_call_vector;
|
||||
|
||||
struct _glibtop_call_vector
|
||||
{
|
||||
@@GLIBTOP_CALL_VECTOR@@
|
||||
};
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
|
||||
#endif
|
116
include/glibtop/call-vector.pl
Normal file
116
include/glibtop/call-vector.pl
Normal file
@@ -0,0 +1,116 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
require 'c_types.pl';
|
||||
|
||||
die "Usage: $0 features.def call-vector.h.in" unless $#ARGV == 1;
|
||||
|
||||
$[ = 1; # set array base to 1
|
||||
$, = ' '; # set output field separator
|
||||
$\ = "\n"; # set output record separator
|
||||
|
||||
sub toupper {
|
||||
local($_) = @_;
|
||||
tr/a-z/A-Z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub tolower {
|
||||
local($_) = @_;
|
||||
tr/A-Z/a-z/;
|
||||
return $_;
|
||||
}
|
||||
|
||||
$func_decl_code = '';
|
||||
|
||||
open FEATURESDEF, $ARGV[1] or
|
||||
die "open ($ARGV[1]): $!";
|
||||
|
||||
while (<FEATURESDEF>) {
|
||||
chop; # strip record separator
|
||||
|
||||
if (/^[^\#]/) {
|
||||
&parse_features_def ($_);
|
||||
}
|
||||
}
|
||||
|
||||
close FEATURESDEF;
|
||||
|
||||
sub parse_features_def {
|
||||
local($line) = @_;
|
||||
@line_fields = split(/\|/, $line, 9999);
|
||||
$retval = $line_fields[1];
|
||||
$element_def = $line_fields[3];
|
||||
$feature = $line_fields[2];
|
||||
$param_def = $line_fields[4];
|
||||
|
||||
$orig = $feature;
|
||||
$feature =~ s/^@//;
|
||||
$space = $feature;
|
||||
$space =~ s/./ /g;
|
||||
|
||||
if ($retval eq 'retval') {
|
||||
$retval_param = '&retval';
|
||||
$retval = 'int';
|
||||
}
|
||||
elsif ($retval !~ /^void$/) {
|
||||
$retval_param = 'NULL';
|
||||
}
|
||||
else {
|
||||
$retval_param = 'NULL';
|
||||
}
|
||||
|
||||
if ($retval =~ /^(array|pointer)\((.*)\)$/) {
|
||||
$retval = ($2 eq 'string') ? 'char **' : "$2 *";
|
||||
}
|
||||
|
||||
$param_decl = '';
|
||||
$nr_params = (@params = split(/:/, $param_def, 9999));
|
||||
for ($param = 1; $param <= $nr_params; $param++) {
|
||||
$list = $params[$param];
|
||||
$type = $params[$param];
|
||||
$type =~ s/\(.*//;
|
||||
$list =~ s/^.*\(//;
|
||||
$list =~ s/\)$//;
|
||||
$count = (@fields = split(/,/, $list, 9999));
|
||||
for ($field = 1; $field <= $count; $field++) {
|
||||
my $c_type = $typeinfo->{$type}->[1];
|
||||
|
||||
$param_decl = $param_decl . ', ';
|
||||
$param_decl = $param_decl . $c_type;
|
||||
}
|
||||
}
|
||||
|
||||
if ($line_fields[3] eq '') {
|
||||
$func_decl_code .= sprintf
|
||||
(qq[\t%s (*%s) (glibtop *%s);\n], $retval, $feature, $param_decl);
|
||||
} elsif ($line_fields[3] eq 'array') {
|
||||
$func_decl_code .= sprintf
|
||||
(qq[\t%s (*%s) (glibtop *, glibtop_array *%s);\n], $retval, $feature, $param_decl);
|
||||
} elsif ($line_fields[3] =~ /^array/) {
|
||||
$func_decl_code .= sprintf
|
||||
(qq[\t%s (*%s) (glibtop *, glibtop_array *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
|
||||
} else {
|
||||
$func_decl_code .= sprintf
|
||||
(qq[\t%s (*%s) (glibtop *, %s *%s);\n], $retval, $feature, 'glibtop_'.$feature, $param_decl);
|
||||
}
|
||||
}
|
||||
|
||||
chop $func_decl_code;
|
||||
|
||||
$auto_gen_comment = sprintf
|
||||
(qq[/*\n * This file is automatically generated.\n * Please modify `call-vector.pl' and `call-vector.h.in'.\n */]);
|
||||
|
||||
open CALLVECTOR, $ARGV[2] or
|
||||
die "open ($ARGV[2]): $!";
|
||||
|
||||
while (<CALLVECTOR>) {
|
||||
chop;
|
||||
|
||||
s/^\s*\@\@GLIBTOP_CALL_VECTOR\@\@\s*$/$func_decl_code/;
|
||||
|
||||
s/^\s*\@\@AUTOGEN_COMMENT\@\@\s*$/$auto_gen_comment/;
|
||||
} continue {
|
||||
print $_;
|
||||
}
|
||||
|
||||
close CALLVECTOR;
|
@@ -44,7 +44,10 @@ BEGIN_LIBGTOP_DECLS
|
||||
#define GLIBTOP_ERROR_NO_KERNEL_SUPPORT 8
|
||||
#define GLIBTOP_ERROR_INCOMPATIBLE_KERNEL 9
|
||||
|
||||
#define GLIBTOP_MAX_ERROR 10
|
||||
#define GLIBTOP_ERROR_NO_SUCH_BACKEND 10
|
||||
#define GLIBTOP_ERROR_NOT_IMPLEMENTED 11
|
||||
|
||||
#define GLIBTOP_MAX_ERROR 12
|
||||
|
||||
char *
|
||||
glibtop_get_error_string_l (glibtop *server, unsigned error_number);
|
||||
|
@@ -45,6 +45,9 @@ BEGIN_LIBGTOP_DECLS
|
||||
/* This is ((u_int64_t)-1) */
|
||||
#define GLIBTOP_UNLIMITED (~(u_int64_t)0)
|
||||
|
||||
/* Maximum length of a backend name. */
|
||||
#define GLIBTOP_BACKEND_NAME_LEN 40
|
||||
|
||||
END_LIBGTOP_DECLS
|
||||
|
||||
#endif
|
||||
|
@@ -54,7 +54,7 @@ BEGIN_LIBGTOP_DECLS
|
||||
#define GLIBTOP_ERROR_METHOD_DEFAULT GLIBTOP_ERROR_METHOD_WARN_ONCE
|
||||
|
||||
void
|
||||
glibtop_open_l (glibtop *server, const char *program_name,
|
||||
glibtop_open_l (glibtop *server, const char *backend_name,
|
||||
const unsigned long features, const unsigned flags);
|
||||
|
||||
void
|
||||
|
Reference in New Issue
Block a user