--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/drivers/resourceman.inl Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,242 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32\include\drivers\resourceman.inl
+//
+// WARNING: This file contains some APIs which are internal and are subject
+// to change without noticed. Such APIs should therefore not be used
+// outside the Kernel and Hardware Services package.
+//
+
+/**
+
+ @publishedPartner
+ @released 9.5
+
+ Request to get the resource controller version
+
+ @param aClientId ID of the client which is requesting the resource controller version.
+ @param aVersion On Success, returns the version of PRM
+
+ @return KErrNone if successful
+ KErrAccessDenied if the client ID could not be found in the list of registered clients or
+ if the client was registered to be thread relative and this API is not
+ called from the same thread.
+
+ @pre Interrupts must be enabled
+ @pre Kernel must be unlocked
+ @pre No fast mutex can be held
+ @pre Call in a thread context but not from null thread or DFC thread1
+ @pre Can be used in a device driver.
+*/
+inline TInt PowerResourceManager::GetResourceControllerVersion(TUint aClientId, TUint& aVersion)
+ {
+ __KTRACE_OPT(KRESMANAGER, Kern::Printf(">PowerResourceManager::ResourceControllerVersion"));
+ return ControlIO(aClientId, KResManControlIoGetVersion, (TAny*)&aVersion, NULL);
+ }
+#ifdef PRM_ENABLE_EXTENDED_VERSION
+
+/**
+@publishedPartner
+@released 9.5
+
+Request to register dynamic resource. This is also used to register dynamic resource with dependency
+
+@param aClientId ID of the client which is requesting the dynamic resource registration.
+@param aResource Dynamic resource to register.
+@param aResourceId On success, updates with resource id corresponding to this resource
+
+@return KErrNone if successful
+ KErrAccessDenied if the client ID could not be found in the list of registered clients or
+ if the client was registered to be thread relative and this API is not
+ called from the same thread or if ID is user side client id.
+ KErrNotSupported if this API is called before PRM is fully intialised or if the resource ID does not
+ correspond to dynamic resource or dynamic resource which support depedency
+ KErrAlreadyExists if resource is already registered.
+
+
+@pre Interrupts must be enabled
+@pre Kernel must be unlocked
+@pre No fast mutex can be held
+@pre Call in a thread context but not from null thread or DFC thread1
+@pre Can be used in a device driver.
+*/
+inline TInt PowerResourceManager::RegisterDynamicResource(TUint aClientId, DDynamicPowerResource* aResource,
+ TUint& aResourceId)
+ {
+ __KTRACE_OPT(KRESMANAGER, Kern::Printf(">PowerResourceManager::RegisterDynamicResource"));
+ return ControlIO(aClientId, KResManControlIoRegisterDynamicResource, (TAny*)aResource, (TAny*)&aResourceId);
+ }
+
+/**
+@publishedPartner
+@released 9.5
+
+Request to deregister dynamic resource. This is also used to deregister dynamic resource with dependency
+
+@param aClientId ID of the client which is requesting the dynamic resource deregistration.
+@param aResourceId Id of dynamic resource to deregister.
+@param aState Pointer to the required final state. This is optional and if left NULL, resource
+ will be moved to its default state.
+
+@return KErrNone if successful
+ KErrAccessDenied if the client ID could not be found in the list of registered clients or
+ if the client was registered to be thread relative and this API is not
+ called from the same thread or if ID is user side client id or if the client
+ is not the same that registered the resource.
+ KErrNotSupported if this API is called before PRM is fully intialised or if the resource ID does not
+ correspond to dynamic resource or dynamic resource which support depedency
+ KErrNotFound if the resource could not found in the resource list.
+ KErrInUse if the some other operation is in progress or if the resource is shared and
+ another client holds requirement on this resource
+
+
+@pre Interrupts must be enabled
+@pre Kernel must be unlocked
+@pre No fast mutex can be held
+@pre Call in a thread context but not from null thread or DFC thread1
+@pre Can be used in a device driver.
+*/
+inline TInt PowerResourceManager::DeRegisterDynamicResource(TUint aClientId, TUint aResourceId, TInt* aState)
+ {
+ __KTRACE_OPT(KRESMANAGER, Kern::Printf(">PowerResourceManager::DeRegisterDynamicResource"));
+ return ControlIO(aClientId, KResManControlIoDeregisterDynamicResource, (TAny*)aResourceId, (TAny*)aState);
+ }
+
+/**
+@publishedPartner
+@released 9.5
+
+Request to register resource dependency. This could be between 2 dynamic resource or between
+dynamic and static resource.
+
+@param aClientId ID of the client which is requesting the resource dependency registration.
+@param aResDependencyInfo1 Dependency information about the first resource in the dependency link.
+@param aResDependencyInfo2 Dependency information about the second resource in the dependency link.
+
+@return KErrNone if successful
+ KErrAccessDenied if the client ID could not be found in the list of registered clients or
+ if the client was registered to be thread relative and this API is not
+ called from the same thread or if ID is user side client id
+ KErrNotSupported if any of the specified resource is not dynamic resource with depedency or
+ is not dependency resource or is instantaneous
+ KErrNotFound if any of the specified resource could not found in the resource list.
+
+
+@pre Interrupts must be enabled
+@pre Kernel must be unlocked
+@pre No fast mutex can be held
+@pre Call in a thread context but not from null thread or DFC thread1
+@pre Can be used in a device driver.
+*/
+inline TInt PowerResourceManager::RegisterResourceDependency(TUint aClientId, SResourceDependencyInfo* aResDependencyInfo1,
+ SResourceDependencyInfo* aResDependencyInfo2)
+ {
+ __KTRACE_OPT(KRESMANAGER, Kern::Printf(">PowerResourceManager::RegisterResourceDependency"));
+ return ControlIO(aClientId, KResManControlIoRegisterDependency, (TAny*)aResDependencyInfo1, (TAny*)aResDependencyInfo2);
+ }
+
+/**
+@publishedPartner
+@released 9.5
+
+Request to deregister resource dependency.
+
+@param aClientId ID of the client which is requesting the resource dependency deregistration.
+@param aResId1 Id of the first resource in the dependency link that is being deregistered.
+@param aResId2 Id of the second resource in the dependency link that is being deregistered.
+
+@return KErrNone if successful
+ KErrAccessDenied if the client ID could not be found in the list of registered clients or
+ if the client was registered to be thread relative and this API is not
+ called from the same thread or if ID is user side client id
+ or if any of the specified resource does not support dependency.
+ KErrNotFound if any of the specified resource could not found in the resource list or
+ dependency link does not exist between the specified resources.
+
+@pre Interrupts must be enabled
+@pre Kernel must be unlocked
+@pre No fast mutex can be held
+@pre Call in a thread context but not from null thread or DFC thread1
+@pre Can be used in a device driver.
+*/
+inline TInt PowerResourceManager::DeRegisterResourceDependency(TUint aClientId, TUint aResourceId1, TUint aResourceId2)
+ {
+ __KTRACE_OPT(KRESMANAGER, Kern::Printf(">PowerResourceManager::DeRegisterResourceDependency"));
+ return ControlIO(aClientId, KResManControlIoDeregisterDependency, (TAny*)aResourceId1, (TAny*)aResourceId2);
+ }
+
+/**
+@internalComponent
+@released 9.5
+
+Request to update with number of dependent resources for the specified resource.
+
+@param aResourceId Id of the resource whose number of dependents is requested
+@param aNumDepResources On success will be updated with number of dependent resources.
+
+@return KErrNone if successful
+ KErrAccessDenied if the client ID could not be found in the list of registered clients or
+ if the client was registered to be thread relative and this API is not
+ called from the same thread or if ID is user side client id
+ KErrNotSupported if this API is called before PRM is fully intialised or if the resource ID
+ does not correspond to dependency resource
+ KErrNotFound if the resource could not be found in the resource list.
+
+@pre Interrupts must be enabled
+@pre Kernel must be unlocked
+@pre No fast mutex can be held
+@pre Call in a thread context but not from null thread or DFC thread1
+@pre Can be used in a device driver.
+*/
+inline TInt PowerResourceManager::GetNumDependentsForResource(TUint aClientId, TUint aResourceId, TUint& aNumDepResource)
+ {
+ __KTRACE_OPT(KRESMANAGER, Kern::Printf(">PowerResourceManager::GetNumDependentsForResource"));
+ return ControlIO(aClientId, KResManControlIoGetNumDependents, (TAny*)aResourceId, (TAny*)&aNumDepResource);
+ }
+
+/**
+@internalComponent
+@released 9.5
+
+Request to update the specified array with dependent resource Id's of the specified resource.
+
+@param aResourceId Id of the resource whose dependent resource Id's are requested.
+@param aResIdArray On success array will be updated with the dependent resource information. Client need to
+ create the array in kernel heap or data space.
+@param aNumDepResources Specifies the size of array. On success, updated with actual number of dependent resources.
+
+@return KErrNone if successful
+ KErrAccessDenied if the client ID could not be found in the list of registered clients or
+ if the client was registered to be thread relative and this API is not
+ called from the same thread or if ID is user side client id
+ KErrNotSupported if this API is called before PRM is fully initialised or if the resource ID
+ does not correspond to dependency resource
+ KErrNotFound if the resource could not be found in the resource list.
+ KErrArgument if passed array is null or pass dependent resource number is 0.
+
+@pre Interrupts must be enabled
+@pre Kernel must be unlocked
+@pre No fast mutex can be held
+@pre Call in a thread context but not from null thread or DFC thread1
+@pre Can be used in a device driver.
+*/
+inline TInt PowerResourceManager::GetDependentsIdForResource(TUint aClientId, TUint aResourceId, TAny* aResIdArray,
+ TUint& aNumDepResources)
+ {
+ __KTRACE_OPT(KRESMANAGER, Kern::Printf(">PowerResourceManager::GetDependentsIdForResource"));
+ return ControlIO(aClientId, KResManControlIoGetDependentsId, (TAny*)aResourceId, (TAny*)aResIdArray,
+ (TAny*)&aNumDepResources);
+ }
+
+#endif