]> Git Repo - qemu.git/blobdiff - include/qemu/buffer.h
Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2016-10-25' into staging
[qemu.git] / include / qemu / buffer.h
index 0710e165f2bf918b99be68c2db9ebfafae3fa124..b2ead1f051fc22be2ecf15e2974800fe85339d12 100644 (file)
@@ -18,8 +18,8 @@
  *
  */
 
-#ifndef QEMU_BUFFER_H__
-#define QEMU_BUFFER_H__
+#ifndef QEMU_BUFFER_H
+#define QEMU_BUFFER_H
 
 #include "qemu-common.h"
 
@@ -37,6 +37,7 @@ struct Buffer {
     char *name;
     size_t capacity;
     size_t offset;
+    uint64_t avg_size;
     uint8_t *buffer;
 };
 
@@ -51,6 +52,16 @@ struct Buffer {
 void buffer_init(Buffer *buffer, const char *name, ...)
         GCC_FMT_ATTR(2, 3);
 
+/**
+ * buffer_shrink:
+ * @buffer: the buffer object
+ *
+ * Try to shrink the buffer.  Checks current buffer capacity and size
+ * and reduces capacity in case only a fraction of the buffer is
+ * actually used.
+ */
+void buffer_shrink(Buffer *buffer);
+
 /**
  * buffer_reserve:
  * @buffer: the buffer object
@@ -127,4 +138,24 @@ uint8_t *buffer_end(Buffer *buffer);
  */
 gboolean buffer_empty(Buffer *buffer);
 
-#endif /* QEMU_BUFFER_H__ */
+/**
+ * buffer_move_empty:
+ * @to: destination buffer object
+ * @from: source buffer object
+ *
+ * Moves buffer, without copying data.  'to' buffer must be empty.
+ * 'from' buffer is empty and zero-sized on return.
+ */
+void buffer_move_empty(Buffer *to, Buffer *from);
+
+/**
+ * buffer_move:
+ * @to: destination buffer object
+ * @from: source buffer object
+ *
+ * Moves buffer, copying data (unless 'to' buffer happens to be empty).
+ * 'from' buffer is empty and zero-sized on return.
+ */
+void buffer_move(Buffer *to, Buffer *from);
+
+#endif /* QEMU_BUFFER_H */
This page took 0.026096 seconds and 4 git commands to generate.