From: Kamala Narasimhan Date: Tue, 18 Aug 2009 14:07:09 +0000 (-0400) Subject: Xenpmd dbus support. X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=dee2b9cb39e80d8a7c011bd0a73115f1681f8152;p=xenclient%2Fxen-pq.git Xenpmd dbus support. --- diff --git a/master/oem-features b/master/oem-features index 9fd0aaf..1b33b49 100644 --- a/master/oem-features +++ b/master/oem-features @@ -2639,23 +2639,24 @@ index 0000000..f60b372 +} + diff --git a/tools/xenpmd/acpi-events.c b/tools/xenpmd/acpi-events.c -index d991eb0..0293975 100644 +index 633b560..98c87e0 100644 --- a/tools/xenpmd/acpi-events.c +++ b/tools/xenpmd/acpi-events.c -@@ -87,6 +87,12 @@ void handle_sbtn_pressed_event(void) - xs_write(xs, XBT_NULL, XS_SBTN_EVENT_PATH, "1", 1); +@@ -91,6 +91,13 @@ void handle_sbtn_pressed_event(void) + xenpmd_dbus_signal_event(E_SLEEP_BUTTON_PRESSED); } +void handle_oem_event(void) +{ + xenpmd_log(LOG_INFO, "Received oem event\n"); + xs_write(xs, XBT_NULL, XS_OEM_EVENT_PATH, "1", 1); ++ xenpmd_dbus_signal_event(E_OEM_EVENT_TRIGGERED); +} + void process_acpi_message(char *acpi_buffer) { if ( strstr(acpi_buffer, "ac_adapter") ) -@@ -109,7 +115,14 @@ void process_acpi_message(char *acpi_buffer) +@@ -113,7 +120,14 @@ void process_acpi_message(char *acpi_buffer) } if ( strstr(acpi_buffer, "SBTN") ) @@ -2671,10 +2672,18 @@ index d991eb0..0293975 100644 static void *acpi_events_thread(void *arg) diff --git a/tools/xenpmd/xenpmd.h b/tools/xenpmd/xenpmd.h -index 211e847..48cece1 100644 +index b3dddac..398f26e 100644 --- a/tools/xenpmd/xenpmd.h +++ b/tools/xenpmd/xenpmd.h -@@ -106,6 +106,7 @@ void acpi_events_cleanup(void); +@@ -91,6 +91,7 @@ enum xenpmd_dbus_event_numbers + E_LID_STATE_CHANGED, + E_POWER_BUTTON_PRESSED, + E_SLEEP_BUTTON_PRESSED, ++ E_OEM_EVENT_TRIGGERED, + E_XENPMD_EVENTS_COUNT + }; + +@@ -121,6 +122,7 @@ void xenpmd_dbus_signal_event(enum xenpmd_dbus_event_numbers evt_num); #define XS_LID_EVENT_PATH "/pm/events/lidstatechanged" #define XS_PBTN_EVENT_PATH "/pm/events/powerbuttonpressed" #define XS_SBTN_EVENT_PATH "/pm/events/sleepbuttonpressed" diff --git a/master/power-management-enhancement b/master/power-management-enhancement index 9cb887b..41147bc 100644 --- a/master/power-management-enhancement +++ b/master/power-management-enhancement @@ -673,36 +673,53 @@ index 020af0b..f277767 100644 + 0x45,0x31,0x37,0x5F, }; diff --git a/tools/xenpmd/Makefile b/tools/xenpmd/Makefile -index 10cb2fb..6881169 100644 +index 10cb2fb..28d51a5 100644 --- a/tools/xenpmd/Makefile +++ b/tools/xenpmd/Makefile -@@ -10,6 +10,8 @@ BIN = xenpmd - .PHONY: all - all: $(BIN) +@@ -3,12 +3,17 @@ include $(XEN_ROOT)/tools/Rules.mk + + CFLAGS += -Werror + CFLAGS += $(CFLAGS_libxenstore) ++CFLAGS += -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include + LDFLAGS += $(LDFLAGS_libxenstore) ++LDFLAGS += -ldbus-glib-1 -ldbus-1 -lpthread -lgobject-2.0 -lglib-2.0 -lintl -+$(BIN): xenpmd.o acpi-events.o + BIN = xenpmd ++GENERATE_HEADERS = xenpmd-dbus-server-bindings.h xenpmd-dbus-client-bindings.h + + .PHONY: all +-all: $(BIN) ++all: $(GENERATE_HEADERS) $(BIN) + ++$(BIN): xenpmd.o acpi-events.o xenpmd-dbus-server.o + .PHONY: install install: all - $(INSTALL_DIR) $(DESTDIR)$(SBINDIR) -@@ -17,9 +19,8 @@ install: all +@@ -17,9 +22,15 @@ install: all .PHONY: clean clean: - $(RM) -f $(BIN) $(DEPS) -+ $(RM) -f $(BIN) *.o ++ $(RM) -f $(BIN) *.o $(GENERATE_HEADERS) -%: %.c Makefile +%.o: %.c Makefile $(CC) $(CFLAGS) $< $(LDFLAGS) -o $@ --include $(DEPS) ++xenpmd-dbus-server-bindings.h:xenpmd.xml ++ dbus-binding-tool --mode=glib-server --prefix=xenpmd_object $< > $@ ++ ++xenpmd-dbus-client-bindings.h:xenpmd.xml ++ dbus-binding-tool --mode=glib-client $< > $@ ++ ++ diff --git a/tools/xenpmd/acpi-events.c b/tools/xenpmd/acpi-events.c new file mode 100644 -index 0000000..d991eb0 +index 0000000..633b560 --- /dev/null +++ b/tools/xenpmd/acpi-events.c -@@ -0,0 +1,164 @@ +@@ -0,0 +1,168 @@ +/* + * acpi-events.c + * @@ -770,6 +787,7 @@ index 0000000..d991eb0 + write_state_info_in_xenstore(AC_ADAPTER_STATE_FILE_PATH, + XS_AC_ADAPTER_STATE_PATH, "off-line", "1", "0"); + xs_write(xs, XBT_NULL, XS_AC_ADAPTER_EVENT_PATH, "1", 1); ++ xenpmd_dbus_signal_event(E_AC_ADAPTER_STATE_CHANGED); +} + +void handle_lid_state_change(void) @@ -778,18 +796,21 @@ index 0000000..d991eb0 + write_state_info_in_xenstore(LID_STATE_FILE_PATH, XS_LID_STATE_PATH, + "closed", "1", "0"); + xs_write(xs, XBT_NULL, XS_LID_EVENT_PATH, "1", 1); ++ xenpmd_dbus_signal_event(E_LID_STATE_CHANGED); +} + +void handle_pbtn_pressed_event(void) +{ + xenpmd_log(LOG_INFO, "Power button pressed event\n"); + xs_write(xs, XBT_NULL, XS_PBTN_EVENT_PATH, "1", 1); ++ xenpmd_dbus_signal_event(E_POWER_BUTTON_PRESSED); +} + +void handle_sbtn_pressed_event(void) +{ + xenpmd_log(LOG_INFO, "Sleep button pressed event\n"); + xs_write(xs, XBT_NULL, XS_SBTN_EVENT_PATH, "1", 1); ++ xenpmd_dbus_signal_event(E_SLEEP_BUTTON_PRESSED); +} + +void process_acpi_message(char *acpi_buffer) @@ -867,8 +888,220 @@ index 0000000..d991eb0 + pthread_cancel(acpi_thread); +} + +diff --git a/tools/xenpmd/xenpmd-dbus-server.c b/tools/xenpmd/xenpmd-dbus-server.c +new file mode 100644 +index 0000000..c9b80cd +--- /dev/null ++++ b/tools/xenpmd/xenpmd-dbus-server.c +@@ -0,0 +1,206 @@ ++/* ++ * xenpmd-dbus-server.c ++ * ++ * Put xenpmd on dbus, implement xenpmd dbus methods and ++ * signal power management events. ++ * ++ * Copyright (c) 2009 Citrix Systems, Inc. ++ * Author Kamala Narasimhan ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * This program is distributed in the hope that 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. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include "xenpmd.h" ++ ++static char *xenpmd_dbus_signal_names[E_XENPMD_EVENTS_COUNT] = ++{ ++ "ac_adapter_state_changed", ++ "lid_state_changed", ++ "power_button_pressed", ++ "sleep_button_pressed", ++ "oem_event_triggered" ++}; ++ ++typedef struct XenpmdObject ++{ ++ GObject parent; ++} XenpmdObject; ++ ++typedef struct XenpmdObjectClass ++{ ++ GObjectClass parent; ++ guint xenpmd_signal_ids[E_XENPMD_EVENTS_COUNT]; ++} XenpmdObjectClass; ++ ++static pthread_t xenpmd_dbus_thread; ++static DBusGProxy *bus_proxy; ++static XenpmdObject *xenpmd_obj; ++extern struct xs_handle *xs; ++ ++#define XENPMD_TYPE_OBJECT (xenpmd_object_get_type ()) ++#define XENPMD_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), XENPMD_TYPE_OBJECT, XenpmdObject)) ++#define XENPMD_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), XENPMD_TYPE_OBJECT, XenpmdObjectClass)) ++#define XENPMD_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), XENPMD_TYPE_OBJECT)) ++#define XENPMD_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XENPMD_TYPE_OBJECT)) ++#define XENPMD_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), XENPMD_TYPE_OBJECT, XenpmdObjectClass)) ++ ++G_DEFINE_TYPE (XenpmdObject, xenpmd_object, G_TYPE_OBJECT); ++ ++static void xenpmd_object_init (XenpmdObject * obj) { } ++ ++static void xenpmd_object_class_init (XenpmdObjectClass * klass) ++{ ++ guint count; ++ ++ for (count = 0; count < E_XENPMD_EVENTS_COUNT; count++) ++ klass->xenpmd_signal_ids[count] = g_signal_new(xenpmd_dbus_signal_names[count], ++ G_OBJECT_CLASS_TYPE(klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, ++ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); ++} ++ ++char * xenstore_read_str(char *path) ++{ ++ char *buf; ++ unsigned int len; ++ ++ buf = xs_read(xs, XBT_NULL, path, &len); ++ return buf; ++} ++ ++unsigned int xenstore_read_uint(char *path) ++{ ++ char *buf; ++ int ret; ++ ++ buf = xenstore_read_str(path); ++ if ( buf == NULL) ++ return 0; ++ ++ ret = atoi(buf); ++ free(buf); ++ return ret; ++} ++ ++static gboolean xenpmd_object_get_ac_adapter_state(XenpmdObject * this, guint *ac_ret) ++{ ++ *ac_ret = xenstore_read_uint(XS_AC_ADAPTER_STATE_PATH); ++ return TRUE; ++} ++ ++static gboolean xenpmd_object_get_lid_state(XenpmdObject * this, guint *lid_ret) ++{ ++ *lid_ret = xenstore_read_uint(XS_LID_STATE_PATH); ++ return TRUE; ++} ++ ++static gboolean xenpmd_object_get_current_temperature(XenpmdObject * this, guint *cur_temp_ret) ++{ ++ *cur_temp_ret = xenstore_read_uint(XS_CURRENT_TEMPERATURE); ++ return TRUE; ++} ++ ++static gboolean xenpmd_object_get_critical_temperature(XenpmdObject * this, guint *crit_temp_ret) ++{ ++ *crit_temp_ret = xenstore_read_uint(XS_CRITICAL_TEMPERATURE); ++ return TRUE; ++} ++ ++static gboolean xenpmd_object_get_bif(XenpmdObject * this, char **bif_ret) ++{ ++ *bif_ret = xenstore_read_str(XS_BIF); ++ return TRUE; ++} ++ ++static gboolean xenpmd_object_get_bst(XenpmdObject * this, char **bst_ret) ++{ ++ *bst_ret = xenstore_read_str(XS_BST); ++ return TRUE; ++} ++ ++void xenpmd_dbus_signal_event(enum xenpmd_dbus_event_numbers evt_num) ++{ ++ XenpmdObjectClass *klass = XENPMD_OBJECT_GET_CLASS(xenpmd_obj); ++ if ( klass == NULL ) ++ { ++ xenpmd_log(LOG_ERR, "XenpmdObjectClass instance is NULL!\n"); ++ return; ++ } ++ ++ g_signal_emit(xenpmd_obj, klass->xenpmd_signal_ids[evt_num], ++ 0, xenpmd_dbus_signal_names[evt_num]); ++} ++ ++#include "xenpmd-dbus-server-bindings.h" ++ ++static void *xenpmd_dbus_main_thread(void *arg) ++{ ++ DBusGConnection *bus; ++ GMainLoop *mainloop; ++ GError *error = NULL; ++ guint request_name_result; ++ ++ g_type_init(); ++ ++ dbus_g_object_type_install_info(XENPMD_TYPE_OBJECT, ++ &dbus_glib_xenpmd_object_object_info); ++ mainloop = g_main_loop_new(NULL, FALSE); ++ ++ bus = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error); ++ if ( bus == NULL ) ++ { ++ xenpmd_log(LOG_ERR, "DBus get system bus failed with %d - %s\n", ++ error->code, error->message); ++ g_error_free(error); ++ g_main_loop_unref(mainloop); ++ return (void *) -1; ++ } ++ ++ bus_proxy = dbus_g_proxy_new_for_name(bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, ++ DBUS_INTERFACE_DBUS); ++ if (dbus_g_proxy_call(bus_proxy, "RequestName", &error, ++ G_TYPE_STRING, "com.citrix.xenclient.xenpmd", ++ G_TYPE_UINT, 0, G_TYPE_INVALID, G_TYPE_UINT, ++ &request_name_result, G_TYPE_INVALID) != TRUE) ++ { ++ xenpmd_log(LOG_ERR,"RequestName failed with error - %d - %s\n", ++ error->code, error->message); ++ g_error_free(error); ++ dbus_g_connection_unref(bus); ++ g_main_loop_unref(mainloop); ++ return (void *) -1; ++ } ++ ++ xenpmd_obj = g_object_new(XENPMD_TYPE_OBJECT, NULL); ++ dbus_g_connection_register_g_object(bus, ++ "/com/citrix/xenclient/xenpmd/XenpmdObject", ++ G_OBJECT(xenpmd_obj)); ++ ++ g_main_loop_run(mainloop); ++ ++ return 0; ++} ++ ++void xenpmd_dbus_initialize(void) ++{ ++ pthread_create(&xenpmd_dbus_thread, NULL, &xenpmd_dbus_main_thread, NULL); ++} ++ ++void xenpmd_dbus_cleanup(void) ++{ ++ pthread_cancel(xenpmd_dbus_thread); ++} ++ diff --git a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c -index 28de744..ff6d39d 100644 +index 28de744..7fffcf7 100644 --- a/tools/xenpmd/xenpmd.c +++ b/tools/xenpmd/xenpmd.c @@ -33,68 +33,10 @@ @@ -1034,6 +1267,15 @@ index 28de744..ff6d39d 100644 void write_ulong_lsb_first(char *temp_val, unsigned long val) { +@@ -370,7 +324,7 @@ void write_battery_info_to_xenstore(struct battery_info *info) + (unsigned int)strlen(info->battery_type), info->battery_type, + (unsigned int)strlen(info->oem_info), info->oem_info); + strncat(val+73, string_info, 1024-73-1); +- xs_write(xs, XBT_NULL, "/pm/bif", ++ xs_write(xs, XBT_NULL, XS_BIF, + val, 73+8+strlen(info->model_number)+strlen(info->serial_number)+ + strlen(info->battery_type)+strlen(info->oem_info)+1); + } @@ -383,16 +337,21 @@ int write_one_time_battery_info(void) dir = opendir(BATTERY_DIR_PATH); @@ -1082,10 +1324,12 @@ index 28de744..ff6d39d 100644 void write_battery_status_to_xenstore(struct battery_status *status) { -@@ -427,55 +387,78 @@ void write_battery_status_to_xenstore(struct battery_status *status) +@@ -426,56 +386,79 @@ void write_battery_status_to_xenstore(struct battery_status *status) + write_ulong_lsb_first(val+18, status->remaining_capacity); write_ulong_lsb_first(val+26, status->present_voltage); - xs_write(xs, XBT_NULL, "/pm/bst", val, 35); +- xs_write(xs, XBT_NULL, "/pm/bst", val, 35); ++ xs_write(xs, XBT_NULL, XS_BST, val, 35); +#ifdef XENPMD_DEBUG + xenpmd_log(LOG_DEBUG, "Updated battery information in xenstore\n"); +#endif @@ -1189,7 +1433,7 @@ index 28de744..ff6d39d 100644 if ( pid != 0 ) exit(0); -@@ -483,34 +466,73 @@ static void daemonize(void) +@@ -483,34 +466,75 @@ static void daemonize(void) setsid(); if ( (pid = fork()) < 0 ) @@ -1238,6 +1482,7 @@ index 28de744..ff6d39d 100644 - if ( write_one_time_battery_info() == 0 ) + initialize_system_state_info(); ++ xenpmd_dbus_initialize(); + monitor_acpi_events(); + if ( write_one_time_battery_info() == 0 ) { @@ -1250,6 +1495,7 @@ index 28de744..ff6d39d 100644 - wait_for_and_update_battery_status_request(); + wait_for_and_update_power_mgmt_info(); + acpi_events_cleanup(); ++ xenpmd_dbus_cleanup(); xs_daemon_close(xs); - return 0; + closelog(); @@ -1275,10 +1521,10 @@ index 28de744..ff6d39d 100644 +} diff --git a/tools/xenpmd/xenpmd.h b/tools/xenpmd/xenpmd.h new file mode 100644 -index 0000000..211e847 +index 0000000..b3dddac --- /dev/null +++ b/tools/xenpmd/xenpmd.h -@@ -0,0 +1,115 @@ +@@ -0,0 +1,130 @@ +/* + * xenpmd.h + * @@ -1366,6 +1612,19 @@ index 0000000..211e847 +void monitor_acpi_events(void); +void acpi_events_cleanup(void); + ++enum xenpmd_dbus_event_numbers ++{ ++ E_AC_ADAPTER_STATE_CHANGED, ++ E_LID_STATE_CHANGED, ++ E_POWER_BUTTON_PRESSED, ++ E_SLEEP_BUTTON_PRESSED, ++ E_XENPMD_EVENTS_COUNT ++}; ++ ++void xenpmd_dbus_initialize(void); ++void xenpmd_dbus_cleanup(void); ++void xenpmd_dbus_signal_event(enum xenpmd_dbus_event_numbers evt_num); ++ +#ifdef RUN_IN_SIMULATE_MODE + #define BATTERY_DIR_PATH "/tmp/battery" + #define BATTERY_INFO_FILE_PATH "/tmp/battery/%s/info" @@ -1380,6 +1639,8 @@ index 0000000..211e847 +#define LID_STATE_FILE_PATH "/proc/acpi/button/lid/LID/state" +#define ACPID_SOCKET_PATH "/var/run/acpid.socket" + ++#define XS_BIF "/pm/bif" ++#define XS_BST "/pm/bst" +#define XS_AC_ADAPTER_STATE_PATH "/pm/ac_adapter" +#define XS_LID_STATE_PATH "/pm/lid_state" + @@ -1394,3 +1655,136 @@ index 0000000..211e847 + #define xenpmd_log(priority, format, p...) printf(format, ##p) +#endif + +diff --git a/tools/xenpmd/xenpmd.xml b/tools/xenpmd/xenpmd.xml +new file mode 100644 +index 0000000..23328f4 +--- /dev/null ++++ b/tools/xenpmd/xenpmd.xml +@@ -0,0 +1,127 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Returns AC adapter state. A value of 1 means AC adapter in use. ++ Otherwise, zero. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Returns lid state. A value of one indicates lid is open otherwise closed. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Returns current platform temperature. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Returns current critical platform temperature. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Returns battery information as string. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Returns battery status as string. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Signals change in platform AC adapter status. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Signals when a laptop lid is opened or closed. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Signals when power button is pressed. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Signals when sleep button is pressed. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Signals when OEM special buttons/hotkeys are pressed. ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/master/thermal-management b/master/thermal-management index 0bad114..fe9e32b 100644 --- a/master/thermal-management +++ b/master/thermal-management @@ -43,7 +43,7 @@ index 8f2d7a7..6f2ade9 100644 * changes like ac power to battery use etc. */ diff --git a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c -index 7ac6a87..9f84992 100644 +index 7fffcf7..78845ff 100644 --- a/tools/xenpmd/xenpmd.c +++ b/tools/xenpmd/xenpmd.c @@ -428,14 +428,147 @@ void update_battery_status(void) @@ -171,10 +171,10 @@ index 7ac6a87..9f84992 100644 + return; + + snprintf(buffer, 32, "%d", current_temp); -+ xs_write(xs, XBT_NULL, "/pm/current_temperature", buffer, strlen(buffer)); ++ xs_write(xs, XBT_NULL, XS_CURRENT_TEMPERATURE, buffer, strlen(buffer)); + + snprintf(buffer, 32, "%d", critical_trip_point); -+ xs_write(xs, XBT_NULL, "/pm/critical_temperature", buffer, strlen(buffer)); ++ xs_write(xs, XBT_NULL, XS_CRITICAL_TEMPERATURE, buffer, strlen(buffer)); +#ifdef XENPMD_DEBUG + xenpmd_log(LOG_DEBUG, "Updated thermal information in xenstore\n"); +#endif @@ -207,10 +207,10 @@ index 7ac6a87..9f84992 100644 } } diff --git a/tools/xenpmd/xenpmd.h b/tools/xenpmd/xenpmd.h -index 48cece1..a44c73c 100644 +index 398f26e..35a6a02 100644 --- a/tools/xenpmd/xenpmd.h +++ b/tools/xenpmd/xenpmd.h -@@ -89,10 +89,14 @@ void acpi_events_cleanup(void); +@@ -103,10 +103,14 @@ void xenpmd_dbus_signal_event(enum xenpmd_dbus_event_numbers evt_num); #define BATTERY_DIR_PATH "/tmp/battery" #define BATTERY_INFO_FILE_PATH "/tmp/battery/%s/info" #define BATTERY_STATE_FILE_PATH "/tmp/battery/%s/state" @@ -225,3 +225,14 @@ index 48cece1..a44c73c 100644 #endif #define AC_ADAPTER_STATE_FILE_PATH "/proc/acpi/ac_adapter/AC/state" +@@ -116,7 +120,9 @@ void xenpmd_dbus_signal_event(enum xenpmd_dbus_event_numbers evt_num); + #define XS_BIF "/pm/bif" + #define XS_BST "/pm/bst" + #define XS_AC_ADAPTER_STATE_PATH "/pm/ac_adapter" +-#define XS_LID_STATE_PATH "/pm/lid_state" ++#define XS_LID_STATE_PATH "/pm/lid_state" ++#define XS_CURRENT_TEMPERATURE "/pm/current_temperature" ++#define XS_CRITICAL_TEMPERATURE "/pm/critical_temperature" + + #define XS_AC_ADAPTER_EVENT_PATH "/pm/events/acadapterstatechanged" + #define XS_LID_EVENT_PATH "/pm/events/lidstatechanged"