diff options
Diffstat (limited to 'devel/libgtop2/files/patch-systeps::freebsd::procmap.c')
-rw-r--r-- | devel/libgtop2/files/patch-systeps::freebsd::procmap.c | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/devel/libgtop2/files/patch-systeps::freebsd::procmap.c b/devel/libgtop2/files/patch-systeps::freebsd::procmap.c deleted file mode 100644 index a17e9595e..000000000 --- a/devel/libgtop2/files/patch-systeps::freebsd::procmap.c +++ /dev/null @@ -1,155 +0,0 @@ ---- 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 (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); - } |