2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 using System.Runtime.InteropServices;
19 using Tizen.Internals;
22 internal static partial class Interop
24 internal static partial class RuntimeInfo
26 public delegate void RuntimeInformationChangedCallback(RuntimeInfoKey key, IntPtr userData);
28 [NativeStruct("runtime_memory_info_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
29 [StructLayout(LayoutKind.Sequential)]
30 public struct MemoryInfo
32 public readonly int Total;
33 public readonly int Used;
34 public readonly int Free;
35 public readonly int Cache;
36 public readonly int Swap;
39 [NativeStruct("process_memory_info_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
40 [StructLayout(LayoutKind.Sequential)]
41 public struct ProcessMemoryInfo
43 public readonly int Vsz;
44 public readonly int Rss;
45 public readonly int Pss;
46 public readonly int SharedClean;
47 public readonly int SharedDirty;
48 public readonly int PrivateClean;
49 public readonly int PrivateDirty;
52 [NativeStruct("runtime_cpu_usage_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
53 [StructLayout(LayoutKind.Sequential)]
54 public struct CpuUsage
56 public readonly double User;
57 public readonly double System;
58 public readonly double Nice;
59 public readonly double IoWait;
62 [NativeStruct("process_cpu_usage_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
63 [StructLayout(LayoutKind.Sequential)]
64 public struct ProcessCpuUsage
66 public readonly uint UTime;
67 public readonly uint STime;
70 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_int")]
71 public static extern InformationError GetValue(RuntimeInfoKey key, out int status);
73 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_bool")]
74 public static extern InformationError GetValue(RuntimeInfoKey key, out bool status);
76 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_double")]
77 public static extern InformationError GetValue(RuntimeInfoKey key, out double status);
79 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_string")]
80 public static extern InformationError GetValue(RuntimeInfoKey key, out string status);
82 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_system_memory_info")]
83 public static extern InformationError GetSystemMemoryInfo(out MemoryInfo memoryInfo);
85 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_process_memory_info")]
86 public static extern InformationError GetProcessMemoryInfo(int[] pid, int size, ref IntPtr array);
88 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_cpu_usage")]
89 public static extern InformationError GetCpuUsage(out CpuUsage cpuUsage);
91 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_process_cpu_usage")]
92 public static extern InformationError GetProcessCpuUsage(int[] pid, int size, ref IntPtr array);
94 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_processor_count")]
95 public static extern InformationError GetProcessorCount(out int processorCount);
97 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_processor_current_frequency")]
98 public static extern InformationError GetProcessorCurrentFrequency(int coreId, out int cpuFreq);
100 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_processor_max_frequency")]
101 public static extern InformationError GetProcessorMaxFrequency(int coreId, out int cpuFreq);
103 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_set_changed_cb")]
104 public static extern InformationError SetRuntimeInfoChangedCallback(RuntimeInfoKey runtimeInfoKey, RuntimeInformationChangedCallback cb, IntPtr userData);
106 [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_unset_changed_cb")]
107 public static extern InformationError UnsetRuntimeInfoChangedCallback(RuntimeInfoKey runtimeInfoKey);