Lines Matching +full:bus +full:- +full:err
5 * Copyright (C) 2005 Mike Wray, Hewlett-Packard
41 #include <linux/err.h>
58 /* backend/<type>/<fe-uuid>/<id> => <type>-<fe-domid>-<id> */
61 int domid, err; in backend_bus_id() local
67 return -EINVAL; in backend_bus_id()
71 return -EINVAL; in backend_bus_id()
75 err = xenbus_gather(XBT_NIL, nodename, "frontend-id", "%i", &domid, in backend_bus_id()
78 if (err) in backend_bus_id()
79 return err; in backend_bus_id()
81 err = -ERANGE; in backend_bus_id()
82 if (!err && !xenbus_exists(XBT_NIL, frontend, "")) in backend_bus_id()
83 err = -ENOENT; in backend_bus_id()
86 if (err) in backend_bus_id()
87 return err; in backend_bus_id()
89 if (snprintf(bus_id, XEN_BUS_ID_SIZE, "%.*s-%i-%s", in backend_bus_id()
91 return -ENOSPC; in backend_bus_id()
100 const struct xen_bus_type *bus; in xenbus_uevent_backend() local
105 return -ENODEV; in xenbus_uevent_backend()
108 bus = container_of(xdev->dev.bus, struct xen_bus_type, bus); in xenbus_uevent_backend()
110 if (add_uevent_var(env, "MODALIAS=xen-backend:%s", xdev->devicetype)) in xenbus_uevent_backend()
111 return -ENOMEM; in xenbus_uevent_backend()
114 if (add_uevent_var(env, "XENBUS_TYPE=%s", xdev->devicetype)) in xenbus_uevent_backend()
115 return -ENOMEM; in xenbus_uevent_backend()
117 if (add_uevent_var(env, "XENBUS_PATH=%s", xdev->nodename)) in xenbus_uevent_backend()
118 return -ENOMEM; in xenbus_uevent_backend()
120 if (add_uevent_var(env, "XENBUS_BASE_PATH=%s", bus->root)) in xenbus_uevent_backend()
121 return -ENOMEM; in xenbus_uevent_backend()
123 if (dev->driver) { in xenbus_uevent_backend()
124 drv = to_xenbus_driver(dev->driver); in xenbus_uevent_backend()
125 if (drv && drv->uevent) in xenbus_uevent_backend()
126 return drv->uevent(xdev, env); in xenbus_uevent_backend()
132 /* backend/<typename>/<frontend-uuid>/<name> */
133 static int xenbus_probe_backend_unit(struct xen_bus_type *bus, in xenbus_probe_backend_unit() argument
139 int err; in xenbus_probe_backend_unit() local
143 return -ENOMEM; in xenbus_probe_backend_unit()
147 err = xenbus_probe_node(bus, type, nodename); in xenbus_probe_backend_unit()
149 return err; in xenbus_probe_backend_unit()
152 /* backend/<typename>/<frontend-domid> */
153 static int xenbus_probe_backend(struct xen_bus_type *bus, const char *type, in xenbus_probe_backend() argument
157 int err = 0; in xenbus_probe_backend() local
163 nodename = kasprintf(GFP_KERNEL, "%s/%s/%s", bus->root, type, domid); in xenbus_probe_backend()
165 return -ENOMEM; in xenbus_probe_backend()
174 err = xenbus_probe_backend_unit(bus, nodename, type, dir[i]); in xenbus_probe_backend()
175 if (err) in xenbus_probe_backend()
180 return err; in xenbus_probe_backend()
186 return watch->nr_pending == 0; in frontend_will_handle()
202 .bus = {
203 .name = "xen-backend",
227 return xenbus_read_otherend_details(xendev, "frontend-id", "frontend"); in read_frontend_details()
232 return !!xenbus_read_unsigned(dev->nodename, "online", 0); in xenbus_dev_is_online()
239 drv->read_otherend_details = read_frontend_details; in __xenbus_register_backend()
262 if (!dev->driver) in backend_reclaim_memory()
264 drv = to_xenbus_driver(dev->driver); in backend_reclaim_memory()
265 if (drv && drv->reclaim_memory) { in backend_reclaim_memory()
267 if (down_trylock(&xdev->reclaim_sem)) in backend_reclaim_memory()
269 drv->reclaim_memory(xdev); in backend_reclaim_memory()
270 up(&xdev->reclaim_sem); in backend_reclaim_memory()
282 bus_for_each_dev(&xenbus_backend.bus, NULL, NULL, in backend_shrink_memory_count()
293 int err; in xenbus_probe_backend_init() local
297 /* Register ourselves with the kernel bus subsystem */ in xenbus_probe_backend_init()
298 err = bus_register(&xenbus_backend.bus); in xenbus_probe_backend_init()
299 if (err) in xenbus_probe_backend_init()
300 return err; in xenbus_probe_backend_init()
304 backend_memory_shrinker = shrinker_alloc(0, "xen-backend"); in xenbus_probe_backend_init()
310 backend_memory_shrinker->count_objects = backend_shrink_memory_count; in xenbus_probe_backend_init()