From 090ffe93c179ddd674e0f272e090eebd0b2941ad Mon Sep 17 00:00:00 2001 From: Oron Peled Date: Mon, 23 May 2011 17:50:14 +0300 Subject: Allow low-level drivers to unregister a single span at a time: - Rename the static dahdi_unregister_span() to _dahdi_unregister_span() - Export a new dahdi_unregister_span() [protected by registration_mutex] --- drivers/dahdi/dahdi-base.c | 17 ++++++++++++++--- include/dahdi/kernel.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 1d14d4c..23cda1a 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -6786,7 +6786,7 @@ int dahdi_register_device(struct dahdi_device *ddev, struct device *parent) EXPORT_SYMBOL(dahdi_register_device); /** - * dahdi_unregister_span() - unregister a DAHDI span + * _dahdi_unregister_span() - unregister a DAHDI span * @span: the DAHDI span * @prefmaster: will the new span be preferred as a master? * @@ -6804,7 +6804,7 @@ EXPORT_SYMBOL(dahdi_register_device); * Must be called with the registration_mutex held. * */ -static int dahdi_unregister_span(struct dahdi_span *span) +static int _dahdi_unregister_span(struct dahdi_span *span) { int x; struct dahdi_span *new_master, *s; @@ -6854,6 +6854,17 @@ static int dahdi_unregister_span(struct dahdi_span *span) return 0; } +int dahdi_unregister_span(struct dahdi_span *span) +{ + module_printk(KERN_NOTICE, "%s: %s\n", __FUNCTION__, span->name); + mutex_lock(®istration_mutex); + _dahdi_unregister_span(span); + list_del_init(&span->device_node); + mutex_unlock(®istration_mutex); + return 0; +} +EXPORT_SYMBOL(dahdi_unregister_span); + /** * dahdi_unregister_device() - unregister a DAHDI device * @span: the DAHDI span @@ -6872,7 +6883,7 @@ void dahdi_unregister_device(struct dahdi_device *ddev) mutex_lock(®istration_mutex); list_for_each_entry(s, &ddev->spans, device_node) - dahdi_unregister_span(s); + _dahdi_unregister_span(s); mutex_unlock(®istration_mutex); dahdi_sysfs_unregister_device(ddev); diff --git a/include/dahdi/kernel.h b/include/dahdi/kernel.h index bded00b..d2f3dc7 100644 --- a/include/dahdi/kernel.h +++ b/include/dahdi/kernel.h @@ -1132,6 +1132,7 @@ struct dahdi_device *dahdi_create_device(void); int dahdi_register_device(struct dahdi_device *ddev, struct device *parent); void dahdi_unregister_device(struct dahdi_device *ddev); void dahdi_free_device(struct dahdi_device *ddev); +int dahdi_unregister_span(struct dahdi_span *span); /*! Allocate / free memory for a transcoder */ struct dahdi_transcoder *dahdi_transcoder_alloc(int numchans); -- cgit v1.2.3