summaryrefslogtreecommitdiff
path: root/src/sim
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2013-01-07 13:05:37 -0500
committerAndreas Hansson <andreas.hansson@arm.com>2013-01-07 13:05:37 -0500
commit11ab30fa5a4f56e4f7ea3b5b51e529bc246d1d35 (patch)
tree9fc23b5e7e88fac00f385f48d185caef7eec31ba /src/sim
parent41f228c2ea5ab28d6400a259538e77d122066711 (diff)
downloadgem5-11ab30fa5a4f56e4f7ea3b5b51e529bc246d1d35.tar.xz
base: Add wrapped protobuf output streams
This patch adds support for outputting protobuf messages through a ProtoOutputStream which hides the internal streams used by the library. The stream is created based on the name of an output file and optionally includes compression using gzip. The output stream will start by putting a magic number in the file, and then for every message that is serialized prepend the size such that the stream can be written and read incrementally. At this point this merely serves as a proof of concept.
Diffstat (limited to 'src/sim')
-rw-r--r--src/sim/init.cc28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/sim/init.cc b/src/sim/init.cc
index 788d125c3..0cebc417d 100644
--- a/src/sim/init.cc
+++ b/src/sim/init.cc
@@ -1,4 +1,16 @@
/*
+ * Copyright (c) 2012 ARM Limited
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder. You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
* Copyright (c) 2000-2005 The Regents of The University of Michigan
* Copyright (c) 2008 The Hewlett-Packard Development Company
* All rights reserved.
@@ -42,10 +54,15 @@
#include "base/cprintf.hh"
#include "base/misc.hh"
#include "base/types.hh"
+#include "config/have_protobuf.hh"
#include "sim/async.hh"
#include "sim/core.hh"
#include "sim/init.hh"
+#if HAVE_PROTOBUF
+#include <google/protobuf/stubs/common.h>
+#endif
+
using namespace std;
/// Stats signal handler.
@@ -238,6 +255,13 @@ const char * __attribute__((weak)) m5MainCommands[] = {
int
m5Main(int argc, char **argv)
{
+#if HAVE_PROTOBUF
+ // Verify that the version of the protobuf library that we linked
+ // against is compatible with the version of the headers we
+ // compiled against.
+ GOOGLE_PROTOBUF_VERIFY_VERSION;
+#endif
+
PySys_SetArgv(argc, argv);
// We have to set things up in the special __main__ module
@@ -263,6 +287,10 @@ m5Main(int argc, char **argv)
command++;
}
+#if HAVE_PROTOBUF
+ google::protobuf::ShutdownProtobufLibrary();
+#endif
+
return 0;
}