# HG changeset patch
# User cl349@xxxxxxxxxxxxxxxxxxxx
# Node ID cb3da7250118c405d3d9bc549e355f81a051ff39
# Parent 7c95f26c2f0e5c9c717d3e7b942184256a2eae8a
Rewrite xenbus_path and cleanup whitespace.
Signed-off-by: Christian Limpach <Christian.Limpach@xxxxxxxxxxxx>
diff -r 7c95f26c2f0e -r cb3da7250118
linux-2.6.11-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6.11-xen-sparse/drivers/xen/xenbus/xenbus_probe.c Fri Jul 1
13:35:03 2005
+++ b/linux-2.6.11-xen-sparse/drivers/xen/xenbus/xenbus_probe.c Fri Jul 1
14:31:22 2005
@@ -65,19 +65,19 @@
char *xenbus_path(const char *dir, const char *name)
{
char *ret;
- if(name && strlen(name)){
- ret = kmalloc(strlen(dir) + 1 + strlen(name) + 1, GFP_KERNEL);
- if (!ret)
- return NULL;
- strcpy(ret, dir);
+ int len;
+
+ len = strlen(dir) + 1;
+ if (name)
+ len += strlen(name) + 1;
+ ret = kmalloc(len, GFP_KERNEL);
+ if (ret == NULL)
+ return NULL;
+ strcpy(ret, dir);
+ if (name) {
strcat(ret, "/");
strcat(ret, name);
- } else {
- ret = kmalloc(strlen(dir) + 1, GFP_KERNEL);
- if (!ret)
- return NULL;
- strcpy(ret, dir);
- }
+ }
return ret;
}
@@ -85,59 +85,58 @@
char *xenbus_read(const char *dir, const char *name, unsigned int *data_n)
{
- int err = 0;
+ int err = 0;
char *data = NULL;
char *path = xenbus_path(dir, name);
- int n = 0;
+ int n = 0;
if (!path) {
- err = -ENOMEM;
- goto out;
- }
+ err = -ENOMEM;
+ goto out;
+ }
data = xs_read(path, &n);
- if (IS_ERR(data)){
- err = PTR_ERR(data);
- if(err == -EISDIR){
- err = -ENOENT;
- }
- } else if(n == 0){
- err = -ENOENT;
- kfree(data);
- }
- kfree(path);
+ if (IS_ERR(data)) {
+ err = PTR_ERR(data);
+ if (err == -EISDIR)
+ err = -ENOENT;
+ } else if (n == 0) {
+ err = -ENOENT;
+ kfree(data);
+ }
+ kfree(path);
out:
- if(data_n)
- *data_n = n;
+ if (data_n)
+ *data_n = n;
return (err ? ERR_PTR(err) : data);
}
int xenbus_write(const char *dir, const char *name, const char *data, int
data_n)
{
- int err = 0;
+ int err = 0;
char *path = xenbus_path(dir, name);
if (!path)
return -ENOMEM;
- err = xs_write(path, data, data_n, O_CREAT);
+ err = xs_write(path, data, data_n, O_CREAT);
kfree(path);
- return err;
+ return err;
}
int xenbus_read_string(const char *dir, const char *name, char **val)
{
- int err = 0;
-
- *val = xenbus_read(dir, name, NULL);
- if (IS_ERR(*val)) {
- err = PTR_ERR(*val);
- *val = NULL;
- }
- return err;
+ int err = 0;
+
+ *val = xenbus_read(dir, name, NULL);
+ if (IS_ERR(*val)) {
+ err = PTR_ERR(*val);
+ *val = NULL;
+ }
+ return err;
}
int xenbus_write_string(const char *dir, const char *name, const char *val)
{
- return xenbus_write(dir, name, val, strlen(val) + 1);
+ return xenbus_write(dir, name, val, strlen(val) + 1);
}
int xenbus_read_ulong(const char *dir, const char *name, unsigned long *val)
@@ -149,23 +148,23 @@
data = xenbus_read(dir, name, &data_n);
if (IS_ERR(data)) {
err = PTR_ERR(data);
- goto out;
- }
- if (data_n <= 1) {
- err = -ENOENT;
- goto free_data;
- }
- *val = simple_strtoul(data, &end, 10);
- if (end != data + data_n - 1) {
- printk("XENBUS: Path %s/%s, bad parse of '%s' as ulong\n",
- dir, name, data);
- err = -EINVAL;
+ goto out;
+ }
+ if (data_n <= 1) {
+ err = -ENOENT;
+ goto free_data;
+ }
+ *val = simple_strtoul(data, &end, 10);
+ if (end != data + data_n - 1) {
+ printk("XENBUS: Path %s/%s, bad parse of '%s' as ulong\n",
+ dir, name, data);
+ err = -EINVAL;
}
free_data:
kfree(data);
out:
- if (err)
- *val = 0;
+ if (err)
+ *val = 0;
return err;
}
@@ -173,7 +172,7 @@
{
char data[32] = {};
- snprintf(data, sizeof(data), "%lu", val);
+ snprintf(data, sizeof(data), "%lu", val);
return xenbus_write(dir, name, data, strlen(data) + 1);
}
@@ -186,23 +185,23 @@
data = xenbus_read(dir, name, &data_n);
if (IS_ERR(data)) {
err = PTR_ERR(data);
- goto out;
- }
- if (data_n <= 1) {
- err = -ENOENT;
- goto free_data;
- }
- *val = simple_strtol(data, &end, 10);
- if (end != data + data_n - 1) {
- printk("XENBUS: Path %s/%s, bad parse of '%s' as long\n",
- dir, name, data);
- err = -EINVAL;
- }
+ goto out;
+ }
+ if (data_n <= 1) {
+ err = -ENOENT;
+ goto free_data;
+ }
+ *val = simple_strtol(data, &end, 10);
+ if (end != data + data_n - 1) {
+ printk("XENBUS: Path %s/%s, bad parse of '%s' as long\n",
+ dir, name, data);
+ err = -EINVAL;
+ }
free_data:
kfree(data);
out:
- if (err)
- *val = 0;
+ if (err)
+ *val = 0;
return err;
}
@@ -210,7 +209,7 @@
{
char data[32] = {};
- snprintf(data, sizeof(data), "%li", val);
+ snprintf(data, sizeof(data), "%li", val);
return xenbus_write(dir, name, data, strlen(data) + 1);
}
@@ -222,42 +221,40 @@
* Each X denotes a hex digit: 0..9, a..f, A..F.
* Also supports using '-' as the separator instead of ':'.
*/
-static int mac_aton(const char *macstr, unsigned int n, unsigned char mac[6]){
- int err = -EINVAL;
- int i, j;
- const char *p;
- char sep = 0;
-
- if(!macstr || n != MAC_LENGTH){
- goto exit;
- }
- for(i = 0, p = macstr; i < 6; i++){
- unsigned char d = 0;
- if(i){
- if(!sep){
- if(*p == ':' || *p == '-') sep = *p;
- }
- if(sep && *p == sep){
- p++;
- } else {
- goto exit;
- }
- }
- for(j = 0; j < 2; j++, p++){
- if(j) d <<= 4;
- if(isdigit(*p)){
- d += *p - '0';
- } else if(isxdigit(*p)){
- d += toupper(*p) - 'A' + 10;
- } else {
- goto exit;
- }
- }
- mac[i] = d;
- }
- err = 0;
+static int mac_aton(const char *macstr, unsigned int n, unsigned char mac[6])
+{
+ int err = -EINVAL;
+ int i, j;
+ const char *p;
+ char sep = 0;
+
+ if (!macstr || n != MAC_LENGTH)
+ goto exit;
+ for (i = 0, p = macstr; i < 6; i++) {
+ unsigned char d = 0;
+ if (i) {
+ if (!sep && (*p == ':' || *p == '-'))
+ sep = *p;
+ if (sep && *p == sep)
+ p++;
+ else
+ goto exit;
+ }
+ for (j = 0; j < 2; j++, p++) {
+ if (j)
+ d <<= 4;
+ if (isdigit(*p))
+ d += *p - '0';
+ else if (isxdigit(*p))
+ d += toupper(*p) - 'A' + 10;
+ else
+ goto exit;
+ }
+ mac[i] = d;
+ }
+ err = 0;
exit:
- return err;
+ return err;
}
int xenbus_read_mac(const char *dir, const char *name, unsigned char mac[6])
@@ -269,35 +266,35 @@
data = xenbus_read(dir, name, &data_n);
if (IS_ERR(data)) {
err = PTR_ERR(data);
- goto out;
- }
- if (data_n <= 1) {
- err = -ENOENT;
- goto free_data;
- }
- err = mac_aton(data, data_n - 1, mac);
- if (err) {
- printk("XENBUS: Path %s/%s, bad parse of '%s' as mac\n",
- dir, name, data);
- err = -EINVAL;
- }
+ goto out;
+ }
+ if (data_n <= 1) {
+ err = -ENOENT;
+ goto free_data;
+ }
+ err = mac_aton(data, data_n - 1, mac);
+ if (err) {
+ printk("XENBUS: Path %s/%s, bad parse of '%s' as mac\n",
+ dir, name, data);
+ err = -EINVAL;
+ }
free_data:
- kfree(data);
+ kfree(data);
out:
- if(err)
- memset(mac, 0, sizeof(mac));
- return err;
+ if (err)
+ memset(mac, 0, sizeof(mac));
+ return err;
}
int xenbus_write_mac(const char *dir, const char *name, const unsigned char
mac[6])
{
- char buf[MAC_LENGTH + 1] = {};
- int buf_n = sizeof(buf);
-
- snprintf(buf, buf_n, "%02x:%02x:%02x:%02x:%02x:%02x",
- mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
- buf[buf_n - 1] = '\0';
- return xenbus_write(dir, name, buf, buf_n);
+ char buf[MAC_LENGTH + 1] = {};
+ int buf_n = sizeof(buf);
+
+ snprintf(buf, buf_n, "%02x:%02x:%02x:%02x:%02x:%02x",
+ mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+ buf[buf_n - 1] = '\0';
+ return xenbus_write(dir, name, buf, buf_n);
}
/* Read event channel information from xenstore.
@@ -310,30 +307,30 @@
*/
int xenbus_read_evtchn(const char *dir, const char *name, struct xenbus_evtchn
*evtchn)
{
- int err = 0;
- char *evtchn_path = xenbus_path(dir, name);
-
- if (!evtchn_path) {
- err = -ENOMEM;
- goto out;
- }
- err = xenbus_read_ulong(evtchn_path, "dom1", &evtchn->dom1);
- if(err)
- goto free_evtchn_path;
- err = xenbus_read_ulong(evtchn_path, "port1", &evtchn->port1);
- if(err)
- goto free_evtchn_path;
- err = xenbus_read_ulong(evtchn_path, "dom2", &evtchn->dom2);
- if(err)
- goto free_evtchn_path;
- err = xenbus_read_ulong(evtchn_path, "port2", &evtchn->port2);
+ int err = 0;
+ char *evtchn_path = xenbus_path(dir, name);
+
+ if (!evtchn_path) {
+ err = -ENOMEM;
+ goto out;
+ }
+ err = xenbus_read_ulong(evtchn_path, "dom1", &evtchn->dom1);
+ if (err)
+ goto free_evtchn_path;
+ err = xenbus_read_ulong(evtchn_path, "port1", &evtchn->port1);
+ if (err)
+ goto free_evtchn_path;
+ err = xenbus_read_ulong(evtchn_path, "dom2", &evtchn->dom2);
+ if (err)
+ goto free_evtchn_path;
+ err = xenbus_read_ulong(evtchn_path, "port2", &evtchn->port2);
free_evtchn_path:
- kfree(evtchn_path);
+ kfree(evtchn_path);
out:
- if (err)
- *evtchn = (struct xenbus_evtchn){};
- return err;
+ if (err)
+ *evtchn = (struct xenbus_evtchn){};
+ return err;
}
/* Write a message to 'dir'.
@@ -342,66 +339,66 @@
*/
int xenbus_message(const char *dir, const char *val, ...)
{
- static const char *mid_name = "@mid";
- va_list args;
- int err = 0;
- char *mid_path = NULL;
- char *msg_path = NULL;
- char mid_str[32] = {};
- long mid = 0;
- int i;
-
- va_start(args, val);
- mid_path = xenbus_path(dir, mid_name);
- if (!mid_path) {
- err = -ENOMEM;
- goto out;
- }
- err = xenbus_read_long(dir, mid_name, &mid);
- if(err != -ENOENT)
- goto out;
- mid++;
- err = xenbus_write_long(dir, mid_name, mid);
- if(err)
- goto out;
- sprintf(mid_str, "%li", mid);
- msg_path = xenbus_path(dir, mid_str);
- if (!mid_path) {
- err = -ENOMEM;
- goto out;
- }
-
- for(i = 0; i < 16; i++){
- char *k, *v;
- k = va_arg(args, char *);
- if(!k)
- break;
- v = va_arg(args, char *);
- if(!v)
- break;
- err = xenbus_write_string(msg_path, k, v);
- if(err)
- goto out;
- }
- err = xenbus_write_string(msg_path, NULL, val);
+ static const char *mid_name = "@mid";
+ va_list args;
+ int err = 0;
+ char *mid_path = NULL;
+ char *msg_path = NULL;
+ char mid_str[32] = {};
+ long mid = 0;
+ int i;
+
+ va_start(args, val);
+ mid_path = xenbus_path(dir, mid_name);
+ if (!mid_path) {
+ err = -ENOMEM;
+ goto out;
+ }
+ err = xenbus_read_long(dir, mid_name, &mid);
+ if (err != -ENOENT)
+ goto out;
+ mid++;
+ err = xenbus_write_long(dir, mid_name, mid);
+ if (err)
+ goto out;
+ sprintf(mid_str, "%li", mid);
+ msg_path = xenbus_path(dir, mid_str);
+ if (!mid_path) {
+ err = -ENOMEM;
+ goto out;
+ }
+
+ for (i = 0; i < 16; i++) {
+ char *k, *v;
+ k = va_arg(args, char *);
+ if (!k)
+ break;
+ v = va_arg(args, char *);
+ if (!v)
+ break;
+ err = xenbus_write_string(msg_path, k, v);
+ if (err)
+ goto out;
+ }
+ err = xenbus_write_string(msg_path, NULL, val);
out:
- kfree(msg_path);
- kfree(mid_path);
- va_end(args);
- return err;
+ kfree(msg_path);
+ kfree(mid_path);
+ va_end(args);
+ return err;
}
/* If something in array of ids matches this device, return it. */
static const struct xenbus_device_id *
match_device(const struct xenbus_device_id *arr, struct xenbus_device *dev)
{
- for( ; !streq(arr->devicetype, ""); arr++) {
+ for (; !streq(arr->devicetype, ""); arr++) {
if (!streq(arr->devicetype, dev->devicetype))
continue;
- if (streq(arr->subtype, "")
- || streq(arr->subtype, dev->subtype)) {
+ if (streq(arr->subtype, "") ||
+ streq(arr->subtype, dev->subtype)) {
return arr;
}
}
@@ -427,63 +424,63 @@
/* Bus type for backend drivers. */
static struct bus_type xenback_type = {
- .name = "xenback",
- .match = xenbus_match,
+ .name = "xenback",
+ .match = xenbus_match,
};
struct xenbus_for_dev {
- int (*fn)(struct xenbus_device *, void *);
- void *data;
+ int (*fn)(struct xenbus_device *, void *);
+ void *data;
};
static int for_dev(struct device *_dev, void *_data)
{
- struct xenbus_device *dev = to_xenbus_device(_dev);
- struct xenbus_for_dev *data = _data;
- dev = to_xenbus_device(_dev);
- return data->fn(dev, data->data);
+ struct xenbus_device *dev = to_xenbus_device(_dev);
+ struct xenbus_for_dev *data = _data;
+ dev = to_xenbus_device(_dev);
+ return data->fn(dev, data->data);
}
int xenbus_for_each_dev(struct xenbus_device * start, void * data,
- int (*fn)(struct xenbus_device *, void *))
-{
- struct xenbus_for_dev for_data = {
- .fn = fn,
- .data = data,
- };
- if(!fn)
- return -EINVAL;
- printk("%s> data=%p fn=%p for_data=%p\n", __FUNCTION__,
- data, fn, &for_data);
- return bus_for_each_dev(&xenbus_type,
- (start ? &start->dev : NULL),
- &for_data, for_dev);
+ int (*fn)(struct xenbus_device *, void *))
+{
+ struct xenbus_for_dev for_data = {
+ .fn = fn,
+ .data = data,
+ };
+ if (!fn)
+ return -EINVAL;
+ printk("%s> data=%p fn=%p for_data=%p\n", __FUNCTION__,
+ data, fn, &for_data);
+ return bus_for_each_dev(&xenbus_type,
+ (start ? &start->dev : NULL),
+ &for_data, for_dev);
}
struct xenbus_for_drv {
- int (*fn)(struct xenbus_driver *, void *);
- void *data;
+ int (*fn)(struct xenbus_driver *, void *);
+ void *data;
};
static int for_drv(struct device_driver *_drv, void *_data)
{
- struct xenbus_driver *drv = to_xenbus_driver(_drv);
- struct xenbus_for_drv *data = _data;
- return data->fn(drv, data->data);
+ struct xenbus_driver *drv = to_xenbus_driver(_drv);
+ struct xenbus_for_drv *data = _data;
+ return data->fn(drv, data->data);
}
int xenbus_for_each_drv(struct xenbus_driver * start, void * data,
- int (*fn)(struct xenbus_driver *, void *))
-{
- struct xenbus_for_drv for_data = {
- .fn = fn,
- .data = data,
- };
- if(!fn)
- return -EINVAL;
- return bus_for_each_drv(&xenbus_type,
- (start ? &start->driver: NULL),
- &for_data, for_drv);
+ int (*fn)(struct xenbus_driver *, void *))
+{
+ struct xenbus_for_drv for_data = {
+ .fn = fn,
+ .data = data,
+ };
+ if (!fn)
+ return -EINVAL;
+ return bus_for_each_drv(&xenbus_type,
+ (start ? &start->driver: NULL),
+ &for_data, for_drv);
}
static int xenbus_dev_probe(struct device *_dev)
@@ -506,17 +503,17 @@
struct xenbus_device *dev = to_xenbus_device(_dev);
struct xenbus_driver *drv = to_xenbus_driver(_dev->driver);
- if(!drv->remove)
- return 0;
- return drv->remove(dev);
+ if (!drv->remove)
+ return 0;
+ return drv->remove(dev);
}
int xenbus_register_driver(struct xenbus_driver *drv)
{
- int err = 0;
-
- printk("%s> frontend driver %p %s\n", __FUNCTION__,
- drv, drv->name);
+ int err = 0;
+
+ printk("%s> frontend driver %p %s\n", __FUNCTION__,
+ drv, drv->name);
drv->driver.name = drv->name;
drv->driver.bus = &xenbus_type;
drv->driver.owner = drv->owner;
@@ -524,12 +521,12 @@
drv->driver.remove = xenbus_dev_remove;
err = driver_register(&drv->driver);
- if(err == 0 && xs_init_done && drv->connect){
- printk("%s> connecting driver %p %s\n", __FUNCTION__,
- drv, drv->name);
- drv->connect(drv);
- }
- return err;
+ if (err == 0 && xs_init_done && drv->connect) {
+ printk("%s> connecting driver %p %s\n", __FUNCTION__,
+ drv, drv->name);
+ drv->connect(drv);
+ }
+ return err;
}
void xenbus_unregister_driver(struct xenbus_driver *drv)
@@ -558,14 +555,13 @@
}
err = xenbus_read_long(nodename, XENBUS_DEVICE_ID, &id);
- if (err == -ENOENT) {
+ if (err == -ENOENT)
id = 0;
- } else if (err != 0) {
+ else if (err != 0)
goto free_devicetype;
- }
dprintf("> devicetype='%s' name='%s' id=%ld\n", devicetype, name, id);
- /* FIXME: This could be a rescan. Don't re-register existing devices.
*/
+ /* FIXME: This could be a rescan. Don't re-register existing devices. */
/* Add space for the strings. */
xendev_n = sizeof(*xendev) + strlen(nodename) + strlen(devicetype) + 2;
@@ -576,7 +572,7 @@
}
memset(xendev, 0, xendev_n);
- snprintf(xendev->dev.bus_id, BUS_ID_SIZE, "%s-%s", devicetype, name);
+ snprintf(xendev->dev.bus_id, BUS_ID_SIZE, "%s-%s", devicetype, name);
xendev->dev.bus = &xenbus_type;
xendev->id = id;
@@ -588,14 +584,13 @@
strcpy(xendev->devicetype, devicetype);
/* Register with generic device framework. */
- printk("XENBUS: Registering device %s\n", xendev->dev.bus_id);
+ printk("XENBUS: Registering device %s\n", xendev->dev.bus_id);
err = device_register(&xendev->dev);
- if (err) {
- printk("XENBUS: Registering device %s: error %i\n",
- xendev->dev.bus_id, err);
- }
- if (err)
+ if (err) {
+ printk("XENBUS: Registering device %s: error %i\n",
+ xendev->dev.bus_id, err);
kfree(xendev);
+ }
free_devicetype:
kfree(devicetype);
@@ -682,7 +677,7 @@
}
dprintf("> devicetype='%s'\n", devicetype);
- /* FIXME: This could be a rescan. Don't re-register existing devices.
*/
+ /* FIXME: This could be a rescan. Don't re-register existing devices. */
/* Add space for the strings. */
xendev_n = sizeof(*xendev) + strlen(nodename) + strlen(devicetype) + 2;
@@ -693,7 +688,7 @@
}
memset(xendev, 0, xendev_n);
- snprintf(xendev->dev.bus_id, BUS_ID_SIZE, "%s", devicetype);
+ snprintf(xendev->dev.bus_id, BUS_ID_SIZE, "%s", devicetype);
xendev->dev.bus = &xenback_type;
/* Copy the strings into the extra space. */
@@ -703,14 +698,13 @@
strcpy(xendev->devicetype, devicetype);
/* Register with generic device framework. */
- printk("XENBUS: Registering backend %s\n", xendev->dev.bus_id);
+ printk("XENBUS: Registering backend %s\n", xendev->dev.bus_id);
err = device_register(&xendev->dev);
- if (err) {
- printk("XENBUS: Registering device %s: error %i\n",
- xendev->dev.bus_id, err);
- }
- if (err)
+ if (err) {
+ printk("XENBUS: Registering device %s: error %i\n",
+ xendev->dev.bus_id, err);
kfree(xendev);
+ }
free_devicetype:
kfree(devicetype);
@@ -747,10 +741,10 @@
int xenbus_register_backend(struct xenbus_driver *drv)
{
- int err = 0;
-
- printk("%s> backend driver %p %s\n", __FUNCTION__,
- drv, drv->name);
+ int err = 0;
+
+ printk("%s> backend driver %p %s\n", __FUNCTION__,
+ drv, drv->name);
drv->driver.name = drv->name;
drv->driver.bus = &xenback_type;
drv->driver.owner = drv->owner;
@@ -758,12 +752,12 @@
drv->driver.remove = xenbus_dev_remove;
err = driver_register(&drv->driver);
- if(err == 0 && xs_init_done && drv->connect){
- printk("%s> connecting driver %p %s\n", __FUNCTION__,
- drv, drv->name);
- drv->connect(drv);
- }
- return err;
+ if (err == 0 && xs_init_done && drv->connect) {
+ printk("%s> connecting driver %p %s\n", __FUNCTION__,
+ drv, drv->name);
+ drv->connect(drv);
+ }
+ return err;
}
void xenbus_unregister_backend(struct xenbus_driver *drv)
@@ -772,17 +766,17 @@
}
int xenbus_for_each_backend(struct xenbus_driver * start, void * data,
- int (*fn)(struct xenbus_driver *, void *))
-{
- struct xenbus_for_drv for_data = {
- .fn = fn,
- .data = data,
- };
- if(!fn)
- return -EINVAL;
- return bus_for_each_drv(&xenback_type,
- (start ? &start->driver: NULL),
- &for_data, for_drv);
+ int (*fn)(struct xenbus_driver *, void *))
+{
+ struct xenbus_for_drv for_data = {
+ .fn = fn,
+ .data = data,
+ };
+ if (!fn)
+ return -EINVAL;
+ return bus_for_each_drv(&xenback_type,
+ (start ? &start->driver: NULL),
+ &for_data, for_drv);
}
static void test_callback(struct xenbus_watch *w, const char *node)
@@ -792,67 +786,68 @@
static void test_watch(void)
{
- static int init_done = 0;
+ static int init_done = 0;
static struct xenbus_watch watch = { .node = "/",
.priority = 0,
.callback = test_callback };
- if(init_done) return;
+ if (init_done)
+ return;
printk("registering watch %lX = %i\n",
- (long)&watch,
+ (long)&watch,
register_xenbus_watch(&watch));
- init_done = 1;
+ init_done = 1;
}
static int xenbus_driver_connect(struct xenbus_driver *drv, void *data)
{
- printk("%s> driver %p %s\n", __FUNCTION__, drv, drv->name);
- if (drv->connect) {
- printk("%s> connecting driver %p %s\n", __FUNCTION__,
- drv, drv->name);
- drv->connect(drv);
- }
- printk("%s< driver %p %s\n", __FUNCTION__, drv, drv->name);
- return 0;
+ printk("%s> driver %p %s\n", __FUNCTION__, drv, drv->name);
+ if (drv->connect) {
+ printk("%s> connecting driver %p %s\n", __FUNCTION__,
+ drv, drv->name);
+ drv->connect(drv);
+ }
+ printk("%s< driver %p %s\n", __FUNCTION__, drv, drv->name);
+ return 0;
}
int do_xenbus_connect(void *unused)
{
int err = 0;
- printk("%s> xs_init_done=%d\n", __FUNCTION__, xs_init_done);
+ printk("%s> xs_init_done=%d\n", __FUNCTION__, xs_init_done);
if (xs_init_done)
- goto exit;
- /* Initialize xenstore comms unless already done. */
- printk("store_evtchn = %i\n", xen_start_info.store_evtchn);
- err = xs_init();
- if (err) {
- printk("XENBUS: Error initializing xenstore comms:"
- " %i\n", err);
- goto exit;
- }
- xs_init_done = 1;
-
- /* Notify drivers that xenstore has connected. */
- test_watch();
- printk("%s> connect drivers...\n", __FUNCTION__);
- xenbus_for_each_drv(NULL, NULL, xenbus_driver_connect);
- printk("%s> connect backends...\n", __FUNCTION__);
- xenbus_for_each_backend(NULL, NULL, xenbus_driver_connect);
-
- /* Enumerate devices and backends in xenstore. */
+ goto exit;
+ /* Initialize xenstore comms unless already done. */
+ printk("store_evtchn = %i\n", xen_start_info.store_evtchn);
+ err = xs_init();
+ if (err) {
+ printk("XENBUS: Error initializing xenstore comms:"
+ " %i\n", err);
+ goto exit;
+ }
+ xs_init_done = 1;
+
+ /* Notify drivers that xenstore has connected. */
+ test_watch();
+ printk("%s> connect drivers...\n", __FUNCTION__);
+ xenbus_for_each_drv(NULL, NULL, xenbus_driver_connect);
+ printk("%s> connect backends...\n", __FUNCTION__);
+ xenbus_for_each_backend(NULL, NULL, xenbus_driver_connect);
+
+ /* Enumerate devices and backends in xenstore. */
xenbus_probe_devices(XENBUS_DEVICE_DIR);
- xenbus_probe_backends(XENBUS_BACKEND_DIR);
+ xenbus_probe_backends(XENBUS_BACKEND_DIR);
exit:
- printk("%s< err=%d\n", __FUNCTION__, err);
- return err;
+ printk("%s< err=%d\n", __FUNCTION__, err);
+ return err;
}
static int __init xenbus_probe_init(void)
{
- bus_register(&xenbus_type);
- bus_register(&xenback_type);
+ bus_register(&xenbus_type);
+ bus_register(&xenback_type);
if (!xen_start_info.store_evtchn)
return 0;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|