Skip to contentSkip to conversation

USB virt 2.6 split driver---xenidc buffer references

PATCH In review harry 2 participants 3 messages Nov 21, 2005

lore
Share & tools
lore

harry

author
#0 lore raw

PATCH 3/17 USB virt 2.6 split driver---xenidc buffer references

This patch implements the generic code to support local and remote buffer references for the xenidc transport which is used by the USB driver.

Local buffer references are used to describe local memory and are converted into remote buffer references for communication with other domains. The other domains use remote buffer references to map the buffers into their local address space for bulk data transfer.

Grant references provide a mechanism to share memory on a per-page basis and couple the client to a specific memory sharing mechanism. Remote buffer references provide a memory sharing mechanism on a more convenient whole-buffer basis and are independent of the underlying implementation.

linux-2.6-xen-sparse/drivers/xen/xenidc/Makefile +2 -0
diff -r 1e2c0ff9c46a -r 2055d5e00d68 linux-2.6-xen-sparse/drivers/xen/xenidc/Makefile
@@ -4,3 +4,5 @@
 xenidc-objs += xenidc_callback.o
 xenidc-objs += xenidc_work.o
 xenidc-objs += xenidc_buffer_resource_provider.o
+xenidc-objs += xenidc_local_buffer_reference.o
+xenidc-objs += xenidc_remote_buffer_reference.o
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +627 -0

627 lines not on this page · raw message

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_remote_buffer_reference.c new file +191 -0

191 lines not on this page · raw message

linux-2.6-xen-sparse/include/asm-xen/xenidc_address.h new file +61 -0

61 lines not on this page · raw message

linux-2.6-xen-sparse/include/asm-xen/xenidc_local_buffer_reference.h new file +379 -0

379 lines not on this page · raw message

linux-2.6-xen-sparse/include/asm-xen/xenidc_remote_buffer_reference.h new file +164 -0

164 lines not on this page · raw message

_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel

#1 lore raw

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 32

Quoted 5 lines · harry
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +5 -0
+#ifdef MIN
+#undef MIN
+#endif
+
+#define MIN( X, Y ) ( ( (X) < (Y) ) ? (X) : (Y) )

Linux has a much better definition.

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 87

Quoted 1 line
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +1 -0
+		memset(buffer, 0, 64);

s/64/sizeof(buffer)/? (there are arguments either way)

Quoted 10 lines
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +10 -0
+xenidc_buffer_type xenidc_local_buffer_reference_register_buffer_concrete_class
+    (xenidc_buffer_concrete_class * class, void (*copy_in_or_out)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr,
+       void *buffer, xenidc_buffer_byte_count byte_count, int out), void (*zero)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr), int (*calculate_rbr_resources)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr,
+       xenidc_address * address,

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 122

Quoted 10 lines
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +10 -0
+       xenidc_buffer_resource_list * list),
+     xenidc_buffer_concrete_class ** (*create_rbr)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr,
+       xenidc_address * address,
+       xenidc_buffer_resource_provider * provider,
+       xenidc_remote_buffer_reference * rbr,
+       int access_flags), void (*revoke_rbr)
+      (xenidc_buffer_concrete_class ** context, xenidc_callback * callback)
+    ) {

I guess this is one case where typedefs would improve the code ;-)

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 131

Quoted 3 lines
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +3 -0
+	if (zero == NULL) {
+		zero = xenidc_local_buffer_reference_default_zero;
+	}

no braces please

Cheers,
Muli

Signature · 2 lines
Muli Ben-Yehuda
http://www.mulix.org | http://mulix.livejournal.com/
#2 lore raw
Quoted 9 lines · Muli Ben-Yehuda

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 32

Quoted 5 lines · harry
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +5 -0
+#ifdef MIN
+#undef MIN
+#endif
+
+#define MIN( X, Y ) ( ( (X) < (Y) ) ? (X) : (Y) )

Linux has a much better definition.

So it does. Didn't manage to find it last time.

Quoted 26 lines

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 87

Quoted 2 lines
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +1 -0
+		memset(buffer, 0, 64);

s/64/sizeof(buffer)/? (there are arguments either way)

Quoted 10 lines
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +10 -0
+xenidc_buffer_type xenidc_local_buffer_reference_register_buffer_concrete_class
+    (xenidc_buffer_concrete_class * class, void (*copy_in_or_out)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr,
+       void *buffer, xenidc_buffer_byte_count byte_count, int out), void (*zero)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr), int (*calculate_rbr_resources)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr,
+       xenidc_address * address,

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 122

Quoted 10 lines
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +10 -0
+       xenidc_buffer_resource_list * list),
+     xenidc_buffer_concrete_class ** (*create_rbr)
+      (xenidc_buffer_concrete_class * class,
+       xenidc_local_buffer_reference * lbr,
+       xenidc_address * address,
+       xenidc_buffer_resource_provider * provider,
+       xenidc_remote_buffer_reference * rbr,
+       int access_flags), void (*revoke_rbr)
+      (xenidc_buffer_concrete_class ** context, xenidc_callback * callback)
+    ) {
Quoted 1 line

I guess this is one case where typedefs would improve the code ;-)

This looked much neater before Lindent got hold of it.

Quoted 6 lines

linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c line 131

Quoted 4 lines
linux-2.6-xen-sparse/drivers/xen/xenidc/xenidc_local_buffer_reference.c new file +3 -0
+	if (zero == NULL) {
+		zero = xenidc_local_buffer_reference_default_zero;
+	}

no braces please

OK

Quoted 3 lines

Cheers,
Muli

Signature · 1 line
Harry Butterworth <[email protected]>