[Mono-dev] Can anyone review this fix for FreeBSD build?
Atsushi Eno
atsushi at ximian.com
Sun Nov 9 09:34:17 EST 2008
Atsushi Eno
Index: configure.in
===================================================================
--- configure.in (revision 118305)
+++ configure.in (working copy)
@@ -2054,6 +2054,37 @@
unset fpu
fi
+case $host_os in
+darwin* | *bsd* )
+ AC_MSG_CHECKING(if sysctl.h defines kinfo_proc completely)
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/sysctl.h>
+ ], [
+ struct kinfo_proc kp;
+ ],
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(SYSCTL_H_DEFINES_KINFO_PROC, 1, [sysctl.h has complete
definition of struct kinfo_proc])
+ ,
+ AC_MSG_RESULT(no)
+
+ AC_MSG_CHECKING(if struct kinfo_proc has member kp_proc)
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/user.h>
+ ], [
+ struct kinfo_proc kp;
+ kp.kp_proc;
+ ],
+ AC_MSG_RESULT(yes)
+ ,
+ AC_MSG_RESULT(no)
+ AC_DEFINE(KINFO_PROC_HAS_NO_KP_PROC, 1, [struct kinfo_proc has no
member kp_proc])
+ )
+ )
+ ;;
+esac
+
if test ${TARGET} = unknown; then
CPPFLAGS="$CPPFLAGS -DNO_PORT"
AC_MSG_WARN("mono has not been ported to $host: some things may not
work.")
Index: mono/utils/mono-proclib.c
===================================================================
--- mono/utils/mono-proclib.c (revision 118305)
+++ mono/utils/mono-proclib.c (working copy)
@@ -17,6 +17,9 @@
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/proc.h>
+# if !defined SYSCTL_H_DEFINES_KINFO_PROC
+#include <sys/user.h>
+# endif
#define USE_SYSCTL 1
#endif
@@ -54,8 +57,13 @@
}
res = data_len/sizeof (struct kinfo_proc);
buf = g_realloc (buf, res * sizeof (void*));
+# if !defined KINFO_PROC_HAS_NO_KP_PROC
for (i = 0; i < res; ++i)
buf [i] = GINT_TO_POINTER (processes [i].kp_proc.p_pid);
+# else
+ for (i = 0; i < res; ++i)
+ buf [i] = GINT_TO_POINTER (processes [i].ki_pid);
+# endif
free (processes);
if (size)
*size = res;
@@ -162,7 +170,11 @@
if (res < 0 || data_len != sizeof (struct kinfo_proc)) {
return buf;
}
+# if !defined KINFO_PROC_HAS_NO_KP_PROC
strncpy (buf, processi.kp_proc.p_comm, len - 1);
+# else
+ strncpy (buf, processi.ki_comm, len - 1);
+# endif
return buf;
#else
char fname [128];
More information about the Mono-devel-list
mailing list