diff options
| author | Nan Li <william.bjlinan@hotmail.com> | 2016-08-24 17:13:06 +0800 |
|---|---|---|
| committer | Patrick Williams <patrick@stwcx.xyz> | 2016-11-01 14:59:33 +0000 |
| commit | 44dd5a6ea7141610ffa922e9557c62552010b8a5 (patch) | |
| tree | 1b94f3fe2bb3c399f76e14d44fde685c9bea0558 /libopenbmc_intf | |
| parent | da7aad04d03312fe5df7580ec94bf44f0587bb53 (diff) | |
| download | talos-skeleton-44dd5a6ea7141610ffa922e9557c62552010b8a5.tar.gz talos-skeleton-44dd5a6ea7141610ffa922e9557c62552010b8a5.zip | |
Add IPMI 2.0 ColdReset command support
* Implement reset by reboot command issued in a shell
* Work with related changes in phosphor-host-ipmid repo
Resolves openbmc/openbmc#437
Change-Id: I8143b1ee9c0d547ee47e5bd3659a5126b6e5af98
Signed-off-by: Nan Li <william.bjlinan@hotmail.com>
Diffstat (limited to 'libopenbmc_intf')
| -rw-r--r-- | libopenbmc_intf/openbmc_intf.c | 164 | ||||
| -rw-r--r-- | libopenbmc_intf/openbmc_intf.h | 26 | ||||
| -rw-r--r-- | libopenbmc_intf/openbmc_intf.xml | 1 |
3 files changed, 174 insertions, 17 deletions
diff --git a/libopenbmc_intf/openbmc_intf.c b/libopenbmc_intf/openbmc_intf.c index 7a15116..f682ade 100644 --- a/libopenbmc_intf/openbmc_intf.c +++ b/libopenbmc_intf/openbmc_intf.c @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.42.2. DO NOT EDIT. + * Generated by gdbus-codegen 2.40.2. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -1233,7 +1233,6 @@ hwmon_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _hwmon_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _hwmon_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -3104,7 +3103,6 @@ fan_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _fan_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _fan_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -5240,7 +5238,6 @@ sensor_value_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_value_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_value_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -7058,7 +7055,6 @@ sensor_threshold_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_threshold_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_threshold_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -8245,7 +8241,6 @@ sensor_i2c_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_i2c_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_i2c_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -9462,7 +9457,6 @@ sensor_match_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _sensor_match_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _sensor_match_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -11969,7 +11963,6 @@ shared_resource_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _shared_resource_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _shared_resource_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -13475,7 +13468,6 @@ control_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -13605,6 +13597,19 @@ control_skeleton_new (void) /* ---- Introspection data for org.openbmc.control.Bmc ---- */ +static const _ExtendedGDBusMethodInfo _control_bmc_method_info_cold_reset = +{ + { + -1, + (gchar *) "coldReset", + NULL, + NULL, + NULL + }, + "handle-cold-reset", + FALSE +}; + static const _ExtendedGDBusMethodInfo _control_bmc_method_info_warm_reset = { { @@ -13620,6 +13625,7 @@ static const _ExtendedGDBusMethodInfo _control_bmc_method_info_warm_reset = static const _ExtendedGDBusMethodInfo * const _control_bmc_method_info_pointers[] = { + &_control_bmc_method_info_cold_reset, &_control_bmc_method_info_warm_reset, NULL }; @@ -13678,6 +13684,7 @@ control_bmc_override_properties (GObjectClass *klass, guint property_id_begin) /** * ControlBmcIface: * @parent_iface: The parent interface. + * @handle_cold_reset: Handler for the #ControlBmc::handle-cold-reset signal. * @handle_warm_reset: Handler for the #ControlBmc::handle-warm-reset signal. * * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-openbmc-control-Bmc.top_of_page">org.openbmc.control.Bmc</link>. @@ -13691,6 +13698,28 @@ control_bmc_default_init (ControlBmcIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** + * ControlBmc::handle-cold-reset: + * @object: A #ControlBmc. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method. + * + * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call control_bmc_complete_cold_reset() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-cold-reset", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (ControlBmcIface, handle_cold_reset), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** * ControlBmc::handle-warm-reset: * @object: A #ControlBmc. * @invocation: A #GDBusMethodInvocation. @@ -13715,6 +13744,98 @@ control_bmc_default_init (ControlBmcIface *iface) } /** + * control_bmc_call_cold_reset: + * @proxy: A #ControlBmcProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from. + * You can then call control_bmc_call_cold_reset_finish() to get the result of the operation. + * + * See control_bmc_call_cold_reset_sync() for the synchronous, blocking version of this method. + */ +void +control_bmc_call_cold_reset ( + ControlBmc *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "coldReset", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * control_bmc_call_cold_reset_finish: + * @proxy: A #ControlBmcProxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to control_bmc_call_cold_reset(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with control_bmc_call_cold_reset(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +control_bmc_call_cold_reset_finish ( + ControlBmc *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * control_bmc_call_cold_reset_sync: + * @proxy: A #ControlBmcProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See control_bmc_call_cold_reset() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +control_bmc_call_cold_reset_sync ( + ControlBmc *proxy, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "coldReset", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** * control_bmc_call_warm_reset: * @proxy: A #ControlBmcProxy. * @cancellable: (allow-none): A #GCancellable or %NULL. @@ -13807,6 +13928,24 @@ _out: } /** + * control_bmc_complete_cold_reset: + * @object: A #ControlBmc. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-openbmc-control-Bmc.coldReset">coldReset()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +control_bmc_complete_cold_reset ( + ControlBmc *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** * control_bmc_complete_warm_reset: * @object: A #ControlBmc. * @invocation: (transfer full): A #GDBusMethodInvocation. @@ -15985,7 +16124,6 @@ control_host_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_host_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_host_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -17651,7 +17789,6 @@ control_power_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _control_power_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _control_power_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -20171,7 +20308,6 @@ watchdog_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _watchdog_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _watchdog_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -23620,7 +23756,6 @@ flash_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _flash_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -25289,7 +25424,6 @@ flash_control_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _flash_control_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _flash_control_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -27074,7 +27208,6 @@ button_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _button_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _button_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } @@ -28888,7 +29021,6 @@ led_skeleton_notify (GObject *object, skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _led_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); - g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _led_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } diff --git a/libopenbmc_intf/openbmc_intf.h b/libopenbmc_intf/openbmc_intf.h index 4a1d7d6..a5e82a3 100644 --- a/libopenbmc_intf/openbmc_intf.h +++ b/libopenbmc_intf/openbmc_intf.h @@ -1,5 +1,5 @@ /* - * Generated by gdbus-codegen 2.42.2. DO NOT EDIT. + * Generated by gdbus-codegen 2.40.2. DO NOT EDIT. * * The license of this code is the same as for the source it was derived from. */ @@ -1717,6 +1717,10 @@ struct _ControlBmcIface { GTypeInterface parent_iface; + gboolean (*handle_cold_reset) ( + ControlBmc *object, + GDBusMethodInvocation *invocation); + gboolean (*handle_warm_reset) ( ControlBmc *object, GDBusMethodInvocation *invocation); @@ -1730,6 +1734,10 @@ guint control_bmc_override_properties (GObjectClass *klass, guint property_id_be /* D-Bus method call completion functions: */ +void control_bmc_complete_cold_reset ( + ControlBmc *object, + GDBusMethodInvocation *invocation); + void control_bmc_complete_warm_reset ( ControlBmc *object, GDBusMethodInvocation *invocation); @@ -1737,6 +1745,22 @@ void control_bmc_complete_warm_reset ( /* D-Bus method calls: */ +void control_bmc_call_cold_reset ( + ControlBmc *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean control_bmc_call_cold_reset_finish ( + ControlBmc *proxy, + GAsyncResult *res, + GError **error); + +gboolean control_bmc_call_cold_reset_sync ( + ControlBmc *proxy, + GCancellable *cancellable, + GError **error); + void control_bmc_call_warm_reset ( ControlBmc *proxy, GCancellable *cancellable, diff --git a/libopenbmc_intf/openbmc_intf.xml b/libopenbmc_intf/openbmc_intf.xml index cabe910..81445a3 100644 --- a/libopenbmc_intf/openbmc_intf.xml +++ b/libopenbmc_intf/openbmc_intf.xml @@ -101,6 +101,7 @@ <signal name="Started"/> </interface> <interface name="org.openbmc.control.Bmc"> + <method name="coldReset"/> <method name="warmReset"/> </interface> <interface name="org.openbmc.control.Host"> |

