1 using System; 2 using System.Reflection; 3 4 // using Android.Runtime; 5 // using Android.Util; 6 7 namespace Mono.Unix.Android 8 { 9 internal sealed class AndroidUtils 10 { 11 const string TAG = "Mono.Posix"; 12 DetectCPUAndArchitecture(out ushort builtForCPU, out ushort runningOnCPU, out bool is64bit)13 delegate void DetectCPUAndArchitecture (out ushort builtForCPU, out ushort runningOnCPU, out bool is64bit); 14 15 readonly static DetectCPUAndArchitecture detectCPUAndArchitecture; 16 AndroidUtils()17 static AndroidUtils () 18 { 19 Type androidRuntime = Type.GetType ("Android.Runtime.AndroidEnvironment, Mono.Android", true); 20 21 MethodInfo mi = androidRuntime.GetMethod ("DetectCPUAndArchitecture", BindingFlags.NonPublic | BindingFlags.Static); 22 detectCPUAndArchitecture = (DetectCPUAndArchitecture) Delegate.CreateDelegate (typeof(DetectCPUAndArchitecture), mi); 23 } 24 AreRealTimeSignalsSafe()25 public static bool AreRealTimeSignalsSafe () 26 { 27 ushort built_for_cpu; 28 ushort running_on_cpu; 29 bool is64bit; 30 31 detectCPUAndArchitecture (out built_for_cpu, out running_on_cpu, out is64bit); 32 33 // CPUArchitecture builtForCPU = Enum.IsDefined (typeof (CPUArchitecture), built_for_cpu) ? (CPUArchitecture)built_for_cpu : CPUArchitecture.Unknown; 34 // CPUArchitecture runningOnCPU = Enum.IsDefined (typeof (CPUArchitecture), running_on_cpu) ? (CPUArchitecture)running_on_cpu : CPUArchitecture.Unknown; 35 36 // Log.Info (TAG, " Built for CPU: {0}", builtForCPU); 37 // Log.Info (TAG, "Running on CPU: {0}", runningOnCPU); 38 // Log.Info (TAG, "64-bit process: {0}", is64bit ? "yes" : "no"); 39 40 // For now real-time signals aren't safe at all, alas 41 bool safe = false; 42 // Log.Info (TAG, "Real-time signals are {0}safe on this platform", safe ? String.Empty : "not "); 43 44 return safe; 45 } 46 } 47 }