[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