From 798e9bed2a389dce8a970e15b68176fd49f442db Mon Sep 17 00:00:00 2001 From: Joe Marcus Clarke Date: Sun, 30 Apr 2006 00:47:21 +0000 Subject: Presenting GNOME 2.14.1 for FreeBSD! Checkout http://www.gnome.org/start/2.14/ for the official release notes, and a list of all the gooides in this new release. In particular, GNOME 2.14 focused on performance, and they did not miss the mark. There's some new eye candy, but most of the big things are waiting until GNOME 2.16. On the FreeBSD side, we tried to clean up all the crashers we could. In particular, we really improved GNOME's 64-bit support. The good news is that this release does not bring any big shared library version bumps, so you can almost do a simple portupgrade to get to 2.14. There are a few minor gotchas that will be documented in UPDATING shortly. The FreeBSD GNOME Team would like th thank the following users for their patches, feedback, and sometimes incessant complaing about crashes (you know who you are). Yasuda Keisuke Pascal Hofstee rmgls@wanadoo.fr tmclaugh Yuri Pankov sajd on #freebsd-gnome ade ankon on #FreeBSD-Gnome mux Pascal Hofstee QuiRK on #freebsd-gnome Vladimir Timofeev --- .../files/patch-systeps::freebsd::procmap.c | 152 ++++++++++++++++++++- 1 file changed, 148 insertions(+), 4 deletions(-) (limited to 'devel/libgtop2/files/patch-systeps::freebsd::procmap.c') diff --git a/devel/libgtop2/files/patch-systeps::freebsd::procmap.c b/devel/libgtop2/files/patch-systeps::freebsd::procmap.c index c8c701e46eca..a17e9595e7c8 100644 --- a/devel/libgtop2/files/patch-systeps::freebsd::procmap.c +++ b/devel/libgtop2/files/patch-systeps::freebsd::procmap.c @@ -1,11 +1,155 @@ ---- sysdeps/freebsd/procmap.c Wed Feb 23 17:20:45 2005 -+++ sysdeps/freebsd/procmap.c.orig Sat Mar 19 02:46:57 2005 -@@ -129,7 +129,7 @@ +--- sysdeps/freebsd/procmap.c.orig Mon Dec 12 05:09:39 2005 ++++ sysdeps/freebsd/procmap.c Fri Jan 20 16:28:33 2006 +@@ -108,14 +108,16 @@ glibtop_get_proc_map_p (glibtop *server, + #else + struct vm_object object; + #endif +- glibtop_map_entry *maps; ++ GArray *maps = g_array_sized_new(FALSE, FALSE, ++ sizeof(glibtop_map_entry), ++ 100); + #if defined __FreeBSD__ + struct vnode vnode; + #if __FreeBSD_version < 500039 + struct inode inode; + #endif + #endif +- int count, i = 0; ++ int count; + int update = 0; + + glibtop_init_p (server, (1L << GLIBTOP_SYSDEPS_PROC_MAP), 0); +@@ -123,15 +125,15 @@ glibtop_get_proc_map_p (glibtop *server, + memset (buf, 0, sizeof (glibtop_proc_map)); + + /* It does not work for the swapper task. */ +- if (pid == 0) return NULL; ++ if (pid == 0) return (glibtop_map_entry*) g_array_free(maps, TRUE); + + glibtop_suid_enter (server); + /* Get the process data */ pinfo = kvm_getprocs (server->machine.kd, KERN_PROC_PID, pid, &count); if ((pinfo == NULL) || (count < 1)) { - glibtop_error_io_r (server, "kvm_getprocs (%d)", pid); +- return NULL; + glibtop_warn_io_r (server, "kvm_getprocs (%d)", pid); - return NULL; ++ return (glibtop_map_entry*) g_array_free(maps, TRUE); } + /* Now we get the memory maps. */ +@@ -159,8 +161,6 @@ glibtop_get_proc_map_p (glibtop *server, + + buf->total = buf->number * buf->size; + +- maps = g_malloc0(buf->total); +- + buf->flags = _glibtop_sysdeps_proc_map; + + /* Walk through the `vm_map_entry' list ... */ +@@ -170,6 +170,10 @@ glibtop_get_proc_map_p (glibtop *server, + * to OBJT_DEFAULT so if seems this really works. */ + + do { ++ glibtop_map_entry *mentry; ++ unsigned long inode, dev; ++ guint len; ++ + if (update) { + if (kvm_read (server->machine.kd, + (unsigned long) entry.next, +@@ -197,22 +201,6 @@ glibtop_get_proc_map_p (glibtop *server, + #endif + #endif + +- maps [i].flags = _glibtop_sysdeps_map_entry; +- +- maps [i].start = entry.start; +- maps [i].end = entry.end; +- maps [i].offset = entry.offset; +- +- maps [i].perm = 0; +- +- if (entry.protection & VM_PROT_READ) +- maps [i].perm |= GLIBTOP_MAP_PERM_READ; +- if (entry.protection & VM_PROT_WRITE) +- maps [i].perm |= GLIBTOP_MAP_PERM_WRITE; +- if (entry.protection & VM_PROT_EXECUTE) +- maps [i].perm |= GLIBTOP_MAP_PERM_EXECUTE; +- +- i++; + + #if defined(__NetBSD__) && (__NetBSD_Version__ >= 104000000) + if (!entry.object.uvm_obj) +@@ -224,7 +212,7 @@ glibtop_get_proc_map_p (glibtop *server, + (unsigned long) entry.object.uvm_obj, + &vnode, sizeof (vnode)) != sizeof (vnode)) { + glibtop_warn_io_r (server, "kvm_read (vnode)"); +- return NULL; ++ return (glibtop_map_entry*) g_array_free(maps, TRUE); + } + #else + if (!entry.object.vm_object) +@@ -251,8 +239,8 @@ glibtop_get_proc_map_p (glibtop *server, + &inode, sizeof (inode)) != sizeof (inode)) + glibtop_error_io_r (server, "kvm_read (inode)"); + +- maps [i-1].inode = inode.i_number; +- maps [i-1].device = inode.i_dev; ++ inode = inode.i_number; ++ dev = inode.i_dev; + #endif + + +@@ -274,8 +262,8 @@ glibtop_get_proc_map_p (glibtop *server, + switch (vnode.v_type) { + case VREG: + #if __FreeBSD_version < 600006 +- maps [i-1].inode = vnode.v_cachedid; +- maps [i-1].device = vnode.v_cachedfs; ++ inode = vnode.v_cachedid; ++ dev = vnode.v_cachedfs; + #endif + default: + continue; +@@ -289,11 +277,37 @@ glibtop_get_proc_map_p (glibtop *server, + &inode, sizeof (inode)) != sizeof (inode)) + glibtop_error_io_r (server, "kvm_read (inode)"); + +- maps [i-1].inode = inode.i_number; +- maps [i-1].device = inode.i_dev; ++ inode = inode.i_number; ++ dev = inode.i_dev; + #endif + #endif ++ len = maps->len; ++ g_array_set_size(maps, len + 1); ++ mentry = &g_array_index(maps, glibtop_map_entry, len); ++ ++ mentry->flags = _glibtop_sysdeps_map_entry; ++ ++ mentry->start = (guint64) entry.start; ++ mentry->end = (guint64) entry.end; ++ mentry->offset = (guint64) entry.offset; ++ mentry->device = (guint64) dev; ++ mentry->inode = (guint64) inode; ++ ++ mentry->perm = (guint64) 0; ++ ++ if (entry.protection & VM_PROT_READ) ++ mentry->perm |= GLIBTOP_MAP_PERM_READ; ++ if (entry.protection & VM_PROT_WRITE) ++ mentry->perm |= GLIBTOP_MAP_PERM_WRITE; ++ if (entry.protection & VM_PROT_EXECUTE) ++ mentry->perm |= GLIBTOP_MAP_PERM_EXECUTE; + } while (entry.next != first); + +- return maps; ++ buf->flags = _glibtop_sysdeps_proc_map; ++ ++ buf->number = maps->len; ++ buf->size = sizeof (glibtop_map_entry); ++ buf->total = buf->number * buf->size; ++ ++ return (glibtop_map_entry*) g_array_free(maps, FALSE); + } -- cgit v1.2.3