index 819e9e54cad7d4cf806c460b8d98dc42ff046678..b8fe7ddc7afbab6c21e70fe95aca93e98a1c07f8 100644 (file)
/*
- * file rmnameserverloc.h
+ * file rm_nameserverloc.h
*
- * Private data structures of Resource Manager NameServer.
+ * Prototypes and data structures for the Resource Manager NameServer.
*
* ============================================================================
* (C) Copyright 2012, Texas Instruments, Inc.
* \par
*/
-#ifndef RMNAMESERVERLOC_H_
-#define RMNAMESERVERLOC_H_
+#ifndef RM_NAMESERVERLOC_H_
+#define RM_NAMESERVERLOC_H_
#ifdef __cplusplus
extern "C" {
/* RM internal includes */
#include <ti/drv/rm/include/rm_loc.h>
-void Rm_nsAddObject(Rm_Inst *rmInst, Rm_Transaction *transaction,
- Rm_TransactionReceipt *receipt);
-void Rm_nsDeleteObject(Rm_Inst *rmInst, Rm_Transaction *transaction,
- Rm_TransactionReceipt *receipt);
+/* AVL BBST includes */
+#include <ti/drv/rm/include/tree.h>
+
+#define RM_NS_ACTION_APPROVED 0
+#define RM_NS_OBJECT_FOUND 1
+#define RM_NS_OBJECT_NOT_FOUND 2
+
+#define RM_NS_ACTION_DENIED -1
+#define RM_NS_ERROR_NAME_ALREADY_EXISTS -2
+#define RM_NS_ERROR_NAME_DOES_NOT_EXIST -3
+
+int32_t Rm_nsInit(Rm_Inst *rmInst);
+int32_t Rm_nsAddObject(Rm_Inst *rmInst, Rm_ResourceInfo *resourceInfo);
+void Rm_nsPrintObjects(Rm_Inst *rmInst);
+int32_t Rm_nsFindObject(Rm_Inst *rmInst, Rm_ResourceInfo *resourceInfo);
+int32_t Rm_nsDeleteObject(Rm_Inst *rmInst, Rm_ResourceInfo *resourceInfo);
+
+/**********************************************************************
+ ******************* Red-Black Tree BBST Defines **********************
+ **********************************************************************/
+
+/* Declare the tree structure nodes */
+typedef struct _Rm_NameServerNode {
+ RB_ENTRY(_Rm_NameServerNode) linkage;
+ char name[RM_RESOURCE_NAME_MAX_CHARS];
+ uint32_t base;
+ uint32_t length;
+} Rm_NameServerNode;
+
+/* Declare the tree head structure. */
+typedef RB_HEAD(_Rm_NameServerTree, _Rm_NameServerNode) Rm_NameServerTree;
+
+Rm_NameServerNode *Rm_newNameServerNode(char *name, uint32_t resourceBase,
+ uint32_t resourceLength);
+void Rm_freeNameServerNode(Rm_NameServerNode *node);
+/* Prototype for NameServer node comparison function
+ * element1 < element2 --> return < 0
+ * element1 = element2 --> return 0
+ * element1 > element2 --> return > 0 */
+int Rm_NameServerNodeCompare(Rm_NameServerNode *element1, Rm_NameServerNode *element2);
+
+/* Generate the tree prototypes */
+RB_PROTOTYPE(_Rm_NameServerTree, _Rm_NameServerNode, linkage, Rm_NameServerNodeCompare);
#ifdef __cplusplus
}
#endif
-#endif /* RMNAMESERVERLOC_H_ */
+#endif /* RM_NAMESERVERLOC_H_ */