Skip site navigation (1)Skip section navigation (2)
Date:      04 Oct 2002 12:06:10 -0400
From:      Joe Marcus Clarke <marcus@marcuscom.com>
To:        Lars Eggert <larse@ISI.EDU>
Cc:        The Gupta Age <thegage@kashmir.etowns.net>, freebsd-current@FreeBSD.ORG
Subject:   Re: GNOME 2.0 DOES NOT COMPILE
Message-ID:  <1033747570.319.16.camel@gyros.marcuscom.com>
In-Reply-To: <3D9DA821.4080809@isi.edu>
References:  <20021004015919.P30152-100000@kashmir.etowns.net>  <3D9DA821.4080809@isi.edu>

next in thread | previous in thread | raw e-mail | index | archive | help

--=-MlR/n6sgYDu17+TV/sQm
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

On Fri, 2002-10-04 at 10:39, Lars Eggert wrote:
> The Gupta Age wrote:
> > Hi.
> > 
> > I was trying to compile GNOME 2.0 on a freebsd current
> > machine on which the world was recently cvsuped, built
> > and installed. CVSUP-ed on 09/22/2002
> > 
> > the gnome compilation breaks while trying to compile
> > libgtop2. here is the error:
> 
> I ran into the same problem last week. Check the archives for the 
> "sys/sys/proc.h 1.250 breaks devel/libgtop2 port" thread, it has some 
> fixes in its replies.

Okay, I'm back from vacation, here are the patches.  These will be
committed when the ports freeze lifts.  Thanks goes to julian for
pointing me to using a pure libkvm solution.

Joe

> 
> Lars
> -- 
> Lars Eggert <larse@isi.edu>           USC Information Sciences Institute
-- 
PGP Key : http://www.marcuscom.com/pgp.asc

--=-MlR/n6sgYDu17+TV/sQm
Content-Disposition: attachment; filename="patch-sysdeps::freebsd::proctime.c"
Content-Transfer-Encoding: quoted-printable
Content-Type: text/x-c; name="patch-sysdeps::freebsd::proctime.c"; charset=ISO8859-1

--- sysdeps/freebsd/proctime.c.orig	Mon Jun 10 17:34:42 2002
+++ sysdeps/freebsd/proctime.c	Wed Oct  2 21:18:38 2002
@@ -57,6 +57,7 @@
  * system, and interrupt time usage.
  */
=20
+#ifndef __FreeBSD__
 static void
 calcru(p, up, sp, ip)
      struct proc *p;
@@ -66,9 +67,6 @@
 {
 	quad_t totusec;
 	u_quad_t u, st, ut, it, tot;
-#if (__FreeBSD_version < 300003)
-        long sec, usec;
-#endif
         struct timeval tv;
=20
 	st =3D p->p_sticks;
@@ -81,19 +79,10 @@
 		tot =3D 1;
 	}
=20
-#if (defined __FreeBSD__) && (__FreeBSD_version >=3D 300003)
-
-	/* This was changed from a `struct timeval' into a `u_int64_t'
-	 * on FreeBSD 3.0 and renamed p_rtime -> p_runtime.
-	 */
-
-	totusec =3D (u_quad_t) p->p_runtime;
-#else
 	sec =3D p->p_rtime.tv_sec;
 	usec =3D p->p_rtime.tv_usec;
=20
 	totusec =3D (quad_t)sec * 1000000 + usec;
-#endif
=20
 	if (totusec < 0) {
 		/* XXX no %qd in kernel.  Truncate. */
@@ -116,6 +105,7 @@
 		ip->tv_usec =3D it % 1000000;
 	}
 }
+#endif
=20
 /* Provides detailed information about a process. */
=20
@@ -142,25 +132,25 @@
 	/* It does not work for the swapper task. */
 	if (pid =3D=3D 0) return;
 =09
-#if !(defined(__NetBSD__) && (__NetBSD_Version__ >=3D 104000000))
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >=3D 104000000))
 	if (server->sysdeps.proc_time =3D=3D 0)
 		return;
=20
+#endif
 #ifndef __bsdi__
 	sprintf (filename, "/proc/%d/mem", (int) pid);
 	if (stat (filename, &statb)) return;
 #endif
-#endif
=20
 	/* Get the process information */
 	pinfo =3D kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count);
 	if ((pinfo =3D=3D NULL) || (count !=3D 1))
 		glibtop_error_io_r (server, "kvm_getprocs (%d)", pid);
=20
-#if (defined __FreeBSD__) && (__FreeBSD_version >=3D 300003)
-	buf->rtime =3D pinfo [0].kp_proc.p_runtime;
+#if (defined __FreeBSD__) && (__FreeBSD_version >=3D 500013)
+	buf->rtime =3D pinfo [0].ki_runtime;
 #else
-	buf->rtime =3D tv2sec (pinfo [0].kp_proc.p_rtime);
+	buf->rtime =3D pinfo [0].kp_proc.p_runtime;
 #endif
=20
 	buf->frequency =3D 1000000;
@@ -192,6 +182,21 @@
=20
 	buf->flags |=3D _glibtop_sysdeps_proc_time_user;
 #else
+#if __FreeBSD_version >=3D 500013
+#if __FreeBSD_version >=3D 500016
+	if ((pinfo [0].ki_flag & PS_INMEM)) {
+#else
+	if ((pinfo [0].ki_flag & P_INMEM)) {
+#endif
+	    buf->utime =3D pinfo [0].ki_runtime;
+	    buf->stime =3D 0; /* XXX */
+	    buf->cutime =3D tv2sec (pinfo [0].ki_childtime);
+	    buf->cstime =3D 0; /* XXX */
+	    buf->start_time =3D tv2sec (pinfo [0].ki_start);
+	    buf->flags =3D _glibtop_sysdeps_proc_time_user;
+	}
+
+#else
 	glibtop_suid_enter (server);
=20
 	if ((pinfo [0].kp_proc.p_flag & P_INMEM) &&
@@ -199,29 +204,16 @@
 		       (unsigned long) &u_addr->u_stats,
 		       (char *) &pstats, sizeof (pstats)) =3D=3D sizeof (pstats))
 		{
-			/* This is taken form the kernel source code of
-			 * FreeBSD 2.2.6. */
-
-			/* Well, we just do the same getrusage () does ... */
-
-			register struct rusage *rup;
-
-			glibtop_suid_leave (server);
-
-			rup =3D &pstats.p_ru;
-			calcru(&(pinfo [0]).kp_proc,
-			       &rup->ru_utime, &rup->ru_stime, NULL);
-
-			buf->utime =3D tv2sec (pstats.p_ru.ru_utime);
-			buf->stime =3D tv2sec (pstats.p_ru.ru_stime);
-		=09
-			buf->cutime =3D tv2sec (pstats.p_cru.ru_utime);
-			buf->cstime =3D tv2sec (pstats.p_cru.ru_stime);
-
-			buf->start_time =3D tv2sec (pstats.p_start);
=20
+			buf->utime =3D tv2sec (pinfo[0].kp_eproc.e_stats.p_ru.ru_utime);
+			buf->stime =3D tv2sec (pinfo[0].kp_eproc.e_stats.p_ru.ru_stime);
+			buf->cutime =3D tv2sec (pinfo[0].kp_eproc.e_stats.p_cru.ru_utime);
+			buf->cstime =3D tv2sec (pinfo[0].kp_eproc.e_stats.p_cru.ru_stime);
+			buf->start_time =3D tv2sec (pinfo[0].kp_eproc.e_stats.p_start);
 			buf->flags =3D _glibtop_sysdeps_proc_time_user;
+			glibtop_suid_leave (server);
 		}
+#endif
=20
 	glibtop_suid_leave (server);
 #endif

--=-MlR/n6sgYDu17+TV/sQm
Content-Disposition: attachment; filename=patch-ah
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; name=patch-ah; charset=ISO8859-1

--- sysdeps/freebsd/procmap.c.orig	Mon Jun 10 17:34:42 2002
+++ sysdeps/freebsd/procmap.c	Fri Sep 20 16:10:37 2002
@@ -33,7 +33,11 @@
 #include <sys/proc.h>
 #include <sys/resource.h>
 #include <vm/vm_object.h>
+#if (__FreeBSD_version >=3D 400011)
+#include <vm/vm.h>
+#else
 #include <vm/vm_prot.h>
+#endif
 #include <vm/vm_map.h>
=20
 #include <sys/vnode.h>
@@ -92,7 +96,6 @@
 #if defined __FreeBSD__
 	struct vnode vnode;
 	struct inode inode;
-	struct mount mount;
 #endif
 	int count, i =3D 0;
 	int update =3D 0;
@@ -114,7 +117,11 @@
 	/* Now we get the memory maps. */
=20
 	if (kvm_read (server->machine.kd,
+#if (__FreeBSD_version >=3D 500013)
+		      (unsigned long) pinfo [0].ki_vmspace,
+#else
 		      (unsigned long) pinfo [0].kp_proc.p_vmspace,
+#endif
 		      (char *) &vmspace, sizeof (vmspace)) !=3D sizeof (vmspace))
 		glibtop_error_io_r (server, "kvm_read (vmspace)");
=20
@@ -244,18 +251,17 @@
 			      &vnode, sizeof (vnode)) !=3D sizeof (vnode))
 			glibtop_error_io_r (server, "kvm_read (vnode)");
=20
+#if __FreeBSD_version > 500039
+		if ((vnode.v_type !=3D VREG) || strcmp("ufs", vnode.v_tag) ||
+#else
 		if ((vnode.v_type !=3D VREG) || (vnode.v_tag !=3D VT_UFS) ||
+#endif
 		    !vnode.v_data) continue;
=20
 		if (kvm_read (server->machine.kd,
 			      (unsigned long) vnode.v_data,
 			      &inode, sizeof (inode)) !=3D sizeof (inode))
 			glibtop_error_io_r (server, "kvm_read (inode)");
-
-		if (kvm_read (server->machine.kd,
-			      (unsigned long) vnode.v_mount,
-			      &mount, sizeof (mount)) !=3D sizeof (mount))
-			glibtop_error_io_r (server, "kvm_read (mount)");
=20
 		maps [i-1].inode  =3D inode.i_number;
 		maps [i-1].device =3D inode.i_dev;

--=-MlR/n6sgYDu17+TV/sQm--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1033747570.319.16.camel>