Re: Faking a memory map?

Jeremy Jackson (jerj@coplanar.net)
13 Feb 2003 13:14:52 -0500


On Tue, 2003-02-11 at 19:21, David Frascone wrote:
> I'm trying to get an existing SDK (userland) for a PCI hardware device
> to work across a different propriatary bit-banged interface.
>
> The original device driver just mmaped the PCI registers / address
> space into userland. (talk about lazy ;)
>
> Anyway, the hardware I'm working with is *not* on the PCI bus, and
> therefore not memory-mappable. So, I'm stuck with a complex driver
> design (compared to the original), and rewriting the entire bottom of
> the SDK.
>
> So, I thought: Is there a way to cheat? Would it be possible for me
> to *fake* the SDK out by memory mapping some RAM, and then reading /
> writing to the ram after bit-banging the device.
>
> I looked into it some, but I couldn't figure out how to get notified
> when the region was read/written to (only when the page changed). So,
> is it possible to do the (admitedly ugly) hack I'm attempting?

I think you would have to use mprotect(,,PROT_NONE), set the region to
disallow read/write, and then each SEGV would have to be decoded, and
the trap told to continue as though the access did take place.

Take a look at the mprotect man page for an example, and then sigaction
arount the siginfo_t area. in siginfo_t.si_addr it gives the address
that faulted.
>
> Thanks in advance,
>
> -Dave

-- 
Jeremy Jackson <jerj@coplanar.net>

- 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/