/* Properly close and free all devices. */ static int clear_instances(void) { struct sr_dev_inst *sdi; struct drv_context *drvc; struct dev_context *devc; GSList *l; drvc = di->priv; for (l = drvc->instances; l; l = l->next) { if (!(sdi = l->data)) { /* Log error, but continue cleaning up the rest. */ sr_err("%s: sdi was NULL, continuing", __func__); continue; } if (!(devc = sdi->priv)) { /* Log error, but continue cleaning up the rest. */ sr_err("%s: sdi->priv was NULL, continuing", __func__); continue; } dso_close(sdi); sr_usb_dev_inst_free(devc->usb); g_free(devc->triggersource); g_slist_free(devc->enabled_probes); sr_dev_inst_free(sdi); } g_slist_free(drvc->instances); drvc->instances = NULL; return SR_OK; }
static int dev_close(struct sr_dev_inst *sdi) { dso_close(sdi); return SR_OK; }