[OSy] vma_map, upresneni VF_AT_KSEG0

Roman Kapl rkapl at volny.cz
Wed Nov 26 20:27:55 CET 2014


Dobry den,
nejsem si jisty, jak je minene chovani vma_map, zvlaste v souvislosti s flagy VF_AT_KSEGx.
Pochopil jsem to tak, ze pokud je uveden priznak VF_VA_AUTO, tak tyto flagy urcuji segment,
ve kterem bude bude vytvoreno mapovani pameti. Nevim co ale delat v pripade, ze jsou alokace
v segmentu KSEG0/1, kde nelze zadnou pamet mapovat, natoz rozdilne pro kazdy adresni prostor.

Druha interpretace je, ze flagy uvadeji, odkud alokovat fyzicke stranky pro nase mapovani.
V kazdem pripade mi neni jasny vyznam poznamky:
  "Alokace v segmentech KSEG0 a KSEG1 se vzajemne vylucuji, pokud jsou mapovany
   na stejne fyzicke adresy."


Zadani:
>int vma_map(
>          void **from, const size_t size, const vm_flags_t flags)
>
>      Funkce alokuje oblast ve virtualnim adresovem prostoru o velikosti
>      @size bajtu, pro tuto oblast alokuje fyzickou pamet (ne nutne souvislou)
>      a vytvori mapovani prave alokovane virtualni pameti do fyzicke.
>
>      V zavislosti na bitovych priznacich v argumentu @flags funkce bud
>      automaticky zvoli vhodnou adresu zacatku oblasti virtualni pameti
>      a vrati ji ve @from (priznak VF_VA_AUTO), nebo se pokusi vytvorit
>      oblast na adrese zadane volajicim ve @from (priznak VF_VA_USER).
>
>      Dalsi bitove priznaky v argumentu @flags urcuji typ segmentu
>      virtualniho adresoveho procesoru, ve kterem bude virtualni oblast
>      alokovana. Hodnoty priznaku pro jednotlive segmenty jsou VF_AT_KUSEG,
>      VF_AT_KSEG0, VF_AT_KSEG1, VF_AT_KSSEG a VF_AT_KSEG3. Alokace
>      v segmentech KSEG0 a KSEG1 se vzajemne vylucuji, pokud jsou mapovany
>      na stejne fyzicke adresy.
>
>      Funkce vraci EOK pokud byla pamet alokovana a namapovana, EINVAL pokud
>      nebylo mozne alokovat oblast se zacatkem na adrese @from v danem
>      segmentu virtualniho adresoveho prostoru procesoru, nebo pokud
>      @from ci @size nejsou zarovnany, ENOMEM pokud neni dostatek fyzicke
>      pameti k provedeni operace nebo jiz bylo dosazeno MAX_AREAS oblasti
>      virtualni pameti.

Dekuji, Roman Kapl





More information about the NSWI004 mailing list