summaryrefslogtreecommitdiffstats
path: root/qemu/io/channel-buffer.c
diff options
context:
space:
mode:
authorRajithaY <rajithax.yerrumsetty@intel.com>2017-04-25 03:31:15 -0700
committerRajitha Yerrumchetty <rajithax.yerrumsetty@intel.com>2017-05-22 06:48:08 +0000
commitbb756eebdac6fd24e8919e2c43f7d2c8c4091f59 (patch)
treeca11e03542edf2d8f631efeca5e1626d211107e3 /qemu/io/channel-buffer.c
parenta14b48d18a9ed03ec191cf16b162206998a895ce (diff)
Adding qemu as a submodule of KVMFORNFV
This Patch includes the changes to add qemu as a submodule to kvmfornfv repo and make use of the updated latest qemu for the execution of all testcase Change-Id: I1280af507a857675c7f81d30c95255635667bdd7 Signed-off-by:RajithaY<rajithax.yerrumsetty@intel.com>
Diffstat (limited to 'qemu/io/channel-buffer.c')
-rw-r--r--qemu/io/channel-buffer.c249
1 files changed, 0 insertions, 249 deletions
diff --git a/qemu/io/channel-buffer.c b/qemu/io/channel-buffer.c
deleted file mode 100644
index 3e5117bf2..000000000
--- a/qemu/io/channel-buffer.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * QEMU I/O channels memory buffer driver
- *
- * Copyright (c) 2015 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-#include "qemu/osdep.h"
-#include "io/channel-buffer.h"
-#include "io/channel-watch.h"
-#include "qemu/sockets.h"
-#include "trace.h"
-
-QIOChannelBuffer *
-qio_channel_buffer_new(size_t capacity)
-{
- QIOChannelBuffer *ioc;
-
- ioc = QIO_CHANNEL_BUFFER(object_new(TYPE_QIO_CHANNEL_BUFFER));
-
- if (capacity) {
- ioc->data = g_new0(uint8_t, capacity);
- ioc->capacity = capacity;
- }
-
- return ioc;
-}
-
-
-static void qio_channel_buffer_finalize(Object *obj)
-{
- QIOChannelBuffer *ioc = QIO_CHANNEL_BUFFER(obj);
- g_free(ioc->data);
- ioc->capacity = ioc->usage = ioc->offset = 0;
-}
-
-
-static ssize_t qio_channel_buffer_readv(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int **fds,
- size_t *nfds,
- Error **errp)
-{
- QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
- ssize_t ret = 0;
- size_t i;
-
- for (i = 0; i < niov; i++) {
- size_t want = iov[i].iov_len;
- if (bioc->offset >= bioc->usage) {
- break;
- }
- if ((bioc->offset + want) > bioc->usage) {
- want = bioc->usage - bioc->offset;
- }
- memcpy(iov[i].iov_base, bioc->data + bioc->offset, want);
- ret += want;
- bioc->offset += want;
- }
-
- return ret;
-}
-
-static ssize_t qio_channel_buffer_writev(QIOChannel *ioc,
- const struct iovec *iov,
- size_t niov,
- int *fds,
- size_t nfds,
- Error **errp)
-{
- QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
- ssize_t ret = 0;
- size_t i;
- size_t towrite = 0;
-
- for (i = 0; i < niov; i++) {
- towrite += iov[i].iov_len;
- }
-
- if ((bioc->offset + towrite) > bioc->capacity) {
- bioc->capacity = bioc->offset + towrite;
- bioc->data = g_realloc(bioc->data, bioc->capacity);
- }
-
- if (bioc->offset > bioc->usage) {
- memset(bioc->data, 0, bioc->offset - bioc->usage);
- bioc->usage = bioc->offset;
- }
-
- for (i = 0; i < niov; i++) {
- memcpy(bioc->data + bioc->usage,
- iov[i].iov_base,
- iov[i].iov_len);
- bioc->usage += iov[i].iov_len;
- bioc->offset += iov[i].iov_len;
- ret += iov[i].iov_len;
- }
-
- return ret;
-}
-
-static int qio_channel_buffer_set_blocking(QIOChannel *ioc G_GNUC_UNUSED,
- bool enabled G_GNUC_UNUSED,
- Error **errp G_GNUC_UNUSED)
-{
- return 0;
-}
-
-
-static off_t qio_channel_buffer_seek(QIOChannel *ioc,
- off_t offset,
- int whence,
- Error **errp)
-{
- QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
-
- bioc->offset = offset;
-
- return offset;
-}
-
-
-static int qio_channel_buffer_close(QIOChannel *ioc,
- Error **errp)
-{
- QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
-
- g_free(bioc->data);
- bioc->capacity = bioc->usage = bioc->offset = 0;
-
- return 0;
-}
-
-
-typedef struct QIOChannelBufferSource QIOChannelBufferSource;
-struct QIOChannelBufferSource {
- GSource parent;
- QIOChannelBuffer *bioc;
- GIOCondition condition;
-};
-
-static gboolean
-qio_channel_buffer_source_prepare(GSource *source,
- gint *timeout)
-{
- QIOChannelBufferSource *bsource = (QIOChannelBufferSource *)source;
-
- *timeout = -1;
-
- return (G_IO_IN | G_IO_OUT) & bsource->condition;
-}
-
-static gboolean
-qio_channel_buffer_source_check(GSource *source)
-{
- QIOChannelBufferSource *bsource = (QIOChannelBufferSource *)source;
-
- return (G_IO_IN | G_IO_OUT) & bsource->condition;
-}
-
-static gboolean
-qio_channel_buffer_source_dispatch(GSource *source,
- GSourceFunc callback,
- gpointer user_data)
-{
- QIOChannelFunc func = (QIOChannelFunc)callback;
- QIOChannelBufferSource *bsource = (QIOChannelBufferSource *)source;
-
- return (*func)(QIO_CHANNEL(bsource->bioc),
- ((G_IO_IN | G_IO_OUT) & bsource->condition),
- user_data);
-}
-
-static void
-qio_channel_buffer_source_finalize(GSource *source)
-{
- QIOChannelBufferSource *ssource = (QIOChannelBufferSource *)source;
-
- object_unref(OBJECT(ssource->bioc));
-}
-
-GSourceFuncs qio_channel_buffer_source_funcs = {
- qio_channel_buffer_source_prepare,
- qio_channel_buffer_source_check,
- qio_channel_buffer_source_dispatch,
- qio_channel_buffer_source_finalize
-};
-
-static GSource *qio_channel_buffer_create_watch(QIOChannel *ioc,
- GIOCondition condition)
-{
- QIOChannelBuffer *bioc = QIO_CHANNEL_BUFFER(ioc);
- QIOChannelBufferSource *ssource;
- GSource *source;
-
- source = g_source_new(&qio_channel_buffer_source_funcs,
- sizeof(QIOChannelBufferSource));
- ssource = (QIOChannelBufferSource *)source;
-
- ssource->bioc = bioc;
- object_ref(OBJECT(bioc));
-
- ssource->condition = condition;
-
- return source;
-}
-
-
-static void qio_channel_buffer_class_init(ObjectClass *klass,
- void *class_data G_GNUC_UNUSED)
-{
- QIOChannelClass *ioc_klass = QIO_CHANNEL_CLASS(klass);
-
- ioc_klass->io_writev = qio_channel_buffer_writev;
- ioc_klass->io_readv = qio_channel_buffer_readv;
- ioc_klass->io_set_blocking = qio_channel_buffer_set_blocking;
- ioc_klass->io_seek = qio_channel_buffer_seek;
- ioc_klass->io_close = qio_channel_buffer_close;
- ioc_klass->io_create_watch = qio_channel_buffer_create_watch;
-}
-
-static const TypeInfo qio_channel_buffer_info = {
- .parent = TYPE_QIO_CHANNEL,
- .name = TYPE_QIO_CHANNEL_BUFFER,
- .instance_size = sizeof(QIOChannelBuffer),
- .instance_finalize = qio_channel_buffer_finalize,
- .class_init = qio_channel_buffer_class_init,
-};
-
-static void qio_channel_buffer_register_types(void)
-{
- type_register_static(&qio_channel_buffer_info);
-}
-
-type_init(qio_channel_buffer_register_types);