Je ne sais pas exactement pourquoi tu veux acceder a /dev/mem. En general on survit tres bien en s'en abstenant. Je ne sais pas non plus a quel niveau se produit ton erreur (ouverture ? lecture des le debut ? lecture au-dela du premier mega ?).
En tous les cas, en 2.6 sur x86_32, tu vas difficielement pouvoir depasser le 1er mega de RAM (les autres acces hors ram sont permis, si ils ont un sens bien sur). Extrait de arch/i386/mm/init.c :
/*
* devmem_is_allowed() checks to see if /dev/mem access to a certain address is
* valid. The argument is a physical page number.
*
*
* On x86, access has to be given to the first megabyte of ram because that area
* contains bios code and data regions used by X and dosemu and similar apps.
* Access has to be given to non-kernel-ram areas as well, these contain the PCI
* mmio resources as well as potential bios/acpi data regions.
*/
int devmem_is_allowed(unsigned long pagenr)
{
if (pagenr <= 256)
return 1;
if (!page_is_ram(pagenr))
return 1;
return 0;
}
On dirait que c'est une limitation propre au x86 (32 et 64), sur les autres archi, visiblement pas de limitation.
Mais, encore une fois, je me demande bien a quoi ca peut te servir. A mon sens, /dev/mem ne devrait pas exister autrement qu'"a but educatif".
# Limitation des 2.6
Posté par David Decotigny . En réponse au message utilisation de /dev/mem. Évalué à 2.
/* * devmem_is_allowed() checks to see if /dev/mem access to a certain address is * valid. The argument is a physical page number. * * * On x86, access has to be given to the first megabyte of ram because that area * contains bios code and data regions used by X and dosemu and similar apps. * Access has to be given to non-kernel-ram areas as well, these contain the PCI * mmio resources as well as potential bios/acpi data regions. */ int devmem_is_allowed(unsigned long pagenr) { if (pagenr <= 256) return 1; if (!page_is_ram(pagenr)) return 1; return 0; }On dirait que c'est une limitation propre au x86 (32 et 64), sur les autres archi, visiblement pas de limitation. Mais, encore une fois, je me demande bien a quoi ca peut te servir. A mon sens, /dev/mem ne devrait pas exister autrement qu'"a but educatif".