Changeset: 621ff2efa51a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=621ff2efa51a
Modified Files:
configure.ag
gdk/Makefile.ag
gdk/gdk_posix.c
Branch: default
Log Message:
MT_getrss: implemented for FreeBSD using kvm_getprocs()
diffs (77 lines):
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -2352,6 +2352,7 @@ AC_CHECK_HEADERS([crypt.h \
iconv.h \
ieeefp.h \
io.h \
+ kvm.h \
langinfo.h \
libgen.h \
libintl.h \
@@ -2476,6 +2477,10 @@ esac
AC_SUBST(SOCKET_LIBS)
+KVM_LIBS=""
+AC_CHECK_LIB(kvm, kvm_open, [ KVM_LIBS="-lkvm" ] )
+AC_SUBST(KVM_LIBS)
+
dnl checks for types
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -50,5 +50,5 @@ lib_gdk = {
../common/stream/libstream \
../common/utils/libmutils \
$(MATH_LIBS) $(SOCKET_LIBS) $(zlib_LIBS) $(BZ_LIBS) \
- $(MALLOC_LIBS) $(PTHREAD_LIBS) $(DL_LIBS) $(PSAPILIB)
+ $(MALLOC_LIBS) $(PTHREAD_LIBS) $(DL_LIBS) $(PSAPILIB)
$(KVM_LIBS)
}
diff --git a/gdk/gdk_posix.c b/gdk/gdk_posix.c
--- a/gdk/gdk_posix.c
+++ b/gdk/gdk_posix.c
@@ -53,6 +53,12 @@ extern char *sbrk(int);
#ifdef HAVE_MACH_MACH_INIT_H
# include <mach/mach_init.h>
#endif
+#ifdef HAVE_KVM_H
+# include <kvm.h>
+# include <sys/param.h>
+# include <sys/sysctl.h>
+# include <sys/user.h>
+#endif
#if defined(DEBUG_ALLOC) && SIZEOF_VOID_P > 4
#undef DEBUG_ALLOC
@@ -781,6 +787,28 @@ MT_getrss(void)
if (task_info(task, TASK_BASIC_INFO_64, (task_info_t)&t_info,
&t_info_count) != KERN_INVALID_POLICY)
return t_info.resident_size; /* bytes */
+#elif defined(HAVE_KVM_H)
+ /* get RSS on FreeBSD */
+ struct kinfo_proc *ki;
+ int ski = 1;
+ kvm_t *kd;
+ size_t rss = 0;
+
+ kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
+ if (kd == NULL)
+ return 0;
+
+ ki = kvm_getprocs(kd, KERN_PROC_PID, getpid(), &ski);
+ if (ki == NULL) {
+ kvm_close(kd);
+ return 0;
+ }
+
+ rss = ki->ki_rssize;
+
+ kvm_close(kd);
+
+ return rss * MT_pagesize();
#else
/* get RSS on Linux */
static char MT_mmap_procfile[128] = { 0 };
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list