Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       mlockall - Schaltet Paging fur den aktuellen Prozess aus.

       Diese  Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
       die englischsprachige Handbuchseite zu Rate, indem Sie

              man -LC 2 mlock

       eingeben.

"UBERSICHT

       #include <sys/mman.h>

       int mlockall(int flags);

BESCHREIBUNG

       mlockall sperrt das Paging fur alle Seiten, die in den  Adressraum  des
       aufrufenden  Prozesses  eingebunden  sind.  Dieses bezieht sich auf die
       Seiten des Code-, Daten- und Stacksegments genauso wie  auf  gemeinsame
       Bibliotheken,  Kernel-Daten  im  Userspace,  Shared  Memory  und Shared
       Dateien.  Es ist garantiert, dass alle eingebundenen Speicherseiten  im
       RAM  bleiben,  wenn der mlockall-Aufruf erfolgreich zuruckkehrt. Und es
       wird ebenfalls garantiert, dass sie solange im  RAM  bleiben,  bis  die
       Seiten  mit  munlock  oder  munlockall  entsperrt  werden, das Programm
       terminiert wird oder mit exec  ein  anderes  Programm  aufruft.   Diese
       Sperrungen  werden  nicht  an  Tochterprozesse  uber  ein  fork  hinaus
       vererbt.

       Das Sperren von Speicher hat zwei Hauptanwendungen: Echtzeitalgorithmen
       und  Hochsicherheits-Datenverarbeitung.   Echtzeitalgorithmen erfordern
       deterministisches Timing, und, wie auch Scheduling,  ist  Paging  einer
       der     Hauptgrunde    fur    unerwartete    Verzogerungen    in    der
       Programmausfuhrung.    Echtzeitapplikationen   werden   auBerdem    fur
       gewohnlich   mit   sched_setscheduler   auf   einen  Echtzeit-Scheduler
       umschalten.   Kryptographische  Sicherheitssoftware  arbeitet  oft  mit
       sicherheitskritischen  Bytes  wie  Passwortern oder geheimen Schlusseln
       als Datenstrukturen.  Durch Paging konnten  diese  geheimen  Daten  auf
       eine  permanente  Swappartition  ubertragen werden, von wo aus sie auch
       dann noch Dritten zuganglich sein konnen, lange  nachdem  das  Programm
       die  geheimen  Daten  aus  dem  RAM geloscht und sich beendet hat.  Fur
       Sicherheitsapplikationen mussen nur kleine Teile des Speichers gesperrt
       werden.  Dafur steht mlock zur Verfugung.

       Die  flags Parameter konnen mit logischem ODER aus folgenden Konstanten
       konstruiert werden:

       MCL_CURRENT
              Sperrt alle Seiten, die momentan in den Adressraum des Prozesses
              umgerechnet sind.

       MCL_FUTURE
              Sperrt  alle  Seiten,  die  in  Zukunft  in  den  Adressraum des
              Prozesses  gelegt  werden.   Das  konnten  zum   Beispiel   neue
              Adressseiten  sein,  die  bei  einem sich vergroBernden Heap und
              Stack benotigt werden, Dateien, die  in  den  Speicher  gebunden
              werden, oder gemeinsam benutzte Speicherregionen.

       Wenn  MCL_FUTURE angegeben ist und die Anzahl der gesperrten Seiten das
       obere Limit der zulassigen gesperrten Seiten  uberschreitet,  wird  der
       Systemaufruf,   der   das   neue   umrechnen   veranlaBte   mit  ENOMEM
       fehlschlagen.  Wenn diese Seiten  durch  wachsenden  Stack  eingebunden
       wurden,  wird  der  Kernel die Ausdehnung des Stacks nicht zulassen und
       ein SIGSEGV an den Prozess senden.

       Echtzeitprozesse sollten genug gesperrte Stackseiten reservieren, bevor
       sie  in die zeitkritische Phase treten, so dass kein Fehler durch einen
       Funktionsaufruf entstehen kann.   Dies  kann  durch  den  Aufruf  einer
       Funktion  erreicht  werden,  die  eine  ausreichend  groBe automatische
       Variable erzeugt und in den Speicher schreibt, in dem diese  liegt,  um
       diese  Stackseiten zu belegen.  Auf diesem Wege werden genug Seiten fur
       den Stack bereitgestellt  und  konnen  im  RAM  gesperrt  werden.   Der
       Schreibvorgang  stellt  sicher,  dass  nicht einmal ein Schreib-Kopier-
       Seitenfehler in der kritischen Phase entstehen konnen.

       Speichersperren werden nicht gestapelt, das heiBt, Seiten die  mehrmals
       durch  den Aufruf von mlockall oder mlock gesperrt wurden werden sofort
       wieder freigegeben durch einen einzigen Aufruf von munlockall.   Seiten
       die  an verschiedene Orte oder fur verschiedene Prozesse bereitgestellt
       wurden bleiben solange im RAM gesperrt wie sie mindestens an einen  Ort
       oder durch einen Prozess benotigt werden.

       In  POSIX  Systemen,  wo  mlockall  und  munlockall verfugbar sind, ist
       _POSIX_MEMLOCK definiert in <unistd.h>.

R"UCKGABEWERT

       Bei Erfolg gibt mlockall eine Null aus.  Falls ein Fehler auftritt wird
       -1 zuruckgegeben und errno sofort gesetzt.

FEHLER

       ENOMEM Der  Prozess  versuchte  die maximal zulassige Anzahl gesperrter
              Seiten zu uberschreiten.

       EPERM  Der aufrufende Prozess hat nicht die erforderlichen Rechte.  Nur
              Rootprozesse durfen Seiten sperren.

       EINVAL Unbekannte Flags wurden angegeben.

STANDARDS

       POSIX.1b, SVR4

SIEHE AUCH

        munlockall (2), mlock(2), und munlock(2).