static eEsifError ActionConfigSignalChangeEvents( EsifUpPtr upPtr, const EsifPrimitiveTuple tuple, const EsifDataPtr requestPtr ) { eEsifError rc = ESIF_OK; eEsifEventType targetEvent = 0; char domainStr[8] = ""; esif_temp_t hysteresis_val = 0; esif_temp_t *hysteresis_ptr = NULL; esif_time_t polling_val = 0; esif_time_t *polling_ptr = NULL; ESIF_ASSERT(upPtr != NULL); switch (tuple.id) { case SET_TRIP_POINT_ACTIVE: case SET_TRIP_POINT_CRITICAL: case SET_TRIP_POINT_HOT: case SET_TRIP_POINT_PASSIVE: case SET_TRIP_POINT_WARM: targetEvent = ESIF_EVENT_PARTICIPANT_SPEC_INFO_CHANGED; break; case SET_THERMAL_RELATIONSHIP_TABLE: targetEvent = ESIF_EVENT_APP_THERMAL_RELATIONSHIP_CHANGED; break; case SET_PASSIVE_RELATIONSHIP_TABLE: targetEvent = ESIF_EVENT_PASSIVE_TABLE_CHANGED; break; case SET_ACTIVE_RELATIONSHIP_TABLE: targetEvent = ESIF_EVENT_APP_ACTIVE_RELATIONSHIP_CHANGED; break; case SET_ADAPTIVE_PERFORMANCE_CONDITIONS_TABLE: targetEvent = ESIF_EVENT_ADAPTIVE_PERFORMANCE_CONDITIONS_TABLE_CHANGED; break; case SET_ADAPTIVE_PERFORMANCE_ACTIONS_TABLE: targetEvent = ESIF_EVENT_ADAPTIVE_PERFORMANCE_ACTIONS_TABLE_CHANGED; break; case SET_ADAPTIVE_PERFORMANCE_PARTICIPANT_CONDITION_TABLE: targetEvent = ESIF_EVENT_ADAPTIVE_PERFORMANCE_PARTICIPANT_CONDITION_TABLE_CHANGED; break; case SET_VIRTUAL_SENSOR_CALIB_TABLE: targetEvent = ESIF_EVENT_VIRTUAL_SENSOR_CALIB_TABLE_CHANGED; break; case SET_VIRTUAL_SENSOR_POLLING_TABLE: targetEvent = ESIF_EVENT_VIRTUAL_SENSOR_POLLING_TABLE_CHANGED; break; case SET_RAPL_POWER_CONTROL_CAPABILITIES: targetEvent = ESIF_EVENT_DOMAIN_POWER_CAPABILITY_CHANGED; break; case SET_PROC_PERF_PSTATE_DEPTH_LIMIT: case SET_PERF_PSTATE_DEPTH_LIMIT: case SET_PERF_SUPPORT_STATE: targetEvent = ESIF_EVENT_DOMAIN_PERF_CAPABILITY_CHANGED; break; case SET_TEMPERATURE: targetEvent = ESIF_EVENT_DOMAIN_TEMP_THRESHOLD_CROSSED; break; case SET_TEMPERATURE_THRESHOLD_HYSTERESIS: targetEvent = ESIF_EVENT_PARTICIPANT_SPEC_INFO_CHANGED; if (requestPtr != NULL) { if (requestPtr->buf_ptr == NULL) { rc = ESIF_E_PARAMETER_IS_NULL; goto exit; } hysteresis_val = *(esif_temp_t *)requestPtr->buf_ptr; hysteresis_ptr = &hysteresis_val; esif_primitive_domain_str(tuple.domain, domainStr, sizeof(domainStr)); ESIF_TRACE_DEBUG("Hysteresis changed for domain:%s\n", domainStr); EsifUp_UpdateHysteresis(upPtr, tuple.domain, hysteresis_ptr); } break; case SET_PARTICIPANT_SAMPLE_PERIOD: targetEvent = 0; if (requestPtr != NULL) { if (requestPtr->buf_ptr == NULL) { rc = ESIF_E_PARAMETER_IS_NULL; goto exit; } polling_val = *(esif_time_t *)requestPtr->buf_ptr; polling_ptr = &polling_val; esif_primitive_domain_str(tuple.domain, domainStr, sizeof(domainStr)); ESIF_TRACE_DEBUG("Participant sample period changed for domain:%s\n", domainStr); EsifUp_UpdatePolling(upPtr, tuple.domain, polling_ptr); } break; case SET_DISPLAY_BRIGHTNESS_LEVELS: case SET_DISPLAY_CAPABILITY: case SET_DISPLAY_DEPTH_LIMIT: targetEvent = ESIF_EVENT_DOMAIN_DISPLAY_CAPABILITY_CHANGED; break; case SET_POWER_BOSS_CONDITIONS_TABLE: targetEvent = ESIF_EVENT_POWER_BOSS_CONDITIONS_TABLE_CHANGED; break; case SET_POWER_BOSS_ACTIONS_TABLE: targetEvent = ESIF_EVENT_POWER_BOSS_ACTIONS_TABLE_CHANGED; break; case SET_POWER_BOSS_MATH_TABLE: targetEvent = ESIF_EVENT_POWER_BOSS_MATH_TABLE_CHANGED; break; case SET_EMERGENCY_CALL_MODE_TABLE: targetEvent = ESIF_EVENT_EMERGENCY_CALL_MODE_TABLE_CHANGED; break; case SET_PID_ALGORITHM_TABLE: targetEvent = ESIF_EVENT_PID_ALGORITHM_TABLE_CHANGED; break; case SET_ACTIVE_CONTROL_POINT_RELATIONSHIP_TABLE: targetEvent = ESIF_EVENT_ACTIVE_CONTROL_POINT_RELATIONSHIP_TABLE_CHANGED; break; default: targetEvent = 0; break; } if (targetEvent > 0) { EsifEventMgr_SignalEvent(EsifUp_GetInstance(upPtr), tuple.domain, targetEvent, NULL); } exit: return rc; }
static eEsifError ActionConfigSignalChangeEvents( EsifUpPtr upPtr, const EsifFpcPrimitivePtr primitivePtr, const EsifDataPtr requestPtr ) { eEsifError rc = ESIF_OK; eEsifEventType targetEvent = 0; char domainStr[8] = ""; struct esif_data voidData = {ESIF_DATA_VOID, NULL, 0}; ESIF_ASSERT(upPtr != NULL); ESIF_ASSERT(primitivePtr != NULL); ESIF_ASSERT(requestPtr != NULL); switch (primitivePtr->tuple.id) { case SET_TRIP_POINT_ACTIVE: case SET_TRIP_POINT_CRITICAL: case SET_TRIP_POINT_HOT: case SET_TRIP_POINT_PASSIVE: case SET_TRIP_POINT_WARM: targetEvent = ESIF_EVENT_PARTICIPANT_SPEC_INFO_CHANGED; break; case SET_THERMAL_RELATIONSHIP_TABLE: targetEvent = ESIF_EVENT_APP_THERMAL_RELATIONSHIP_CHANGED; break; case SET_PASSIVE_RELATIONSHIP_TABLE: targetEvent = ESIF_EVENT_PASSIVE_TABLE_CHANGED; break; case SET_ACTIVE_RELATIONSHIP_TABLE: targetEvent = ESIF_EVENT_APP_ACTIVE_RELATIONSHIP_CHANGED; break; case SET_ADAPTIVE_PERFORMANCE_CONDITIONS_TABLE: targetEvent = ESIF_EVENT_ADAPTIVE_PERFORMANCE_CONDITIONS_CHANGED; break; case SET_ADAPTIVE_PERFORMANCE_ACTIONS_TABLE: targetEvent = ESIF_EVENT_ADAPTIVE_PERFORMANCE_ACTIONS_CHANGED; break; case SET_VIRTUAL_SENSOR_CALIB_TABLE: targetEvent = ESIF_EVENT_VIRTUAL_SENSOR_CALIB_TABLE_CHANGED; break; case SET_VIRTUAL_SENSOR_POLLING_TABLE: targetEvent = ESIF_EVENT_VIRTUAL_SENSOR_POLLING_TABLE_CHANGED; break; case SET_RAPL_POWER_CONTROL_CAPABILITIES: targetEvent = ESIF_EVENT_DOMAIN_POWER_CAPABILITY_CHANGED; break; case SET_PROC_PERF_PSTATE_DEPTH_LIMIT: case SET_PERF_PSTATE_DEPTH_LIMIT: case SET_PERF_SUPPORT_STATE: targetEvent = ESIF_EVENT_DOMAIN_PERF_CAPABILITY_CHANGED; break; case SET_TEMPERATURE: targetEvent = ESIF_EVENT_DOMAIN_TEMP_THRESHOLD_CROSSED; break; case SET_TEMPERATURE_THRESHOLD_HYSTERESIS: targetEvent = ESIF_EVENT_PARTICIPANT_SPEC_INFO_CHANGED; if (requestPtr->buf_ptr == NULL) { rc = ESIF_E_PARAMETER_IS_NULL; goto exit; } esif_primitive_domain_str(primitivePtr->tuple.domain, domainStr, sizeof(domainStr)); ESIF_TRACE_DEBUG("Hysteresis changed for domain:%s\n", domainStr); EsifUp_UpdateHysteresis(upPtr, primitivePtr->tuple.domain, *(esif_temp_t *) requestPtr->buf_ptr); break; case SET_PARTICIPANT_SAMPLE_PERIOD: targetEvent = 0; if (requestPtr->buf_ptr == NULL) { rc = ESIF_E_PARAMETER_IS_NULL; goto exit; } esif_primitive_domain_str(primitivePtr->tuple.domain, domainStr, sizeof(domainStr)); ESIF_TRACE_DEBUG("Participant sample period changed for domain:%s\n", domainStr); EsifUp_UpdatePolling(upPtr, primitivePtr->tuple.domain, *(UInt32 *) requestPtr->buf_ptr); break; case SET_DISPLAY_BRIGHTNESS_LEVELS: case SET_DISPLAY_CAPABILITY: case SET_DISPLAY_DEPTH_LIMIT: targetEvent = ESIF_EVENT_DOMAIN_DISPLAY_CAPABILITY_CHANGED; break; case SET_PDR_TABLE: targetEvent = ESIF_EVENT_OS_POWER_SOURCE_CHANGED; break; default: targetEvent = 0; break; } if (targetEvent > 0) { EsifEventMgr_SignalEvent(upPtr->fInstance, primitivePtr->tuple.domain, targetEvent, &voidData); } exit: return rc; }