/* * 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);