lkml.org 
[lkml]   [2003]   [Aug]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 2.4 vs 2.6 versions of include/linux/ioport.h
On Tue, 5 Aug 2003 10:41:08 -0400 Gene Heskett <gene.heskett@verizon.net> wrote:

| Greetings;
|
| In the 2.4 includes, find this in ioport.h
| ----
| /* Compatibility cruft */
| #define check_region(start,n) __check_region(&ioport_resource,
| (start), (n))
| [snip]
| extern int __check_region(struct resource *, unsigned long, unsigned
| long);
| ----
| But in the 2.6 version, find this:
| ----
| /* Compatibility cruft */
| [snip]
| extern int __check_region(struct resource *, unsigned long, unsigned
| long);
| [snip]
| static inline int __deprecated check_region(unsigned long s, unsigned
| long n)
| {
| return __check_region(&ioport_resource, s, n);
| }
| ----
| First, the define itself is missing in the 2.6 version.
|
| Many drivers seem to use this call, and in that which I'm trying to
| build, the nforce and advansys modules use it. And while the modules
| seem to build, they do not run properly.
|
| I cannot run 2.6.x for extended tests because of the advansys breakage
| this causes. I also haven't even tried to run X because of the
| nforce error reported when its built, the same error as attacks the
| advansys code.
|
| Can I ask why this change was made, and is there a suitable
| replacement call available that these drivers could use instead of
| check_region(), as shown here in a snip from advansys.c?
| ----
| if (check_region(iop, ASC_IOADR_GAP) != 0) {
| ...
| if (check_region(iop_base, ASC_IOADR_GAP) != 0) {
| ...
|
| Hopeing for some hints here.

check_region() was racy. Use request_region() instead.

if (!request_region(iop, ASC_IOADR_GAP, "advansys")) {
...

if (!request_region(iop_base, ASC_IOADR, "advansys")) {
...

Of course, if successful, this assigns the region to the driver,
while check_region() didn't do this, so release_region() should be
used as needed to return the resources.

--
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:47    [W:0.364 / U:0.000 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site