Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Kumpera <kumpera@gmail.com>2017-03-16 02:30:34 +0300
committerRodrigo Kumpera <kumpera@gmail.com>2017-03-16 02:30:34 +0300
commitfc662e3ffeb9c4d150a69507f1909fb5b906d651 (patch)
treeffbcf029c5fc6a154089544fba86dbae0c70c8b7 /mcs/class/Mono.Posix
parentc37ef087cf74f314b939fe33101666cb50be41e1 (diff)
[Mono.Posix] Add file that was on the xamarin-android repo so it can be built from mono.
Diffstat (limited to 'mcs/class/Mono.Posix')
-rw-r--r--mcs/class/Mono.Posix/Mono.Unix.Android/AndroidUtils.cs47
-rw-r--r--mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.cs15
-rw-r--r--mcs/class/Mono.Posix/monodroid_Mono.Posix.dll.sources2
3 files changed, 63 insertions, 1 deletions
diff --git a/mcs/class/Mono.Posix/Mono.Unix.Android/AndroidUtils.cs b/mcs/class/Mono.Posix/Mono.Unix.Android/AndroidUtils.cs
new file mode 100644
index 00000000000..3b40a82c072
--- /dev/null
+++ b/mcs/class/Mono.Posix/Mono.Unix.Android/AndroidUtils.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Reflection;
+
+// using Android.Runtime;
+// using Android.Util;
+
+namespace Mono.Unix.Android
+{
+ internal sealed class AndroidUtils
+ {
+ const string TAG = "Mono.Posix";
+
+ delegate void DetectCPUAndArchitecture (out ushort builtForCPU, out ushort runningOnCPU, out bool is64bit);
+
+ readonly static DetectCPUAndArchitecture detectCPUAndArchitecture;
+
+ static AndroidUtils ()
+ {
+ Type androidRuntime = Type.GetType ("Android.Runtime.AndroidEnvironment, Mono.Android", true);
+
+ MethodInfo mi = androidRuntime.GetMethod ("DetectCPUAndArchitecture", BindingFlags.NonPublic | BindingFlags.Static);
+ detectCPUAndArchitecture = (DetectCPUAndArchitecture) Delegate.CreateDelegate (typeof(DetectCPUAndArchitecture), mi);
+ }
+
+ public static bool AreRealTimeSignalsSafe ()
+ {
+ ushort built_for_cpu;
+ ushort running_on_cpu;
+ bool is64bit;
+
+ detectCPUAndArchitecture (out built_for_cpu, out running_on_cpu, out is64bit);
+
+ // CPUArchitecture builtForCPU = Enum.IsDefined (typeof (CPUArchitecture), built_for_cpu) ? (CPUArchitecture)built_for_cpu : CPUArchitecture.Unknown;
+ // CPUArchitecture runningOnCPU = Enum.IsDefined (typeof (CPUArchitecture), running_on_cpu) ? (CPUArchitecture)running_on_cpu : CPUArchitecture.Unknown;
+
+ // Log.Info (TAG, " Built for CPU: {0}", builtForCPU);
+ // Log.Info (TAG, "Running on CPU: {0}", runningOnCPU);
+ // Log.Info (TAG, "64-bit process: {0}", is64bit ? "yes" : "no");
+
+ // For now real-time signals aren't safe at all, alas
+ bool safe = false;
+ // Log.Info (TAG, "Real-time signals are {0}safe on this platform", safe ? String.Empty : "not ");
+
+ return safe;
+ }
+ }
+} \ No newline at end of file
diff --git a/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.cs b/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.cs
index 57c03140112..810e13a7ca8 100644
--- a/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.cs
+++ b/mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.cs
@@ -8,6 +8,9 @@ using System;
using System.IO;
using System.Runtime.InteropServices;
using Mono.Unix.Native;
+#if MONODROID
+using Mono.Unix.Android;
+#endif
namespace Mono.Unix.Native {
@@ -17,7 +20,17 @@ namespace Mono.Unix.Native {
//
// Non-generated exports
//
-#if !MONODROID
+#if MONODROID
+ [DllImport (LIB, EntryPoint="Mono_Posix_FromRealTimeSignum")]
+ static extern int HelperFromRealTimeSignum (Int32 offset, out Int32 rval);
+
+ static int FromRealTimeSignum (Int32 offset, out Int32 rval)
+ {
+ if (!AndroidUtils.AreRealTimeSignalsSafe ())
+ throw new PlatformNotSupportedException ("Real-time signals are not supported on this Android architecture");
+ return HelperFromRealTimeSignum (offset, out rval);
+ }
+#else
[DllImport (LIB, EntryPoint="Mono_Posix_FromRealTimeSignum")]
private static extern int FromRealTimeSignum (Int32 offset, out Int32 rval);
#endif
diff --git a/mcs/class/Mono.Posix/monodroid_Mono.Posix.dll.sources b/mcs/class/Mono.Posix/monodroid_Mono.Posix.dll.sources
new file mode 100644
index 00000000000..0d242e6ef3e
--- /dev/null
+++ b/mcs/class/Mono.Posix/monodroid_Mono.Posix.dll.sources
@@ -0,0 +1,2 @@
+#include Mono.Posix.dll.sources
+./Mono.Unix.Android/AndroidUtils.cs