ReactOS 0.4.16-dev-1948-gd260c1d
osi.h File Reference
#include <uacpi/types.h>
#include <uacpi/status.h>
Include dependency graph for osi.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum uacpi_vendor_interface uacpi_vendor_interface
 
typedef enum uacpi_interface_kind uacpi_interface_kind
 
typedef enum uacpi_host_interface uacpi_host_interface
 
typedef uacpi_bool(* uacpi_interface_handler) (const uacpi_char *name, uacpi_bool supported)
 
typedef enum uacpi_interface_action uacpi_interface_action
 

Enumerations

enum  uacpi_vendor_interface {
  UACPI_VENDOR_INTERFACE_NONE = 0 , UACPI_VENDOR_INTERFACE_WINDOWS_2000 , UACPI_VENDOR_INTERFACE_WINDOWS_XP , UACPI_VENDOR_INTERFACE_WINDOWS_XP_SP1 ,
  UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2003 , UACPI_VENDOR_INTERFACE_WINDOWS_XP_SP2 , UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2003_SP1 , UACPI_VENDOR_INTERFACE_WINDOWS_VISTA ,
  UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2008 , UACPI_VENDOR_INTERFACE_WINDOWS_VISTA_SP1 , UACPI_VENDOR_INTERFACE_WINDOWS_VISTA_SP2 , UACPI_VENDOR_INTERFACE_WINDOWS_7 ,
  UACPI_VENDOR_INTERFACE_WINDOWS_8 , UACPI_VENDOR_INTERFACE_WINDOWS_8_1 , UACPI_VENDOR_INTERFACE_WINDOWS_10 , UACPI_VENDOR_INTERFACE_WINDOWS_10_RS1 ,
  UACPI_VENDOR_INTERFACE_WINDOWS_10_RS2 , UACPI_VENDOR_INTERFACE_WINDOWS_10_RS3 , UACPI_VENDOR_INTERFACE_WINDOWS_10_RS4 , UACPI_VENDOR_INTERFACE_WINDOWS_10_RS5 ,
  UACPI_VENDOR_INTERFACE_WINDOWS_10_19H1 , UACPI_VENDOR_INTERFACE_WINDOWS_10_20H1 , UACPI_VENDOR_INTERFACE_WINDOWS_11 , UACPI_VENDOR_INTERFACE_WINDOWS_11_22H2
}
 
enum  uacpi_interface_kind { UACPI_INTERFACE_KIND_VENDOR = (1 << 0) , UACPI_INTERFACE_KIND_FEATURE = (1 << 1) , UACPI_INTERFACE_KIND_ALL }
 
enum  uacpi_host_interface {
  UACPI_HOST_INTERFACE_MODULE_DEVICE = 1 , UACPI_HOST_INTERFACE_PROCESSOR_DEVICE , UACPI_HOST_INTERFACE_3_0_THERMAL_MODEL , UACPI_HOST_INTERFACE_3_0_SCP_EXTENSIONS ,
  UACPI_HOST_INTERFACE_PROCESSOR_AGGREGATOR_DEVICE
}
 
enum  uacpi_interface_action { UACPI_INTERFACE_ACTION_DISABLE = 0 , UACPI_INTERFACE_ACTION_ENABLE }
 

Functions

uacpi_vendor_interface uacpi_latest_queried_vendor_interface (void)
 
uacpi_status uacpi_install_interface (const uacpi_char *name, uacpi_interface_kind)
 
uacpi_status uacpi_uninstall_interface (const uacpi_char *name)
 
uacpi_status uacpi_enable_host_interface (uacpi_host_interface)
 
uacpi_status uacpi_disable_host_interface (uacpi_host_interface)
 
uacpi_status uacpi_set_interface_query_handler (uacpi_interface_handler)
 
uacpi_status uacpi_bulk_configure_interfaces (uacpi_interface_action action, uacpi_interface_kind kind)
 

Typedef Documentation

◆ uacpi_host_interface

◆ uacpi_interface_action

◆ uacpi_interface_handler

typedef uacpi_bool(* uacpi_interface_handler) (const uacpi_char *name, uacpi_bool supported)

Definition at line 88 of file osi.h.

◆ uacpi_interface_kind

◆ uacpi_vendor_interface

Enumeration Type Documentation

◆ uacpi_host_interface

Enumerator
UACPI_HOST_INTERFACE_MODULE_DEVICE 
UACPI_HOST_INTERFACE_PROCESSOR_DEVICE 
UACPI_HOST_INTERFACE_3_0_THERMAL_MODEL 
UACPI_HOST_INTERFACE_3_0_SCP_EXTENSIONS 
UACPI_HOST_INTERFACE_PROCESSOR_AGGREGATOR_DEVICE 

Definition at line 72 of file osi.h.

72 {
uacpi_host_interface
Definition: osi.h:72
@ UACPI_HOST_INTERFACE_3_0_THERMAL_MODEL
Definition: osi.h:75
@ UACPI_HOST_INTERFACE_3_0_SCP_EXTENSIONS
Definition: osi.h:76
@ UACPI_HOST_INTERFACE_MODULE_DEVICE
Definition: osi.h:73
@ UACPI_HOST_INTERFACE_PROCESSOR_AGGREGATOR_DEVICE
Definition: osi.h:77
@ UACPI_HOST_INTERFACE_PROCESSOR_DEVICE
Definition: osi.h:74

◆ uacpi_interface_action

Enumerator
UACPI_INTERFACE_ACTION_DISABLE 
UACPI_INTERFACE_ACTION_ENABLE 

Definition at line 102 of file osi.h.

102 {
uacpi_interface_action
Definition: osi.h:102
@ UACPI_INTERFACE_ACTION_ENABLE
Definition: osi.h:104
@ UACPI_INTERFACE_ACTION_DISABLE
Definition: osi.h:103

◆ uacpi_interface_kind

Enumerator
UACPI_INTERFACE_KIND_VENDOR 
UACPI_INTERFACE_KIND_FEATURE 
UACPI_INTERFACE_KIND_ALL 

Definition at line 52 of file osi.h.

52 {
uacpi_interface_kind
Definition: osi.h:52
@ UACPI_INTERFACE_KIND_ALL
Definition: osi.h:55
@ UACPI_INTERFACE_KIND_FEATURE
Definition: osi.h:54
@ UACPI_INTERFACE_KIND_VENDOR
Definition: osi.h:53

◆ uacpi_vendor_interface

Enumerator
UACPI_VENDOR_INTERFACE_NONE 
UACPI_VENDOR_INTERFACE_WINDOWS_2000 
UACPI_VENDOR_INTERFACE_WINDOWS_XP 
UACPI_VENDOR_INTERFACE_WINDOWS_XP_SP1 
UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2003 
UACPI_VENDOR_INTERFACE_WINDOWS_XP_SP2 
UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2003_SP1 
UACPI_VENDOR_INTERFACE_WINDOWS_VISTA 
UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2008 
UACPI_VENDOR_INTERFACE_WINDOWS_VISTA_SP1 
UACPI_VENDOR_INTERFACE_WINDOWS_VISTA_SP2 
UACPI_VENDOR_INTERFACE_WINDOWS_7 
UACPI_VENDOR_INTERFACE_WINDOWS_8 
UACPI_VENDOR_INTERFACE_WINDOWS_8_1 
UACPI_VENDOR_INTERFACE_WINDOWS_10 
UACPI_VENDOR_INTERFACE_WINDOWS_10_RS1 
UACPI_VENDOR_INTERFACE_WINDOWS_10_RS2 
UACPI_VENDOR_INTERFACE_WINDOWS_10_RS3 
UACPI_VENDOR_INTERFACE_WINDOWS_10_RS4 
UACPI_VENDOR_INTERFACE_WINDOWS_10_RS5 
UACPI_VENDOR_INTERFACE_WINDOWS_10_19H1 
UACPI_VENDOR_INTERFACE_WINDOWS_10_20H1 
UACPI_VENDOR_INTERFACE_WINDOWS_11 
UACPI_VENDOR_INTERFACE_WINDOWS_11_22H2 

Definition at line 12 of file osi.h.

12 {
uacpi_vendor_interface
Definition: osi.h:12
@ UACPI_VENDOR_INTERFACE_WINDOWS_VISTA_SP2
Definition: osi.h:23
@ UACPI_VENDOR_INTERFACE_WINDOWS_10_RS3
Definition: osi.h:30
@ UACPI_VENDOR_INTERFACE_WINDOWS_11_22H2
Definition: osi.h:36
@ UACPI_VENDOR_INTERFACE_WINDOWS_10
Definition: osi.h:27
@ UACPI_VENDOR_INTERFACE_WINDOWS_11
Definition: osi.h:35
@ UACPI_VENDOR_INTERFACE_WINDOWS_8
Definition: osi.h:25
@ UACPI_VENDOR_INTERFACE_WINDOWS_XP_SP2
Definition: osi.h:18
@ UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2003
Definition: osi.h:17
@ UACPI_VENDOR_INTERFACE_WINDOWS_10_RS5
Definition: osi.h:32
@ UACPI_VENDOR_INTERFACE_WINDOWS_VISTA_SP1
Definition: osi.h:22
@ UACPI_VENDOR_INTERFACE_WINDOWS_10_RS4
Definition: osi.h:31
@ UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2003_SP1
Definition: osi.h:19
@ UACPI_VENDOR_INTERFACE_WINDOWS_SERVER_2008
Definition: osi.h:21
@ UACPI_VENDOR_INTERFACE_WINDOWS_XP_SP1
Definition: osi.h:16
@ UACPI_VENDOR_INTERFACE_NONE
Definition: osi.h:13
@ UACPI_VENDOR_INTERFACE_WINDOWS_7
Definition: osi.h:24
@ UACPI_VENDOR_INTERFACE_WINDOWS_XP
Definition: osi.h:15
@ UACPI_VENDOR_INTERFACE_WINDOWS_8_1
Definition: osi.h:26
@ UACPI_VENDOR_INTERFACE_WINDOWS_VISTA
Definition: osi.h:20
@ UACPI_VENDOR_INTERFACE_WINDOWS_10_20H1
Definition: osi.h:34
@ UACPI_VENDOR_INTERFACE_WINDOWS_10_19H1
Definition: osi.h:33
@ UACPI_VENDOR_INTERFACE_WINDOWS_10_RS1
Definition: osi.h:28
@ UACPI_VENDOR_INTERFACE_WINDOWS_10_RS2
Definition: osi.h:29
@ UACPI_VENDOR_INTERFACE_WINDOWS_2000
Definition: osi.h:14

Function Documentation

◆ uacpi_bulk_configure_interfaces()

uacpi_status uacpi_bulk_configure_interfaces ( uacpi_interface_action  action,
uacpi_interface_kind  kind 
)

Definition at line 337 of file osi.c.

340{
343
345
348 return ret;
349
350 interface = registered_interfaces;
351 while (interface) {
352 if (kind & interface->kind)
354
355 interface = interface->next;
356 }
357
359 return ret;
360}
#define interface
Definition: basetyps.h:61
static uacpi_status uacpi_release_native_mutex(uacpi_handle mtx)
Definition: mutex.h:25
static uacpi_status uacpi_acquire_native_mutex(uacpi_handle mtx)
Definition: mutex.h:13
#define UACPI_ENSURE_INIT_LEVEL_AT_LEAST(lvl)
Definition: context.h:127
#define uacpi_unlikely_error(expr)
Definition: status.h:49
uacpi_status
Definition: status.h:10
@ UACPI_INIT_LEVEL_SUBSYSTEM_INITIALIZED
Definition: types.h:66
return ret
Definition: mutex.c:146
action
Definition: namespace.c:707
static uacpi_handle interface_mutex
Definition: osi.c:26
static struct registered_interface * registered_interfaces
Definition: osi.c:27
static unsigned __int64 next
Definition: rand_nt.c:6

◆ uacpi_disable_host_interface()

uacpi_status uacpi_disable_host_interface ( uacpi_host_interface  type)

Definition at line 309 of file osi.c.

310{
312}
#define UACPI_FALSE
Definition: types.h:30
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
static uacpi_status configure_host_interface(uacpi_host_interface type, uacpi_bool enabled)
Definition: osi.c:279

◆ uacpi_enable_host_interface()

uacpi_status uacpi_enable_host_interface ( uacpi_host_interface  type)

Definition at line 304 of file osi.c.

305{
307}
#define UACPI_TRUE
Definition: types.h:29

◆ uacpi_install_interface()

uacpi_status uacpi_install_interface ( const uacpi_char name,
uacpi_interface_kind  kind 
)

Definition at line 173 of file osi.c.

176{
179 uacpi_char *name_copy;
180 uacpi_size name_size;
181
183
186 return ret;
187
188 interface = find_interface_unlocked(name);
189 if (interface != UACPI_NULL) {
190 if (interface->disabled)
191 interface->disabled = UACPI_FALSE;
192
194 goto out;
195 }
196
197 interface = uacpi_kernel_alloc(sizeof(*interface));
200 goto out;
201 }
202
203 name_size = uacpi_strlen(name) + 1;
204 name_copy = uacpi_kernel_alloc(name_size);
205 if (uacpi_unlikely(name_copy == UACPI_NULL)) {
206 uacpi_free(interface, sizeof(*interface));
208 goto out;
209 }
210
211 uacpi_memcpy(name_copy, name, name_size);
212 interface->name = name_copy;
213 interface->weight = 0;
214 interface->kind = kind;
215 interface->host_type = 0;
216 interface->disabled = 0;
217 interface->dynamic = 1;
220
221out:
223 return ret;
224}
static struct list registered_interfaces
Definition: rpc.c:53
#define uacpi_memcpy
Definition: stdlib.h:34
#define uacpi_free(mem, _)
Definition: stdlib.h:96
uacpi_size uacpi_strlen(const uacpi_char *str)
Definition: stdlib.c:72
#define uacpi_unlikely(expr)
Definition: compiler.h:58
size_t uacpi_size
Definition: types.h:37
char uacpi_char
Definition: types.h:44
#define UACPI_NULL
Definition: types.h:33
@ UACPI_STATUS_OUT_OF_MEMORY
Definition: status.h:13
@ UACPI_STATUS_ALREADY_EXISTS
Definition: status.h:20
void * uacpi_kernel_alloc(uacpi_size size)
Definition: uacpiosl.c:111
char * name
Definition: compiler.c:66
struct define * next
Definition: compiler.c:65
Definition: name.c:39
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList

◆ uacpi_latest_queried_vendor_interface()

uacpi_vendor_interface uacpi_latest_queried_vendor_interface ( void  )

Definition at line 136 of file osi.c.

137{
139}
#define uacpi_atomic_load32(ptr)
Definition: atomic.h:104
static uacpi_u32 latest_queried_interface
Definition: osi.c:29

◆ uacpi_set_interface_query_handler()

uacpi_status uacpi_set_interface_query_handler ( uacpi_interface_handler  handler)

Definition at line 314 of file osi.c.

317{
319
321
324 return ret;
325
328 goto out;
329 }
330
332out:
334 return ret;
335}
UINT(* handler)(MSIPACKAGE *)
Definition: action.c:7512
static uacpi_interface_handler interface_handler
Definition: osi.c:28

◆ uacpi_uninstall_interface()

uacpi_status uacpi_uninstall_interface ( const uacpi_char name)

Definition at line 226 of file osi.c.

227{
228 struct registered_interface *cur, *prev;
230
232
235 return ret;
236
238 prev = cur;
239
241 while (cur) {
242 if (uacpi_strcmp(cur->name, name) != 0) {
243 prev = cur;
244 cur = cur->next;
245 continue;
246 }
247
248 if (cur->dynamic) {
249 if (prev == cur) {
251 } else {
252 prev->next = cur->next;
253 }
254
257 uacpi_free(cur, sizeof(*cur));
258 return UACPI_STATUS_OK;
259 }
260
261 /*
262 * If this interface was already disabled, pretend we didn't actually
263 * find it and keep ret as UACPI_STATUS_NOT_FOUND. The fact that it's
264 * still in the registered list is an implementation detail of
265 * predefined interfaces.
266 */
267 if (!cur->disabled) {
268 cur->disabled = UACPI_TRUE;
270 }
271
272 break;
273 }
274
276 return ret;
277}
uacpi_i32 uacpi_strcmp(const uacpi_char *lhs, const uacpi_char *rhs)
Definition: stdlib.c:96
@ UACPI_STATUS_NOT_FOUND
Definition: status.h:17
@ UACPI_STATUS_OK
Definition: status.h:11
FxCollectionEntry * cur
void uacpi_free_dynamic_string(const uacpi_char *str)
Definition: utilities.c:1135
struct registered_interface * next
Definition: osi.c:23