+ if (session->running) {
+ /* Adding a device to a running session. Commit settings
+ * and start acquisition on that device now. */
+ if ((ret = sr_config_commit(sdi)) != SR_OK) {
+ sr_err("Failed to commit device settings before "
+ "starting acquisition in running session (%s)",
+ sr_strerror(ret));
+ return ret;
+ }
+ if ((ret = sdi->driver->dev_acquisition_start(sdi,
+ (void *)sdi)) != SR_OK) {
+ sr_err("Failed to start acquisition of device in "
+ "running session (%s)", sr_strerror(ret));
+ return ret;
+ }
+ }
+
+ return SR_OK;
+}
+
+/**
+ * List all device instances attached to the current session.
+ *
+ * @param devlist A pointer where the device instance list will be
+ * stored on return. If no devices are in the session,
+ * this will be NULL. Each element in the list points
+ * to a struct sr_dev_inst *.
+ * The list must be freed by the caller, but not the
+ * elements pointed to.
+ *
+ * @retval SR_OK Success.
+ * @retval SR_ERR Invalid argument.
+ */
+SR_API int sr_session_dev_list(GSList **devlist)
+{
+
+ *devlist = NULL;
+
+ if (!session)
+ return SR_ERR;
+
+ *devlist = g_slist_copy(session->devs);
+