[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Синхронизация памяти с физическим носителем

Библиотечная функция msync(3C) записывает все измененные страницы в
диапазоне [addr, addr+len-1] на их постоянное место на физическом
носителе. Флаги могут иметь следующие значения:
MS_ASYNC       немедленно  вернуться,   как  только  спланированы  все
               операции записи

MS_SYNC        вернуться, только когда завершатся все операции записи

MS_INVALIDATE  помечает страницы  памяти как  недействительные.  После
               этого любое  обращение к этим адресам вызывает чтение с
               постоянного физического носителя.

msync(3) похож на fsync(2). Точнее говоря, он синхронно обновляет
содержимое диска содержимым буферов памяти. Разница заключается в том,
что fsync(2) обновит весь файл, в то время как msync(3) запишет только
данные в указанном диапазоне.
                       msync(addr, len, flags)
                             эквивалентно
               memcntl(addr, len, MC_SYNC, flags, 0, 0)

memcntl(2) обсуждается позже в этом курсе. Флаги для msync(3C)
обсуждаются на страницах, посвященных memcntl(2).
             СИНХРОНИЗАЦИЯ ПАМЯТИ С ФИЗИЧЕСКИМ НОСИТЕЛЕМ
msync(3)

ИМЯ

      msync - синхронизует память с физическим носителем

ИСПОЛЬЗОВАНИЕ

      #include <sys/types/h>
      #include <sys/mman.h>

      int msync(caddr-t addr, size_t len, int flags);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - 0

      неуспех - -1 и errno установлена