Portál AbcLinuxu, 31. října 2025 10:16
Chci si zeptat pro vlastni jistotu jestli spravne rozumim funkci mmap. Jedna se o mapovani casti pameti ARMv5 procesoru. Jestli spravne rozumim funkci mmap, tak v kodu co uvadim nize pointer map_base bude odkazovat na zacatek bloku pameti nebo na prvni registr o rozmeru 4096 v pripade,ze offset =0. V pripade,ze offset bude 4095 tak bude odkazovat na konec (posledni registr). Offset ma byt kladne cislo? 
C 
  fd = open("/dev/mem", O_RDWR | O_SYNC)); 
  map_base = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset); 
FreePascal 
  fd := fpopen('/dev/mem', O_RDWR or O_SYNC)); 
  map_base := fpmmap(0, 4096, PROT_READ or PROT_WRITE, MAP_SHARED, fd, offset); 
Řešení dotazu:
Diky za odpoved'. Omlovam se za nespravne formatovni. Prehledl jsem to. U ARMu velikost stranky je take 4096 (4k). Pod registem myslim bunku pameti. U ARMu registry jsou 32 bitove. Tak v pripade stranky o velikosti 4096 bytu budu mit namapovanych 1024 registru o velikosti 32 bitu.
C map_base = mmap(0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 4096); FreePascal map_base = fpmmap(nil, 4096, PROT_READ or PROT_WRITE, MAP_SHARED, fd, 4096);
Jestli sprvane chapu pri offsetu 4096 pointer map_base bude odkazovat na konec namapovane stranky pameti
mmapem nemají nic společného. Pokud nepíšeš v assembleru nebo neoptimalizuješ nějaký extrémně kritický algoritmus (což nakonec stejně skončí psaním assembleru), tak se registry vůbec nemusíš zabývat, překladač totiž jejich používání vyřeší za tebe  Velikost stránky se týká stránkování RAM, což se používá pro odkládání paměti do swapu, zamykání paměti proti přepisu ap. Pokud nepíšeš linker nebo správu paměti pro jádro, tak ti většinou stačí vědět, že jedna stránka má délku vracenou funkcí
Velikost stránky se týká stránkování RAM, což se používá pro odkládání paměti do swapu, zamykání paměti proti přepisu ap. Pokud nepíšeš linker nebo správu paměti pro jádro, tak ti většinou stačí vědět, že jedna stránka má délku vracenou funkcí getpagesize() (běžně je to 4 096 bajtů, ale může to být třeba i 4 MiB, záleží na architektuře a jejím nastavení) a násobky této hodnoty lze používat jako offset pro mmap.
            
        Tiskni
            
                Sdílej:
                 
                 
                 
                 
                 
                 
            
    
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.