📄 m2ppplibtest.c
字号:
/* m2pppLibTest.c *//* Copyright (C) 2003 Wind River Systems, Inc. *//*****************************************/STATUS m2pppLibTestPopulate ( UINT32 nn, /* number of nodes */ UINT32 step ) { int i; M2_PPP_LIB_SEM_TAKE(m2pppLibSem); for (i=1; i<nn+1; i++) { m2pppInterfaceRegister(i*step,NULL); } printf("We attempted to register %u nodes ", nn); printf("with indices from %u to %u with step %u\n", step, nn*step, step); M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return OK; }/*****************************************/STATUS m2pppInterfaceShow ( UINT32 ifIndex ) { M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY keyEntry; M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY * retrievedEntryPtr; PFW_STACK_OBJ * stackObj = NULL; M2_PPP_LIB_SEM_TAKE(m2pppLibSem); POPULATE_M2_PPP_KEY_ENTRY; retrievedEntryPtr = avlSearch ( m2pppIfIndexToStackObjTree, (GENERIC_ARGUMENT)((void *)&keyEntry), compareMain ); if (retrievedEntryPtr != NULL) { printf("A node with ifIndex = %u exists on the tree\n", retrievedEntryPtr->ifIndex); } else { printf("The tree does not have a node with ifIndex = %u\n", ifIndex); } printf("We will call m2pppInterfaceStackObjGet\n"); if (m2pppInterfaceStackObjGet(ifIndex, &stackObj) != OK) { printf("ERROR was returned by m2pppInterfaceStackObjGet\n"); } else { printf("The returned stackObj value is: %p\n", stackObj); } M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return OK; }/*****************************************/STATUS m2pppNextInterfaceShow ( UINT32 ifIndex ) { M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY keyEntry; M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY * retrievedEntryPtr; PFW_STACK_OBJ * stackObj = NULL; M2_PPP_LIB_SEM_TAKE(m2pppLibSem); POPULATE_M2_PPP_KEY_ENTRY; retrievedEntryPtr = avlSuccessorGet ( m2pppIfIndexToStackObjTree, (GENERIC_ARGUMENT)((void *)&keyEntry), compareMain ); if (retrievedEntryPtr != NULL) { printf("The tree node with ifIndex = %u has minimal key > %u\n", retrievedEntryPtr->ifIndex, ifIndex); } else { printf("The tree does not have a node with ifIndex > %u \n", ifIndex); } printf("We will call m2pppInterfaceStackObjGet\n"); if (m2pppInterfaceStackObjGet(ifIndex, &stackObj) != OK) { printf("ERROR was returned by m2pppNextInterfaceStackObjGet\n"); } else { printf("The returned stackObj value is: %p\n", stackObj); }; M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return OK; }/*****************************************/STATUS m2pppPreviousInterfaceShow ( UINT32 ifIndex ) { M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY keyEntry; M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY * retrievedEntryPtr; PFW_STACK_OBJ * stackObj = NULL; M2_PPP_LIB_SEM_TAKE(m2pppLibSem); POPULATE_M2_PPP_KEY_ENTRY; retrievedEntryPtr = avlPredecessorGet ( m2pppIfIndexToStackObjTree, (GENERIC_ARGUMENT)((void *)&keyEntry), compareMain ); if (retrievedEntryPtr != NULL) { printf("The tree node with ifIndex = %u has maximal key < %u\n", retrievedEntryPtr->ifIndex, ifIndex); } else { printf("The tree does not have a node with ifIndex < %u \n", ifIndex); } printf("We will call m2pppInterfaceStackObjGet\n"); if (m2pppInterfaceStackObjGet(ifIndex, &stackObj) != OK) { printf("ERROR was returned by m2pppPreviousInterfaceStackObjGet\n"); } else { printf("The returned stackObj value is: %p\n", stackObj); }; M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return OK; }/*****************************************/void printNodeData(void * nodep) { M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY * aux; aux = (M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *)nodep; printf("(ht = %3d,key = %3d,",aux->avlBase.height, aux->ifIndex); if (aux->avlBase.left != NULL) { printf("left = %3d,", ((M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *) (aux->avlBase.left))->ifIndex); } else { printf("left = -,"); } if (aux->avlBase.right != NULL) { printf("right = %3d)\n", ((M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *) (aux->avlBase.right))->ifIndex); } else { printf("right = -)\n"); } }/*****************************************/STATUS m2pppLibPrintClear(void) { M2_PPP_LIB_SEM_TAKE(m2pppLibSem); if (avlTreePrintErase(m2pppIfIndexToStackObjTreePtr, printNodeData) != OK) { printf("Tree memory deallocation failed\n"); M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return ERROR; } else { if (semDelete(m2pppLibSem) != OK) { printf("semDelete failed; m2pppLibSem is likely invalid\n"); return ERROR; } else { m2pppLibSem = NULL; return OK; } } } /*****************************************/STATUS m2pppLibPrint(void) { M2_PPP_LIB_SEM_TAKE(m2pppLibSem); if (NULL == *m2pppIfIndexToStackObjTreePtr) { printf("The ifIndexToStackObjTree has no nodes\n"); M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return OK; } else if (avlTreePrint(m2pppIfIndexToStackObjTreePtr, printNodeData) != OK) { printf("avlTreePrint did not return OK\n"); M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return ERROR; } else { M2_PPP_LIB_SEM_GIVE(m2pppLibSem); return OK; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -