Remove the post-install target, we set permissions with PLIST markers.

Fix some ifdef mess in sysdeps/bsd/procmem.c.
Fix some warnings and implicit references.
Fix subnet display.
Bring a couple of patches from FreeBSD.

This is still not perfect but libgtop2 is now much more robust.
This commit is contained in:
ajacoutot 2010-04-08 15:57:46 +00:00
parent 31256fa4de
commit ed999124da
9 changed files with 168 additions and 44 deletions

View File

@ -1,10 +1,10 @@
# $OpenBSD: Makefile,v 1.37 2010/03/30 16:24:24 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.38 2010/04/08 15:57:46 ajacoutot Exp $
COMMENT= portable library for obtaining system information
GNOME_VERSION= 2.28.1
GNOME_PROJECT= libgtop
PKGNAME= libgtop2-${VERSION}
PKGNAME= libgtop2-${VERSION}p0
SHARED_LIBS= gtop-2.0 9.0 # .9.0
@ -31,11 +31,14 @@ CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include" \
LDFLAGS="-L${LOCALBASE}/lib" \
GMSGFMT="${LOCALBASE}/bin/msgfmt"
.ifdef DEBUG
CONFIGURE_ARGS+= --enable-debug
CPPFLAGS+= -DDEBUG \
-DLIBGTOP_ENABLE_DEBUG \
-DLIBGTOP_FATAL_WARNINGS
.endif
post-extract:
cp ${FILESDIR}/procaffinity.c ${WRKSRC}/sysdeps/bsd/
post-install:
@chgrp kmem ${PREFIX}/bin/libgtop_server2
@chmod 2555 ${PREFIX}/bin/libgtop_server2
.include <bsd.port.mk>

View File

@ -1,6 +1,6 @@
$OpenBSD: patch-configure,v 1.7 2010/03/30 16:24:24 ajacoutot Exp $
--- configure.orig Tue Mar 30 18:14:23 2010
+++ configure Tue Mar 30 18:17:52 2010
$OpenBSD: patch-configure,v 1.8 2010/04/08 15:57:46 ajacoutot Exp $
--- configure.orig Tue Mar 30 17:10:07 2010
+++ configure Mon Apr 5 14:10:33 2010
@@ -6934,10 +6934,12 @@ newos6*)
;;
@ -86,7 +86,15 @@ $OpenBSD: patch-configure,v 1.7 2010/03/30 16:24:24 ajacoutot Exp $
prefix="$glib_save_prefix"
exec_prefix="$glib_save_exec_prefix"
datarootdir="$glib_save_datarootdir"
@@ -23391,9 +23393,9 @@ cat confdefs.h >>conftest.$ac_ext
@@ -22880,6 +22882,7 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
+#include <sys/param.h>
#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
@@ -23391,9 +23394,9 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */

View File

@ -0,0 +1,17 @@
$OpenBSD: patch-doc_reference_texi,v 1.1 2010/04/08 15:57:46 ajacoutot Exp $
Prevent the following:
doc/reference.texi:746: warning: @strong{Note...} produces a
spurious cross-reference in Info; reword to avoid that.
--- doc/reference.texi.orig Mon Apr 5 15:05:02 2010
+++ doc/reference.texi Mon Apr 5 15:05:32 2010
@@ -743,7 +743,7 @@ The description above is taken from the manual page of
filesystem under Linux and is a little bit confusing, so I make this clear
here.
-@strong{Note for people porting LibGTop to other systems:}
+@strong{A word for people porting LibGTop to other systems:}
Every operating system has its own idea about the memory usage of a process
and also system utilities like @code{ps} show different things on different
systems.

View File

@ -0,0 +1,61 @@
$OpenBSD: patch-src_daemon_io_c,v 1.4 2010/04/08 15:57:46 ajacoutot Exp $
From FreeBSD.
--- src/daemon/io.c.orig Sun Apr 19 19:51:00 2009
+++ src/daemon/io.c Fri Apr 2 10:51:08 2010
@@ -20,6 +20,7 @@
*/
#include <config.h>
+#include <errno.h>
#include "daemon.h"
#include <glibtop/error.h>
@@ -35,9 +36,13 @@ do_output (int s, glibtop_response *resp, off_t offset
resp->offset = offset;
resp->data_size = data_size;
+retry1:
if (s == 0) {
- if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0)
+ if (write (1, (const void *) resp, sizeof (glibtop_response)) < 0) {
+ if (errno == EINTR)
+ goto retry1;
glibtop_warn_io ("write");
+ }
} else {
if (send (s, (const void *) resp, sizeof (glibtop_response), 0) < 0)
glibtop_warn_io ("send");
@@ -48,9 +53,13 @@ do_output (int s, glibtop_response *resp, off_t offset
fprintf (stderr, "Writing %d bytes of data.\n", resp->data_size);
#endif
+retry2:
if (s == 0) {
- if (write (1, data, resp->data_size) < 0)
+ if (write (1, data, resp->data_size) < 0) {
+ if (errno == EINTR)
+ goto retry2;
glibtop_warn_io ("write");
+ }
} else {
if (send (s, data, resp->data_size, 0) , 0)
glibtop_warn_io ("send");
@@ -66,6 +75,7 @@ do_read (int s, void *ptr, size_t total_size)
size_t already_read = 0, remaining = total_size;
while (already_read < total_size) {
+retry:
if (s)
nread = recv (s, ptr, remaining, 0);
else
@@ -77,6 +87,8 @@ do_read (int s, void *ptr, size_t total_size)
}
if (nread <= 0) {
+ if (errno == EINTR)
+ goto retry;
glibtop_warn_io ("recv");
return 0;
}

View File

@ -0,0 +1,22 @@
$OpenBSD: patch-src_daemon_server_c,v 1.1 2010/04/08 15:57:46 ajacoutot Exp $
From FreeBSD.
--- src/daemon/server.c.orig Sun Apr 19 19:51:00 2009
+++ src/daemon/server.c Fri Apr 2 10:50:15 2010
@@ -90,11 +90,13 @@ main(int argc, char *argv[])
if (strcmp (uts.sysname, LIBGTOP_COMPILE_SYSTEM) ||
strcmp (uts.release, LIBGTOP_COMPILE_RELEASE) ||
strcmp (uts.machine, LIBGTOP_COMPILE_MACHINE)) {
- fprintf (stderr, "Can only run on %s %s %s\n",
+ fprintf (stderr, "This libgtop was compiled on %s %s %s\n",
LIBGTOP_COMPILE_SYSTEM,
LIBGTOP_COMPILE_RELEASE,
LIBGTOP_COMPILE_MACHINE);
- _exit (1);
+ fprintf (stderr, "If you see strange problems caused by it,\n");
+ fprintf (stderr, "you should recompile libgtop and dependent"
+ "applications.\n");
}
#endif

View File

@ -1,12 +1,15 @@
$OpenBSD: patch-sysdeps_bsd_netload_c,v 1.1 2010/01/18 09:27:00 sthen Exp $
--- sysdeps/bsd/netload.c.orig Mon Jan 18 08:24:30 2010
+++ sysdeps/bsd/netload.c Mon Jan 18 08:26:34 2010
@@ -220,7 +220,7 @@ glibtop_get_netload_p (glibtop *server, glibtop_netloa
$OpenBSD: patch-sysdeps_bsd_netload_c,v 1.2 2010/04/08 15:57:46 ajacoutot Exp $
--- sysdeps/bsd/netload.c.orig Sun Apr 19 19:51:00 2009
+++ sysdeps/bsd/netload.c Thu Apr 1 18:19:01 2010
@@ -220,7 +220,11 @@ glibtop_get_netload_p (glibtop *server, glibtop_netloa
sin = (struct sockaddr_in *)sa;
#if !defined(__bsdi__)
/* Commenting out to "fix" #13345. */
- buf->subnet = htonl (ifaddr.in.ia_subnet);
+ buf->subnet = htonl (ifaddr.in.ia_net);
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+ buf->subnet = ifaddr.in.ia_net;
+#else
buf->subnet = htonl (ifaddr.in.ia_subnet);
+#endif
#endif
buf->address = sin->sin_addr.s_addr;
buf->mtu = ifnet.if_mtu;

View File

@ -0,0 +1,11 @@
$OpenBSD: patch-sysdeps_bsd_open_c,v 1.1 2010/04/08 15:57:46 ajacoutot Exp $
--- sysdeps/bsd/open.c.orig Fri Apr 2 09:53:44 2010
+++ sysdeps/bsd/open.c Fri Apr 2 09:54:10 2010
@@ -21,6 +21,7 @@
#include <config.h>
#include <glibtop.h>
+#include <glibtop/error.h>
#include <glibtop/open.h>
#include <glibtop/init_hooks.h>

View File

@ -1,6 +1,6 @@
$OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
--- sysdeps/bsd/procmem.c.orig Fri Apr 27 00:27:34 2007
+++ sysdeps/bsd/procmem.c Fri Dec 28 19:17:26 2007
$OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.2 2010/04/08 15:57:46 ajacoutot Exp $
--- sysdeps/bsd/procmem.c.orig Sun Apr 19 19:51:00 2009
+++ sysdeps/bsd/procmem.c Fri Apr 2 14:30:09 2010
@@ -30,7 +30,7 @@
#include <sys/param.h>
#include <sys/proc.h>
@ -29,17 +29,20 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
/* Fixme ... */
#undef _KERNEL
#define _UVM_UVM_AMAP_I_H_ 1
@@ -69,7 +70,8 @@ static const unsigned long _glibtop_sysdeps_proc_mem =
@@ -69,10 +70,9 @@ static const unsigned long _glibtop_sysdeps_proc_mem =
(1L << GLIBTOP_PROC_MEM_RSS_RLIM);
static const unsigned long _glibtop_sysdeps_proc_mem_share =
-#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)) || \
+ defined(__OpenBSD__)
+ defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
(1L << GLIBTOP_PROC_MEM_SHARE);
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
(1L << GLIBTOP_PROC_MEM_SHARE);
@@ -116,10 +118,14 @@ void
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
-(1L << GLIBTOP_PROC_MEM_SHARE);
#else
0;
#endif
@@ -116,10 +116,13 @@ void
glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_mem *buf,
pid_t pid)
{
@ -50,12 +53,11 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
struct vm_map_entry entry, *first;
struct vmspace *vms, vmspace;
-#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)) || \
+ defined(__OpenBSD__)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
struct vnode vnode;
#else
struct vm_object object;
@@ -127,6 +133,8 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -127,6 +130,8 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
#if (!defined(__FreeBSD__) || (__FreeBSD_version < 500013)) && !defined(__FreeBSD_kernel__)
struct plimit plimit;
#endif
@ -64,7 +66,7 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
int count;
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_MEM), 0);
@@ -140,7 +148,12 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -140,7 +145,12 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
if (pid == 0) return;
/* Get the process data */
@ -78,7 +80,7 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
if ((pinfo == NULL) || (count < 1)) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return;
@@ -157,6 +170,15 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -157,6 +167,15 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
buf->resident = buf->rss = (guint64) pagetok
(pinfo [0].ki_rssize) << LOG1024;
@ -94,7 +96,7 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
#else
#define PROC_VMSPACE kp_proc.p_vmspace
@@ -182,6 +204,10 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -182,6 +201,10 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
/* Now we get the shared memory. */
@ -105,17 +107,16 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
if (kvm_read (server->machine.kd,
(unsigned long) pinfo [0].PROC_VMSPACE,
(char *) &vmspace, sizeof (vmspace)) != sizeof (vmspace)) {
@@ -221,7 +247,8 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -221,7 +244,7 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
continue;
#endif
#else
-#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)) || \
+ defined(__OpenBSD__)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
if (UVM_ET_ISSUBMAP (&entry))
continue;
#else
@@ -230,7 +257,8 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -230,7 +253,8 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
#endif
#endif
@ -125,13 +126,12 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
if (!entry.object.uvm_obj)
continue;
@@ -257,14 +285,16 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -257,14 +281,14 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
#endif
/* If the object is of type vnode, add its size */
-#if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000)) || \
+ defined(__OpenBSD__)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000))
#if defined(UVM_VNODE_VALID)
if (!vnode.v_uvm.u_flags & UVM_VNODE_VALID)
continue;
@ -139,12 +139,11 @@ $OpenBSD: patch-sysdeps_bsd_procmem_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
if ((vnode.v_type != VREG) || (vnode.v_tag != VT_UFS) ||
!vnode.v_data) continue;
-#if defined(__NetBSD__) && (__NetBSD_Version__ >= 105250000)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 105250000)) || \
+ defined(__OpenBSD__)
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 105250000))
/* Reference count must be at least two. */
if (vnode.v_usecount <= 1)
continue;
@@ -287,6 +317,8 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
@@ -287,6 +311,8 @@ glibtop_get_proc_mem_p (glibtop *server, glibtop_proc_
buf->share += object.un_pager.vnp.vnp_size;
#endif
}

View File

@ -1,6 +1,6 @@
$OpenBSD: patch-sysdeps_bsd_sysinfo_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
--- sysdeps/bsd/sysinfo.c.orig Sat May 19 16:27:30 2007
+++ sysdeps/bsd/sysinfo.c Fri Dec 28 19:00:25 2007
$OpenBSD: patch-sysdeps_bsd_sysinfo_c,v 1.2 2010/04/08 15:57:46 ajacoutot Exp $
--- sysdeps/bsd/sysinfo.c.orig Sun Apr 19 19:51:00 2009
+++ sysdeps/bsd/sysinfo.c Mon Apr 5 14:23:52 2010
@@ -35,16 +35,49 @@ static glibtop_sysinfo sysinfo = { .flags = 0 };
static void
init_sysinfo (glibtop *server)
@ -11,7 +11,7 @@ $OpenBSD: patch-sysdeps_bsd_sysinfo_c,v 1.1 2008/02/09 16:52:25 ajacoutot Exp $
+#if defined(__OpenBSD__)
+ int mib[2];
+#endif
+ int ncpus = 0;
+ unsigned int ncpus = 0;
int mhz = 0;
- size_t len;
+ size_t len = 0;