view rathaxes_samples_e1000_use_the_dma_abstraction_in_socket.patch @ 112:bfe10def90e3

Wip
author Louis Opter <louis@lse.epita.fr>
date Fri, 19 Jul 2013 19:12:10 -0700
parents b072f682823d
children b22983cb9e3a
line wrap: on
line source

# HG changeset patch
# Parent c571aba317b28723d36bf15393be227b41fce242
Replace Linux specific code in Socket by DMA calls

diff --git a/rathaxes/samples/e1000/socket.blt b/rathaxes/samples/e1000/socket.blt
--- a/rathaxes/samples/e1000/socket.blt
+++ b/rathaxes/samples/e1000/socket.blt
@@ -1,4 +1,4 @@
-with Socket, LKM, Device, Ethernet
+with Socket, LKM, Device, DMA, Ethernet
 {
     template type Socket::AbstractSKBuff()
     {
@@ -22,15 +22,15 @@
     {
         decl  data_types()
         {
-            ${Socket::AbstractSKBuff.ref}   skbuff;
-            dma_addr_t                      dma_handle;
+            ${Socket::AbstractSKBuff.ref}       skbuff;
+            ${DMA::AbstractDMAHandle.scalar}    dma_handle;
         }
 
         chunk   LKM::prototypes()
         {
             static void rtx_socket_skbuff_dump_infos(${Socket::SKBuff.ref});
-            static int  rtx_socket_skbuff_map(${Socket::SKBuff.ref}, struct device *, enum dma_data_direction);
-            static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref}, struct device *, enum dma_data_direction);
+            static int  rtx_socket_skbuff_map(${Socket::SKBuff.ref}, struct device *, ${DMA::DMADirection});
+            static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref}, struct device *, ${DMA::DMADirection});
         }
 
         chunk   LKM::code()
@@ -66,7 +66,7 @@
 
             static int rtx_socket_skbuff_map(${Socket::SKBuff.ref} self,
                                              struct device *dev,
-                                             enum dma_data_direction direction)
+                                             ${DMA::DMADirection} direction)
             {
                 ${Socket::AbstractSKBuff.ref}   skb = self->skbuff;
 
@@ -77,7 +77,7 @@
                         dev,
                         ${local.skb.k_sk_buff},
                         skb_headlen(${local.skb.k_sk_buff}),
-                        direction);
+                        ${local.direction.dma_direction});
                 int err = dma_mapping_error(dev, self->dma_handle);
                 if (err)
                 {
@@ -89,7 +89,7 @@
 
             static void rtx_socket_skbuff_unmap_and_free(${Socket::SKBuff.ref} self,
                                                          struct device *dev,
-                                                         enum dma_data_direction direction)
+                                                         ${DMA::DMADirection} direction)
             {
                 ${Socket::AbstractSKBuff.ref}   skb = self->skbuff;
 
@@ -100,7 +100,7 @@
                     dma_unmap_single(dev,
                             self->dma_handle,
                             skb_headlen(${local.skb.k_sk_buff}),
-                            direction);
+                            ${local.direction.dma_direction});
                     self->dma_handle = 0;
                 }
                 dev_kfree_skb_any(${local.skb.k_sk_buff});
@@ -126,22 +126,22 @@
 
         method   map_to(Device::AbstractDevice dev)
         {
-            rtx_socket_skbuff_map(${self}, ${dev.k_device}, DMA_TO_DEVICE);
+            rtx_socket_skbuff_map(${self}, ${dev.k_device}, RTX_DMA_TO_DEVICE);
         }
 
         method   map_from(Device::AbstractDevice dev)
         {
-            rtx_socket_skbuff_map(${self}, ${dev.k_device}, DMA_FROM_DEVICE);
+            rtx_socket_skbuff_map(${self}, ${dev.k_device}, RTX_DMA_FROM_DEVICE);
         }
 
         method   unmap_to_and_free(Device::AbstractDevice dev)
         {
-            rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, DMA_TO_DEVICE);
+            rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, RTX_DMA_TO_DEVICE);
         }
 
         method   unmap_from_and_free(Device::AbstractDevice dev)
         {
-            rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, DMA_FROM_DEVICE);
+            rtx_socket_skbuff_unmap_and_free(${self}, ${dev.k_device}, RTX_DMA_FROM_DEVICE);
         }
 
         map