[so2] [Tema5] Linear data / Paged data

Dan Filimon dangeorge.filimon at gmail.com
Sat May 18 12:06:49 EEST 2013


2013/5/18 Adrian-Leonard Radu <ady8radu at gmail.com>

> Salut,
>
> Am o nelamurire in legatura cu ce inseamna linear data si paged data in
> cadrul structurii sk_buff.
>
> Din cate am inteles functia *sock_alloc_send_pskb(sk, hlen, dlen, nblock,
> err)* aloca un skb cu zona liniara de dimensiune hlen si zona paginata de
> dimensiune dlen. Din ce am inteles, portiunea unde vor fi scrise date
> efective va fi portiunea paginata. Nu am inteles daca zona paginata este
> cumva inclusa in zona liniara, deoarece *sock_alloc_send_pskb(sl, hlen,
> dlen ...) *apeleaza alloc_skb(hlen, GFP_KERNEL) ceea ce inseamna ca
> spatiul cuprins intre head si end va fi egal cu hlen (adica lungimea
> totala). Apoi nu inteleg de ce ar mai trebui actualizat skb->len.
>

Zona liniară și cea paginată sunt separate. Însă, pentru scopurile temei e
necesară doar zona liniară. Atunci când copiezi datele din iovec în skb,
ele sunt puse în zona liniară cu skb_copy_datagram_from_iovec().

Deci, vrei să ai zona liniară de dimensiune hlen + dlen.

După ce faci efectiv alocarea, trebuie să faci un skb_put() să actualizeze
sfârșitul datelor și să rezervi loc pentru header-ul Ethernet cu
skb_reserve().

Spor!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20130518/34005e4b/attachment.html>


More information about the so2 mailing list