Mercurial > archived > louis > epitech > mq > rathaxes
view rathaxes_samples_e1000_add_alloc_sequences_in_socket.patch @ 120:cbd9b9a49b63
wip, alloc_rx_skbuff actually an abstraction for netdev_allock_skb
author | Louis Opter <louis@lse.epita.fr> |
---|---|
date | Fri, 26 Jul 2013 21:06:45 -0700 |
parents | d84bc9a46771 |
children |
line wrap: on
line source
# HG changeset patch # Parent e06ebc5e25f35ad135ab454c3f157698e00e69ac rathaxes: add an alloc_rx_skbuff method to Ethernet::Device in e1000 This will help to hide platform dependent code from e1000::set_up_device. diff --git a/rathaxes/samples/e1000/e1000.blt b/rathaxes/samples/e1000/e1000.blt --- a/rathaxes/samples/e1000/e1000.blt +++ b/rathaxes/samples/e1000/e1000.blt @@ -752,8 +752,10 @@ */ for (i = 0; i != ${config.rx_ring_size}; ++i) { + /* XXX #46: */ + // hw_ctx->rx_ring.skbuffs[i].skbuff = ${rtx_ether_ctx.net_device.alloc_rx_skb(${config.rx_buffer_len})}; hw_ctx->rx_ring.skbuffs[i].skbuff = (${Socket::AbstractSKBuff}*)netdev_alloc_skb( - ${rtx_ether_ctx.net_device.k_net_dev}, /* XXX: .k_net_dev isn't expanded here */ + ${rtx_ether_ctx.net_device.k_net_dev}, ${config.rx_buffer_len}); if (!hw_ctx->rx_ring.skbuffs[i].skbuff) { diff --git a/rathaxes/samples/e1000/ethernet.blt b/rathaxes/samples/e1000/ethernet.blt --- a/rathaxes/samples/e1000/ethernet.blt +++ b/rathaxes/samples/e1000/ethernet.blt @@ -107,6 +107,13 @@ ${self}->net_dev = ${rtx_net_dev}; } + /* + method alloc_rx_skbuff(Builtin::number size) + { + ($(Socket::Skbuff.ref})netdev_alloc_skb(${self}, ${size}); + } + */ + map { /* diff --git a/rathaxes/samples/e1000/ethernet.rti b/rathaxes/samples/e1000/ethernet.rti --- a/rathaxes/samples/e1000/ethernet.rti +++ b/rathaxes/samples/e1000/ethernet.rti @@ -30,8 +30,10 @@ { chunk LKM::includes(); decl data_types(); + pointcut Ethernet::HardwareContext(); + method init(Ethernet::AbstractDevice, PCI::AbstractDevice); - pointcut Ethernet::HardwareContext(); + //method alloc_rx_skbuff(Builtin::number); /* -> Socket::Skbuff.ref */ attribute Device::AbstractDevice.ref device; attribute PCI::AbstractDevice.ref pci_device; diff --git a/rathaxes/samples/e1000/socket.rti b/rathaxes/samples/e1000/socket.rti --- a/rathaxes/samples/e1000/socket.rti +++ b/rathaxes/samples/e1000/socket.rti @@ -1,4 +1,4 @@ -interface Socket : LKM, Device, DMA +interface Socket : LKM, Device, DMA, Builtin { /* The SKBuff type from the kernel */ provided type AbstractSKBuff @@ -10,15 +10,15 @@ provided type SKBuff { - chunk LKM::prototypes(); - chunk LKM::code(); - decl data_types(); - method init(Socket::AbstractSKBuff); - method dump_infos(); - method map_to(Device::AbstractDevice); - method map_from(Device::AbstractDevice); - method unmap_to_and_free(Device::AbstractDevice); - method unmap_from_and_free(Device::AbstractDevice); + chunk LKM::prototypes(); + chunk LKM::code(); + decl data_types(); + method init(Socket::AbstractSKBuff); + method dump_infos(); + method map_to(Device::AbstractDevice); + method map_from(Device::AbstractDevice); + method unmap_to_and_free(Device::AbstractDevice); + method unmap_from_and_free(Device::AbstractDevice); attribute Socket::AbstractSKBuff.ref sk_buff; attribute DMA::AbstractDMAHandle.scalar dma_handle;