summaryrefslogtreecommitdiff
path: root/drivers/staging/comedi/comedi_internal.h
AgeCommit message (Collapse)Author
2013-07-23staging: comedi: use a mutex when accessing driver listIan Abbott
Low-level comedi drivers registered with the comedi core by `comedi_driver_register()` are linked together into a simple linked list headed by the `comedi_drivers` variable and chained by the `next` member of `struct comedi_driver`. A driver is removed from the list by `comedi_driver_unregister()`. The driver list is iterated through by `comedi_device_attach()` when the `COMEDI_DEVCONFIG` ioctl is used to attach a "legacy" device to a driver, and is also iterated through by `comedi_read()` in "proc.c" when reading "/proc/comedi". There is currently no protection against items being added or removed from the list while it is being iterated. Add a mutex `comedi_drivers_list_lock` to be locked while adding or removing an item on the list, or when iterating through the list. `comedi_driver_unregister()` also checks for and detaches any devices using the driver. This is currently done before unlinking the driver from the list, but it makes more sense to unlink the driver from the list first to prevent `comedi_device_attach()` attempting to use it, so move the unlinking part to the start of the function. Also, in `comedi_device_attach()` hold on to the mutex until we've finished attempting to attach the device to avoid it interfering with the detachment in `comedi_driver_unregister()`. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-05staging: comedi: change comedi_alloc_board_minor() to return pointerIan Abbott
Change `comedi_alloc_board_minor()` to return a pointer to the allocated `struct comedi_device` instead of a minor device number. Return an `ERR_PTR()` value on error instead of a negative error number. This saves a call to `comedi_dev_from_minor()` in `comedi_auto_config()`. Also change it to use a local variable `dev` to hold the pointer to the `struct comedi_device` instead of using `info->device` all the time. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-05staging: comedi: make comedi_free_board_minor() staticIan Abbott
`comedi_free_board_minor()` is now only called from the same .c file it is defined in, so give it static linkage. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-04-05staging: comedi: add comedi_release_hardware_device()Ian Abbott
Add `comedi_release_hardware_device()` as a replacement for the call sequence `comedi_find_board_minor()`, `comedi_free_board_minor()`. This is slightly safer as we can make sure nothing funny happens to the found `comedi_file_info_table[]` entry in the middle of the sequence. Change `comedi_auto_unconfig()` to call the new function instead of the old sequence. Remove `comedi_find_board_minor()` as it has no other callers. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-02-05staging: comedi: remove 'comedi_autoconfig' module parameterH Hartley Sweeten
This module parameter is used to enable the auto config mechanism in the comedi core. Most of the PCI, PCMCIA, and USB drivers have been converted to use the auto config mechanism and will not attach if it is disabled. Since the 'comedi_autoconfig' parameter is defaulted to true, just remove it so that the comedi drivers that use auto config will always be able to attach. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-02-04staging: comedi: change comedi_alloc_subdevice_minor parametersIan Abbott
`comedi_alloc_subdevice_minor()` doesn't really need a parameter pointing to a `struct comedi_device` as it can get this information from the parameter pointing to a `struct comedi_subdevice`. Just pass the subdevice parameter. Signed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-02-04staging: comedi: move comedi_alloc_subdevice_minor declarationsIan Abbott
Move the declarations of `comedi_alloc_subdevice_minor()` and `comedi_free_subdevice_minor()` from "comedidev.h" to "comedi_internal.h" since they are only of interest to the comedi core, and are not exported to the low-level comedi drivers. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-31staging: comedi: don't expose comedi_proc_{init,cleanup}H Hartley Sweeten
These functions are only used by the comedi core. Move the prototypes to comedi_internal.h so they are not exposed to the comedi drivers. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-31staging: comedi: don't expose comedi_device_{attach,detach}H Hartley Sweeten
These functions are only used by the comedi core. Move the prototypes to comedi_internal.h so they are not exposed to the comedi drivers. Tidy up comedi_internal.h a bit so that all the internal stuff in drivers.c is grouped. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-18staging: comedi: comedi_buf: don't expose comedi_buf_write_n_allocated()H Hartley Sweeten
This helper function is only called by the comedi core in comedi_buf.c and comedi_fops.c. For aesthetic reasons, move it to comedi_buf.c and remove the inline. Move the prototype from comedidev.h to comedi_internal.h so it's not exposed outside the comedi core. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-18staging: comedi: comedi_buf: rename comedi_reset_async_buf()H Hartley Sweeten
For aesthetic reasons, rename this function to comedi_buf_reset(). This makes all the asynchronous buffer functions have the same namespace. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-20staging: comedi: remove comedi_fops.hIan Abbott
Move the contents of "comedi_fops.h" into "comedi_internal.h" and delete "comedi_fops.h". It only contains a couple of external variable declarations (and #include <linux/types.h>) and one of those isn't even declared in "comedi_fops.c". The other one is an external declaration of a variable used to store a module parameter and some of those are already externally declared in "comedi_internal.h", so they can keep it company! Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-20staging: comedi: comedi_internal.h inclusion guardsIan Abbott
Add a multiple inclusion guard macro to "comedi_internal.h". Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-06-20staging: comedi: rename internal.h to comedi_internal.hIan Abbott
Use a less generic name for this internal header file included by various parts of the comedi core. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>