PatchSet 6903 Date: 2005/09/15 03:35:37 Author: robilad Branch: HEAD Tag: (none) Log: Merged in availableProcessors implementation from CACAO and added glibc support
2005-09-15 Dalibor Topic <[EMAIL PROTECTED]> * libraries/clib/native/VMRuntime.c: New file. Taken from CACAO, and improved the availableProcessors implementation. Licensed under the GPL. * THIRDPARTY: Updated to reflect CACAO code. Members: ChangeLog:1.4424->1.4425 THIRDPARTY:1.36->1.37 configure:1.484->1.485 configure.ac:1.166->1.167 config/config.h.in:1.151->1.152 libraries/clib/native/Makefile.am:1.48->1.49 libraries/clib/native/Makefile.in:1.189->1.190 libraries/clib/native/Runtime.c:1.37->1.38 libraries/clib/native/VMRuntime.c:INITIAL->1.1 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.4424 kaffe/ChangeLog:1.4425 --- kaffe/ChangeLog:1.4424 Thu Sep 15 02:25:31 2005 +++ kaffe/ChangeLog Thu Sep 15 03:35:37 2005 @@ -1,5 +1,14 @@ 2005-09-15 Dalibor Topic <[EMAIL PROTECTED]> + * libraries/clib/native/VMRuntime.c: + New file. Taken from CACAO, and improved the + availableProcessors implementation. + Licensed under the GPL. + + * THIRDPARTY: Updated to reflect CACAO code. + +2005-09-15 Dalibor Topic <[EMAIL PROTECTED]> + Resynced with GNU Classpath. 2005-09-14 Roman Kennke <[EMAIL PROTECTED]> Index: kaffe/THIRDPARTY diff -u kaffe/THIRDPARTY:1.36 kaffe/THIRDPARTY:1.37 --- kaffe/THIRDPARTY:1.36 Thu Jul 7 00:37:58 2005 +++ kaffe/THIRDPARTY Thu Sep 15 03:35:40 2005 @@ -761,3 +761,26 @@ shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. + +* libraries/clib/native/VMRuntime.c + + This file comes from CACAO. More information on CACAO is available from + http://www.cacaojvm.org. Kaffe tracks this file's CVS HEAD. + + This file is distributed under the following terms: + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + Index: kaffe/configure diff -u kaffe/configure:1.484 kaffe/configure:1.485 --- kaffe/configure:1.484 Fri Sep 9 15:54:18 2005 +++ kaffe/configure Thu Sep 15 03:35:40 2005 @@ -30060,6 +30060,7 @@ + for ac_header in stdarg.h \ alloca.h \ bsd/libc.h \ @@ -30072,6 +30073,7 @@ jpeglib.h \ kernel/OS.h \ limits.h \ +mach/mach.h \ mach-o/rld.h \ malloc.h \ memory.h \ @@ -30096,16 +30098,16 @@ sys/param.h \ sys/poll.h \ sys/select.h \ +sys/signal.h \ sys/socket.h \ +sys/sockio.h \ sys/stat.h \ +sys/sysctl.h \ +sys/sysinfo.h \ sys/time.h \ sys/types.h \ sys/utsname.h \ -sys/sysctl.h \ -sys/param.h \ -sys/signal.h \ sys/ucontext.h \ -sys/sockio.h \ syslog.h \ time.h \ unistd.h \ @@ -38653,7 +38655,8 @@ done -for ac_func in localtime + +for ac_func in localtime get_nprocs_conf do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_func" >&5 Index: kaffe/configure.ac diff -u kaffe/configure.ac:1.166 kaffe/configure.ac:1.167 --- kaffe/configure.ac:1.166 Fri Sep 9 15:54:24 2005 +++ kaffe/configure.ac Thu Sep 15 03:35:47 2005 @@ -1017,6 +1017,7 @@ jpeglib.h \ kernel/OS.h \ limits.h \ +mach/mach.h \ mach-o/rld.h \ malloc.h \ memory.h \ @@ -1041,16 +1042,16 @@ sys/param.h \ sys/poll.h \ sys/select.h \ +sys/signal.h \ sys/socket.h \ +sys/sockio.h \ sys/stat.h \ +sys/sysctl.h \ +sys/sysinfo.h \ sys/time.h \ sys/types.h \ sys/utsname.h \ -sys/sysctl.h \ -sys/param.h \ -sys/signal.h \ sys/ucontext.h \ -sys/sockio.h \ syslog.h \ time.h \ unistd.h \ @@ -1352,7 +1353,7 @@ AC_CHECK_FUNCS([memcpy memmove]) AC_CHECK_FUNCS([mkdir rmdir]) AC_CHECK_FUNCS([getcwd chdir getwd gettimeofday ftime time uname getuid]) -AC_CHECK_FUNCS([localtime]) +AC_CHECK_FUNCS([localtime get_nprocs_conf]) AC_CHECK_FUNCS([munmap mincore msync madvise getpagesize sysconf]) AM_ICONV Index: kaffe/config/config.h.in diff -u kaffe/config/config.h.in:1.151 kaffe/config/config.h.in:1.152 --- kaffe/config/config.h.in:1.151 Sun Aug 21 18:01:01 2005 +++ kaffe/config/config.h.in Thu Sep 15 03:35:48 2005 @@ -186,6 +186,9 @@ /* Define to 1 if you have the `getwd' function. */ #undef HAVE_GETWD +/* Define to 1 if you have the `get_nprocs_conf' function. */ +#undef HAVE_GET_NPROCS_CONF + /* Do we have the right version of libungif */ #undef HAVE_GIF_LIB_H @@ -317,6 +320,9 @@ /* Define to 1 if you have the `localtime' function. */ #undef HAVE_LOCALTIME +/* Define to 1 if you have the <mach/mach.h> header file. */ +#undef HAVE_MACH_MACH_H + /* Define to 1 if you have the <mach-o/rld.h> header file. */ #undef HAVE_MACH_O_RLD_H @@ -636,6 +642,9 @@ /* Define to 1 if you have the <sys/sysctl.h> header file. */ #undef HAVE_SYS_SYSCTL_H + +/* Define to 1 if you have the <sys/sysinfo.h> header file. */ +#undef HAVE_SYS_SYSINFO_H /* Define to 1 if you have the <sys/time.h> header file. */ #undef HAVE_SYS_TIME_H Index: kaffe/libraries/clib/native/Makefile.am diff -u kaffe/libraries/clib/native/Makefile.am:1.48 kaffe/libraries/clib/native/Makefile.am:1.49 --- kaffe/libraries/clib/native/Makefile.am:1.48 Tue Jul 19 01:16:31 2005 +++ kaffe/libraries/clib/native/Makefile.am Thu Sep 15 03:35:49 2005 @@ -30,6 +30,7 @@ ClassLoader.c \ Object.c \ Runtime.c \ + VMRuntime.c \ String.c \ System.c \ Thread.c \ Index: kaffe/libraries/clib/native/Makefile.in diff -u kaffe/libraries/clib/native/Makefile.in:1.189 kaffe/libraries/clib/native/Makefile.in:1.190 --- kaffe/libraries/clib/native/Makefile.in:1.189 Thu Aug 25 19:22:02 2005 +++ kaffe/libraries/clib/native/Makefile.in Thu Sep 15 03:35:49 2005 @@ -97,9 +97,10 @@ libnative_la-java_lang_VMProcess.lo \ libnative_la-java_lang_VMSystem.lo libnative_la-Class.lo \ libnative_la-ClassLoader.lo libnative_la-Object.lo \ - libnative_la-Runtime.lo libnative_la-String.lo \ - libnative_la-System.lo libnative_la-Thread.lo \ - libnative_la-Throwable.lo libnative_la-ZipFile.lo + libnative_la-Runtime.lo libnative_la-VMRuntime.lo \ + libnative_la-String.lo libnative_la-System.lo \ + libnative_la-Thread.lo libnative_la-Throwable.lo \ + libnative_la-ZipFile.lo am__objects_2 = libnative_la-Array.lo libnative_la-Constructor.lo \ libnative_la-Field.lo libnative_la-Method.lo am__objects_3 = libnative_la-AccessController.lo @@ -426,6 +427,7 @@ ClassLoader.c \ Object.c \ Runtime.c \ + VMRuntime.c \ String.c \ System.c \ Thread.c \ @@ -563,6 +565,7 @@ @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@ @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@ @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@ [EMAIL PROTECTED]@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@ @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@ @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@ @AMDEP_TRUE@@am__include@ @[EMAIL PROTECTED]/$(DEPDIR)/[EMAIL PROTECTED]@ @@ -670,6 +673,13 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='Runtime.c' object='libnative_la-Runtime.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnative_la_CFLAGS) $(CFLAGS) -c -o libnative_la-Runtime.lo `test -f 'Runtime.c' || echo '$(srcdir)/'`Runtime.c + +libnative_la-VMRuntime.lo: VMRuntime.c [EMAIL PROTECTED]@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnative_la_CFLAGS) $(CFLAGS) -MT libnative_la-VMRuntime.lo -MD -MP -MF "$(DEPDIR)/libnative_la-VMRuntime.Tpo" -c -o libnative_la-VMRuntime.lo `test -f 'VMRuntime.c' || echo '$(srcdir)/'`VMRuntime.c; \ [EMAIL PROTECTED]@ then mv -f "$(DEPDIR)/libnative_la-VMRuntime.Tpo" "$(DEPDIR)/libnative_la-VMRuntime.Plo"; else rm -f "$(DEPDIR)/libnative_la-VMRuntime.Tpo"; exit 1; fi [EMAIL PROTECTED]@@am__fastdepCC_FALSE@ source='VMRuntime.c' object='libnative_la-VMRuntime.lo' libtool=yes @AMDEPBACKSLASH@ [EMAIL PROTECTED]@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ [EMAIL PROTECTED]@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnative_la_CFLAGS) $(CFLAGS) -c -o libnative_la-VMRuntime.lo `test -f 'VMRuntime.c' || echo '$(srcdir)/'`VMRuntime.c libnative_la-String.lo: String.c @am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libnative_la_CFLAGS) $(CFLAGS) -MT libnative_la-String.lo -MD -MP -MF "$(DEPDIR)/libnative_la-String.Tpo" -c -o libnative_la-String.lo `test -f 'String.c' || echo '$(srcdir)/'`String.c; \ Index: kaffe/libraries/clib/native/Runtime.c diff -u kaffe/libraries/clib/native/Runtime.c:1.37 kaffe/libraries/clib/native/Runtime.c:1.38 --- kaffe/libraries/clib/native/Runtime.c:1.37 Sun Aug 21 18:01:02 2005 +++ kaffe/libraries/clib/native/Runtime.c Thu Sep 15 03:35:49 2005 @@ -35,11 +35,6 @@ extern jboolean runFinalizerOnExit; -/** TODO - * - * availableProcessors - */ - /* * Exit this VM */ =================================================================== Checking out kaffe/libraries/clib/native/VMRuntime.c RCS: /home/cvs/kaffe/kaffe/libraries/clib/native/VMRuntime.c,v VERS: 1.1 *************** --- /dev/null Sun Aug 4 19:57:58 2002 +++ kaffe/libraries/clib/native/VMRuntime.c Thu Sep 15 03:41:00 2005 @@ -0,0 +1,100 @@ +/* src/native/vm/VMRuntime.c - java/lang/VMRuntime + + Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates, + R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner, + C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger, + Institut f. Computersprachen - TU Wien + + Copyright (C) 2005 Dalibor Topic + + This file was taken from CACAO. More information on CACAO project + is available at http://www.cacaojvm.org + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + + Contact: [EMAIL PROTECTED] + + Authors: Roman Obermaiser + + Changes: Joseph Wenninger + Christian Thalinger + Dalibor Topic +*/ + +#include "config.h" + +#include <stdlib.h> + +#if defined(HAVE_UNISTD_H) +#include <unistd.h> +#endif + +#if defined(HAVE_SYS_SYSINFO_H) +#include <sys/sysinfo.h> +#endif + +#if defined(HAVE_MACH_MACH_H) +# include <mach/mach.h> +#endif + +#include "jni.h" + +/* + * Class: java_lang_Runtime + * Method: availableProcessors + * Signature: ()I + */ +JNIEXPORT jint JNICALL Java_java_lang_VMRuntime_availableProcessors(JNIEnv *env, jclass clazz) +{ +#if defined(HAVE_GET_NPROCS_CONF) + return get_nprocs_conf(); +#elif defined(_SC_NPROC_ONLN) + return (jint) sysconf(_SC_NPROC_ONLN); + +#elif defined(_SC_NPROCESSORS_ONLN) + return (jint) sysconf(_SC_NPROCESSORS_ONLN); + +#elif defined(__DARWIN__) + /* this should work in BSD */ + /* + int ncpu, mib[2], rc; + size_t len; + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + len = sizeof(ncpu); + rc = sysctl(mib, 2, &ncpu, &len, NULL, 0); + + return (jint) ncpu; + */ + + host_basic_info_data_t hinfo; + mach_msg_type_number_t hinfo_count = HOST_BASIC_INFO_COUNT; + kern_return_t rc; + + rc = host_info(mach_host_self(), HOST_BASIC_INFO, + (host_info_t) &hinfo, &hinfo_count); + + if (rc != KERN_SUCCESS) { + return -1; + } + + return (jint) hinfo.avail_cpus; + +#else + return 1; +#endif +} _______________________________________________ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe