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