X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/blobdiff_plain/ad0f0d12f7625db09928da09e6417f4010b60eae..98b8ef391f9f508131d222080a79b3b3e72a4b22:/usb-driver.c diff --git a/usb-driver.c b/usb-driver.c index 1e1f026..ed78932 100644 --- a/usb-driver.c +++ b/usb-driver.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include "usb-driver.h" @@ -61,13 +62,15 @@ static int modules_read = 0; #define NO_WINDRVR 1 void hexdump(unsigned char *buf, int len, char *prefix) { - int i; + int i = 0; - fprintf(stderr, "%s ", prefix); - for(i=0; i (long)(start + protectlen)) + protectlen += pagesize; + + DPRINTF("Unprotecting %zd bytes starting at %p\n", protectlen, start); + ret = mprotect(start, protectlen, PROT_READ|PROT_WRITE); + if (ret == -1) + perror("mprotect"); + + DPRINTF("Replacing %s with /dev/zero\n", filename); + strcpy(filename, "/dev/zero"); + + DPRINTF("Reprotecting %zd bytes starting at %p\n", protectlen, start); + ret = mprotect(start, protectlen, PROT_READ|PROT_EXEC); + if (ret == -1) + perror("mprotect"); + } + + DPRINTF("-> XilCommNS::CPortResources::Instance()\n"); + + ret = func(); + + DPRINTF("<- XilCommNS::CPortResources::Instance()\n"); + + return ret; +} + static void __attribute__ ((constructor)) libusbdriver_init(void) { int i; char buf[256];