[Mono-dev] Can anyone review this fix for FreeBSD build?

Geoff Norton gnorton at novell.com
Sun Nov 9 15:14:16 EST 2008


Eno,

  Whats the testcase/rationale for this patch?

On Sun, 2008-11-09 at 23:34 +0900, Atsushi Eno wrote:
> 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];
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list



More information about the Mono-devel-list mailing list