Drop unecessary checks and bring glibtop_get_proc_segment from FreeBSD.

This commit is contained in:
ajacoutot 2014-02-08 10:55:31 +00:00
parent 72d7c489b2
commit d1dc35750e
10 changed files with 149 additions and 25 deletions

View File

@ -1,11 +1,11 @@
# $OpenBSD: Makefile,v 1.114 2014/02/03 13:46:19 ajacoutot Exp $
# $OpenBSD: Makefile,v 1.115 2014/02/08 10:55:31 ajacoutot Exp $
COMMENT= portable library for obtaining system information
GNOME_VERSION= 2.28.5
GNOME_PROJECT= libgtop
PKGNAME= libgtop2-${VERSION}
REVISION= 10
REVISION= 11
SHARED_LIBS= gtop-2.0 9.0 # .9.0

View File

@ -1,16 +0,0 @@
$OpenBSD: patch-src_daemon_gnuserv_c,v 1.4 2009/10/16 10:56:04 jasper Exp $
--- src/daemon/gnuserv.c.orig Sun Apr 19 01:29:49 2009
+++ src/daemon/gnuserv.c Fri Oct 16 02:28:09 2009
@@ -203,6 +203,12 @@ permitted (u_long host_addr, int fd)
return FALSE;
}
+ if (auth_data_len < 1 || auth_data_len > sizeof(buf)) {
+ syslog_message(LOG_WARNING,
+ "Invalid data length supplied by client");
+ return FALSE;
+ }
+
if (timed_read (fd, buf, auth_data_len, AUTH_TIMEOUT, 0) != auth_data_len)
return FALSE;

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-sysdeps_openbsd_procargs_c,v 1.8 2014/02/08 10:55:31 ajacoutot Exp $
--- sysdeps/openbsd/procargs.c.orig Sat Feb 8 11:23:14 2014
+++ sysdeps/openbsd/procargs.c Sat Feb 8 11:25:28 2014
@@ -69,7 +69,7 @@ glibtop_get_proc_args_p (glibtop *server, glibtop_proc
/* Get the process data */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid,
sizeof (*pinfo), &count);
- if ((pinfo == NULL) || (count < 1)) {
+ if (pinfo == NULL) {
glibtop_suid_leave (server);
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return NULL;

View File

@ -1,9 +1,9 @@
$OpenBSD: patch-sysdeps_openbsd_prockernel_c,v 1.13 2014/02/03 13:50:32 ajacoutot Exp $
$OpenBSD: patch-sysdeps_openbsd_prockernel_c,v 1.14 2014/02/08 10:55:31 ajacoutot Exp $
RM at next release.
--- sysdeps/openbsd/prockernel.c.orig Sat Jul 27 14:40:23 2013
+++ sysdeps/openbsd/prockernel.c Sun Feb 2 14:07:50 2014
+++ sysdeps/openbsd/prockernel.c Sat Feb 8 11:25:40 2014
@@ -36,12 +36,13 @@
#include <fcntl.h>
@ -29,7 +29,8 @@ RM at next release.
/* Get the process information */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid,
sizeof(*pinfo), &count);
if ((pinfo == NULL) || (count != 1)) {
- if ((pinfo == NULL) || (count != 1)) {
+ if (pinfo == NULL) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
+ glibtop_suid_leave (server);
return;

View File

@ -1,9 +1,18 @@
$OpenBSD: patch-sysdeps_openbsd_procmap_c,v 1.14 2014/02/03 13:50:32 ajacoutot Exp $
$OpenBSD: patch-sysdeps_openbsd_procmap_c,v 1.15 2014/02/08 10:55:31 ajacoutot Exp $
RM at next release.
--- sysdeps/openbsd/procmap.c.orig Sat Jul 27 14:40:23 2013
+++ sysdeps/openbsd/procmap.c Mon Feb 3 10:41:54 2014
+++ sysdeps/openbsd/procmap.c Sat Feb 8 11:25:52 2014
@@ -184,7 +184,7 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_
/* Get the process data */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, sizeof(struct kinfo_proc), &count);
- if ((pinfo == NULL) || (count < 1)) {
+ if (pinfo == NULL) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return (glibtop_map_entry*) g_array_free(maps, TRUE);
}
@@ -193,8 +193,11 @@ glibtop_get_proc_map_p (glibtop *server, glibtop_proc_
if (kvm_read (server->machine.kd,

View File

@ -0,0 +1,73 @@
$OpenBSD: patch-sysdeps_openbsd_procsegment_c,v 1.4 2014/02/08 10:55:31 ajacoutot Exp $
--- sysdeps/openbsd/procsegment.c.orig Sat Jul 27 14:40:23 2013
+++ sysdeps/openbsd/procsegment.c Sat Feb 8 11:36:45 2014
@@ -32,13 +32,18 @@
#include <sys/param.h>
#include <sys/sysctl.h>
-static const unsigned long _glibtop_sysdeps_proc_segment = 0;
+static const unsigned long _glibtop_sysdeps_proc_segment =
+(1L << GLIBTOP_PROC_SEGMENT_TEXT_RSS) +
+(1L << GLIBTOP_PROC_SEGMENT_DATA_RSS);
+static int pagesize;
+
/* Init function. */
void
_glibtop_init_proc_segment_p (glibtop *server)
{
+ pagesize = getpagesize ();
server->sysdeps.proc_segment = _glibtop_sysdeps_proc_segment;
}
@@ -49,35 +54,26 @@ glibtop_get_proc_segment_p (glibtop *server,
glibtop_proc_segment *buf,
pid_t pid)
{
+ struct kinfo_proc *pinfo;
+ int count = 0;
+
glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_SEGMENT), 0);
memset (buf, 0, sizeof (glibtop_proc_segment));
-#if 0
+ /* It does not work for the swapper task. */
+ if (pid == 0) return;
+
/* Get the process info from the kernel */
- kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, count);
- if (*count != 1) {
- return; /* the zeroed-out buffer indicating no data */
+ pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid,
+ sizeof (*pinfo), &count);
+ if (pinfo == NULL) {
+ glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
+ return;
}
- /* trs: text resident set size
- pinfo[0]->kp_eproc.e_xrssize;
- */
- /* buf->trs = pinfo[0]->kp_eproc.e_xrssize; */
- /* lrs: shared-lib resident set size
- ? */
- /* drs: data resident set size
- pinfo[0]->kp_eproc.e_vm.vm_map.vm_dsize;
- */
- /* dt: dirty pages
- */
- /* start_code: address of beginning of code segment
+ buf->text_rss = pinfo[0].p_vm_tsize * pagesize;
+ buf->data_rss = pinfo[0].p_vm_dsize * pagesize;
- */
- /* end_code: address of end of code segment
- */
- /* start_stack: address of the bottom of stack segment
- */
-#endif
+ buf->flags = _glibtop_sysdeps_proc_segment;
}
-

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-sysdeps_openbsd_procsignal_c,v 1.6 2014/02/08 10:55:31 ajacoutot Exp $
--- sysdeps/openbsd/procsignal.c.orig Sat Feb 8 11:23:36 2014
+++ sysdeps/openbsd/procsignal.c Sat Feb 8 11:26:10 2014
@@ -62,7 +62,7 @@ glibtop_get_proc_signal_p (glibtop *server,
/* Get the process information */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid,
sizeof (*pinfo), &count);
- if ((pinfo == NULL) || (count != 1)) {
+ if (pinfo == NULL) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return;
}

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-sysdeps_openbsd_procstate_c,v 1.6 2014/02/08 10:55:31 ajacoutot Exp $
--- sysdeps/openbsd/procstate.c.orig Sat Feb 8 11:23:40 2014
+++ sysdeps/openbsd/procstate.c Sat Feb 8 11:26:20 2014
@@ -64,7 +64,7 @@ glibtop_get_proc_state_p (glibtop *server,
/* Get the process information */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid,
sizeof (*pinfo), &count);
- if ((pinfo == NULL) || (count != 1)) {
+ if (pinfo == NULL) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return;
}

View File

@ -1,9 +1,9 @@
$OpenBSD: patch-sysdeps_openbsd_proctime_c,v 1.9 2014/02/03 13:50:32 ajacoutot Exp $
$OpenBSD: patch-sysdeps_openbsd_proctime_c,v 1.10 2014/02/08 10:55:31 ajacoutot Exp $
RM at next release.
--- sysdeps/openbsd/proctime.c.orig Sat Jul 27 14:40:23 2013
+++ sysdeps/openbsd/proctime.c Sun Feb 2 14:50:40 2014
+++ sysdeps/openbsd/proctime.c Sat Feb 8 11:26:32 2014
@@ -58,59 +58,6 @@ _glibtop_init_proc_time_p (glibtop *server)
_glibtop_sysdeps_proc_time_user;
}
@ -64,3 +64,12 @@ RM at next release.
/* Provides detailed information about a process. */
void
@@ -131,7 +78,7 @@ glibtop_get_proc_time_p (glibtop *server, glibtop_proc
/* Get the process information */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid,
sizeof (*pinfo), &count);
- if ((pinfo == NULL) || (count != 1)) {
+ if (pinfo == NULL) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return;
}

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-sysdeps_openbsd_procuid_c,v 1.6 2014/02/08 10:55:31 ajacoutot Exp $
--- sysdeps/openbsd/procuid.c.orig Sat Feb 8 11:23:48 2014
+++ sysdeps/openbsd/procuid.c Sat Feb 8 11:26:45 2014
@@ -67,7 +67,7 @@ glibtop_get_proc_uid_p (glibtop *server, glibtop_proc_
/* Get the process information */
pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid,
sizeof (*pinfo), &count);
- if ((pinfo == NULL) || (count != 1)) {
+ if (pinfo == NULL) {
glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid);
return;
}