From mboxrd@z Thu Jan 1 00:00:00 1970 From: Grant Grundler Date: Tue, 04 May 2004 20:29:48 +0000 Subject: Re: mmap() of /dev/kmem issue Message-Id: <20040504202948.GA3155@cup.hp.com> List-Id: References: <4097C51D.71EA0BEA@email.mot.com> In-Reply-To: <4097C51D.71EA0BEA@email.mot.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-ia64@vger.kernel.org On Tue, May 04, 2004 at 01:12:21PM -0500, Mario Smarduch wrote: > jiffies=0x`grep "D jiffies" /boot/System.map | awk '{ print $1 }'` > ./tstmmapkmem $jiffies Maybe the process is being prempted? Ie maybe the problem is the contents are "stale" by the time they get displayed on the console/terminal. jiffies gets updated 1000/second so on occasion I would expect this to happen. Maybe pick something that doesn't get updated so frequently? grant > #define DEVICE "/dev/kmem" > #define PAGE_MASK (0x4000 - 1) /* page is 16k */ > > #define wmb() __asm__ __volatile__ ("": : :"memory") > > extern int errno; > main(int argc, char *argv[]) > { > int fd; > ulong mapaddr; > volatile long *jifptr, jiffies; > > jiffies = strtoul(argv[1], 0, 16); > printf("jiffies = 0x%lx\n", jiffies); > printf("pid = %d\n", getpid()); > > if((fd = open(DEVICE, O_RDWR)) < 0) > printf("open failed - errno = %d\n", errno), exit(errno); > > jiffies -= IDENBASE; > mapaddr=(ulong) mmap((void *)0x2000000080000000, 0x8000000, > PROT_WRITE|PROT_R > EAD|PROT_EXEC, MAP_SHARED | MAP_FIXED, fd, jiffies & ~PAGE_MASK); > if(mapaddr = -1UL) { > printf("mmap failed errno = %d\n", errno); > exit(-1); > } > printf("mapaddr = 0x%lx\n", mapaddr); > jiffies = mapaddr + (jiffies & PAGE_MASK); > jifptr = (long *) jiffies; > printf("jifptr = 0x%lx\n", jifptr); > pragain: > printf("jiffies: %ld\n", *jifptr); > > printf("Type return to read again (and flush cashe in meantime):\n"); > > getchar(); > goto pragain; > } > > - Mario. > > - > To unsubscribe from this list: send the line "unsubscribe linux-ia64" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html