# US 2014/0195746 A1 · Dma channels

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0195746 A1
- Document ID: US20140195746A1
- Status: Published application
- Kind: A1
- Application number: 13/734,708
- Filed: 2013-01-04
- Published: 2014-07-10
- Earliest claimed: 2013-01-04
- Assignees: Microsoft Corporation
- Applicants: Microsoft Corporation
- Inventors: Shaun David Cox; Fehim Soner Terek; Jinsong Yu; Christopher Wellington Brumme; Gregory Michael Neverov
- Web page: https://patentgrep.com/patent/US20140195746A1

## CPC

- G06F 12/00: Accessing, addressing or allocating within memory systems or architectures (digital input from, or digital output to record carriers, e.g. to disk storage units, G06F3/06)
- G06F 13/102: {where the program performs an interfacing function, e.g. device driver (G06F13/105 takes precedence; contention policies within device drivers G06F9/4881; scheduling within device drivers G06F9/52)}
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Communicating between an application and a hardware device. A method includes an application writing data to host physical memory using an application view of the memory. The method further includes mapping the data in the physical memory to a hardware driver view, usable by a hardware driver, without needing to copy the data to a different physical storage location. The method further includes mapping the data to a hardware accessible view accessible by a hardware device without needing to copy the data to a different physical storage location

## Claims

### Claim 1

In a computing environment, a method of communicating between an application and a hardware device, the method comprising:
an application writing data to host physical memory using an application view of the memory;
mapping the data in the physical memory to a hardware driver view, usable by a hardware driver, without needing to copy the data to a different physical storage location; and
mapping the data to a hardware accessible view accessible by a hardware device without needing to copy the data to a different physical storage location.

### Claim 2 (depends on 1)

The method of claim 1, wherein the physical memory comprises payload data and control messages.

### Claim 3 (depends on 2)

The method of claim 2, wherein the hardware device is a network interface card and the payload data comprises data frames to be transmitted.

### Claim 4 (depends on 2)

The method of claim 2, further comprising:
accomplishing flow control by leaving the payload data and control data in the physical memory until the hardware device has provided an indication indicating completion of an operation, without needing to retire data from the physical memory or copy the payload data or control data out of the physical memory.

### Claim 5 (depends on 1)

The method of claim 1, wherein the acts are performed to create an inter-process communication (IPC) channel and a direct memory access (DMA) channel for use in a type safe environment in a message-passing oriented platform.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
sending a control message to a driver process indicating that driver should be aware of a mapped chunk of memory containing control data for the hardware device;
sending a small control message indicating a portion of the mapped chunk of memory that has a control message in the portion of the mapped chunk of memory; and
un-mapping the mapped chunk of memory when a last portion of the mapped chunk of memory is used to transfer control messages.

### Claim 7 (depends on 1)

The method of claim 1, wherein the hardware driver is implemented in user mode.

### Claim 8

In a computing environment, a method of communicating between an application and a hardware device, the method comprising:
a hardware device writing data to host physical memory using a hardware view of the memory;
mapping the data in the physical memory to a hardware driver view, usable by a hardware driver, without needing to copy the data to a different physical storage location; and
mapping the data to an application accessible view accessible by an application without needing to copy the data to a different physical storage location.

### Claim 9 (depends on 8)

The method of claim 8, wherein the physical memory comprises payload data and control messages.

### Claim 10 (depends on 9)

The method of claim 9, wherein the hardware device is a network interface card and the payload data comprises data frames received by the network interface card.

### Claim 11 (depends on 9)

The method of claim 9, further comprising:
accomplishing flow control by leaving the payload data and control data in the physical memory until the hardware device has provided an indication indicating completion of an operation, without needing to retire data from the physical memory or copy the payload data or control data out of the physical memory.

### Claim 12 (depends on 8)

The method of claim 8, wherein the acts are performed to create an inter-process communication (IPC) channel and a direct memory access (DMA) channel for use in a type safe environment in a message-passing oriented platform.

### Claim 13 (depends on 8)

The method of claim 8, further comprising:
sending a control message to a driver process indicating that driver should be aware of a mapped chunk of memory containing control data for the hardware device;
sending a small control message indicating a portion of the mapped chunk of memory that has a control message in the portion of the mapped chunk of memory; and
un-mapping the mapped chunk of memory when a last portion of the mapped chunk of memory is used to transfer control messages.

### Claim 14 (depends on 8)

The method of claim 8, wherein the hardware driver is implemented in user mode.

### Claim 15

A system comprising:
a hardware device;
system memory;
an application that produces payload data to be sent to the hardware device and consumes payload data from the hardware device, wherein the application writes payload data to the system memory using an application view of the system memory;
a driver that produces and consumes control data stored on the system memory using a driver view of the system memory;
wherein the hardware device is configured to receive payload data directly from the system memory and write data directly to the system memory using a device view of the system memory, such that payload data transferred between the hardware device and the application and control data between the driver and the hardware device can be accomplished without actually copying the data.

### Claim 16 (depends on 15)

The system of claim 15, wherein the hardware device is a network interface card and the payload data comprises data frames to be transmitted.

### Claim 17 (depends on 15)

The system of claim 15, wherein the system is configured to accomplish flow control by leaving the payload data and control data in the memory until the hardware device has provided an indication indicating completion of an operation, without needing to retire data from the physical memory or copy the payload data or control data out of the physical memory.

### Claim 18 (depends on 15)

The system of claim 15, wherein the system implements an inter-process communication (IPC) channel and a direct memory access (DMA) channel for use in a type safe environment in a message-passing oriented platform.

### Claim 19 (depends on 15)

The system of claim 15, wherein the memory comprises a chunk of mapped memory holding control messages at different offsets of the mapped memory and wherein the system is configured to access the control messages at different offsets of the mapped memory by sending a small control message indicating a portion of the mapped chunk of memory that has a control message in the portion of the mapped chunk of memory by sending an address location and an offset.

### Claim 20 (depends on 15)

The system of claim 15, wherein the hardware driver is implemented in user mode.
