/* * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. * Copyright 2005-2009, Axel Dörfler, axeld@pinc-software.de. * Distributed under the terms of the MIT License. */ #ifndef _KERNEL_LOW_RESOURCE_MANAGER_H #define _KERNEL_LOW_RESOURCE_MANAGER_H #include /* warning levels for low resource handlers */ enum { B_NO_LOW_RESOURCE = 0, B_LOW_RESOURCE_NOTE, B_LOW_RESOURCE_WARNING, B_LOW_RESOURCE_CRITICAL, }; enum { B_KERNEL_RESOURCE_PAGES = 0x01, /* physical pages */ B_KERNEL_RESOURCE_MEMORY = 0x02, /* reservable memory */ B_KERNEL_RESOURCE_SEMAPHORES = 0x04, /* semaphores */ B_KERNEL_RESOURCE_ADDRESS_SPACE = 0x08, /* address space */ B_ALL_KERNEL_RESOURCES = B_KERNEL_RESOURCE_PAGES | B_KERNEL_RESOURCE_MEMORY | B_KERNEL_RESOURCE_SEMAPHORES | B_KERNEL_RESOURCE_ADDRESS_SPACE }; typedef void (*low_resource_func)(void *data, uint32 resources, int32 level); #ifdef __cplusplus extern "C" { #endif status_t low_resource_manager_init(void); status_t low_resource_manager_init_post_thread(void); int32 low_resource_state(uint32 resources); void low_resource(uint32 resource, uint64 requirements, uint32 flags, uint32 timeout); // these calls might get public some day status_t register_low_resource_handler(low_resource_func function, void *data, uint32 resources, int32 priority); status_t unregister_low_resource_handler(low_resource_func function, void *data); #ifdef __cplusplus } #endif #endif /* _KERNEL_LOW_RESOURCE_MANAGER_H */