[PATCH] s390: move s390_root_dev_* out of the cio layer
Extract the s390_root_dev_* functions from the common I/O layer as they are also used by non-ccw device drivers. Signed-off-by: Carsten Otte <cotte@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
6810a2bce3
commit
cfb1b55595
53
drivers/s390/s390_rdev.c
Normal file
53
drivers/s390/s390_rdev.c
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* drivers/s390/s390_rdev.c
|
||||
* s390 root device
|
||||
* $Revision: 1.2 $
|
||||
*
|
||||
* Copyright (C) 2002, 2005 IBM Deutschland Entwicklung GmbH,
|
||||
* IBM Corporation
|
||||
* Author(s): Cornelia Huck (cohuck@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 = kmalloc(sizeof(struct device), GFP_KERNEL);
|
||||
if (!dev)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
memset(dev, 0, sizeof(struct device));
|
||||
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);
|
Reference in New Issue
Block a user