/*
* Copyrights : CNRS
* Author : Oleg Lodygensky
* Acknowledgment : XtremWeb-HEP is based on XtremWeb 1.8.0 by inria : http://www.xtremweb.net/
* Web : http://www.xtremweb-hep.org
*
* This file is part of XtremWeb-HEP.
*
* XtremWeb-HEP 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 3 of the License, or
* (at your option) any later version.
*
* XtremWeb-HEP 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 XtremWeb-HEP. If not, see .
*
*/
/*
* XWUtilWin32.c
* Win32 implementation of XWUtil.
*
* Created by heriard on Tue Apr 16 2002.
*
*/
#include
#include "XWUtilImpl.h"
#include
#include
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: cd
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL
Java_xtremweb_archdep_XWUtilImpl_cd (JNIEnv *env, jobject obj, jstring s)
{
const char *str = (*env)->GetStringUTFChars(env, s, 0);
SetCurrentDirectory(str);
(*env)->ReleaseStringUTFChars(env, s, str);
return;
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: getPid
* Signature: ()I
*/
JNIEXPORT jint JNICALL
Java_xtremweb_archdep_XWUtilImpl_getPid(JNIEnv *env, jobject obj)
{
return (jint)GetCurrentProcessId();
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: isRunning
* Signature: (I)Z
*/
JNIEXPORT jboolean JNICALL
Java_xtremweb_archdep_XWUtilImpl_isRunning(JNIEnv *env, jobject obj, jint pid)
{
HANDLE phandle = OpenProcess(PROCESS_QUERY_INFORMATION, 0, (DWORD)pid);
jboolean ret = (phandle != NULL);
if (ret)
CloseHandle(phandle);
return ret;
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: chmodpx
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL
Java_xtremweb_archdep_XWUtilImpl_chmodpx (JNIEnv *env, jobject o, jstring s)
{
const char *str = (*env)->GetStringUTFChars(env, s, 0);
chmod(str, S_IWRITE | S_IREAD | S_IEXEC );
(*env)->ReleaseStringUTFChars(env, s, str);
return;
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: getNumProc
* Signature: ()I
*/
JNIEXPORT jint JNICALL
Java_xtremweb_archdep_XWUtilImpl_getNumProc (JNIEnv *env , jobject o)
{
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
return (jint) SystemInfo.dwNumberOfProcessors;
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: getSpeedProc
* Signature: ()I
*/
JNIEXPORT jint JNICALL
Java_xtremweb_archdep_XWUtilImpl_getSpeedProc (JNIEnv *env , jobject o)
{
HKEY hKey; // handle to registry key
DWORD dwBuffer; // bytes to allocate for buffers
DWORD dwBufferSize; // size of dwBuffer
RegOpenKeyEx (HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
0,
KEY_READ,
&hKey);
dwBufferSize = sizeof(dwBuffer);
RegQueryValueEx (hKey,
"~MHz",
NULL,
NULL,
(LPBYTE) &dwBuffer,
&dwBufferSize );
RegCloseKey (hKey);
sprintf (stderr, "\n\nCPU speed = %li\n\n", dwBuffer);
return (jint) dwBuffer;
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: getProcModel
* Signature: ()I
*/
JNIEXPORT jstring JNICALL
Java_xtremweb_archdep_XWUtilImpl_getProcModel (JNIEnv *env , jobject o)
{
const char* unknown = "UNKNOWN"; // all Windows version
const char* intel = "INTEL"; // all Windows version
const char* mips = "MIPS"; // NT 3.51 only
const char* alpha = "ALPHA"; // NT 4.0 and earlier
const char* ppc = "PPC"; // NT 4.0 and earlier
const char* ia64 = "IA64"; // Windows 64 bits only
const char* ia32OnWin64 = "IA32WIN64"; // Windows 64 bits only
const char* amd64 = "AMD64"; // Windows 64 bits only
SYSTEM_INFO SystemInfo;
GetSystemInfo(&SystemInfo);
switch (SystemInfo.wProcessorArchitecture) {
case PROCESSOR_ARCHITECTURE_UNKNOWN :
return (*env)->NewStringUTF(env, unknown);
case PROCESSOR_ARCHITECTURE_INTEL :
return (*env)->NewStringUTF(env, intel);
case PROCESSOR_ARCHITECTURE_MIPS :
return (*env)->NewStringUTF(env, mips);
case PROCESSOR_ARCHITECTURE_ALPHA :
return (*env)->NewStringUTF(env, alpha);
case PROCESSOR_ARCHITECTURE_PPC :
return (*env)->NewStringUTF(env, ppc);
case PROCESSOR_ARCHITECTURE_IA64 :
return (*env)->NewStringUTF(env, ia64);
#ifdef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 :
return (*env)->NewStringUTF(env, ia32OnWin64);
#endif
#ifdef PROCESSOR_ARCHITECTURE_AMD64
case PROCESSOR_ARCHITECTURE_AMD64 :
return (*env)->NewStringUTF(env, amd64);
#endif
}
return (*env)->NewStringUTF(env, unknown);
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: getTotalMem
* Signature: ()I
*/
JNIEXPORT jint JNICALL
Java_xtremweb_archdep_XWUtilImpl_getTotalMem (JNIEnv *env , jobject o)
{
MEMORYSTATUS stat;
GlobalMemoryStatus (&stat);
sprintf (stderr, "\n\nTotal mem = %li\n\n", stat.dwTotalPhys);
return (jint) (stat.dwTotalPhys / 1024);
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: getTotalSwap
* Signature: ()I
*/
JNIEXPORT jint JNICALL
Java_xtremweb_archdep_XWUtilImpl_getTotalSwap (JNIEnv *env , jobject o)
{
MEMORYSTATUS stat;
GlobalMemoryStatus (&stat);
sprintf (stderr, "\n\nTotal swap = %li\n\n", stat.dwTotalVirtual);
return (jint) (stat.dwTotalVirtual / 1024);
}
/*
* Class: xtremweb_archdep_XWUtilImpl
* Method: raz
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_xtremweb_archdep_XWUtilImpl_raz
(JNIEnv *env, jobject obj)
{
}
JNIEXPORT jint JNICALL Java_xtremweb_archdep_XWUtilImpl_getGid
(JNIEnv *e, jobject o) {
// getgid() is not implemented in win32
// there should be something to do with LsaGetLogonSessionData
// return (jint)getgid();
return -1;
}
JNIEXPORT jint JNICALL Java_xtremweb_archdep_XWUtilImpl_getUid
(JNIEnv *e, jobject o) {
// getuid() is not implemented in win32
// there should be something to do with LsaGetLogonSessionData
// return (jint)getuid();
return -1;
}