dbusif_DATA = \
org.freedesktop.DeviceKit.Disks.xml \
org.freedesktop.DeviceKit.Disks.Device.xml \
- org.freedesktop.DeviceKit.Disks.Controller.xml \
+ org.freedesktop.DeviceKit.Disks.Adapter.xml \
org.freedesktop.DeviceKit.Disks.Port.xml \
$(NULL)
<!ENTITY ERROR_FILESYSTEM_TOOLS_MISSING "org.freedesktop.DeviceKit.Disks.Error.FilesystemToolsMissing">
]>
<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
- <interface name="org.freedesktop.DeviceKit.Disks.Controller">
+ <interface name="org.freedesktop.DeviceKit.Disks.Adapter">
<doc:doc>
<doc:description>
<doc:para>
- This interface provides information about storage controllers.
+ This interface provides information about storage adapters.
</doc:para>
</doc:description>
</doc:doc>
<doc:doc>
<doc:description>
<doc:para>
- Something on the controller changed.
+ Something on the adapter changed.
</doc:para>
</doc:description>
</doc:doc>
<property name="NativePath" type="s" access="read">
<doc:doc><doc:description><doc:para>
- OS specific native path of the controller. On Linux this is the sysfs path, for example <doc:tt>/sys/devices/pci0000:00/0000:00:1f.2</doc:tt>.
+ OS specific native path of the adapter. On Linux this is the sysfs path, for example <doc:tt>/sys/devices/pci0000:00/0000:00:1f.2</doc:tt>.
</doc:para></doc:description></doc:doc>
</property>
<property name="Vendor" type="s" access="read">
<doc:doc><doc:description><doc:para>
- The name of the vendor of the storage controller.
+ The name of the vendor of the storage adapter.
</doc:para></doc:description></doc:doc>
</property>
<property name="Model" type="s" access="read">
<doc:doc><doc:description><doc:para>
- The name of the model of the storage controller.
+ The name of the model of the storage adapter.
</doc:para></doc:description></doc:doc>
</property>
<property name="Driver" type="s" access="read">
<doc:doc><doc:description><doc:para>
- The name of the driver used for the storage controller.
+ The name of the driver used for the storage adapter.
</doc:para></doc:description></doc:doc>
</property>
<property name="NumPorts" type="u" access="read">
<doc:doc><doc:description><doc:para>
- Number of physical ports on the storage controller or 0 if unknown.
+ Number of physical ports on the storage adapter or 0 if unknown.
</doc:para></doc:description></doc:doc>
</property>
<property name="Fabric" type="s" access="read">
<doc:doc><doc:description><doc:para>
- The fabric used for the storage controller to communicate with other storage
+ The fabric used for the storage adapter to communicate with other storage
targets and initiators or blank if unknown. Known values include
<doc:list>
<doc:item>
is TRUE.
</doc:para></doc:description></doc:doc>
</property>
- <property name="DriveController" type="o" access="read">
+ <property name="DriveAdapter" type="o" access="read">
<doc:doc><doc:description><doc:para>
- The object of the storage controller for the drive or "/" if no controller exists.
+ The object of the storage adapter for the drive or "/" if no adapter exists.
This property is only valid if
<doc:ref type="property" to="Device:DeviceIsDrive">DeviceIsDrive</doc:ref>
is TRUE.
</doc:para></doc:description></doc:doc>
</property>
- <property name="Controller" type="o" access="read">
+ <property name="Adapter" type="o" access="read">
<doc:doc><doc:description><doc:para>
- The object path of the controller the port is attached to.
+ The object path of the adapter the port is attached to.
</doc:para></doc:description></doc:doc>
</property>
<!-- ************************************************************ -->
- <method name="EnumerateControllers">
+ <method name="EnumerateAdapters">
<annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
<arg name="devices" direction="out" type="ao">
- <doc:doc><doc:summary>An array of object paths for controllers.</doc:summary></doc:doc>
+ <doc:doc><doc:summary>An array of object paths for storage adapters.</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
- Enumerate all storage controllers on the system.
+ Enumerate all storage adapters on the system.
</doc:para>
</doc:description>
</doc:doc>
<!-- ************************************************************ -->
- <signal name="ControllerAdded">
- <arg name="controller" type="o">
- <doc:doc><doc:summary>Object path of controller that was added.</doc:summary></doc:doc>
+ <signal name="AdapterAdded">
+ <arg name="adapter" type="o">
+ <doc:doc><doc:summary>Object path of adapter that was added.</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
- Emitted when a controller is added.
+ Emitted when an adapter is added.
</doc:para>
</doc:description>
</doc:doc>
</signal>
- <signal name="ControllerRemoved">
- <arg name="controller" type="o">
- <doc:doc><doc:summary>Object path of controller that was removed.</doc:summary></doc:doc>
+ <signal name="AdapterRemoved">
+ <arg name="adapter" type="o">
+ <doc:doc><doc:summary>Object path of adapter that was removed.</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
- Emitted when a controller is removed.
+ Emitted when an adapter is removed.
</doc:para>
</doc:description>
</doc:doc>
</signal>
- <signal name="ControllerChanged">
- <arg name="controller" type="o">
- <doc:doc><doc:summary>Object path of controller that was changed.</doc:summary></doc:doc>
+ <signal name="AdapterChanged">
+ <arg name="adapter" type="o">
+ <doc:doc><doc:summary>Object path of adapter that was changed.</doc:summary></doc:doc>
</arg>
<doc:doc>
<doc:description>
<doc:para>
- Emitted when a controller changed.
+ Emitted when an adapter changed.
</doc:para>
</doc:description>
</doc:doc>
BUILT_SOURCES = \
devkit-disks-daemon-glue.h \
devkit-disks-device-glue.h \
- devkit-disks-controller-glue.h \
+ devkit-disks-adapter-glue.h \
devkit-disks-port-glue.h \
devkit-disks-marshal.h devkit-disks-marshal.c
devkit-disks-device-glue.h: $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Device.xml Makefile.am
dbus-binding-tool --prefix=devkit_disks_device --mode=glib-server --output=devkit-disks-device-glue.h $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Device.xml
-devkit-disks-controller-glue.h: $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Controller.xml Makefile.am
- dbus-binding-tool --prefix=devkit_disks_controller --mode=glib-server --output=devkit-disks-controller-glue.h $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Controller.xml
+devkit-disks-adapter-glue.h: $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Adapter.xml Makefile.am
+ dbus-binding-tool --prefix=devkit_disks_adapter --mode=glib-server --output=devkit-disks-adapter-glue.h $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Adapter.xml
devkit-disks-port-glue.h: $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Port.xml Makefile.am
dbus-binding-tool --prefix=devkit_disks_port --mode=glib-server --output=devkit-disks-port-glue.h $(top_srcdir)/data/org.freedesktop.DeviceKit.Disks.Port.xml
devkit-disks-daemon.h devkit-disks-daemon.c \
devkit-disks-device.h devkit-disks-device.c \
devkit-disks-device-private.h devkit-disks-device-private.c \
- devkit-disks-controller.h devkit-disks-controller.c \
- devkit-disks-controller-private.h devkit-disks-controller-private.c \
+ devkit-disks-adapter.h devkit-disks-adapter.c \
+ devkit-disks-adapter-private.h devkit-disks-adapter-private.c \
devkit-disks-port.h devkit-disks-port.c \
devkit-disks-port-private.h devkit-disks-port-private.c \
devkit-disks-mount-file.h devkit-disks-mount-file.c \
--- /dev/null
+/*
+ * Copyright (C) 2009 David Zeuthen <david@fubar.dk>
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <string.h>
+#include "devkit-disks-adapter.h"
+#include "devkit-disks-adapter-private.h"
+
+static gboolean
+emit_changed_idle_cb (gpointer data)
+{
+ DevkitDisksAdapter *adapter = DEVKIT_DISKS_ADAPTER (data);
+
+ //g_debug ("XXX emitting 'changed' in idle");
+
+ if (!adapter->priv->removed)
+ {
+ g_print ("**** EMITTING CHANGED for %s\n", adapter->priv->native_path);
+ g_signal_emit_by_name (adapter->priv->daemon,
+ "adapter-changed",
+ adapter->priv->object_path);
+ g_signal_emit_by_name (adapter, "changed");
+ }
+ adapter->priv->emit_changed_idle_id = 0;
+
+ /* remove the idle source */
+ return FALSE;
+}
+
+static void
+emit_changed (DevkitDisksAdapter *adapter, const gchar *name)
+{
+ //g_debug ("property %s changed for %s", name, adapter->priv->adapter_file);
+
+ if (adapter->priv->object_path != NULL)
+ {
+ /* schedule a 'changed' signal in idle if one hasn't been scheduled already */
+ if (adapter->priv->emit_changed_idle_id == 0)
+ {
+ adapter->priv->emit_changed_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT,
+ emit_changed_idle_cb,
+ g_object_ref (adapter),
+ (GDestroyNotify) g_object_unref);
+ }
+ }
+}
+
+void
+devkit_disks_adapter_set_vendor (DevkitDisksAdapter *adapter, const gchar *value)
+{
+ if (G_UNLIKELY (g_strcmp0 (adapter->priv->vendor, value) != 0))
+ {
+ g_free (adapter->priv->vendor);
+ adapter->priv->vendor = g_strdup (value);
+ emit_changed (adapter, "vendor");
+ }
+}
+
+void
+devkit_disks_adapter_set_model (DevkitDisksAdapter *adapter, const gchar *value)
+{
+ if (G_UNLIKELY (g_strcmp0 (adapter->priv->model, value) != 0))
+ {
+ g_free (adapter->priv->model);
+ adapter->priv->model = g_strdup (value);
+ emit_changed (adapter, "model");
+ }
+}
+
+void
+devkit_disks_adapter_set_driver (DevkitDisksAdapter *adapter, const gchar *value)
+{
+ if (G_UNLIKELY (g_strcmp0 (adapter->priv->driver, value) != 0))
+ {
+ g_free (adapter->priv->driver);
+ adapter->priv->driver = g_strdup (value);
+ emit_changed (adapter, "driver");
+ }
+}
+
+void
+devkit_disks_adapter_set_num_ports (DevkitDisksAdapter *adapter, guint value)
+{
+ if (G_UNLIKELY (adapter->priv->num_ports != value))
+ {
+ adapter->priv->num_ports = value;
+ emit_changed (adapter, "num_ports");
+ }
+}
+
+void
+devkit_disks_adapter_set_fabric (DevkitDisksAdapter *adapter, const gchar *value)
+{
+ if (G_UNLIKELY (g_strcmp0 (adapter->priv->fabric, value) != 0))
+ {
+ g_free (adapter->priv->fabric);
+ adapter->priv->fabric = g_strdup (value);
+ emit_changed (adapter, "fabric");
+ }
+}
*
*/
-#ifndef __DEVKIT_DISKS_CONTROLLER_PRIVATE_H__
-#define __DEVKIT_DISKS_CONTROLLER_PRIVATE_H__
+#ifndef __DEVKIT_DISKS_ADAPTER_PRIVATE_H__
+#define __DEVKIT_DISKS_ADAPTER_PRIVATE_H__
#include <dbus/dbus-glib.h>
#include <gudev/gudev.h>
G_BEGIN_DECLS
-struct DevkitDisksControllerPrivate
+struct DevkitDisksAdapterPrivate
{
DBusGConnection *system_bus_connection;
DevkitDisksDaemon *daemon;
/* property setters */
-void devkit_disks_controller_set_vendor (DevkitDisksController *controller, const gchar *value);
-void devkit_disks_controller_set_model (DevkitDisksController *controller, const gchar *value);
-void devkit_disks_controller_set_driver (DevkitDisksController *controller, const gchar *value);
-void devkit_disks_controller_set_num_ports (DevkitDisksController *controller, guint value);
-void devkit_disks_controller_set_fabric (DevkitDisksController *controller, const gchar *value);
+void devkit_disks_adapter_set_vendor (DevkitDisksAdapter *adapter, const gchar *value);
+void devkit_disks_adapter_set_model (DevkitDisksAdapter *adapter, const gchar *value);
+void devkit_disks_adapter_set_driver (DevkitDisksAdapter *adapter, const gchar *value);
+void devkit_disks_adapter_set_num_ports (DevkitDisksAdapter *adapter, guint value);
+void devkit_disks_adapter_set_fabric (DevkitDisksAdapter *adapter, const gchar *value);
G_END_DECLS
-#endif /* __DEVKIT_DISKS_CONTROLLER_PRIVATE_H__ */
+#endif /* __DEVKIT_DISKS_ADAPTER_PRIVATE_H__ */
#include <atasmart.h>
#include "devkit-disks-daemon.h"
-#include "devkit-disks-controller.h"
-#include "devkit-disks-controller-private.h"
+#include "devkit-disks-adapter.h"
+#include "devkit-disks-adapter-private.h"
#include "devkit-disks-marshal.h"
/*--------------------------------------------------------------------------------------------------------------*/
-#include "devkit-disks-controller-glue.h"
+#include "devkit-disks-adapter-glue.h"
-static void devkit_disks_controller_class_init (DevkitDisksControllerClass *klass);
-static void devkit_disks_controller_init (DevkitDisksController *seat);
-static void devkit_disks_controller_finalize (GObject *object);
+static void devkit_disks_adapter_class_init (DevkitDisksAdapterClass *klass);
+static void devkit_disks_adapter_init (DevkitDisksAdapter *seat);
+static void devkit_disks_adapter_finalize (GObject *object);
-static gboolean update_info (DevkitDisksController *controller);
+static gboolean update_info (DevkitDisksAdapter *adapter);
-static void drain_pending_changes (DevkitDisksController *controller, gboolean force_update);
+static void drain_pending_changes (DevkitDisksAdapter *adapter, gboolean force_update);
enum
{
static guint signals[LAST_SIGNAL] = { 0 };
-G_DEFINE_TYPE (DevkitDisksController, devkit_disks_controller, G_TYPE_OBJECT)
+G_DEFINE_TYPE (DevkitDisksAdapter, devkit_disks_adapter, G_TYPE_OBJECT)
-#define DEVKIT_DISKS_CONTROLLER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), DEVKIT_DISKS_TYPE_CONTROLLER, DevkitDisksControllerPrivate))
+#define DEVKIT_DISKS_ADAPTER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), DEVKIT_DISKS_TYPE_ADAPTER, DevkitDisksAdapterPrivate))
static void
get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
- DevkitDisksController *controller = DEVKIT_DISKS_CONTROLLER (object);
+ DevkitDisksAdapter *adapter = DEVKIT_DISKS_ADAPTER (object);
switch (prop_id) {
case PROP_NATIVE_PATH:
- g_value_set_string (value, controller->priv->native_path);
+ g_value_set_string (value, adapter->priv->native_path);
break;
case PROP_VENDOR:
- g_value_set_string (value, controller->priv->vendor);
+ g_value_set_string (value, adapter->priv->vendor);
break;
case PROP_MODEL:
- g_value_set_string (value, controller->priv->model);
+ g_value_set_string (value, adapter->priv->model);
break;
case PROP_DRIVER:
- g_value_set_string (value, controller->priv->driver);
+ g_value_set_string (value, adapter->priv->driver);
break;
case PROP_NUM_PORTS:
- g_value_set_uint (value, controller->priv->num_ports);
+ g_value_set_uint (value, adapter->priv->num_ports);
break;
case PROP_FABRIC:
- g_value_set_string (value, controller->priv->fabric);
+ g_value_set_string (value, adapter->priv->fabric);
break;
default:
}
static void
-devkit_disks_controller_class_init (DevkitDisksControllerClass *klass)
+devkit_disks_adapter_class_init (DevkitDisksAdapterClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = devkit_disks_controller_finalize;
+ object_class->finalize = devkit_disks_adapter_finalize;
object_class->get_property = get_property;
- g_type_class_add_private (klass, sizeof (DevkitDisksControllerPrivate));
+ g_type_class_add_private (klass, sizeof (DevkitDisksAdapterPrivate));
signals[CHANGED_SIGNAL] =
g_signal_new ("changed",
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- dbus_g_object_type_install_info (DEVKIT_DISKS_TYPE_CONTROLLER, &dbus_glib_devkit_disks_controller_object_info);
+ dbus_g_object_type_install_info (DEVKIT_DISKS_TYPE_ADAPTER, &dbus_glib_devkit_disks_adapter_object_info);
g_object_class_install_property (
object_class,
}
static void
-devkit_disks_controller_init (DevkitDisksController *controller)
+devkit_disks_adapter_init (DevkitDisksAdapter *adapter)
{
- controller->priv = DEVKIT_DISKS_CONTROLLER_GET_PRIVATE (controller);
+ adapter->priv = DEVKIT_DISKS_ADAPTER_GET_PRIVATE (adapter);
}
static void
-devkit_disks_controller_finalize (GObject *object)
+devkit_disks_adapter_finalize (GObject *object)
{
- DevkitDisksController *controller;
+ DevkitDisksAdapter *adapter;
g_return_if_fail (object != NULL);
- g_return_if_fail (DEVKIT_DISKS_IS_CONTROLLER (object));
+ g_return_if_fail (DEVKIT_DISKS_IS_ADAPTER (object));
- controller = DEVKIT_DISKS_CONTROLLER (object);
- g_return_if_fail (controller->priv != NULL);
+ adapter = DEVKIT_DISKS_ADAPTER (object);
+ g_return_if_fail (adapter->priv != NULL);
- /* g_debug ("finalizing %s", controller->priv->native_path); */
+ /* g_debug ("finalizing %s", adapter->priv->native_path); */
- g_object_unref (controller->priv->d);
- g_object_unref (controller->priv->daemon);
- g_free (controller->priv->object_path);
+ g_object_unref (adapter->priv->d);
+ g_object_unref (adapter->priv->daemon);
+ g_free (adapter->priv->object_path);
- g_free (controller->priv->native_path);
+ g_free (adapter->priv->native_path);
- if (controller->priv->emit_changed_idle_id > 0)
- g_source_remove (controller->priv->emit_changed_idle_id);
+ if (adapter->priv->emit_changed_idle_id > 0)
+ g_source_remove (adapter->priv->emit_changed_idle_id);
/* free properties */
- g_free (controller->priv->vendor);
- g_free (controller->priv->model);
- g_free (controller->priv->driver);
+ g_free (adapter->priv->vendor);
+ g_free (adapter->priv->model);
+ g_free (adapter->priv->driver);
- G_OBJECT_CLASS (devkit_disks_controller_parent_class)->finalize (object);
+ G_OBJECT_CLASS (devkit_disks_adapter_parent_class)->finalize (object);
}
/**
* compute_object_path:
* @native_path: Either an absolute sysfs path or the basename
*
- * Maps @native_path to the D-Bus object path for the controller.
+ * Maps @native_path to the D-Bus object path for the adapter.
*
* Returns: A valid D-Bus object path. Free with g_free().
*/
basename = native_path;
}
- s = g_string_new ("/org/freedesktop/DeviceKit/Disks/controllers/");
+ s = g_string_new ("/org/freedesktop/DeviceKit/Disks/adapters/");
for (n = 0; basename[n] != '\0'; n++) {
gint c = basename[n];
/* ---------------------------------------------------------------------------------------------------- */
static gboolean
-register_disks_controller (DevkitDisksController *controller)
+register_disks_adapter (DevkitDisksAdapter *adapter)
{
DBusConnection *connection;
GError *error = NULL;
- controller->priv->system_bus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
- if (controller->priv->system_bus_connection == NULL) {
+ adapter->priv->system_bus_connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+ if (adapter->priv->system_bus_connection == NULL) {
if (error != NULL) {
g_critical ("error getting system bus: %s", error->message);
g_error_free (error);
}
goto error;
}
- connection = dbus_g_connection_get_connection (controller->priv->system_bus_connection);
+ connection = dbus_g_connection_get_connection (adapter->priv->system_bus_connection);
- controller->priv->object_path = compute_object_path (controller->priv->native_path);
+ adapter->priv->object_path = compute_object_path (adapter->priv->native_path);
/* safety first */
- if (dbus_g_connection_lookup_g_object (controller->priv->system_bus_connection,
- controller->priv->object_path) != NULL) {
+ if (dbus_g_connection_lookup_g_object (adapter->priv->system_bus_connection,
+ adapter->priv->object_path) != NULL) {
g_error ("**** HACK: Wanting to register object at path `%s' but there is already an "
"object there. This is an internal error in the daemon. Aborting.\n",
- controller->priv->object_path);
+ adapter->priv->object_path);
}
- dbus_g_connection_register_g_object (controller->priv->system_bus_connection,
- controller->priv->object_path,
- G_OBJECT (controller));
+ dbus_g_connection_register_g_object (adapter->priv->system_bus_connection,
+ adapter->priv->object_path,
+ G_OBJECT (adapter));
return TRUE;
}
void
-devkit_disks_controller_removed (DevkitDisksController *controller)
+devkit_disks_adapter_removed (DevkitDisksAdapter *adapter)
{
- controller->priv->removed = TRUE;
+ adapter->priv->removed = TRUE;
- dbus_g_connection_unregister_g_object (controller->priv->system_bus_connection,
- G_OBJECT (controller));
- g_assert (dbus_g_connection_lookup_g_object (controller->priv->system_bus_connection,
- controller->priv->object_path) == NULL);
+ dbus_g_connection_unregister_g_object (adapter->priv->system_bus_connection,
+ G_OBJECT (adapter));
+ g_assert (dbus_g_connection_lookup_g_object (adapter->priv->system_bus_connection,
+ adapter->priv->object_path) == NULL);
}
-DevkitDisksController *
-devkit_disks_controller_new (DevkitDisksDaemon *daemon, GUdevDevice *d)
+DevkitDisksAdapter *
+devkit_disks_adapter_new (DevkitDisksDaemon *daemon, GUdevDevice *d)
{
- DevkitDisksController *controller;
+ DevkitDisksAdapter *adapter;
const char *native_path;
- controller = NULL;
+ adapter = NULL;
native_path = g_udev_device_get_sysfs_path (d);
- controller = DEVKIT_DISKS_CONTROLLER (g_object_new (DEVKIT_DISKS_TYPE_CONTROLLER, NULL));
- controller->priv->d = g_object_ref (d);
- controller->priv->daemon = g_object_ref (daemon);
- controller->priv->native_path = g_strdup (native_path);
+ adapter = DEVKIT_DISKS_ADAPTER (g_object_new (DEVKIT_DISKS_TYPE_ADAPTER, NULL));
+ adapter->priv->d = g_object_ref (d);
+ adapter->priv->daemon = g_object_ref (daemon);
+ adapter->priv->native_path = g_strdup (native_path);
- if (!update_info (controller)) {
- g_object_unref (controller);
- controller = NULL;
+ if (!update_info (adapter)) {
+ g_object_unref (adapter);
+ adapter = NULL;
goto out;
}
- if (!register_disks_controller (DEVKIT_DISKS_CONTROLLER (controller))) {
- g_object_unref (controller);
- controller = NULL;
+ if (!register_disks_adapter (DEVKIT_DISKS_ADAPTER (adapter))) {
+ g_object_unref (adapter);
+ adapter = NULL;
goto out;
}
out:
- return controller;
+ return adapter;
}
static void
-drain_pending_changes (DevkitDisksController *controller, gboolean force_update)
+drain_pending_changes (DevkitDisksAdapter *adapter, gboolean force_update)
{
gboolean emit_changed;
/* the update-in-idle is set up if, and only if, there are pending changes - so
* we should emit a 'change' event only if it is set up
*/
- if (controller->priv->emit_changed_idle_id != 0) {
- g_source_remove (controller->priv->emit_changed_idle_id);
- controller->priv->emit_changed_idle_id = 0;
+ if (adapter->priv->emit_changed_idle_id != 0) {
+ g_source_remove (adapter->priv->emit_changed_idle_id);
+ adapter->priv->emit_changed_idle_id = 0;
emit_changed = TRUE;
}
- if ((!controller->priv->removed) && (emit_changed || force_update)) {
- if (controller->priv->object_path != NULL) {
- g_print ("**** EMITTING CHANGED for %s\n", controller->priv->native_path);
- g_signal_emit_by_name (controller, "changed");
- g_signal_emit_by_name (controller->priv->daemon, "controller-changed", controller->priv->object_path);
+ if ((!adapter->priv->removed) && (emit_changed || force_update)) {
+ if (adapter->priv->object_path != NULL) {
+ g_print ("**** EMITTING CHANGED for %s\n", adapter->priv->native_path);
+ g_signal_emit_by_name (adapter, "changed");
+ g_signal_emit_by_name (adapter->priv->daemon, "adapter-changed", adapter->priv->object_path);
}
}
}
/* called by the daemon on the 'change' uevent */
gboolean
-devkit_disks_controller_changed (DevkitDisksController *controller, GUdevDevice *d, gboolean synthesized)
+devkit_disks_adapter_changed (DevkitDisksAdapter *adapter, GUdevDevice *d, gboolean synthesized)
{
- gboolean keep_controller;
+ gboolean keep_adapter;
- g_object_unref (controller->priv->d);
- controller->priv->d = g_object_ref (d);
+ g_object_unref (adapter->priv->d);
+ adapter->priv->d = g_object_ref (d);
- keep_controller = update_info (controller);
+ keep_adapter = update_info (adapter);
- /* this 'change' event might prompt us to remove the controller */
- if (!keep_controller)
+ /* this 'change' event might prompt us to remove the adapter */
+ if (!keep_adapter)
goto out;
/* no, it's good .. keep it.. and always force a 'change' signal if the event isn't synthesized */
- drain_pending_changes (controller, !synthesized);
+ drain_pending_changes (adapter, !synthesized);
out:
- return keep_controller;
+ return keep_adapter;
}
/* ---------------------------------------------------------------------------------------------------- */
const char *
-devkit_disks_controller_local_get_object_path (DevkitDisksController *controller)
+devkit_disks_adapter_local_get_object_path (DevkitDisksAdapter *adapter)
{
- return controller->priv->object_path;
+ return adapter->priv->object_path;
}
const char *
-devkit_disks_controller_local_get_native_path (DevkitDisksController *controller)
+devkit_disks_adapter_local_get_native_path (DevkitDisksAdapter *adapter)
{
- return controller->priv->native_path;
+ return adapter->priv->native_path;
}
/* ---------------------------------------------------------------------------------------------------- */
/**
* update_info:
- * @controller: the controller
+ * @adapter: the adapter
*
- * Update information about the controller.
+ * Update information about the adapter.
*
* If one or more properties changed, the changes are scheduled to be emitted. Use
* drain_pending_changes() to force emitting the pending changes (which is useful
* before returning the result of an operation).
*
- * Returns: #TRUE to keep (or add) the controller; #FALSE to ignore (or remove) the controller
+ * Returns: #TRUE to keep (or add) the adapter; #FALSE to ignore (or remove) the adapter
**/
static gboolean
-update_info (DevkitDisksController *controller)
+update_info (DevkitDisksAdapter *adapter)
{
gboolean ret;
guint64 device_class;
vendor = NULL;
model = NULL;
- /* Only care about Mass Storage Controller devices */
- device_class = g_udev_device_get_sysfs_attr_as_uint64 (controller->priv->d, "class");
+ /* Only care about Mass Storage Adapter devices */
+ device_class = g_udev_device_get_sysfs_attr_as_uint64 (adapter->priv->d, "class");
if (((device_class & 0xff0000) >> 16) != 0x01)
goto out;
- g_print ("**** UPDATING %s\n", controller->priv->native_path);
+ g_print ("**** UPDATING %s\n", adapter->priv->native_path);
- vendor = g_strdup (g_udev_device_get_property (controller->priv->d, "ID_VENDOR_FROM_DATABASE"));
- model = g_strdup (g_udev_device_get_property (controller->priv->d, "ID_MODEL_FROM_DATABASE"));
+ vendor = g_strdup (g_udev_device_get_property (adapter->priv->d, "ID_VENDOR_FROM_DATABASE"));
+ model = g_strdup (g_udev_device_get_property (adapter->priv->d, "ID_MODEL_FROM_DATABASE"));
- /* TODO: probably want subsystem vendor and model - for the controllers in my Thinkpad X61 (not T61!)
+ /* TODO: probably want subsystem vendor and model - for the adapters in my Thinkpad X61 (not T61!)
* it looks like this
*
* 00:1f.1: vendor: Intel Corporation"
- * model: 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller
+ * model: 82801HBM/HEM (ICH8M/ICH8M-E) IDE Adapter
* subsys_vendor: Lenovo
* subsys_model: ThinkPad T61
*
* 00:1f.2: vendor: Intel Corporation
- * model: 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller
+ * model: 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Adapter
* subsys_vendor: Lenovo
* subsys_model: ThinkPad T61
*
*/
/* TODO: we want some kind of "type" or "interconnect" for the
- * controller - e.g. SATA/PATA/SAS/FC/iSCSI - also want version
+ * adapter - e.g. SATA/PATA/SAS/FC/iSCSI - also want version
* (e.g. SATA1, SATA2) and speed (e.g. 150MB/s, 300MB/s)
*/
* SASx4 (wide lane), FC... and the role (initiator or target)
*/
- /* TODO: want to convey some kind of information about where the controller
+ /* TODO: want to convey some kind of information about where the adapter
* is located (express-card, pc-card, pci-slot, onboard)...
*/
if (vendor == NULL) {
vendor = g_strdup_printf ("[vendor=0x%04x subsys=0x%04x]",
- g_udev_device_get_sysfs_attr_as_int (controller->priv->d, "vendor"),
- g_udev_device_get_sysfs_attr_as_int (controller->priv->d, "subsystem_vendor"));
+ g_udev_device_get_sysfs_attr_as_int (adapter->priv->d, "vendor"),
+ g_udev_device_get_sysfs_attr_as_int (adapter->priv->d, "subsystem_vendor"));
}
if (model == NULL) {
- vendor = g_strdup_printf ("Storage Controller [model=0x%04x subsys=0x%04x]",
- g_udev_device_get_sysfs_attr_as_int (controller->priv->d, "device"),
- g_udev_device_get_sysfs_attr_as_int (controller->priv->d, "subsystem_device"));
+ vendor = g_strdup_printf ("Storage Adapter [model=0x%04x subsys=0x%04x]",
+ g_udev_device_get_sysfs_attr_as_int (adapter->priv->d, "device"),
+ g_udev_device_get_sysfs_attr_as_int (adapter->priv->d, "subsystem_device"));
}
- driver = g_udev_device_get_driver (controller->priv->d);
+ driver = g_udev_device_get_driver (adapter->priv->d);
- devkit_disks_controller_set_vendor (controller, vendor);
- devkit_disks_controller_set_model (controller, model);
- devkit_disks_controller_set_driver (controller, driver);
+ devkit_disks_adapter_set_vendor (adapter, vendor);
+ devkit_disks_adapter_set_model (adapter, model);
+ devkit_disks_adapter_set_driver (adapter, driver);
ret = TRUE;
--- /dev/null
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 David Zeuthen <david@fubar.dk>
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef __DEVKIT_DISKS_ADAPTER_H__
+#define __DEVKIT_DISKS_ADAPTER_H__
+
+#include <dbus/dbus-glib.h>
+#include <gudev/gudev.h>
+#include <sys/types.h>
+
+#include "devkit-disks-types.h"
+
+G_BEGIN_DECLS
+
+#define DEVKIT_DISKS_TYPE_ADAPTER (devkit_disks_adapter_get_type ())
+#define DEVKIT_DISKS_ADAPTER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), DEVKIT_DISKS_TYPE_ADAPTER, DevkitDisksAdapter))
+#define DEVKIT_DISKS_ADAPTER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), DEVKIT_DISKS_TYPE_ADAPTER, DevkitDisksAdapterClass))
+#define DEVKIT_DISKS_IS_ADAPTER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), DEVKIT_DISKS_TYPE_ADAPTER))
+#define DEVKIT_DISKS_IS_ADAPTER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), DEVKIT_DISKS_TYPE_ADAPTER))
+#define DEVKIT_DISKS_ADAPTER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), DEVKIT_DISKS_TYPE_ADAPTER, DevkitDisksAdapterClass))
+
+typedef struct DevkitDisksAdapterClass DevkitDisksAdapterClass;
+typedef struct DevkitDisksAdapterPrivate DevkitDisksAdapterPrivate;
+
+struct DevkitDisksAdapter
+{
+ GObject parent;
+ DevkitDisksAdapterPrivate *priv;
+};
+
+struct DevkitDisksAdapterClass
+{
+ GObjectClass parent_class;
+};
+
+GType devkit_disks_adapter_get_type (void) G_GNUC_CONST;
+
+DevkitDisksAdapter *devkit_disks_adapter_new (DevkitDisksDaemon *daemon,
+ GUdevDevice *d);
+
+gboolean devkit_disks_adapter_changed (DevkitDisksAdapter *adapter,
+ GUdevDevice *d,
+ gboolean synthesized);
+
+void devkit_disks_adapter_removed (DevkitDisksAdapter *adapter);
+
+/* local methods */
+
+const char *devkit_disks_adapter_local_get_object_path (DevkitDisksAdapter *adapter);
+const char *devkit_disks_adapter_local_get_native_path (DevkitDisksAdapter *adapter);
+
+G_END_DECLS
+
+#endif /* __DEVKIT_DISKS_ADAPTER_H__ */
+++ /dev/null
-/*
- * Copyright (C) 2009 David Zeuthen <david@fubar.dk>
- *
- * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <string.h>
-#include "devkit-disks-controller.h"
-#include "devkit-disks-controller-private.h"
-
-static gboolean
-emit_changed_idle_cb (gpointer data)
-{
- DevkitDisksController *controller = DEVKIT_DISKS_CONTROLLER (data);
-
- //g_debug ("XXX emitting 'changed' in idle");
-
- if (!controller->priv->removed)
- {
- g_print ("**** EMITTING CHANGED for %s\n", controller->priv->native_path);
- g_signal_emit_by_name (controller->priv->daemon,
- "controller-changed",
- controller->priv->object_path);
- g_signal_emit_by_name (controller, "changed");
- }
- controller->priv->emit_changed_idle_id = 0;
-
- /* remove the idle source */
- return FALSE;
-}
-
-static void
-emit_changed (DevkitDisksController *controller, const gchar *name)
-{
- //g_debug ("property %s changed for %s", name, controller->priv->controller_file);
-
- if (controller->priv->object_path != NULL)
- {
- /* schedule a 'changed' signal in idle if one hasn't been scheduled already */
- if (controller->priv->emit_changed_idle_id == 0)
- {
- controller->priv->emit_changed_idle_id = g_idle_add_full (G_PRIORITY_DEFAULT,
- emit_changed_idle_cb,
- g_object_ref (controller),
- (GDestroyNotify) g_object_unref);
- }
- }
-}
-
-void
-devkit_disks_controller_set_vendor (DevkitDisksController *controller, const gchar *value)
-{
- if (G_UNLIKELY (g_strcmp0 (controller->priv->vendor, value) != 0))
- {
- g_free (controller->priv->vendor);
- controller->priv->vendor = g_strdup (value);
- emit_changed (controller, "vendor");
- }
-}
-
-void
-devkit_disks_controller_set_model (DevkitDisksController *controller, const gchar *value)
-{
- if (G_UNLIKELY (g_strcmp0 (controller->priv->model, value) != 0))
- {
- g_free (controller->priv->model);
- controller->priv->model = g_strdup (value);
- emit_changed (controller, "model");
- }
-}
-
-void
-devkit_disks_controller_set_driver (DevkitDisksController *controller, const gchar *value)
-{
- if (G_UNLIKELY (g_strcmp0 (controller->priv->driver, value) != 0))
- {
- g_free (controller->priv->driver);
- controller->priv->driver = g_strdup (value);
- emit_changed (controller, "driver");
- }
-}
-
-void
-devkit_disks_controller_set_num_ports (DevkitDisksController *controller, guint value)
-{
- if (G_UNLIKELY (controller->priv->num_ports != value))
- {
- controller->priv->num_ports = value;
- emit_changed (controller, "num_ports");
- }
-}
-
-void
-devkit_disks_controller_set_fabric (DevkitDisksController *controller, const gchar *value)
-{
- if (G_UNLIKELY (g_strcmp0 (controller->priv->fabric, value) != 0))
- {
- g_free (controller->priv->fabric);
- controller->priv->fabric = g_strdup (value);
- emit_changed (controller, "fabric");
- }
-}
+++ /dev/null
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * Copyright (C) 2009 David Zeuthen <david@fubar.dk>
- *
- * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __DEVKIT_DISKS_CONTROLLER_H__
-#define __DEVKIT_DISKS_CONTROLLER_H__
-
-#include <dbus/dbus-glib.h>
-#include <gudev/gudev.h>
-#include <sys/types.h>
-
-#include "devkit-disks-types.h"
-
-G_BEGIN_DECLS
-
-#define DEVKIT_DISKS_TYPE_CONTROLLER (devkit_disks_controller_get_type ())
-#define DEVKIT_DISKS_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), DEVKIT_DISKS_TYPE_CONTROLLER, DevkitDisksController))
-#define DEVKIT_DISKS_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), DEVKIT_DISKS_TYPE_CONTROLLER, DevkitDisksControllerClass))
-#define DEVKIT_DISKS_IS_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), DEVKIT_DISKS_TYPE_CONTROLLER))
-#define DEVKIT_DISKS_IS_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), DEVKIT_DISKS_TYPE_CONTROLLER))
-#define DEVKIT_DISKS_CONTROLLER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), DEVKIT_DISKS_TYPE_CONTROLLER, DevkitDisksControllerClass))
-
-typedef struct DevkitDisksControllerClass DevkitDisksControllerClass;
-typedef struct DevkitDisksControllerPrivate DevkitDisksControllerPrivate;
-
-struct DevkitDisksController
-{
- GObject parent;
- DevkitDisksControllerPrivate *priv;
-};
-
-struct DevkitDisksControllerClass
-{
- GObjectClass parent_class;
-};
-
-GType devkit_disks_controller_get_type (void) G_GNUC_CONST;
-
-DevkitDisksController *devkit_disks_controller_new (DevkitDisksDaemon *daemon,
- GUdevDevice *d);
-
-gboolean devkit_disks_controller_changed (DevkitDisksController *controller,
- GUdevDevice *d,
- gboolean synthesized);
-
-void devkit_disks_controller_removed (DevkitDisksController *controller);
-
-/* local methods */
-
-const char *devkit_disks_controller_local_get_object_path (DevkitDisksController *controller);
-const char *devkit_disks_controller_local_get_native_path (DevkitDisksController *controller);
-
-G_END_DECLS
-
-#endif /* __DEVKIT_DISKS_CONTROLLER_H__ */
#include "devkit-disks-daemon.h"
#include "devkit-disks-device.h"
#include "devkit-disks-device-private.h"
-#include "devkit-disks-controller.h"
-#include "devkit-disks-controller-private.h"
+#include "devkit-disks-adapter.h"
+#include "devkit-disks-adapter-private.h"
#include "devkit-disks-port.h"
#include "devkit-disks-port-private.h"
#include "devkit-disks-mount-file.h"
DEVICE_REMOVED_SIGNAL,
DEVICE_CHANGED_SIGNAL,
DEVICE_JOB_CHANGED_SIGNAL,
- CONTROLLER_ADDED_SIGNAL,
- CONTROLLER_REMOVED_SIGNAL,
- CONTROLLER_CHANGED_SIGNAL,
+ ADAPTER_ADDED_SIGNAL,
+ ADAPTER_REMOVED_SIGNAL,
+ ADAPTER_CHANGED_SIGNAL,
PORT_ADDED_SIGNAL,
PORT_REMOVED_SIGNAL,
PORT_CHANGED_SIGNAL,
GHashTable *map_native_path_to_device;
GHashTable *map_object_path_to_device;
- GHashTable *map_native_path_to_controller;
- GHashTable *map_object_path_to_controller;
+ GHashTable *map_native_path_to_adapter;
+ GHashTable *map_object_path_to_adapter;
GHashTable *map_native_path_to_port;
GHashTable *map_object_path_to_port;
G_TYPE_BOOLEAN,
G_TYPE_DOUBLE);
- signals[CONTROLLER_ADDED_SIGNAL] =
- g_signal_new ("controller-added",
+ signals[ADAPTER_ADDED_SIGNAL] =
+ g_signal_new ("adapter-added",
G_OBJECT_CLASS_TYPE (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
0,
g_cclosure_marshal_VOID__BOXED,
G_TYPE_NONE, 1, DBUS_TYPE_G_OBJECT_PATH);
- signals[CONTROLLER_REMOVED_SIGNAL] =
- g_signal_new ("controller-removed",
+ signals[ADAPTER_REMOVED_SIGNAL] =
+ g_signal_new ("adapter-removed",
G_OBJECT_CLASS_TYPE (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
0,
g_cclosure_marshal_VOID__BOXED,
G_TYPE_NONE, 1, DBUS_TYPE_G_OBJECT_PATH);
- signals[CONTROLLER_CHANGED_SIGNAL] =
- g_signal_new ("controller-changed",
+ signals[ADAPTER_CHANGED_SIGNAL] =
+ g_signal_new ("adapter-changed",
G_OBJECT_CLASS_TYPE (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
0,
g_str_equal,
g_free,
g_object_unref);
- daemon->priv->map_native_path_to_controller = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_object_unref);
- daemon->priv->map_object_path_to_controller = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_object_unref);
+ daemon->priv->map_native_path_to_adapter = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_object_unref);
+ daemon->priv->map_object_path_to_adapter = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ g_object_unref);
daemon->priv->map_native_path_to_port = g_hash_table_new_full (g_str_hash,
g_str_equal,
g_free,
if (daemon->priv->map_object_path_to_device != NULL) {
g_hash_table_unref (daemon->priv->map_object_path_to_device);
}
- if (daemon->priv->map_native_path_to_controller != NULL) {
- g_hash_table_unref (daemon->priv->map_native_path_to_controller);
+ if (daemon->priv->map_native_path_to_adapter != NULL) {
+ g_hash_table_unref (daemon->priv->map_native_path_to_adapter);
}
- if (daemon->priv->map_object_path_to_controller != NULL) {
- g_hash_table_unref (daemon->priv->map_object_path_to_controller);
+ if (daemon->priv->map_object_path_to_adapter != NULL) {
+ g_hash_table_unref (daemon->priv->map_object_path_to_adapter);
}
if (daemon->priv->map_native_path_to_port != NULL) {
g_hash_table_unref (daemon->priv->map_native_path_to_port);
static void
pci_device_changed (DevkitDisksDaemon *daemon, GUdevDevice *d, gboolean synthesized)
{
- DevkitDisksController *controller;
+ DevkitDisksAdapter *adapter;
const char *native_path;
native_path = g_udev_device_get_sysfs_path (d);
- controller = g_hash_table_lookup (daemon->priv->map_native_path_to_controller, native_path);
- if (controller != NULL) {
- gboolean keep_controller;
+ adapter = g_hash_table_lookup (daemon->priv->map_native_path_to_adapter, native_path);
+ if (adapter != NULL) {
+ gboolean keep_adapter;
g_print ("**** pci CHANGING %s\n", native_path);
* it back after processing. The kernel name will never change so the object
* path will fortunately remain constant.
*/
- g_warn_if_fail (g_hash_table_remove (daemon->priv->map_native_path_to_controller,
- controller->priv->native_path));
+ g_warn_if_fail (g_hash_table_remove (daemon->priv->map_native_path_to_adapter,
+ adapter->priv->native_path));
- keep_controller = devkit_disks_controller_changed (controller, d, synthesized);
+ keep_adapter = devkit_disks_adapter_changed (adapter, d, synthesized);
- g_assert (devkit_disks_controller_local_get_native_path (controller) != NULL);
- g_assert (g_strcmp0 (native_path, devkit_disks_controller_local_get_native_path (controller)) == 0);
+ g_assert (devkit_disks_adapter_local_get_native_path (adapter) != NULL);
+ g_assert (g_strcmp0 (native_path, devkit_disks_adapter_local_get_native_path (adapter)) == 0);
/* now add the things back to the global hashtables - it's important that we
- * do this *before* calling controller_remove() - otherwise it will never remove
- * the controller
+ * do this *before* calling adapter_remove() - otherwise it will never remove
+ * the adapter
*/
- g_hash_table_insert (daemon->priv->map_native_path_to_controller,
- g_strdup (devkit_disks_controller_local_get_native_path (controller)),
- g_object_ref (controller));
+ g_hash_table_insert (daemon->priv->map_native_path_to_adapter,
+ g_strdup (devkit_disks_adapter_local_get_native_path (adapter)),
+ g_object_ref (adapter));
- if (!keep_controller) {
+ if (!keep_adapter) {
g_print ("**** pci CHANGE TRIGGERED REMOVE %s\n", native_path);
device_remove (daemon, d);
} else {
static void
pci_device_add (DevkitDisksDaemon *daemon, GUdevDevice *d, gboolean emit_event)
{
- DevkitDisksController *controller;
+ DevkitDisksAdapter *adapter;
const char *native_path;
native_path = g_udev_device_get_sysfs_path (d);
- controller = g_hash_table_lookup (daemon->priv->map_native_path_to_controller, native_path);
- if (controller != NULL) {
- /* we already have the controller; treat as change event */
+ adapter = g_hash_table_lookup (daemon->priv->map_native_path_to_adapter, native_path);
+ if (adapter != NULL) {
+ /* we already have the adapter; treat as change event */
g_print ("**** pci TREATING ADD AS CHANGE %s\n", native_path);
device_changed (daemon, d, FALSE);
} else {
g_print ("**** pci ADDING %s\n", native_path);
- controller = devkit_disks_controller_new (daemon, d);
-
- if (controller != NULL) {
- /* assert that the controller is fully loaded with info */
- g_assert (devkit_disks_controller_local_get_native_path (controller) != NULL);
- g_assert (devkit_disks_controller_local_get_object_path (controller) != NULL);
- g_assert (g_strcmp0 (native_path, devkit_disks_controller_local_get_native_path (controller)) == 0);
-
- g_hash_table_insert (daemon->priv->map_native_path_to_controller,
- g_strdup (devkit_disks_controller_local_get_native_path (controller)),
- g_object_ref (controller));
- g_hash_table_insert (daemon->priv->map_object_path_to_controller,
- g_strdup (devkit_disks_controller_local_get_object_path (controller)),
- g_object_ref (controller));
+ adapter = devkit_disks_adapter_new (daemon, d);
+
+ if (adapter != NULL) {
+ /* assert that the adapter is fully loaded with info */
+ g_assert (devkit_disks_adapter_local_get_native_path (adapter) != NULL);
+ g_assert (devkit_disks_adapter_local_get_object_path (adapter) != NULL);
+ g_assert (g_strcmp0 (native_path, devkit_disks_adapter_local_get_native_path (adapter)) == 0);
+
+ g_hash_table_insert (daemon->priv->map_native_path_to_adapter,
+ g_strdup (devkit_disks_adapter_local_get_native_path (adapter)),
+ g_object_ref (adapter));
+ g_hash_table_insert (daemon->priv->map_object_path_to_adapter,
+ g_strdup (devkit_disks_adapter_local_get_object_path (adapter)),
+ g_object_ref (adapter));
g_print ("**** pci ADDED %s\n", native_path);
if (emit_event) {
const char *object_path;
- object_path = devkit_disks_controller_local_get_object_path (controller);
- g_print ("**** pci EMITTING ADDED for %s\n", controller->priv->native_path);
- g_signal_emit (daemon, signals[CONTROLLER_ADDED_SIGNAL], 0, object_path);
+ object_path = devkit_disks_adapter_local_get_object_path (adapter);
+ g_print ("**** pci EMITTING ADDED for %s\n", adapter->priv->native_path);
+ g_signal_emit (daemon, signals[ADAPTER_ADDED_SIGNAL], 0, object_path);
}
} else {
g_print ("**** pci IGNORING ADD %s\n", native_path);
static void
pci_device_remove (DevkitDisksDaemon *daemon, GUdevDevice *d)
{
- DevkitDisksController *controller;
+ DevkitDisksAdapter *adapter;
const char *native_path;
native_path = g_udev_device_get_sysfs_path (d);
- controller = g_hash_table_lookup (daemon->priv->map_native_path_to_controller, native_path);
- if (controller == NULL) {
+ adapter = g_hash_table_lookup (daemon->priv->map_native_path_to_adapter, native_path);
+ if (adapter == NULL) {
g_print ("**** pci IGNORING REMOVE %s\n", native_path);
} else {
g_print ("**** pci REMOVING %s\n", native_path);
- g_warn_if_fail (g_strcmp0 (native_path, controller->priv->native_path) == 0);
+ g_warn_if_fail (g_strcmp0 (native_path, adapter->priv->native_path) == 0);
- g_hash_table_remove (daemon->priv->map_native_path_to_controller,
- controller->priv->native_path);
- g_warn_if_fail (g_hash_table_remove (daemon->priv->map_object_path_to_controller,
- controller->priv->object_path));
+ g_hash_table_remove (daemon->priv->map_native_path_to_adapter,
+ adapter->priv->native_path);
+ g_warn_if_fail (g_hash_table_remove (daemon->priv->map_object_path_to_adapter,
+ adapter->priv->object_path));
- g_print ("**** pci EMITTING REMOVED for %s\n", controller->priv->native_path);
- g_signal_emit (daemon, signals[CONTROLLER_REMOVED_SIGNAL], 0,
- devkit_disks_controller_local_get_object_path (controller));
+ g_print ("**** pci EMITTING REMOVED for %s\n", adapter->priv->native_path);
+ g_signal_emit (daemon, signals[ADAPTER_REMOVED_SIGNAL], 0,
+ devkit_disks_adapter_local_get_object_path (adapter));
- devkit_disks_controller_removed (controller);
+ devkit_disks_adapter_removed (adapter);
- g_object_unref (controller);
+ g_object_unref (adapter);
}
}
DBusError dbus_error;
GError *error = NULL;
const char *subsystems[] = {"block", /* Disks and partitions */
- "pci", /* Storage controllers */
+ "pci", /* Storage adapters */
"scsi_host", /* ATA ports are represented by scsi_host */
NULL};
goto error;
}
- /* process storage controllers */
+ /* process storage adapters */
devices = g_udev_client_query_by_subsystem (daemon->priv->gudev_client, "pci");
for (l = devices; l != NULL; l = l->next) {
GUdevDevice *device = l->data;
/*--------------------------------------------------------------------------------------------------------------*/
-DevkitDisksController *
-devkit_disks_daemon_local_find_controller (DevkitDisksDaemon *daemon,
+DevkitDisksAdapter *
+devkit_disks_daemon_local_find_adapter (DevkitDisksDaemon *daemon,
const gchar *device_native_path)
{
GHashTableIter iter;
const gchar *native_path;
- DevkitDisksController *controller;
- DevkitDisksController *ret;
+ DevkitDisksAdapter *adapter;
+ DevkitDisksAdapter *ret;
ret = NULL;
- g_hash_table_iter_init (&iter, daemon->priv->map_native_path_to_controller);
- while (g_hash_table_iter_next (&iter, (gpointer) &native_path, (gpointer) &controller)) {
+ g_hash_table_iter_init (&iter, daemon->priv->map_native_path_to_adapter);
+ while (g_hash_table_iter_next (&iter, (gpointer) &native_path, (gpointer) &adapter)) {
if (g_str_has_prefix (device_native_path,
- devkit_disks_controller_local_get_native_path (controller))) {
- ret = controller;
+ devkit_disks_adapter_local_get_native_path (adapter))) {
+ ret = adapter;
break;
}
}
/*--------------------------------------------------------------------------------------------------------------*/
static void
-enumerate_controller_cb (gpointer key, gpointer value, gpointer user_data)
+enumerate_adapter_cb (gpointer key, gpointer value, gpointer user_data)
{
- DevkitDisksController *controller = DEVKIT_DISKS_CONTROLLER (value);
+ DevkitDisksAdapter *adapter = DEVKIT_DISKS_ADAPTER (value);
GPtrArray *object_paths = user_data;
- g_ptr_array_add (object_paths, g_strdup (devkit_disks_controller_local_get_object_path (controller)));
+ g_ptr_array_add (object_paths, g_strdup (devkit_disks_adapter_local_get_object_path (adapter)));
}
-/* dbus-send --system --print-reply --dest=org.freedesktop.DeviceKit.Disks /org/freedesktop/DeviceKit/Disks org.freedesktop.DeviceKit.Disks.EnumerateControllers
+/* dbus-send --system --print-reply --dest=org.freedesktop.DeviceKit.Disks /org/freedesktop/DeviceKit/Disks org.freedesktop.DeviceKit.Disks.EnumerateAdapters
*/
gboolean
-devkit_disks_daemon_enumerate_controllers (DevkitDisksDaemon *daemon,
+devkit_disks_daemon_enumerate_adapters (DevkitDisksDaemon *daemon,
DBusGMethodInvocation *context)
{
GPtrArray *object_paths;
object_paths = g_ptr_array_new ();
- g_hash_table_foreach (daemon->priv->map_native_path_to_controller, enumerate_controller_cb, object_paths);
+ g_hash_table_foreach (daemon->priv->map_native_path_to_adapter, enumerate_adapter_cb, object_paths);
dbus_g_method_return (context, object_paths);
g_ptr_array_foreach (object_paths, (GFunc) g_free, NULL);
g_ptr_array_free (object_paths, TRUE);
DevkitDisksDevice *devkit_disks_daemon_local_find_by_dev (DevkitDisksDaemon *daemon,
dev_t dev);
-DevkitDisksController *devkit_disks_daemon_local_find_controller (DevkitDisksDaemon *daemon,
- const gchar *device_native_path);
+DevkitDisksAdapter *devkit_disks_daemon_local_find_adapter (DevkitDisksDaemon *daemon,
+ const gchar *device_native_path);
DevkitDisksPort *devkit_disks_daemon_local_find_port (DevkitDisksDaemon *daemon,
const gchar *device_native_path);
/* exported methods */
-gboolean devkit_disks_daemon_enumerate_controllers (DevkitDisksDaemon *daemon,
- DBusGMethodInvocation *context);
+gboolean devkit_disks_daemon_enumerate_adapters (DevkitDisksDaemon *daemon,
+ DBusGMethodInvocation *context);
gboolean devkit_disks_daemon_enumerate_ports (DevkitDisksDaemon *daemon,
DBusGMethodInvocation *context);
}
void
-devkit_disks_device_set_drive_controller (DevkitDisksDevice *device, const gchar *value)
+devkit_disks_device_set_drive_adapter (DevkitDisksDevice *device, const gchar *value)
{
- if (G_UNLIKELY (g_strcmp0 (device->priv->drive_controller, value) != 0))
+ if (G_UNLIKELY (g_strcmp0 (device->priv->drive_adapter, value) != 0))
{
- g_free (device->priv->drive_controller);
- device->priv->drive_controller = g_strdup (value);
- emit_changed (device, "drive_controller");
+ g_free (device->priv->drive_adapter);
+ device->priv->drive_adapter = g_strdup (value);
+ emit_changed (device, "drive_adapter");
}
}
gboolean drive_is_rotational;
guint drive_rotation_rate;
char *drive_write_cache;
- char *drive_controller;
+ char *drive_adapter;
char *drive_port;
gboolean optical_disc_is_blank;
void devkit_disks_device_set_drive_is_rotational (DevkitDisksDevice *device, gboolean value);
void devkit_disks_device_set_drive_rotation_rate (DevkitDisksDevice *device, guint value);
void devkit_disks_device_set_drive_write_cache (DevkitDisksDevice *device, const gchar *value);
-void devkit_disks_device_set_drive_controller (DevkitDisksDevice *device, const gchar *value);
+void devkit_disks_device_set_drive_adapter (DevkitDisksDevice *device, const gchar *value);
void devkit_disks_device_set_drive_port (DevkitDisksDevice *device, const gchar *value);
void devkit_disks_device_set_optical_disc_is_blank (DevkitDisksDevice *device, gboolean value);
#include "devkit-disks-mount-file.h"
#include "devkit-disks-inhibitor.h"
#include "devkit-disks-poller.h"
-#include "devkit-disks-controller.h"
+#include "devkit-disks-adapter.h"
#include "devkit-disks-port.h"
/*--------------------------------------------------------------------------------------------------------------*/
PROP_DRIVE_IS_ROTATIONAL,
PROP_DRIVE_ROTATION_RATE,
PROP_DRIVE_WRITE_CACHE,
- PROP_DRIVE_CONTROLLER,
+ PROP_DRIVE_ADAPTER,
PROP_DRIVE_PORT,
PROP_OPTICAL_DISC_IS_BLANK,
case PROP_DRIVE_ROTATION_RATE:
g_value_set_uint (value, device->priv->drive_rotation_rate);
break;
- case PROP_DRIVE_CONTROLLER:
- if (device->priv->drive_controller != NULL)
- g_value_set_boxed (value, device->priv->drive_controller);
+ case PROP_DRIVE_ADAPTER:
+ if (device->priv->drive_adapter != NULL)
+ g_value_set_boxed (value, device->priv->drive_adapter);
else
g_value_set_boxed (value, "/");
break;
g_param_spec_string ("drive-write-cache", NULL, NULL, FALSE, G_PARAM_READABLE));
g_object_class_install_property (
object_class,
- PROP_DRIVE_CONTROLLER,
- g_param_spec_boxed ("drive-controller", NULL, NULL, DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE));
+ PROP_DRIVE_ADAPTER,
+ g_param_spec_boxed ("drive-adapter", NULL, NULL, DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE));
g_object_class_install_property (
object_class,
PROP_DRIVE_PORT,
g_ptr_array_free (device->priv->drive_media_compatibility, TRUE);
g_free (device->priv->drive_media);
g_free (device->priv->drive_write_cache);
- g_free (device->priv->drive_controller);
+ g_free (device->priv->drive_adapter);
g_free (device->priv->drive_port);
g_free (device->priv->linux_md_component_level);
/* ---------------------------------------------------------------------------------------------------- */
-/* drive_controller property */
+/* drive_adapter property */
static gboolean
-update_info_drive_controller (DevkitDisksDevice *device)
+update_info_drive_adapter (DevkitDisksDevice *device)
{
- DevkitDisksController *controller;
- const gchar *controller_object_path;
+ DevkitDisksAdapter *adapter;
+ const gchar *adapter_object_path;
- controller_object_path = NULL;
+ adapter_object_path = NULL;
- controller = devkit_disks_daemon_local_find_controller (device->priv->daemon,
- device->priv->native_path);
- if (controller != NULL) {
- controller_object_path = devkit_disks_controller_local_get_object_path (controller);
+ adapter = devkit_disks_daemon_local_find_adapter (device->priv->daemon,
+ device->priv->native_path);
+ if (adapter != NULL) {
+ adapter_object_path = devkit_disks_adapter_local_get_object_path (adapter);
}
- devkit_disks_device_set_drive_controller (device, controller_object_path);
+ devkit_disks_device_set_drive_adapter (device, adapter_object_path);
return TRUE;
}
if (!update_info_media_detection (device))
goto out;
- /* drive_controller proprety */
- if (!update_info_drive_controller (device))
+ /* drive_adapter proprety */
+ if (!update_info_drive_adapter (device))
goto out;
/* drive_port proprety */
}
void
-devkit_disks_port_set_controller (DevkitDisksPort *port, const gchar *value)
+devkit_disks_port_set_adapter (DevkitDisksPort *port, const gchar *value)
{
- if (G_UNLIKELY (g_strcmp0 (port->priv->controller, value) != 0))
+ if (G_UNLIKELY (g_strcmp0 (port->priv->adapter, value) != 0))
{
- g_free (port->priv->controller);
- port->priv->controller = g_strdup (value);
- emit_changed (port, "controller");
+ g_free (port->priv->adapter);
+ port->priv->adapter = g_strdup (value);
+ emit_changed (port, "adapter");
}
}
/* Properties */
/**************/
- gchar *controller;
+ gchar *adapter;
gchar *parent;
gint number;
};
/* property setters */
-void devkit_disks_port_set_controller (DevkitDisksPort *port, const gchar *value);
+void devkit_disks_port_set_adapter (DevkitDisksPort *port, const gchar *value);
void devkit_disks_port_set_parent (DevkitDisksPort *port, const gchar *value);
void devkit_disks_port_set_number (DevkitDisksPort *port, gint value);
#include "devkit-disks-port-private.h"
#include "devkit-disks-marshal.h"
-#include "devkit-disks-controller.h"
+#include "devkit-disks-adapter.h"
/*--------------------------------------------------------------------------------------------------------------*/
#include "devkit-disks-port-glue.h"
PROP_0,
PROP_NATIVE_PATH,
- PROP_CONTROLLER,
+ PROP_ADAPTER,
PROP_PARENT,
PROP_NUMBER,
};
g_value_set_string (value, port->priv->native_path);
break;
- case PROP_CONTROLLER:
- if (port->priv->controller != NULL)
- g_value_set_boxed (value, port->priv->controller);
+ case PROP_ADAPTER:
+ if (port->priv->adapter != NULL)
+ g_value_set_boxed (value, port->priv->adapter);
else
g_value_set_boxed (value, "/");
break;
g_param_spec_string ("native-path", NULL, NULL, NULL, G_PARAM_READABLE));
g_object_class_install_property (
object_class,
- PROP_CONTROLLER,
- g_param_spec_boxed ("controller", NULL, NULL, DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE));
+ PROP_ADAPTER,
+ g_param_spec_boxed ("adapter", NULL, NULL, DBUS_TYPE_G_OBJECT_PATH, G_PARAM_READABLE));
g_object_class_install_property (
object_class,
PROP_PARENT,
g_source_remove (port->priv->emit_changed_idle_id);
/* free properties */
- g_free (port->priv->controller);
+ g_free (port->priv->adapter);
g_free (port->priv->parent);
G_OBJECT_CLASS (devkit_disks_port_parent_class)->finalize (object);
/* Update info for an ATA port */
static gboolean
update_info_ata (DevkitDisksPort *port,
- DevkitDisksController *controller)
+ DevkitDisksAdapter *adapter)
{
GDir *dir;
GError *error;
goto out;
}
- dir = g_dir_open (devkit_disks_controller_local_get_native_path (controller),
+ dir = g_dir_open (devkit_disks_adapter_local_get_native_path (adapter),
0,
&error);
if (dir == NULL) {
g_warning ("Unable to open %s: %s",
- devkit_disks_controller_local_get_native_path (controller),
+ devkit_disks_adapter_local_get_native_path (adapter),
error->message);
g_error_free (error);
goto out;
update_info (DevkitDisksPort *port)
{
gboolean ret;
- DevkitDisksController *controller;
+ DevkitDisksAdapter *adapter;
ret = FALSE;
- controller = devkit_disks_daemon_local_find_controller (port->priv->daemon,
- port->priv->native_path);
- if (controller == NULL)
+ adapter = devkit_disks_daemon_local_find_adapter (port->priv->daemon,
+ port->priv->native_path);
+ if (adapter == NULL)
goto out;
/* TODO: handle expansion devices here (SAS expanders, SATA Port Multipliers) */
- devkit_disks_port_set_controller (port, devkit_disks_controller_local_get_object_path (controller));
- devkit_disks_port_set_parent (port, devkit_disks_controller_local_get_object_path (controller));
+ devkit_disks_port_set_adapter (port, devkit_disks_adapter_local_get_object_path (adapter));
+ devkit_disks_port_set_parent (port, devkit_disks_adapter_local_get_object_path (adapter));
if (g_strcmp0 (g_udev_device_get_subsystem (port->priv->d), "scsi_host") == 0) {
/* TODO: ensure this is really an ATA port - bail if it's not */
- if (!update_info_ata (port, controller))
+ if (!update_info_ata (port, adapter))
goto out;
} else {
goto out;
typedef struct DevkitDisksDaemon DevkitDisksDaemon;
typedef struct DevkitDisksDevice DevkitDisksDevice;
-typedef struct DevkitDisksController DevkitDisksController;
+typedef struct DevkitDisksAdapter DevkitDisksAdapter;
typedef struct DevkitDisksPort DevkitDisksPort;
typedef struct DevkitDisksMount DevkitDisksMount;
gboolean drive_is_rotational;
guint drive_rotation_rate;
char *drive_write_cache;
- char *drive_controller;
+ char *drive_adapter;
char *drive_port;
gboolean optical_disc_is_blank;
props->drive_rotation_rate = g_value_get_uint (value);
else if (strcmp (key, "DriveWriteCache") == 0)
props->drive_write_cache = g_strdup (g_value_get_string (value));
- else if (strcmp (key, "DriveController") == 0)
- props->drive_controller = g_strdup (g_value_get_boxed (value));
+ else if (strcmp (key, "DriveAdapter") == 0)
+ props->drive_adapter = g_strdup (g_value_get_boxed (value));
else if (strcmp (key, "DrivePort") == 0)
props->drive_port = g_strdup (g_value_get_boxed (value));
g_strfreev (props->drive_media_compatibility);
g_free (props->drive_media);
g_free (props->drive_write_cache);
- g_free (props->drive_controller);
+ g_free (props->drive_adapter);
g_free (props->drive_port);
g_free (props->drive_ata_smart_status);
g_print (" write-cache: %s\n", props->drive_write_cache);
}
g_print (" ejectable: %d\n", props->drive_is_media_ejectable);
- g_print (" controller: %s\n", strlen (props->drive_controller) > 1 ? props->drive_controller : "Unknown");
+ g_print (" adapter: %s\n", strlen (props->drive_adapter) > 1 ? props->drive_adapter : "Unknown");
g_print (" port: %s\n", strlen (props->drive_port) > 1 ? props->drive_port : "Unknown");
g_print (" media: %s\n", props->drive_media);
g_print (" compat: ");