| /* | |
| * drivers/s390/s390_rdev.c | |
| * s390 root device | |
| * | |
| * Copyright (C) 2002, 2005 IBM Deutschland Entwicklung GmbH, | |
| * IBM Corporation | |
| * Author(s): Cornelia Huck (cornelia.huck@de.ibm.com) | |
| * Carsten Otte (cotte@de.ibm.com) | |
| */ | |
| #include <linux/slab.h> | |
| #include <linux/err.h> | |
| #include <linux/device.h> | |
| #include <asm/s390_rdev.h> | |
| static void | |
| s390_root_dev_release(struct device *dev) | |
| { | |
| kfree(dev); | |
| } | |
| struct device * | |
| s390_root_dev_register(const char *name) | |
| { | |
| struct device *dev; | |
| int ret; | |
| if (!strlen(name)) | |
| return ERR_PTR(-EINVAL); | |
| dev = kzalloc(sizeof(struct device), GFP_KERNEL); | |
| if (!dev) | |
| return ERR_PTR(-ENOMEM); | |
| strncpy(dev->bus_id, name, min(strlen(name), (size_t)BUS_ID_SIZE)); | |
| dev->release = s390_root_dev_release; | |
| ret = device_register(dev); | |
| if (ret) { | |
| kfree(dev); | |
| return ERR_PTR(ret); | |
| } | |
| return dev; | |
| } | |
| void | |
| s390_root_dev_unregister(struct device *dev) | |
| { | |
| if (dev) | |
| device_unregister(dev); | |
| } | |
| EXPORT_SYMBOL(s390_root_dev_register); | |
| EXPORT_SYMBOL(s390_root_dev_unregister); |