fb51f52ea439ab23a4dafbb68f80a448f77ee8a4
[platform/core/csapi/tizenfx.git] / src / Tizen.System.Information / Interop / Interop.RuntimeInfo.cs
1 /*
2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3 *
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
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.
15 */
16
17 using System;
18 using System.Runtime.InteropServices;
19 using Tizen.Internals;
20 using Tizen.System;
21
22 internal static partial class Interop
23 {
24     internal static partial class RuntimeInfo
25     {
26         public delegate void RuntimeInformationChangedCallback(RuntimeInfoKey key, IntPtr userData);
27
28         [NativeStruct("runtime_memory_info_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
29         [StructLayout(LayoutKind.Sequential)]
30         public struct MemoryInfo
31         {
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;
37         }
38
39         [NativeStruct("process_memory_info_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
40         [StructLayout(LayoutKind.Sequential)]
41         public struct ProcessMemoryInfo
42         {
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;
50         }
51
52         [NativeStruct("runtime_cpu_usage_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
53         [StructLayout(LayoutKind.Sequential)]
54         public struct CpuUsage
55         {
56             public readonly double User;
57             public readonly double System;
58             public readonly double Nice;
59             public readonly double IoWait;
60         }
61
62         [NativeStruct("process_cpu_usage_s", Include="runtime_info.h", PkgConfig="capi-system-runtime-info")]
63         [StructLayout(LayoutKind.Sequential)]
64         public struct ProcessCpuUsage
65         {
66             public readonly uint UTime;
67             public readonly uint STime;
68         }
69
70         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_int")]
71         public static extern InformationError GetValue(RuntimeInfoKey key, out int status);
72
73         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_bool")]
74         public static extern InformationError GetValue(RuntimeInfoKey key, out bool status);
75
76         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_double")]
77         public static extern InformationError GetValue(RuntimeInfoKey key, out double status);
78
79         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_value_string")]
80         public static extern InformationError GetValue(RuntimeInfoKey key, out string status);
81
82         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_system_memory_info")]
83         public static extern InformationError GetSystemMemoryInfo(out MemoryInfo memoryInfo);
84
85         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_process_memory_info")]
86         public static extern InformationError GetProcessMemoryInfo(int[] pid, int size, ref IntPtr array);
87
88         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_cpu_usage")]
89         public static extern InformationError GetCpuUsage(out CpuUsage cpuUsage);
90
91         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_process_cpu_usage")]
92         public static extern InformationError GetProcessCpuUsage(int[] pid, int size, ref IntPtr array);
93
94         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_processor_count")]
95         public static extern InformationError GetProcessorCount(out int processorCount);
96
97         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_processor_current_frequency")]
98         public static extern InformationError GetProcessorCurrentFrequency(int coreId, out int cpuFreq);
99
100         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_get_processor_max_frequency")]
101         public static extern InformationError GetProcessorMaxFrequency(int coreId, out int cpuFreq);
102
103         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_set_changed_cb")]
104         public static extern InformationError SetRuntimeInfoChangedCallback(RuntimeInfoKey runtimeInfoKey, RuntimeInformationChangedCallback cb, IntPtr userData);
105
106         [DllImport(Libraries.RuntimeInfo, EntryPoint = "runtime_info_unset_changed_cb")]
107         public static extern InformationError UnsetRuntimeInfoChangedCallback(RuntimeInfoKey runtimeInfoKey);
108     }
109 }