LINUX.ORG.RU

Стандартных таких нет.
Если я тебя правильно понял: у тебя есть указатели на эти страницы, используй её один для временного хранения адреса.

Boy_from_Jungle ★★★★ ()

изменить записи в каталоге страниц?

dimon555 ★★★★★ ()
Ответ на: комментарий от Boy_from_Jungle

>у тебя есть указатели на эти страницы, используй её один для временного хранения адреса.

прошу процения, но я не понял сказнного

b3qkc ()
Ответ на: комментарий от gavv

>может лучше mremap-ом?

сейчас посмотрю, что можно им сделать

b3qkc ()
Ответ на: комментарий от dimon555

>изменить записи в каталоге страниц?

как это сделать из приложения?

b3qkc ()
Ответ на: комментарий от gavv

>может лучше mremap-ом?

судя по мануалу, он может перемапить имеющуюся область памяти в некоторую новую область, но адрес новой области указать нельзя.

мне же надо, чтобы менялись местами две уже используемые мною страницы

b3qkc ()
Ответ на: комментарий от b3qkc

Делай mmap на файл в /dev/shm (чтобы всё равно в памяти было), тогда mmap'у можно будет указывать и адрес, куда мапить, и offset в файле.

mv ★★★★★ ()

не очень понятно, что именно нужно...

если эта память смотрит в file/shmem, то посмотрите
на remap_file_pages(). не знаю, подойдет ли вам это.

idle ★★★★★ ()
Ответ на: комментарий от mv

>Делай mmap на файл в /dev/shm (чтобы всё равно в памяти было), тогда mmap'у можно будет указывать и адрес, куда мапить, и offset в файле.

судя по мануалу, он может перемапить имеющуюся область памяти в некоторую новую область, но адрес новой области указать нельзя.

мне же надо, чтобы менялись местами две уже используемые мною страницы

b3qkc ()
Ответ на: комментарий от idle

>не очень понятно, что именно нужно...

Хорошо, может я невнятно спросил...

Дано:

1) У приложения есть 2 различных(не равных между собою) указателя - ptr1 и ptr2, выровненных по размеру страницы (кратных 4к, в моем случае).

2) По указателю ptr1 находится страница заполненная символом '1', а по указателю ptr2 - страница, заполненная символом '2'.

Нужно:

Написать функцию, которая меняла бы соответствие виртуальных адресов физическим таким образом, чтобы после ее выполнения указатель ptr1 (оставшись прежним, то есть, не поменяв своего значения) указывал на страницу памяти, заполненную символом '2', а ptr2 соответственно на страницу, заполненную символом '1'

В некоторых видеокартах такой механизм реализован под названием page flipping, но мне хочется такой механизм для основной памяти. Причин, по которым он не мог бы быть реализован я не вижу.

b3qkc ()
Ответ на: комментарий от b3qkc

судя по мануалу, он может перемапить имеющуюся область памяти в некоторую новую область, но адрес новой области указать нельзя.

Кто «он»?

мне же надо, чтобы менялись местами две уже используемые мною страницы

Ну так с бэкингом на файл и меняй себе спокойно. В качестве «физического» адреса будет смещение в файле, страницу по этому смещению можно заmmapить по любому валидному адресу.

mv ★★★★★ ()
Ответ на: комментарий от mv

> Ну так с бэкингом на файл и меняй себе спокойно. В качестве «физического» адреса будет смещение в файле, страницу по этому смещению можно заmmapить по любому валидному адресу.

Теперь я понял, спасибо большое. Мне кажется это слегка неудобным, правда, в идеале я хотел бы видеть комбинацию упомянутых функций - mmap и mremap - чтобы действовала как mremap, но получала указатель на новую область.

Но во всяком случае я теперь знаю, где копать.

b3qkc ()
Ответ на: комментарий от b3qkc

> в идеале я хотел бы видеть комбинацию упомянутых функций

еще раз, remap_file_pages()

idle ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.