v_UINT_t tx_timer_create_intern_debug( v_PVOID_t pMacGlobal, TX_TIMER *timer_ptr, char *name_ptr, v_VOID_t ( *expiration_function )( v_PVOID_t, tANI_U32 ), tANI_U32 expiration_input, v_ULONG_t initScheduleTimeInTicks, v_ULONG_t rescheduleTimeInTicks, v_ULONG_t auto_activate, char* fileName, v_U32_t lineNum) { VOS_STATUS status; VOS_ASSERT((NULL != expiration_function) && (NULL != name_ptr)); if (!initScheduleTimeInTicks) return TX_TICK_ERROR; if (!timer_ptr) return TX_TIMER_ERROR; // Initialize timer structure timer_ptr->pExpireFunc = expiration_function; timer_ptr->expireInput = expiration_input; timer_ptr->initScheduleTimeInMsecs = TX_MSECS_IN_1_TICK * initScheduleTimeInTicks; timer_ptr->rescheduleTimeInMsecs = TX_MSECS_IN_1_TICK * rescheduleTimeInTicks; timer_ptr->pMac = pMacGlobal; // Set the flag indicating that the timer was created timer_ptr->tmrSignature = TX_AIRGO_TMR_SIGNATURE; #ifdef WLAN_DEBUG // Store the timer name strlcpy(timer_ptr->timerName, name_ptr, sizeof(timer_ptr->timerName)); #endif // Store the timer name, for Debug build only status = vos_timer_init_debug( &timer_ptr->vosTimer, VOS_TIMER_TYPE_SW, tx_main_timer_func, (v_PVOID_t)timer_ptr, fileName, lineNum); if (VOS_STATUS_SUCCESS != status) { VOS_TRACE(VOS_MODULE_ID_SYS, VOS_TRACE_LEVEL_ERROR, "Cannot create timer for %s\n", TIMER_NAME); return TX_TIMER_ERROR; } if(0 != rescheduleTimeInTicks) { VOS_TRACE(VOS_MODULE_ID_SYS, VOS_TRACE_LEVEL_INFO, "Creating periodic timer for %s\n", TIMER_NAME); } // Activate this timer if required if (auto_activate) { tx_timer_activate(timer_ptr); } return TX_SUCCESS; } //** tx_timer_create() ***/
eHalStatus palTimerAlloc_debug( tHddHandle hHdd, tPalTimerHandle *phPalTimer, palTimerCallback pCallback, void *pContext, char* fileName, v_U32_t lineNum ) { eHalStatus halStatus = eHAL_STATUS_FAILURE; tPalTimer *pPalTimer = NULL; VOS_STATUS vosStatus; do { // allocate the internal timer structure. pPalTimer = vos_mem_malloc( sizeof( tPalTimer ) ); if ( NULL == pPalTimer ) break; // initialize the vos Timer that underlies the pal Timer. vosStatus = vos_timer_init_debug( &pPalTimer->vosTimer, VOS_TIMER_TYPE_SW, internalTimerCallback, pPalTimer, fileName, lineNum ); if ( !VOS_IS_STATUS_SUCCESS( vosStatus ) ) { // if fail to init the vos timer, free the memory and bail out. vos_mem_free( pPalTimer ); break; } // initialize the info in the internal palTimer struct so we can pPalTimer->timerCallback = pCallback; pPalTimer->pContext = pContext; pPalTimer->hHdd = hHdd; // return a 'handle' to the caller. *phPalTimer = pPalTimer; halStatus = eHAL_STATUS_SUCCESS; } while( 0 ); return( halStatus ); }