[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 10/10] libxl: add device backend listener in order to launch backends
Roger Pau Monne writes ("[PATCH v2 10/10] libxl: add device backend listener in order to launch backends"): > Add the necessary logic in libxl to allow it to act as a listener for > launching backends in a driver domain, replacing udev (like we already > do on Dom0). This new functionality is acomplished by watching the > domain backend path (/local/domain/<domid>/backend) and reacting to > device creation/destruction. ... > + > +static void backend_watch_callback(libxl__egc *egc, libxl__ev_xswatch *watch, > + const char *watch_path, > + const char *event_path) > +{ > + libxl__ddomain *ddomain = CONTAINER_OF(watch, *ddomain, watch); > + libxl__ao *nested_ao = libxl__nested_ao_create(ddomain->ao); > + STATE_AO_GC(nested_ao); > + char *p, *path; > + const char *sstate; > + int state, rc, num_devs; > + libxl__device *dev = NULL; > + libxl__ddomain_device *ddev = NULL; > + libxl__ddomain_guest *dguest = NULL; > + bool free_ao = false; > + > + /* Check if event_path ends with "state" and truncate it */ > + if (strlen(event_path) < strlen("state")) > + goto skip; I think this error handling style leaks the nested_ao sometimes. I would suggest: rename "skip" to "out". Would it be possible to abolish the "free_ao" variable, and to change this: > + rc = add_device(egc, nested_ao, dguest, ddev); > + if (rc > 0) > + free_ao = true; To this: if (!rc) /* device callback requires, and will dispose of, * nested_ao; ddev and dguest are linked in */ return; and always free the ao on ordinary exit ? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |