Re: read PCI memory and config spyce through /dev/mem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 07, 2013 at 06:35:43AM +0000, Warlich, Christof wrote:
[...]
> Furthermore, read / write access through a simple program using /dev/mem
> _does_ work as expected:
> 
> #include <unistd.h>
> #include <stdio.h>
> #include <fcntl.h>
> #include <assert.h>
> #include <sys/mman.h>
> int main( int argc, char *argv[]) {
>   char *mem;
>   int fd;
>   fd = open ("/dev/mem", O_RDWR);
>   assert(fd >= 0);
>   mem = mmap(NULL, getpagesize(), PROT_READ|PROT_WRITE, MAP_SHARED, fd, (off_t) 0x81423000);
>   assert(mem != MAP_FAILED);
>   printf("Memory pointer: %p\n", mem);
>   printf("The PCI memory is : %#x\n", *mem);
>   *mem = *argv[1];
>   printf("The PCI memory is : %#x\n", *mem);
>   munmap(mem, getpagesize());
>   close(fd);
>   return 0;
> }
> 
> Calling it, yields:
> 
> $ led 4
> Memory pointer: 0xb7678000
> The PCI memory is : 0x33
> The PCI memory is : 0x34
> 
> And the LED matrix display being behind that address switches from 3 to
> 4 as expected.
> 
> Thus, I still cannot see why the access through /dev/mem using dd doesn't
> work.

I suspect dd uses read instead of mmap.


Thanks,
Jonathan Neuschäfer

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies





[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux