Plik nagłówka:
#włączaćSkładnia:
void * mmap (void * adres, rozmiar_t długość, int chroń, int flagi, int hitedes,Argumenty:
Funkcja przyjmuje 6 argumentów:
adres:
Ten argument podaje preferowany adres początkowy do mapowania. Jeśli nie istnieje inne mapowanie, jądro wybierze pobliską granicę strony i utworzy mapowanie; W przeciwnym razie jądro wybiera nowy adres. Jeśli ten argument jest zerowy, wówczas jądro może umieścić mapowanie w dowolnym miejscu, w którym uważa.
długość:
To jest liczba bajtów, które należy zmapować.
chronić:
Ten argument służy do kontrolowania tego, jaki rodzaj dostępu jest dozwolony. Ten argument może być logiczny „lub” z następujących flag Prot_read | Prot_write | Prot_exec | Prot_none. Typy dostępu do odczytu, zapisu i wykonania to uprawnienia do treści.
Flagi:
Ten argument służy do kontrolowania natury mapy. Poniżej znajdują się niektóre wspólne wartości flag:
Siledes:
To jest deskryptor pliku, który należy zmapować.
zrównoważyć:
Jest to przesunięte od miejsca, w którym rozpoczęło się mapowanie plików. Mówiąc prosto, mapowanie łączy się z (zrównoważyć) Do (przesunięcie+długość-1) bajty dla pliku otwarte zapisane deskryptor.
Zwracaj wartości:
O sukcesie, mmap () zwraca 0; W przypadku awarii funkcja zwraca MAP_FAILED.
Pictoralnie możemy reprezentować funkcję mapy w następujący sposób:
Aby unfemap mapowany region Munmap () używana jest funkcja:
Składnia:
Int Munmap(próżnia *adres, size_t długość);
Zwracaj wartości:
O sukcesie, Munmap () zwraca 0; W przypadku awarii funkcja zwraca -1.
Przykłady:
Teraz zobaczymy przykładowy program dla każdego z poniższych przy użyciu wywołania systemu MMAP ():
Przykład 1.C
#włączaćW przykładzie1.c Przydzielamy pamięć za pomocą MMAP. Tutaj użyliśmy prot_read | Prot_write Ochrona do czytania i pisania do mapowanego regionu. Użyliśmy map_private | Flaga map_anonimii. MAP_Private jest używany, ponieważ region mapowania nie jest udostępniany innymi procesami, a MAP_ANONOMOUS jest używany, ponieważ tutaj nie zmapowaliśmy żadnego pliku. Z tego samego powodu deskryptor pliku i zrównoważyć Wartość jest ustawiona na 0.
Przykład2.C
#włączać