| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | DMA? |
Udo van den Heuvel wrote in a message to Richard Drapeau: UvdH> OK, but how can I safely let the chips write to a buffer, UvdH> somewhere below the 16 meg mark? How do I get a buffer below UvdH> the 16 meg mark? UvdH> When I set up the DMA chips to write to a buffer, how does UvdH> this work when another task is being serviced? UvdH> Is the memory protection a problem? UvdH> What other caveats are to be taken care of? (this is OS/2, UvdH> not MS-DOS) Under OS/2, you can only do DMA from a device driver running in Ring 0. I'll assume you understand that. In general, a device driver sees a virtual address to memory, which is 16:16. These addresses may have other aliases, especially when they reflect buffers from applications in linear 0:32 space. A device driver uses system API calls to lock ranges of memory into some physical RAM and then passes these physical addresses to the DMA hardware. In some cases, the RAM buffers may be physically discontigous, and this is compensated for by scatter-gather hardware to do the DMA operation. Since device drivers cannot be preempted, concurrency is not an issue. -- Mike ---* Origin: N1BEE BBS +1 401 944 8498 V.34/V.FC/V.32bis/HST16.8 (1:323/107) SEEN-BY: 50/99 78/0 270/101 620/243 711/401 409 410 413 430 808 809 934 955 SEEN-BY: 712/407 515 517 628 713/888 800/1 7877/2809 @PATH: 323/107 396/1 270/101 712/515 711/808 809 934 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.