2016-07-31 6 views

Antwort

0

Im Code von msync.c kann man sehen:

if ((flags & MS_INVALIDATE) && 
      (vma->vm_flags & VM_LOCKED)) { 
     error = -EBUSY; 
     goto out_unlock; 
    } 

Grundsätzlich hier, wir wissen, dass MS_INVALIDATE ausgewertet wird und wenn die aktuelle Zuordnung von vma gerichtet ist gesperrt, der msync() Anruf wird mit EBUSY scheitern.

Dies macht Sinn nach (von Teil der Veröffentlichung 3.74 des Linux-man-pages Projekt, msync(2)):

MS_INVALIDATE fragt andere Zuordnungen der gleichen Datei ungültig zu machen (so , dass sie können, mit den gerade geschriebenen frischen Werten aktualisiert werden).

Denn wenn jede Datei Karte zu vma Liste verknüpft gesperrt ist, kann es nicht für ungültig erklärt werden, so wird der Anruf, wenn sonst nicht (sonst nicht die MS_INVALIDATE Flag gesetzt ist) wird es nicht.

Also, jetzt Ihre Frage zu beantworten, kann es nicht als ein No-Op betrachtet werden, da es das Verhalten von msync() beeinflusst, wenn festgelegt.

Verwandte Themen