Compare commits
No commits in common. 'i10c-beta' and 'c9' have entirely different histories.
@ -1 +1 @@
|
||||
SOURCES/thermald-2.5.7.tar.gz
|
||||
SOURCES/thermald-2.5.3.tar.gz
|
||||
|
@ -1 +1 @@
|
||||
9f25aa76ef217902dcab53f225e7d6953da55e5f SOURCES/thermald-2.5.7.tar.gz
|
||||
80b8e3f6d847979ef5f64e002e8ee10e3f7b1bec SOURCES/thermald-2.5.3.tar.gz
|
||||
|
@ -1,846 +0,0 @@
|
||||
From 2ffbdf7cabe94a79eab77ba3ddeb8fd0506a93f7 Mon Sep 17 00:00:00 2001
|
||||
From: Kate Hsuan <hpa@redhat.com>
|
||||
Date: Tue, 16 Apr 2024 16:53:17 +0800
|
||||
Subject: [PATCH 1/4] main: remove deprecated API
|
||||
|
||||
g_type_init() was deprecated since Glib 2.36.
|
||||
---
|
||||
src/main.cpp | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/src/main.cpp b/src/main.cpp
|
||||
index 34715cb8..135fa3ff 100644
|
||||
--- a/src/main.cpp
|
||||
+++ b/src/main.cpp
|
||||
@@ -322,9 +322,6 @@ int main(int argc, char *argv[]) {
|
||||
g_unix_signal_add (SIGTERM, G_SOURCE_FUNC (sig_int_handler), NULL);
|
||||
}
|
||||
|
||||
- // Initialize the GType/GObject system
|
||||
- g_type_init();
|
||||
-
|
||||
// Create a main loop that will dispatch callbacks
|
||||
g_main_loop = g_main_loop_new(NULL, FALSE);
|
||||
if (g_main_loop == NULL) {
|
||||
|
||||
From 4aeed1e59a2901d95aefe881673842b9785c8cfa Mon Sep 17 00:00:00 2001
|
||||
From: Kate Hsuan <hpa@redhat.com>
|
||||
Date: Tue, 16 Apr 2024 16:56:31 +0800
|
||||
Subject: [PATCH 2/4] thd_engine_default: Drop modem support
|
||||
|
||||
Don't new a intel_modem object.
|
||||
---
|
||||
src/thd_engine_default.cpp | 16 +---------------
|
||||
1 file changed, 1 insertion(+), 15 deletions(-)
|
||||
|
||||
diff --git a/src/thd_engine_default.cpp b/src/thd_engine_default.cpp
|
||||
index a81ecb39..330cc51d 100644
|
||||
--- a/src/thd_engine_default.cpp
|
||||
+++ b/src/thd_engine_default.cpp
|
||||
@@ -48,9 +48,6 @@
|
||||
#include "thd_sensor_rapl_power.h"
|
||||
#include "thd_zone_rapl_power.h"
|
||||
|
||||
-#ifdef GLIB_SUPPORT
|
||||
-#include "thd_cdev_modem.h"
|
||||
-#endif
|
||||
|
||||
// Default CPU cooling devices, which are not part of thermal sysfs
|
||||
// Since non trivial initialization is not supported, we init all fields even if they are not needed
|
||||
@@ -622,18 +619,7 @@ int cthd_engine_default::add_replace_cdev(cooling_dev_t *config) {
|
||||
}
|
||||
if (!cdev_present) {
|
||||
// create new
|
||||
- if (config->type_string.compare("intel_modem") == 0) {
|
||||
-#ifdef GLIB_SUPPORT
|
||||
- /*
|
||||
- * Add Modem as cdev
|
||||
- * intel_modem is a modem identifier across all intel platforms.
|
||||
- * The differences between the modems of various intel platforms
|
||||
- * are to be taken care in the cdev implementation.
|
||||
- */
|
||||
- cdev = new cthd_cdev_modem(current_cdev_index, config->path_str);
|
||||
-#endif
|
||||
- } else
|
||||
- cdev = new cthd_gen_sysfs_cdev(current_cdev_index, config->path_str);
|
||||
+ cdev = new cthd_gen_sysfs_cdev(current_cdev_index, config->path_str);
|
||||
if (!cdev)
|
||||
return THD_ERROR;
|
||||
cdev->set_cdev_type(config->type_string);
|
||||
|
||||
From 7fa7a2e0408d8efe570139c48c32afefc84480e9 Mon Sep 17 00:00:00 2001
|
||||
From: Kate Hsuan <hpa@redhat.com>
|
||||
Date: Tue, 16 Apr 2024 17:14:16 +0800
|
||||
Subject: [PATCH 3/4] build: remove thd_cdev_modem and dbus-glib
|
||||
|
||||
thd_cdev_modem.cpp and .h were dropped. Moreover, dbus-glib was
|
||||
dropped from the build scripts.
|
||||
---
|
||||
Makefile.am | 12 +-
|
||||
configure.ac | 12 +-
|
||||
src/thd_cdev_modem.cpp | 521 -----------------------------------------
|
||||
src/thd_cdev_modem.h | 64 -----
|
||||
src/thermald.h | 3 -
|
||||
5 files changed, 3 insertions(+), 609 deletions(-)
|
||||
delete mode 100644 src/thd_cdev_modem.cpp
|
||||
delete mode 100644 src/thd_cdev_modem.h
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index dd2ef103..996388a3 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -5,9 +5,9 @@ SUBDIRS = . docs data
|
||||
ACLOCAL_AMFLAGS =
|
||||
|
||||
# Global C Flags
|
||||
-AM_CFLAGS = ${DBUS_CFLAGS}
|
||||
+AM_CFLAGS = ${GLIB_CFLAGS}
|
||||
AM_CXXFLAGS = \
|
||||
- ${DBUS_CFLAGS} \
|
||||
+ $(GLIB_CFLAGS) \
|
||||
$(XML_CFLAGS) \
|
||||
$(UPOWER_CFLAGS) \
|
||||
$(EVDEV_CFLAGS) \
|
||||
@@ -30,7 +30,6 @@ thermald_CPPFLAGS = \
|
||||
|
||||
thermald_includedir = @top_srcdir@
|
||||
thermald_LDADD = \
|
||||
- $(DBUS_LIBS) \
|
||||
$(GLIB_LIBS) \
|
||||
$(LIBNL_LIBS) \
|
||||
$(LIBM) \
|
||||
@@ -39,9 +38,6 @@ thermald_LDADD = \
|
||||
$(UPOWER_LIBS) \
|
||||
$(EVDEV_LIBS)
|
||||
|
||||
-BUILT_SOURCES = \
|
||||
- thd_dbus_interface.h \
|
||||
- thermald-resource.c
|
||||
|
||||
thermald_SOURCES = \
|
||||
src/main.cpp \
|
||||
@@ -74,7 +70,6 @@ thermald_SOURCES = \
|
||||
src/thd_cdev_rapl_dram.cpp \
|
||||
src/thd_cpu_default_binding.cpp \
|
||||
src/thd_cdev_backlight.cpp \
|
||||
- src/thd_cdev_modem.cpp \
|
||||
src/thd_int3400.cpp \
|
||||
src/thd_cdev_kbl_amdgpu.cpp \
|
||||
src/thd_sensor_kbl_amdgpu_power.cpp \
|
||||
@@ -93,9 +88,6 @@ thermald_SOURCES = \
|
||||
man5_MANS = man/thermal-conf.xml.5
|
||||
man8_MANS = man/thermald.8
|
||||
|
||||
-thd_dbus_interface.h: $(top_srcdir)/src/thd_dbus_interface.xml
|
||||
- $(AM_V_GEN) dbus-binding-tool --prefix=thd_dbus_interface --mode=glib-server --output=$@ $<
|
||||
-
|
||||
thermald-resource.c: $(top_srcdir)/thermald-resource.gresource.xml
|
||||
$(AM_V_GEN) glib-compile-resources --generate-source thermald-resource.gresource.xml
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 334f38fe..b72019e4 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -62,20 +62,10 @@ GETTEXT_PACKAGE=thermald
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package])
|
||||
|
||||
-dnl
|
||||
-dnl Checks for new dbus-glib property access function
|
||||
-dnl
|
||||
-AC_CHECK_LIB([dbus-glib-1], [dbus_glib_global_set_disable_legacy_property_access], ac_have_dg_prop="1", ac_have_dg_prop="0")
|
||||
-AC_DEFINE_UNQUOTED(HAVE_DBUS_GLIB_DISABLE_LEGACY_PROP_ACCESS, $ac_have_dg_prop, [Define if you have a dbus-glib with dbus_glib_global_set_disable_legacy_property_access()])
|
||||
-
|
||||
-PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.1 dbus-glib-1 >= 0.94)
|
||||
-AC_SUBST(DBUS_CFLAGS)
|
||||
-AC_SUBST(DBUS_LIBS)
|
||||
-
|
||||
GLIB_VERSION_DEFINES="-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26"
|
||||
DBUS_CFLAGS="$DBUS_CFLAGS $GLIB_VERSION_DEFINES"
|
||||
|
||||
-PKG_CHECK_MODULES(GLIB, gio-unix-2.0 >= 2.22 gmodule-2.0)
|
||||
+PKG_CHECK_MODULES(GLIB, gio-unix-2.0 >= 2.22 gmodule-2.0 glib-2.0)
|
||||
GLIB_CFLAGS="$GLIB_CFLAGS $GLIB_VERSION_DEFINES"
|
||||
AC_SUBST(GLIB_CFLAGS)
|
||||
AC_SUBST(GLIB_LIBS)
|
||||
diff --git a/src/thd_cdev_modem.cpp b/src/thd_cdev_modem.cpp
|
||||
deleted file mode 100644
|
||||
index 6c3ff6cb..00000000
|
||||
--- a/src/thd_cdev_modem.cpp
|
||||
+++ /dev/null
|
||||
@@ -1,521 +0,0 @@
|
||||
-/*
|
||||
- * thd_cdev_modem.cpp: thermal modem cooling implementation
|
||||
- * Copyright (c) 2016, Intel Corporation.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify it
|
||||
- * under the terms and conditions of the GNU General Public License
|
||||
- * version 2 or later as published by the Free Software Foundation.
|
||||
- *
|
||||
- * This program is distributed in the hope it will be useful, but WITHOUT
|
||||
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
- * more details.
|
||||
- *
|
||||
- *
|
||||
- * Author Name <Rajagopalx.Aravindan@intel.com>
|
||||
- *
|
||||
- */
|
||||
-
|
||||
-/*
|
||||
- * Modem Throttling Levels:
|
||||
- * 0 - Disabled or No Throttling
|
||||
- * 1 - Enabled
|
||||
- */
|
||||
-
|
||||
-#include <stdint.h>
|
||||
-#include <dbus/dbus.h>
|
||||
-#include <string.h>
|
||||
-
|
||||
-#include "thd_cdev_modem.h"
|
||||
-
|
||||
-int cthd_cdev_modem::parse_ofono_property_changed_signal(DBusMessage* msg,
|
||||
- const char* interface, const char* signal, const char* property,
|
||||
- dbus_bool_t* new_value) {
|
||||
- DBusMessageIter iter;
|
||||
- DBusMessageIter var;
|
||||
-
|
||||
- char *property_name;
|
||||
-
|
||||
- dbus_message_iter_init(msg, &iter);
|
||||
-
|
||||
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) {
|
||||
- thd_log_error("Invalid arguments in %s[%s]", interface, signal);
|
||||
- return THD_ERROR;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_get_basic(&iter, &property_name);
|
||||
-
|
||||
- if (strlen(property) != strlen(property_name)
|
||||
- || strcmp(property, property_name)) {
|
||||
- thd_log_error("Unsupported property : %s", property_name);
|
||||
- return THD_ERROR;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_next(&iter);
|
||||
-
|
||||
- if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) {
|
||||
- thd_log_error("Invalid arguments in %s[%s(%s)]", interface, signal,
|
||||
- property);
|
||||
- return THD_ERROR;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_recurse(&iter, &var);
|
||||
-
|
||||
- if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_BOOLEAN) {
|
||||
- thd_log_error("Invalid arguments in %s[%s(%s)]", interface, signal,
|
||||
- property);
|
||||
- return THD_ERROR;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_get_basic(&var, new_value);
|
||||
-
|
||||
- return THD_SUCCESS;
|
||||
-}
|
||||
-
|
||||
-DBusHandlerResult cthd_cdev_modem::ofono_signal_handler(DBusConnection *conn,
|
||||
- DBusMessage *msg, void *user_data) {
|
||||
- DBusError error;
|
||||
- cthd_cdev_modem *cdev_modem = (cthd_cdev_modem *) user_data;
|
||||
-
|
||||
- const char *signal = "PropertyChanged";
|
||||
-
|
||||
- dbus_error_init(&error);
|
||||
-
|
||||
- if (dbus_message_is_signal(msg, THERMAL_MANAGEMENT_INTERFACE, signal)) {
|
||||
- dbus_bool_t throttling;
|
||||
-
|
||||
- if (parse_ofono_property_changed_signal(msg,
|
||||
- THERMAL_MANAGEMENT_INTERFACE, signal, "TransmitPowerThrottling",
|
||||
- &throttling) != THD_SUCCESS)
|
||||
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
-
|
||||
- if (cdev_modem) {
|
||||
- cdev_modem->set_throttling_state(throttling ? true : false);
|
||||
-
|
||||
- cdev_modem->update_online_state(conn);
|
||||
- cdev_modem->update_throttling_state(conn);
|
||||
- thd_log_debug("TransmitPowerThrottling Initiated");
|
||||
- }
|
||||
-
|
||||
- return DBUS_HANDLER_RESULT_HANDLED;
|
||||
- } else if (dbus_message_is_signal(msg, MODEM_INTERFACE, signal)) {
|
||||
- dbus_bool_t online;
|
||||
-
|
||||
- if (parse_ofono_property_changed_signal(msg, MODEM_INTERFACE, signal,
|
||||
- "Online", &online) != THD_SUCCESS)
|
||||
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
-
|
||||
- if (cdev_modem) {
|
||||
- cdev_modem->set_online_state(online ? true : false);
|
||||
- cdev_modem->update_online_state(conn);
|
||||
- cdev_modem->update_throttling_state(conn);
|
||||
- thd_log_debug("Modem online Initiated");
|
||||
- }
|
||||
-
|
||||
- return DBUS_HANDLER_RESULT_HANDLED;
|
||||
- }
|
||||
-
|
||||
- return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
-}
|
||||
-
|
||||
-cthd_cdev_modem::cthd_cdev_modem(unsigned int _index, std::string control_path) :
|
||||
- cthd_cdev(_index, "") {
|
||||
- throttling = false;
|
||||
- online = false;
|
||||
-
|
||||
- if (control_path.length() > 0)
|
||||
- modem_path.assign(control_path);
|
||||
- else
|
||||
- modem_path.assign("/ril_0");
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::get_modem_property(DBusConnection* conn,
|
||||
- const char* interface, const char* property, bool* value) {
|
||||
- DBusError error;
|
||||
- DBusMessage *msg;
|
||||
- DBusMessage *reply;
|
||||
- DBusMessageIter array;
|
||||
- DBusMessageIter dict;
|
||||
- int rc = THD_ERROR;
|
||||
-
|
||||
- dbus_error_init(&error);
|
||||
-
|
||||
- msg = dbus_message_new_method_call("org.ofono", modem_path.c_str(),
|
||||
- interface, "GetProperties");
|
||||
- if (msg == NULL) {
|
||||
- thd_log_error("Error creating D-Bus message for GetProperties "
|
||||
- "under %s : %s\n", modem_path.c_str(), error.message);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- reply = dbus_connection_send_with_reply_and_block(conn, msg, 10000, &error);
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- thd_log_error("Error invoking GetProperties under %s : %s\n",
|
||||
- modem_path.c_str(), error.message);
|
||||
- dbus_error_free(&error);
|
||||
- dbus_message_unref(msg);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- dbus_message_unref(msg);
|
||||
-
|
||||
- dbus_message_iter_init(reply, &array);
|
||||
- if (dbus_message_iter_get_arg_type(&array) != DBUS_TYPE_ARRAY) {
|
||||
- thd_log_error("GetProperties return type not array under %s!\n",
|
||||
- modem_path.c_str());
|
||||
- dbus_message_unref(reply);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_recurse(&array, &dict);
|
||||
-
|
||||
- while (dbus_message_iter_get_arg_type(&dict) == DBUS_TYPE_DICT_ENTRY) {
|
||||
- DBusMessageIter key, var;
|
||||
-
|
||||
- char *property_name;
|
||||
-
|
||||
- dbus_message_iter_recurse(&dict, &key);
|
||||
-
|
||||
- if (dbus_message_iter_get_arg_type(&key) != DBUS_TYPE_STRING) {
|
||||
- thd_log_error("GetProperties dict key type not string "
|
||||
- "under %s!\n", modem_path.c_str());
|
||||
- dbus_message_unref(reply);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_get_basic(&key, &property_name);
|
||||
-
|
||||
- /* Check if, this is the property we are interested in */
|
||||
- if (strlen(property) != strlen(property_name)
|
||||
- || strcmp(property, property_name)) {
|
||||
- dbus_message_iter_next(&dict);
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_next(&key);
|
||||
-
|
||||
- if (dbus_message_iter_get_arg_type(&key) != DBUS_TYPE_VARIANT) {
|
||||
- thd_log_error("GetProperties dict value type not "
|
||||
- "variant under %s!\n", modem_path.c_str());
|
||||
- dbus_message_unref(reply);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_recurse(&key, &var);
|
||||
-
|
||||
- if (dbus_message_iter_get_arg_type(&var) != DBUS_TYPE_BOOLEAN) {
|
||||
- thd_log_error("GetProperties dict value(1) type not "
|
||||
- "boolean under %s!\n", modem_path.c_str());
|
||||
- dbus_message_unref(reply);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_get_basic(&var, value);
|
||||
- rc = THD_SUCCESS;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- dbus_message_unref(reply);
|
||||
-
|
||||
- return rc;
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::update_online_state(DBusConnection* conn) {
|
||||
- bool online_state;
|
||||
-
|
||||
- if (get_modem_property(conn, MODEM_INTERFACE, "Online",
|
||||
- &online_state) == THD_SUCCESS) {
|
||||
- online = online_state;
|
||||
- return THD_SUCCESS;
|
||||
- }
|
||||
-
|
||||
- return THD_ERROR;
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::update_throttling_state(DBusConnection *conn) {
|
||||
- bool enabled;
|
||||
-
|
||||
- if (get_modem_property(conn, THERMAL_MANAGEMENT_INTERFACE,
|
||||
- "TransmitPowerThrottling", &enabled) == THD_SUCCESS) {
|
||||
- throttling = enabled;
|
||||
- return THD_SUCCESS;
|
||||
- }
|
||||
-
|
||||
- return THD_ERROR;
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::update() {
|
||||
- DBusConnection *conn;
|
||||
- DBusError error;
|
||||
- std::string thermal_management_dbus_rule, modem_dbus_rule;
|
||||
-
|
||||
- /* Modem has only 2 throttling states, enabled or disabled */
|
||||
- min_state = MODEM_THROTTLING_DISABLED;
|
||||
- max_state = MODEM_THROTTLING_ENABLED;
|
||||
-
|
||||
- dbus_error_init(&error);
|
||||
-
|
||||
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- thd_log_error("Error connecting to system bus: %s:\n", error.message);
|
||||
- dbus_error_free(&error);
|
||||
- return THD_ERROR;
|
||||
- }
|
||||
-
|
||||
- dbus_connection_setup_with_g_main(conn, NULL);
|
||||
-
|
||||
- /*
|
||||
- * Add a match rule as below ...
|
||||
- * Type : Signal
|
||||
- * From-Interface : org.ofono.Modem
|
||||
- * Signal Name : PropertyChanged
|
||||
- * Property Name : Online
|
||||
- */
|
||||
- modem_dbus_rule.append("type='signal'");
|
||||
- modem_dbus_rule.append(",path='").append(modem_path).append("'");
|
||||
- modem_dbus_rule.append(",interface='" MODEM_INTERFACE "'");
|
||||
- modem_dbus_rule.append(",member='PropertyChanged'");
|
||||
- modem_dbus_rule.append(",arg0='Online'");
|
||||
-
|
||||
- dbus_bus_add_match(conn, modem_dbus_rule.c_str(), &error);
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- thd_log_error("Error adding D-Bus rule \"%s\" : %s",
|
||||
- modem_dbus_rule.c_str(), error.message);
|
||||
- dbus_error_free(&error);
|
||||
- return THD_ERROR;
|
||||
- }
|
||||
-
|
||||
- /*
|
||||
- * Add a match rule as below ...
|
||||
- * Type : Signal
|
||||
- * From-Interface : org.ofono.sofia3gr.ThermalManagement
|
||||
- * Signal Name : PropertyChanged
|
||||
- * Property Name : TransmitPowerThrottling
|
||||
- */
|
||||
- thermal_management_dbus_rule.append("type='signal'");
|
||||
- thermal_management_dbus_rule.append(",path='").append(modem_path).append(
|
||||
- "'");
|
||||
- thermal_management_dbus_rule.append(",interface='").append(
|
||||
- THERMAL_MANAGEMENT_INTERFACE).append("'");
|
||||
- thermal_management_dbus_rule.append(",member='PropertyChanged'");
|
||||
- thermal_management_dbus_rule.append(",arg0='TransmitPowerThrottling'");
|
||||
-
|
||||
- dbus_bus_add_match(conn, thermal_management_dbus_rule.c_str(), &error);
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- thd_log_error("Error adding D-Bus rule \"%s\" : %s",
|
||||
- thermal_management_dbus_rule.c_str(), error.message);
|
||||
- dbus_error_free(&error);
|
||||
- return THD_ERROR;
|
||||
- }
|
||||
-
|
||||
- /* Register a handler for the above added rules */
|
||||
- dbus_connection_add_filter(conn, ofono_signal_handler, this, NULL);
|
||||
-
|
||||
- return THD_SUCCESS;
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::get_curr_state() {
|
||||
-
|
||||
- if (!online) {
|
||||
- update_throttling_state();
|
||||
- }
|
||||
-
|
||||
- if (throttling) {
|
||||
- curr_state = MODEM_THROTTLING_ENABLED;
|
||||
- thd_log_debug("Modem currently under throttling\n");
|
||||
- } else {
|
||||
- curr_state = MODEM_THROTTLING_DISABLED;
|
||||
- thd_log_debug("Modem currently not under throttling\n");
|
||||
- }
|
||||
-
|
||||
- return curr_state;
|
||||
-}
|
||||
-
|
||||
-void cthd_cdev_modem::update_throttling_state() {
|
||||
-
|
||||
- DBusConnection *conn;
|
||||
- DBusError error;
|
||||
-
|
||||
- dbus_error_init(&error);
|
||||
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
|
||||
-
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- thd_log_error("Error: %s", error.message);
|
||||
- dbus_error_free(&error);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- dbus_connection_setup_with_g_main(conn, NULL);
|
||||
-
|
||||
- if (is_interface_up(conn) == THD_ERROR) {
|
||||
- thd_log_warn("Thermal Interface not ready\n");
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- update_online_state(conn);
|
||||
- update_throttling_state(conn);
|
||||
-
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::is_interface_up(DBusConnection *conn) {
|
||||
-
|
||||
- DBusError error;
|
||||
- DBusMessage *msg;
|
||||
- DBusMessage *reply;
|
||||
- int rc = THD_ERROR;
|
||||
-
|
||||
- dbus_error_init(&error);
|
||||
-
|
||||
- msg = dbus_message_new_method_call("org.ofono", modem_path.c_str(),
|
||||
- THERMAL_MANAGEMENT_INTERFACE, "GetProperties");
|
||||
-
|
||||
- if (msg == NULL) {
|
||||
- thd_log_error("Error creating D-Bus message for GetProperties "
|
||||
- "under %s : %s\n", modem_path.c_str(), error.message);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- reply = dbus_connection_send_with_reply_and_block(conn, msg, 10000, &error);
|
||||
-
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- dbus_error_free(&error);
|
||||
- dbus_message_unref(msg);
|
||||
- return rc;
|
||||
- }
|
||||
-
|
||||
- dbus_message_unref(msg);
|
||||
- dbus_message_unref(reply);
|
||||
-
|
||||
- return THD_SUCCESS;
|
||||
-}
|
||||
-
|
||||
-void cthd_cdev_modem::set_curr_state(int state, int arg) {
|
||||
-
|
||||
- DBusConnection *conn;
|
||||
- DBusError error;
|
||||
-
|
||||
- dbus_error_init(&error);
|
||||
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
|
||||
-
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- thd_log_error("Error : %s", error.message);
|
||||
- dbus_error_free(&error);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- dbus_connection_setup_with_g_main(conn, NULL);
|
||||
-
|
||||
- update_online_state(conn);
|
||||
-
|
||||
- switch (state) {
|
||||
- case MODEM_THROTTLING_ENABLED:
|
||||
- if (!online)
|
||||
- thd_log_debug("Modem not yet online, hence "
|
||||
- "ignoring throttle request\n");
|
||||
- else if (throttling)
|
||||
- thd_log_debug("Modem already throttled, hence "
|
||||
- "ignoring throttle request\n");
|
||||
- else {
|
||||
- thd_log_debug("Initiating modem throttling\n");
|
||||
- throttle_modem(state);
|
||||
- update_throttling_state(conn);
|
||||
- }
|
||||
- break;
|
||||
-
|
||||
- case MODEM_THROTTLING_DISABLED:
|
||||
- if (!online)
|
||||
- thd_log_debug("Modem not yet online, hence "
|
||||
- "ignoring de-throttle request\n");
|
||||
- else if (!throttling)
|
||||
- thd_log_debug("Modem already de-throttled, hence "
|
||||
- "ignoring de-throttle request\n");
|
||||
- else {
|
||||
- thd_log_debug("Initiating modem de-throttling\n");
|
||||
- throttle_modem(state);
|
||||
- update_throttling_state(conn);
|
||||
- }
|
||||
- break;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::get_max_state() {
|
||||
- return max_state;
|
||||
-}
|
||||
-
|
||||
-int cthd_cdev_modem::is_throttling() {
|
||||
- return throttling;
|
||||
-}
|
||||
-
|
||||
-void cthd_cdev_modem::set_throttling_state(bool enabled) {
|
||||
- throttling = enabled;
|
||||
-}
|
||||
-
|
||||
-bool cthd_cdev_modem::is_online() {
|
||||
- return online;
|
||||
-}
|
||||
-
|
||||
-void cthd_cdev_modem::set_online_state(bool on) {
|
||||
- online = on;
|
||||
-}
|
||||
-
|
||||
-void cthd_cdev_modem::throttle_modem(int state) {
|
||||
- DBusConnection *conn;
|
||||
- DBusError error;
|
||||
-
|
||||
- DBusMessage *msg;
|
||||
- DBusMessageIter iter;
|
||||
- DBusMessageIter var;
|
||||
-
|
||||
- const char *property = "TransmitPowerThrottling";
|
||||
-
|
||||
- dbus_bool_t enable;
|
||||
-
|
||||
- char var_sig[] = { DBUS_TYPE_BOOLEAN, 0 };
|
||||
-
|
||||
- dbus_error_init(&error);
|
||||
-
|
||||
- conn = dbus_bus_get(DBUS_BUS_SYSTEM, &error);
|
||||
- if (dbus_error_is_set(&error)) {
|
||||
- thd_log_error("Couldn't connect to system bus: %s:\n", error.message);
|
||||
- dbus_error_free(&error);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- msg = dbus_message_new_method_call("org.ofono", modem_path.c_str(),
|
||||
- THERMAL_MANAGEMENT_INTERFACE, "SetProperty");
|
||||
- if (msg == NULL) {
|
||||
- thd_log_error("Couldn't create D-Bus message for SetProperty "
|
||||
- "under %s : %s\n", modem_path.c_str(), error.message);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- enable = (state == MODEM_THROTTLING_ENABLED) ? true : false;
|
||||
-
|
||||
- dbus_message_iter_init_append(msg, &iter);
|
||||
-
|
||||
- if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &property)) {
|
||||
- thd_log_error("Error populating modem %s arguments: %s\n",
|
||||
- enable ? "throttle" : "de-throttle", error.message);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, var_sig, &var);
|
||||
-
|
||||
- if (!dbus_message_iter_append_basic(&var, DBUS_TYPE_BOOLEAN, &enable)) {
|
||||
- thd_log_error("Error populating modem %s arguments: %s\n",
|
||||
- enable ? "throttle" : "de-throttle", error.message);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- dbus_message_iter_close_container(&iter, &var);
|
||||
-
|
||||
- // send message
|
||||
- if (!dbus_connection_send(conn, msg, NULL)) {
|
||||
- thd_log_error("Error sending modem throttle message to %s !\n",
|
||||
- modem_path.c_str());
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- dbus_connection_flush(conn);
|
||||
- dbus_message_unref(msg);
|
||||
-}
|
||||
diff --git a/src/thd_cdev_modem.h b/src/thd_cdev_modem.h
|
||||
deleted file mode 100644
|
||||
index c88ae7e0..00000000
|
||||
--- a/src/thd_cdev_modem.h
|
||||
+++ /dev/null
|
||||
@@ -1,64 +0,0 @@
|
||||
-/*
|
||||
- * thd_cdev_modem.h: thermal modem cooling interface
|
||||
- * Copyright (c) 2016, Intel Corporation.
|
||||
- *
|
||||
- * This program is free software; you can redistribute it and/or modify it
|
||||
- * under the terms and conditions of the GNU General Public License
|
||||
- * version 2 or later as published by the Free Software Foundation.
|
||||
- *
|
||||
- * This program is distributed in the hope it will be useful, but WITHOUT
|
||||
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
- * more details.
|
||||
- *
|
||||
- *
|
||||
- * Author Name <Rajagopalx.Aravindan@intel.com>
|
||||
- *
|
||||
- */
|
||||
-
|
||||
-#ifndef THD_CDEV_MODEM_H_
|
||||
-#define THD_CDEV_MODEM_H_
|
||||
-
|
||||
-#include "thd_cdev.h"
|
||||
-
|
||||
-#define MODEM_INTERFACE "org.ofono.Modem"
|
||||
-#define THERMAL_MANAGEMENT_INTERFACE "org.ofono.sofia3gr.ThermalManagement"
|
||||
-
|
||||
-enum modem_throttling_state {
|
||||
- MODEM_THROTTLING_DISABLED = 0, MODEM_THROTTLING_ENABLED,
|
||||
-};
|
||||
-
|
||||
-class cthd_cdev_modem: public cthd_cdev {
|
||||
-private:
|
||||
- std::string modem_path;
|
||||
- bool online;
|
||||
- bool throttling;
|
||||
-
|
||||
- bool is_online(void);
|
||||
- void set_online_state(bool);
|
||||
- int is_throttling(void);
|
||||
- void set_throttling_state(bool);
|
||||
- void throttle_modem(int state);
|
||||
-
|
||||
-public:
|
||||
- cthd_cdev_modem(unsigned int _index, std::string control_path);
|
||||
- int get_curr_state(void);
|
||||
- void set_curr_state(int state, int arg);
|
||||
- int get_max_state(void);
|
||||
- int get_modem_property(DBusConnection *conn, const char *interface,
|
||||
- const char *property, bool *value);
|
||||
- int update_online_state(DBusConnection *conn);
|
||||
- int update_throttling_state(DBusConnection *conn);
|
||||
- int update(void);
|
||||
- void update_throttling_state(void);
|
||||
- int is_interface_up(DBusConnection *conn);
|
||||
-
|
||||
- static DBusHandlerResult
|
||||
- ofono_signal_handler(DBusConnection *conn, DBusMessage *msg,
|
||||
- void *user_data);
|
||||
-
|
||||
- static int
|
||||
- parse_ofono_property_changed_signal(DBusMessage *msg, const char *interface,
|
||||
- const char *signal, const char *property, dbus_bool_t *value);
|
||||
-};
|
||||
-#endif /* THD_CDEV_MODEM_H_ */
|
||||
diff --git a/src/thermald.h b/src/thermald.h
|
||||
index 45ee3b10..286c659d 100644
|
||||
--- a/src/thermald.h
|
||||
+++ b/src/thermald.h
|
||||
@@ -69,9 +69,6 @@
|
||||
#define LOCKF_SUPPORT
|
||||
#ifdef GLIB_SUPPORT
|
||||
#include <glib.h>
|
||||
-#include <dbus/dbus.h>
|
||||
-#include <dbus/dbus-glib-lowlevel.h>
|
||||
-#include <dbus/dbus-glib.h>
|
||||
#include <glib/gi18n.h>
|
||||
#include <gmodule.h>
|
||||
|
||||
|
||||
From 9124d3645dc174709b203849ff70abf989702f17 Mon Sep 17 00:00:00 2001
|
||||
From: Kate Hsuan <hpa@redhat.com>
|
||||
Date: Tue, 16 Apr 2024 17:39:00 +0800
|
||||
Subject: [PATCH 4/4] main: unown dbus name when thermald is terminated
|
||||
|
||||
Unown the dbus name when thermeld is terminated.
|
||||
---
|
||||
src/main.cpp | 4 ++--
|
||||
src/thd_dbus_interface.cpp | 18 +++++++++---------
|
||||
2 files changed, 11 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/src/main.cpp b/src/main.cpp
|
||||
index 135fa3ff..1ea74b76 100644
|
||||
--- a/src/main.cpp
|
||||
+++ b/src/main.cpp
|
||||
@@ -87,7 +87,7 @@ gboolean exclusive_control = FALSE;
|
||||
static GMainLoop *g_main_loop;
|
||||
|
||||
#ifdef GDBUS
|
||||
-gint watcher_id = 0;
|
||||
+gint own_id = 0;
|
||||
#endif
|
||||
|
||||
// g_log handler. All logs will be directed here
|
||||
@@ -374,7 +374,7 @@ int main(int argc, char *argv[]) {
|
||||
thd_log_warn("Oops g main loop exit..\n");
|
||||
|
||||
#ifdef GDBUS
|
||||
- g_bus_unwatch_name (watcher_id);
|
||||
+ g_bus_unown_name (own_id);
|
||||
#endif
|
||||
|
||||
fprintf(stdout, "Exiting ..\n");
|
||||
diff --git a/src/thd_dbus_interface.cpp b/src/thd_dbus_interface.cpp
|
||||
index cad86ba8..c75e56c2 100644
|
||||
--- a/src/thd_dbus_interface.cpp
|
||||
+++ b/src/thd_dbus_interface.cpp
|
||||
@@ -588,7 +588,7 @@ gboolean thd_dbus_interface_get_sensor_temperature(PrefObject *obj, int index,
|
||||
#pragma GCC diagnostic push
|
||||
|
||||
static GDBusInterfaceVTable interface_vtable;
|
||||
-extern gint watcher_id;
|
||||
+extern gint own_id;
|
||||
|
||||
static GDBusNodeInfo *
|
||||
thd_dbus_load_introspection(const gchar *filename, GError **error)
|
||||
@@ -1230,14 +1230,14 @@ int thd_dbus_server_init(gboolean (*exit_handler)(void)) {
|
||||
interface_vtable.get_property = thd_dbus_handle_get_property;
|
||||
interface_vtable.set_property = thd_dbus_handle_set_property;
|
||||
|
||||
- watcher_id = g_bus_own_name(G_BUS_TYPE_SYSTEM,
|
||||
- "org.freedesktop.thermald",
|
||||
- G_BUS_NAME_OWNER_FLAGS_REPLACE,
|
||||
- thd_dbus_on_bus_acquired,
|
||||
- thd_dbus_on_name_acquired,
|
||||
- thd_dbus_on_name_lost,
|
||||
- g_object_ref(value_obj),
|
||||
- NULL);
|
||||
+ own_id = g_bus_own_name(G_BUS_TYPE_SYSTEM,
|
||||
+ "org.freedesktop.thermald",
|
||||
+ G_BUS_NAME_OWNER_FLAGS_REPLACE,
|
||||
+ thd_dbus_on_bus_acquired,
|
||||
+ thd_dbus_on_name_acquired,
|
||||
+ thd_dbus_on_name_lost,
|
||||
+ g_object_ref(value_obj),
|
||||
+ NULL);
|
||||
|
||||
return THD_SUCCESS;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue