On Thursday, April 18, 2013 3:37 AM, Ian Abbott wrote:
> On 2013-04-17 19:16, H Hartley Sweeten wrote:
>> This function is intended to be used by the comedi legacy (ISA) drivers
>> either directly as the (*detach) function or as a helper in the drivers
>> private (*detach) function.
>>
>> Modify the __comedi_request_region() helper so that it stores the first
>> struct resource returned by request_region() in the comedi_device.
>>
>> The comedi_legacy_detach() function will then automatically release the
>> region during the detach of the driver.
>>
>> Signed-off-by: H Hartley Sweeten <[email protected]>
>> Cc: Ian Abbott <[email protected]>
>> Cc: Greg Kroah-Hartman <[email protected]>
<snip>
> An alternative implementation would be to leave
> __comedi_request_region() alone, but change comedi_request_region() to
> record the length in a new member dev->iolen at the same time that it
> records the start address in dev->iobase. Then your
> comedi_legacy_detach() could do something like:
>
> if (dev->iolen) {
> release_region(dev->iobase, dev->iolen);
> dev->iolen = 0;
> }
>
> I think it seems slightly simpler and shouldn't affect your other
> patches. Any thoughts?
I feel its cleaner to save the actual resource that was allocated by
request_resource(), it's less error prone.
But, I could change __comedi_request_region() so it returns the
allocated resource instead of an errno. Then comedi_request_resource()
can save it in the comedi_device. Any drivers that request additional
resources could so the same and use the saved resource when detaching.
Also, comedi_request_resource() could (should?) sanity check the
saved resource to make sure a driver does not call it multiple times.
I can either modify this series to work that way or submit a patch
after this.
Regards,
Hartley
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel