История изменений
Исправление qnikst, (текущая версия) :
насколько я помню в vmsplice есть вариант, передачи страницы, что-то там gift, хотя я оказывается плохо запомнил, это подарок ядру и не факт, что больше копирований не будет
SPLICE_F_GIFT The user pages are a gift to the kernel. The application may not modify this memory ever, otherwise the page
cache and on-disk data may differ. Gifting pages to the kernel means that a subsequent splice(2)
SPLICE_F_MOVE can successfully move the pages; if this flag is not specified, then a subsequent splice(2)
SPLICE_F_MOVE must copy the pages. Data must also be properly page aligned, both in memory and length.
SPLICE_F_MOVE Attempt to move pages instead of copying. This is only a hint to the kernel: pages may still be copied if
the kernel cannot move the pages from the pipe, or if the pipe buffers don't refer to full pages. The ini‐
tial implementation of this flag was buggy: therefore starting in Linux 2.6.21 it is a no-op (but is still
permitted in a splice() call); in the future, a correct implementation may be restored.
2.6.21 было давно, что там сейчас, кто знает?
остаётся вопрос, AF_DBUS это необходимый механизм для передачи страниц из одного адресного пространства в другое, и какие там ограничения вылезают?
Исходная версия qnikst, :
насколько я помню в vmsplice есть вариант, передачи страницы, что-то там gift, хотя я оказывается плохо запомнил, это подарок ядру и не факт, что больше копирований не будет
SPLICE_F_GIFT The user pages are a gift to the kernel. The application may not modify this memory ever, otherwise the page
cache and on-disk data may differ. Gifting pages to the kernel means that a subsequent splice(2)
SPLICE_F_MOVE can successfully move the pages; if this flag is not specified, then a subsequent splice(2)
SPLICE_F_MOVE must copy the pages. Data must also be properly page aligned, both in memory and length.
SPLICE_F_MOVE Attempt to move pages instead of copying. This is only a hint to the kernel: pages may still be copied if
the kernel cannot move the pages from the pipe, or if the pipe buffers don't refer to full pages. The ini‐
tial implementation of this flag was buggy: therefore starting in Linux 2.6.21 it is a no-op (but is still
permitted in a splice() call); in the future, a correct implementation may be restored.
2.6.21 было давно, что там сейчас, кто знает?
остаётся вопрос, AF_DBUS это необходимый механизм для передачи страниц из одного адресного пространства в другое, и какие там ограничения вылезают?