Lines Matching defs:xbusd
301 struct xenbus_device *xbusd;
303 SLIST_FOREACH(xbusd, &xenbus_device_list, xbusd_entries) {
304 if (strcmp(xbusd->xbusd_path, path) == 0)
305 return xbusd;
320 struct xenbus_device *xbusd;
389 msize = sizeof(*xbusd) + strlen(path) + strlen(dir[i]) + 2;
390 xbusd = kmem_zalloc(msize, KM_SLEEP);
391 xbusd->xbusd_sz = msize;
392 xbusd->xbusd_dmat = xenbus_dmat;
394 snprintf(__UNCONST(xbusd->xbusd_path),
395 msize - sizeof(*xbusd) + 1, "%s/%s", path, dir[i]);
396 if (xenbus_lookup_device_path(xbusd->xbusd_path) != NULL) {
398 kmem_free(xbusd, xbusd->xbusd_sz);
401 err = xenbus_read_ul(NULL, xbusd->xbusd_path, "state",
405 "for %s (%d)\n", xbusd->xbusd_path, err);
406 kmem_free(xbusd, xbusd->xbusd_sz);
412 kmem_free(xbusd, xbusd->xbusd_sz);
416 xbusd->xbusd_otherend_watch.xbw_dev = xbusd;
418 xbusd->xbusd_path);
420 xbusd->xbusd_type = XENBUS_BACKEND_DEVICE;
421 err = read_frontend_details(xbusd);
425 xbusd->xbusd_path, err);
428 if (create(xbusd)) {
429 kmem_free(xbusd, xbusd->xbusd_sz);
433 xbusd->xbusd_type = XENBUS_FRONTEND_DEVICE;
434 xa.xa_xbusd = xbusd;
442 kmem_free(xbusd, xbusd->xbusd_sz);
447 if (xenbus_read(NULL, xbusd->xbusd_path,
451 xbusd->xbusd_path);
452 kmem_free(xbusd, xbusd->xbusd_sz);
459 xbusd->xbusd_path);
460 kmem_free(xbusd, xbusd->xbusd_sz);
464 err = read_backend_details(xbusd);
468 xbusd->xbusd_path, err);
469 kmem_free(xbusd, xbusd->xbusd_sz);
474 xbusd->xbusd_u.f.f_dev = config_found(xenbus_dev,
477 if (xbusd->xbusd_u.f.f_dev == NULL) {
478 kmem_free(xbusd, xbusd->xbusd_sz);
483 xbusd, xbusd_entries);
484 watch_otherend(xbusd);
592 xenbus_free_device(struct xenbus_device *xbusd)
594 KASSERT(xenbus_lookup_device_path(xbusd->xbusd_path) == xbusd);
595 SLIST_REMOVE(&xenbus_device_list, xbusd, xenbus_device, xbusd_entries);
596 free_otherend_watch(xbusd);
597 free_otherend_details(xbusd);
598 xenbus_switch_state(xbusd, NULL, XenbusStateClosed);
599 kmem_free(xbusd, xbusd->xbusd_sz);