]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/rm-lld.git/blobdiff - rm_services.h
Small API cleanup more doxygenination
[keystone-rtos/rm-lld.git] / rm_services.h
index 4969f7445e9d4e363d854fc151e7c01eae0e664b..1437be30e38fe3ff5de30dfab3c84a858862c5e2 100644 (file)
@@ -65,109 +65,121 @@ typedef enum {
     Rm_service_RESOURCE_ALLOCATE_USE,
     /** RM resource free service */
     Rm_service_RESOURCE_FREE,
-    /** RM resource mapping to name service */
+    /** RM NameServer map resource to name service */
     Rm_service_RESOURCE_MAP_TO_NAME,
-    /** RM resource get by name service */
+    /** RM NameServer get resource by name service */
     Rm_service_RESOURCE_GET_BY_NAME,
-    /** RM resource name unmapping service */
+    /** RM NameServer unmap resource from name service */
     Rm_service_RESOURCE_UNMAP_NAME,
     /** DO NOT USE: Last type */
     Rm_service_LAST
 } Rm_ServiceType;
 
 /** 
- * @brief RM service response information provided by RM back to the 
- *        requesting component
+ * @brief RM service response information used by RM to provide service
+ *        request results back to the application components
  */
 typedef struct {
-    /** State of the service request.
-     *  Non-negative result: RM has taken an action based on the request
-     *  Negative result: RM has encountered an error handling the request */
+    /** Service request state.  The state can be an approval, denial, or error.
+     *  The latter codes start at #RM_OK, #RM_SERVICE_DENIED_BASE, and 
+     *  #RM_ERROR_BASE, respectively. */
     int32_t serviceState;
-    /** A service ID will be returned to the component if the requested service cannot
-     *  be completed immediately.  The service ID can be used by the component to identify
-     *  service responses received via the component callback function.  A service ID will not
-     *  be returned if the service request is satisfied immediately */
+    /** The service ID is returned to the application in order to match service
+     *  responses received at a later time via the provided callback function
+     *  because RM required a blocking operation in order to satisfy the
+     *  resource request. */
     uint32_t serviceId;
-    /** The name of the resource affected by the service request */
+    /** Affected resource name */
     char resourceName[RM_NAME_MAX_CHARS];
-    /** The base value of the returned resource.  In the case of a block resource allocation 
-     *  response this field will contain the base value of the block. */
+    /** The resource base value allocated, freed, or mapped to NameServer name. */
     int32_t resourceBase;
-    /** The number of resources starting from resourceBase allocated in block requests */
+    /** The resource length starting at base allocated, freed, or mapped to
+     *  NameServer name. */
     uint32_t resourceLength;
 } Rm_ServiceRespInfo;
 
 /** 
- * @brief RM service callback function structure
+ * @brief RM service callback function
  */
 typedef struct {
-    /** Component callback function.  RM will call this function when the 
-     *  resource service request is completed. The callback function supplied
-     *  for this parameter must match this function pointer prototype. */
+    /** Component callback function.  RM calls this function when a blocking 
+     *  resource service request is complete. The callback function supplied
+     *  for this parameter must match the function pointer prototype. */
     void (*serviceCallback) (Rm_ServiceRespInfo *serviceResponse);
 } Rm_ServiceCallback;
 
 /** 
- * @brief RM service request information provided by the requesting component
+ * @brief RM service request information
  */
 typedef struct {
-    /** The type of RM service requested */
+    /** The type of service requested */
     Rm_ServiceType type;
-    /** Pointer to the name of the resource requested.  The 
-     *  name provided by the component must match the resource node names
-     *  provided in the global resource table and allocation policies */
+    /** Pointer to an array containing the resource name affected by
+     *  the request.  The resource name must match a resource node name
+     *  defined in the GRL and global/static policy.  The request will be
+     *  denied if the resource name does not match any resource node names
+     *  in the policy */
     char *resourceName;
-/** An allocate service can be requested with an unspecified resource base. 
- *  If this occurs the RM Client Delegate or Server will assign the next available
- *  resource or set of resources based on the allocation type. */
+/** Informs RM to find the next available resource block of length
+ *  resourceLength and alignment resourceAlignment for allocation.  This
+ *  parameter is only valid for resource allocate service types. */
 #define RM_RESOURCE_BASE_UNSPECIFIED (-1)  
-    /** The resource base value. */
+    /** The base value of the resource affected by the service request.
+     *  #RM_RESOURCE_BASE_UNSPECIFIED can be substituted. */
     int32_t resourceBase;
-    /** The number of the specified resource to be allocated starting from 
-     *  resourceBase.  Will be greater than one only for block allocate
-     *  and free service requests. */
+    /** The resource length, starting from #resourceBase affected by the
+     *  service request. */
     uint32_t resourceLength;
-/** An allocate service can be requested with an unspecified resource alignment.
- *  WARNING: Only applicapable if resourceBase is unspecified
- *
- *  If the alignment is unspecified the RM Client Delegate or Server will allocate
- *  the resources from a default alignment as specified in the global policy. */
+/** Informs RM to find the next available resource block with length
+ *  resourceLength and the alignment specified in 
+ *  a) The resource node in the policy if it has the "allocation-alignment"
+ *     property defined.
+ *  b) The default alignment of 1 if no alignment is specified in the policy
+ *     for the resource.
+ *  This value is only valid if resourceBase is set to 
+ *  #RM_RESOURCE_BASE_UNSPECIFIED */
 #define RM_RESOURCE_ALIGNMENT_UNSPECIFIED (-1)      
-    /** Resource alignment in block allocation requests */
+    /** Alignment of the resource affected by the service request.  Only valid
+     *  if resourceBase is set to #RM_RESOURCE_BASE_UNSPECIFIED.
+     *  #RM_RESOURCE_ALIGNMENT_UNSPECIFIED can be substituted. */
     int32_t resourceAlignment;
-    /** The name server name associated with the resource.  Used only for 
-     *  allocate and free by name service requests */
+    /** The NameServer name associated, or to be associated, with a resource. 
+     *  If the service type is #Rm_service_RESOURCE_GET_BY_NAME and the
+     *  #resourceBase and #resourceLength fields are not NULL a error will
+     *  occur. */
     char *resourceNsName;
-    /** Component specified callback function used by RM to inform components
-     *  of service requst results */
+    /** Callback function used by RM to provide responses back to application
+     *  components after a service request resulted in a blocking operation. */
     Rm_ServiceCallback callback;
 } Rm_ServiceReqInfo;
 
 /** 
- * @brief RM Service Handle provided to software components and applications that 
- *        request RM services for the resources they wish to use
+ * @brief RM service handle provided to application components for requesting
+ *        services
  */
 typedef struct {
-    /** RM instance handle for which the service handle was registered */
+    /** RM instance handle for which the service handle was allocated from. */
     void *rmHandle;
     /**
      *  @b Description
      *  @n  
-     *      Callout function used by components to request a resource service 
-     *      from a RM instance
+     *      Processes service requests from application components.  Responses
+     *      are returned immediately if the service request could be satisfied 
+     *      without blocking.  If the service request requires a blocking operation,
+     *      such as forwarding the service request to another instance for
+     *      validation, the response will be received via the Rm_ServerCallback
      *
      *   @param[in] rmHandle
-     *      RM instance handle specifying the RM instance that should handle the
-     *      service request
+     *      RM instance handle specifies the instance that handles the service
+     *      request.  The request's result, if policy checks are involved, will be
+     *      based on the permissions assigned to the rmHandle's instance name within
+     *      global/static policy.
      *  
      *  @param[in]  serviceRequest
-     *      Service request structure that provides details of the service requested from
-     *      the RM instance tied to this component
+     *      Pointer to the service request structure
      *
-     *  @param[in]  serviceResponse
-     *      Service response structure that provides details of RM's response to the
-     *      service request
+     *  @param[out]  serviceResponse
+     *      Pointer to a service response structure.
      */
     void (*Rm_serviceHandler)(void *rmHandle, Rm_ServiceReqInfo *serviceRequest,
                               Rm_ServiceRespInfo *serviceResponse);
@@ -178,17 +190,22 @@ typedef struct {
  *  @n  
  *      This function returns a RM service handle to the application to 
  *      provide services to software components (LLDs, BIOS, etc) that want to use RM
- *      for resource management.
+ *      for resource management. Only one service handle can be opened from
+ *      each RM instance.
  *
  *  @param[in]  rmHandle
- *      RM instance handle.  Used to return a Rm_ServicePort from an RM
- *      instance.
+ *      RM instance handle from which the service handle will be opened
+ *
+ *  @param[out] result
+ *      Pointer to a signed int used to return any errors encountered during
+ *      the instance initialization process.
  *
  *  @retval
- *      Success - RM Service Handle.  Used by an application or component to
- *                request a service from RM.
+ *      Success - Rm_ServiceHandle and result = #RM_OK
+ *  @retval
+ *      Failure - NULL Rm_ServiceHandle and result = #RM_ERROR_SERVICE_HANDLE_MEM_ALLOC_FAILED
  *  @retval
- *      Failure - NULL
+ *      Failure - NULL Rm_ServiceHandle and result = #RM_ERROR_SERVICE_HANDLE_ALREADY_OPENED
  */
 Rm_ServiceHandle *Rm_serviceOpenHandle(Rm_Handle rmHandle, int32_t *result);
 
@@ -199,6 +216,11 @@ Rm_ServiceHandle *Rm_serviceOpenHandle(Rm_Handle rmHandle, int32_t *result);
  *
  *  @param[in]  rmServiceHandle
  *      RM instance service handle to be closed.
+ *
+ *  @retval
+ *      Success - #RM_OK
+ *  @retval
+ *      Failure - #RM_ERROR_SERVICE_HANDLE_ALREADY_CLOSED
  */
 int32_t Rm_serviceCloseHandle(Rm_ServiceHandle *rmServiceHandle);