[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [DOC v1] Xen transport for 9pfs
On Tue, 2016-11-29 at 15:34 -0800, Stefano Stabellini wrote: > ### Frontend XenBus Nodes > > num-rings > Values: <uint32_t> > > Number of rings. It needs to be lower or equal to max-rings. > > port-<num> (port-0, port-1, etc) > Values: <uint32_t> > > The identifier of the Xen event channel used to signal > activity > in the ring buffer. One for each ring. > > ring-ref-<num> (ring-ref-0, ring-ref-1, etc) > blkif uses ring-ref%u, rather than ring-ref-%u (i.e., no dash before the index). Not a big deal, I guess, but I thought it could be nice to be a bit more uniform. > Values: <uint32_t> > > The Xen grant reference granting permission for the backend > to > map a page with information to setup a share ring. One for > each > ring. > So, this means there can be multiple rings (up to max-rings advertised by backend), _each_of_which_ has its own event channel, and _each_of_which_ can be a multi-page (in case ring_order > 0) ring... Is this correct? If it is, what's the typical envisioned use of these multiple rings, if I can ask? (Maybe it's obvious, I'm still not so familiar with these protocols.. but I'm trying to improve, and that's why I'm here, so bear with me if possible. :-D) > ## Ring Setup > > The shared page has the following layout: > > typedef uint32_t XEN_9PFS_RING_IDX; > > struct xen_9pfs_intf { > XEN_9PFS_RING_IDX in_cons, in_prod; > XEN_9PFS_RING_IDX out_cons, out_prod; > > uint32_t ring_order; > grant_ref_t ref[]; > }; > > /* not actually C compliant (ring_order changes from socket to > socket) */ > struct ring_data { > char in[((1 << ring_order) << PAGE_SHIFT) / 2]; > char out[((1 << ring_order) << PAGE_SHIFT) / 2]; > }; > Sorry, what does "ring_order changes from socket to socket" mean? > The binary layout of `struct xen_9pfs_intf` follows: > > 0 4 8 12 16 20 > +---------+---------+---------+---------+---------+ > | in_cons | in_prod |out_cons |out_prod |ring_orde| > +---------+---------+---------+---------+---------+ > > 20 24 26 4092 4096 > +---------+---------+----//---+---------+ > | ref[0] | ref[1] | | ref[N] | > +---------+---------+----//---+---------+ > > **N.B** For one page, N is maximum 1019 ((4096-20)/4), but given that > N > needs to be a power of two, actually max N is 512. > It may again be me being still too naive, but I'd quickly add at least another example, with the value of N computed for a multiple pages ring. Something like: "For 4 pages (i.e., ring_orfer=2), N is..." Regards, Dario -- <<This happens because I choose it to happen!>> (Raistlin Majere) ----------------------------------------------------------------- Dario Faggioli, Ph.D, http://about.me/dario.faggioli Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK) Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |