From 3d6553afeee3d4605851b6f336c17d5a6b07c6ad Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Sun, 15 Oct 2017 14:46:21 +0100
Subject: add osGetSimulatorMemoryKB(). This allows work around the fact
osGetSimulatorMemory() reports at most 2GB. This one limit is now 2TB, should
ne enought for a while
---
.../ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 16 ++++++++++++++++
.../ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | 1 +
.../Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | 7 ++++++-
3 files changed, 23 insertions(+), 1 deletion(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 79367fb..ba07f9c 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -3591,6 +3591,22 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return (int)pws;
}
+ public int osGetSimulatorMemoryKB()
+ {
+ CheckThreatLevel(ThreatLevel.Moderate, "osGetSimulatorMemory");
+
+ long pws = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
+
+ if((pws & 0x3FFL) != 0)
+ pws += 0x400L;
+ pws >>= 10;
+
+ if (pws > Int32.MaxValue)
+ return Int32.MaxValue;
+
+ return (int)pws;
+ }
+
public void osSetSpeed(string UUID, LSL_Float SpeedModifier)
{
CheckThreatLevel(ThreatLevel.Moderate, "osSetSpeed");
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index 429860b..ffb7ded 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -379,6 +379,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
vector osGetRegionSize();
int osGetSimulatorMemory();
+ int osGetSimulatorMemoryKB();
void osKickAvatar(string FirstName,string SurName,string alert);
void osSetSpeed(string UUID, LSL_Float SpeedModifier);
LSL_Float osGetHealth(string avatar);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index 23ea215..30ff764 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -958,7 +958,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
///
/// Returns the amount of memory in use by the Simulator Daemon.
- /// Amount in bytes - if >= 4GB, returns 4GB. (LSL is not 64-bit aware)
+ /// Amount in bytes - if >= 2GB, returns 2GB. (LSL is not 64-bit aware)
///
///
public LSL_Integer osGetSimulatorMemory()
@@ -966,6 +966,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
return m_OSSL_Functions.osGetSimulatorMemory();
}
+ public LSL_Integer osGetSimulatorMemoryKB()
+ {
+ return m_OSSL_Functions.osGetSimulatorMemoryKB();
+ }
+
public void osKickAvatar(string FirstName,string SurName,string alert)
{
m_OSSL_Functions.osKickAvatar(FirstName, SurName, alert);
--
cgit v1.1