leggere /dev/mem


esperienza lettura memoria in /dev/mem

anni fa la rivista Linux&C #58 pubblico' un articolo
sulla memoria del kernel in /dev/mem

eccolo:

http://sacarde.altervista.org/data/dev-mem.pdf

dal config del kernel si prende il valore:
CONFIG_PAGE_OFFSET=0xC0000000


dal system.map si prende il valore:
c0bd3240 D jiffies


si inseriscono nel programma in C:


#include "<"stdio.h">"
#include "<"sys/types.h">"
#include "<"sys/stat.h">"
#include "<"fcntl.h">"
#include "<"unistd.h">"
#define PAGE_OFFSET 0xc0000000
#define JIFFIES_OFFSET 0xc0bd3240 - PAGE_OFFSET
int main(void)
{
int fd, buffer;
fd = open("/dev/mem", O_RDONLY);
lseek(fd, JIFFIES_OFFSET, SEEK_SET);
read(fd, &buffer, 4);
close(fd);
printf("jiffies= %dn", buffer);
return 0;
}


si compila e si esegue, otterremo valori crescenti:

jiffies= 134514043


p.s.
testato su opensuse:
- a 32 bit
- che sia disabilitato: CONFIG_STRICT_DEVMEM




Articolo tratto da: #341724 Linux - http://sacarde.altervista.org/
URL di riferimento: http://sacarde.altervista.org/index.php?mod=read&id=1392286804