xref: /haiku/src/system/kernel/device_manager/io_resources.h (revision 368167ede8118f72da8c9ac5bb98ce9b46a8a639)
1*368167edSAxel Dörfler /*
2*368167edSAxel Dörfler  * Copyright 2004-2008, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3*368167edSAxel Dörfler  * Copyright 2002-04, Thomas Kurschel. All rights reserved.
4*368167edSAxel Dörfler  *
5*368167edSAxel Dörfler  * Distributed under the terms of the MIT License.
6*368167edSAxel Dörfler  */
7*368167edSAxel Dörfler #ifndef IO_RESOURCES_H
8*368167edSAxel Dörfler #define IO_RESOURCES_H
9*368167edSAxel Dörfler 
10*368167edSAxel Dörfler 
11*368167edSAxel Dörfler #include <device_manager.h>
12*368167edSAxel Dörfler 
13*368167edSAxel Dörfler #include <util/DoublyLinkedList.h>
14*368167edSAxel Dörfler 
15*368167edSAxel Dörfler 
16*368167edSAxel Dörfler struct io_resource_private : io_resource,
17*368167edSAxel Dörfler 		DoublyLinkedListLinkImpl<io_resource_private> {
18*368167edSAxel Dörfler 						io_resource_private();
19*368167edSAxel Dörfler 						~io_resource_private();
20*368167edSAxel Dörfler 
21*368167edSAxel Dörfler 			status_t	Acquire(const io_resource& resource);
22*368167edSAxel Dörfler 			void		Release();
23*368167edSAxel Dörfler 
24*368167edSAxel Dörfler private:
25*368167edSAxel Dörfler 			void		_Init();
26*368167edSAxel Dörfler 	static	bool		_IsValid(const io_resource& resource);
27*368167edSAxel Dörfler 
28*368167edSAxel Dörfler public:
29*368167edSAxel Dörfler 	DoublyLinkedListLink<io_resource_private> fTypeLink;
30*368167edSAxel Dörfler };
31*368167edSAxel Dörfler 
32*368167edSAxel Dörfler typedef DoublyLinkedList<io_resource_private> ResourceList;
33*368167edSAxel Dörfler 
34*368167edSAxel Dörfler 
35*368167edSAxel Dörfler #ifdef __cplusplus
36*368167edSAxel Dörfler extern "C" {
37*368167edSAxel Dörfler #endif
38*368167edSAxel Dörfler 
39*368167edSAxel Dörfler void dm_init_io_resources(void);
40*368167edSAxel Dörfler 
41*368167edSAxel Dörfler #ifdef __cplusplus
42*368167edSAxel Dörfler }
43*368167edSAxel Dörfler #endif
44*368167edSAxel Dörfler 
45*368167edSAxel Dörfler #endif	/* IO_RESOURCES_H */
46