mmap not working?

From: Rogier Wolff (R.E.Wolff@BitWizard.nl)
Date: Fri Nov 16 2001 - 16:34:24 EST


Hi,

I want to mmap a device in an application, so I do:

        base = mmap(NULL , DEV_LENGTH, myprot , flags, kmem, dev_base);

Turns out that some BIOSs put my device at an address like

        0xdffffc00

whereas others put it at 0xfa000000 . In the latter case, mmap works
as expected. However in the first case I get EINVAL: The base is
not page-aligned.

However, in the latter case I get my requested 1k of memory, and the
following 3k for free. In the first case I'd want "3k for free,
followed by the 1k I requested".

effectively, provided "start" equals NULL, the kernel IMHO should:

        offset = dev_base & PAGE_MASK;
        return mmap (NULL, length+offset, prot, flags, base - offset) + offset;
Comments?

The "failure" was observed on 2.4.14 and/or 2.4.9.

                Roger.

P.S. I end up not being able to closely follow linux-kernel
lately. CCs to me appreciated.

-- 
** R.E.Wolff@BitWizard.nl ** http://www.BitWizard.nl/ ** +31-15-2137555 **
*-- BitWizard writes Linux device drivers for any device you may have! --*
* There are old pilots, and there are bold pilots. 
* There are also old, bald pilots. 
-
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/



This archive was generated by hypermail 2b29 : Fri Nov 23 2001 - 21:00:14 EST