История изменений
Исправление Iron_Bug, (текущая версия) :
ты не сможешь копировать быстрее, чем заполняется DMA. она для того и сделана, чтобы не было возни на стороне софта. обычно схема такая: железо сливает данные в DMA и выставляет каким-то образом (прерывания, мэйлбоксы) сигнал о том, что данные в память залиты, и адреса начала и конца данных. драйвер получает адрес и работает с ним напрямую, никуда не копируя данные, а просто отображая память на адреса юзерских приложений и передавая им смещения в этом мапе.
и да, PCI чипы уже лет десять как не производят. так что лучше сразу закладываться на PCIe.
Исправление Iron_Bug, :
ты не сможешь копировать быстрее, чем заполняется DMA. она для того и сделана, чтобы не было возни на стороне софта. обычно схема такая: железо сливает данные в DMA и выставляет каким-то образом (прерывания, мэйлбоксы) сигнал о том, что данные в память залиты, и адреса начала и конца данных. драйвер получает адрес и работает с ним напрямую, никуда не копируя данные, а просто отображая память на адреса юзерских приложений и передавая им смещения в этом мапе.
и да, PCI мосты уже лет десять как не производят. так что лучше сразу закладываться на PCIe.
Исправление Iron_Bug, :
ты не сможешь копировать быстрее, чем заполняется DMA. она для того и сделана, чтобы не было возни на стороне софта. обычно схема такая: железо сливает данные в DMA и выставляет каким-то образом (прерывания, мэйлбоксы) сигнал о том, что данные в память залиты, и адреса начала и конца данных. драйвер получает адрес и работает с ним напрямую, никуда не копируя данные, а просто отображая память на адреса юзерских приложений и передавая им смещения в этом мапе.
Исходная версия Iron_Bug, :
ты не сможешь копировать быстрее, чем заполняется DMA. она для того и сделана, чтобы не было возни на стороне софта. обычно схема такая: железо сливает данные в DMA и выставляет каким-то образом (прерывания, мэйлбоксы) сигнал о том, что данные в память залиты и адреса начала и конца данных. драйвер получает адрес и работает с ним напрямую, никуда не копируя данные, а просто отображая память на адреса юзерских приложений и передавая им смещения в этом мапе.