[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