summaryrefslogtreecommitdiff
path: root/payload_generator/graph_utils.h
diff options
context:
space:
mode:
authorAlex Deymo <deymo@chromium.org>2015-07-14 17:25:03 -0700
committerAlex Deymo <deymo@chromium.org>2015-07-14 17:25:03 -0700
commitba2b2eec4972893745fa2beb899b2adbdbb39d0f (patch)
tree22c30fab0c717a5068160ad0ca0be4f54557a288 /payload_generator/graph_utils.h
parent701376dd44ec6f5212641031a65aae4eb051f777 (diff)
parent454b798705352bcfbef19759f4dddfe3f0ac490c (diff)
Merge branch 'rewrite-update_engine' into merge-update_engine
Diffstat (limited to 'payload_generator/graph_utils.h')
-rw-r--r--payload_generator/graph_utils.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/payload_generator/graph_utils.h b/payload_generator/graph_utils.h
new file mode 100644
index 00000000..6595e57f
--- /dev/null
+++ b/payload_generator/graph_utils.h
@@ -0,0 +1,44 @@
+// Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UPDATE_ENGINE_PAYLOAD_GENERATOR_GRAPH_UTILS_H_
+#define UPDATE_ENGINE_PAYLOAD_GENERATOR_GRAPH_UTILS_H_
+
+#include <vector>
+
+#include <base/macros.h>
+
+#include "update_engine/payload_generator/graph_types.h"
+#include "update_engine/update_metadata.pb.h"
+
+// A few utility functions for graphs
+
+namespace chromeos_update_engine {
+
+namespace graph_utils {
+
+// Returns the number of blocks represented by all extents in the edge.
+uint64_t EdgeWeight(const Graph& graph, const Edge& edge);
+
+// These add a read-before dependency from graph[src] -> graph[dst]. If the dep
+// already exists, the block/s is/are added to the existing edge.
+void AddReadBeforeDep(Vertex* src,
+ Vertex::Index dst,
+ uint64_t block);
+void AddReadBeforeDepExtents(Vertex* src,
+ Vertex::Index dst,
+ const std::vector<Extent>& extents);
+
+void DropWriteBeforeDeps(Vertex::EdgeMap* edge_map);
+
+// For each node N in graph, drop all edges N->|index|.
+void DropIncomingEdgesTo(Graph* graph, Vertex::Index index);
+
+void DumpGraph(const Graph& graph);
+
+} // namespace graph_utils
+
+} // namespace chromeos_update_engine
+
+#endif // UPDATE_ENGINE_PAYLOAD_GENERATOR_GRAPH_UTILS_H_