[debugd] add GetModemStatus skeleton.
Just a skeleton of the infrastructure that will be required to do this properly;
the meat of GetModemStatus isn't implemented yet. I still need to update the
design doc too.
BUG=chromium-os:23839
TEST=platform_DebugDaemonGetModemStatus
Change-Id: I76b09b7b762b3d36537ab3485b534b7abb727216
Signed-off-by: Elly Jones <ellyjones@chromium.org>
diff --git a/debugd/src/Makefile b/debugd/src/Makefile
index c1fcda7..9bf4005 100644
--- a/debugd/src/Makefile
+++ b/debugd/src/Makefile
@@ -1,4 +1,4 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Copyright (c) 2012 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.
@@ -13,13 +13,10 @@
all: CXX_BINARY(debugd)
-install:
- cp $(OUT)debugd ..
-
tests: override NEEDS_MOUNTS = 1
tests: TEST(CXX_BINARY(testrunner))
-TOOLS:= $(patsubst %,%_tool.o,ping route subprocess tracepath)
+TOOLS := $(patsubst %,%_tool.o,modem_status ping route subprocess tracepath)
OBJS := debug_daemon.o process_with_id.o process_with_output.o $(TOOLS)
TESTOBJS := process_with_id_test.o
@@ -29,9 +26,17 @@
$(call cxx_binary,-lgtest -lminijail -lchromeos -lbase)
clean: CXX_BINARY(debugd)
-main.o: $(OUT)bindings/org.chromium.debugd.h
-debug_daemon.o: $(OUT)bindings/org.chromium.debugd.h
+main.o.depends: $(OUT)adaptors/org.chromium.debugd.h
+debug_daemon.o.depends: $(OUT)adaptors/org.chromium.debugd.h
-$(OUT)bindings/%.h: share/%.xml
+vpath org.chromium.debugd.xml share
+vpath org.%.xml $(SYSROOT)/usr/share/dbus-1/interfaces
+
+$(OUT)adaptors/%.h: %.xml
mkdir -p $(dir $@)
$(DBUSXX_XML2CPP) $^ --adaptor=$@
+
+$(OUT)proxies/%.h: %.xml
+ mkdir -p $(dir $@)
+ $(DBUSXX_XML2CPP) $^ --proxy=$@
+
diff --git a/debugd/src/common.mk b/debugd/src/common.mk
index d7dce4f..7f63f84 100644
--- a/debugd/src/common.mk
+++ b/debugd/src/common.mk
@@ -1,4 +1,4 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Copyright (c) 2012 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.
#
@@ -39,6 +39,10 @@
# - CXX_BINARY, CC_BINARY, CC_STATIC_BINARY, CXX_STATIC_BINARY
# - CXX_LIBRARY, CC_LIBRARY, CC_STATIC_LIBRARY, CXX_STATIC_LIBRARY
# - E.g., CXX_BINARY(mahbinary): foo.o
+# - object.depends targets may be used when a prerequisite is required for an
+# object file. Because object files result in multiple build artifacts to
+# handle PIC and PIE weirdness. E.g.
+# foo.o.depends: generated/dbus.h
# - TEST(binary) or TEST(CXX_BINARY(binary)) may be used as a prerequisite
# for the tests target to trigger an automated test run.
# - CLEAN(file_or_dir) dependency can be added to 'clean'.
@@ -448,6 +452,7 @@
CC_STATIC_LIBARY(%):
$(error Typo alert! LIBARY != LIBRARY)
+
TEST(%): % qemu_chroot_install
$(call TEST_implementation)
.PHONY: TEST
@@ -492,17 +497,23 @@
# $(1) list of .o files
# $(2) source type (CC or CXX)
# $(3) source suffix (cc or c)
+# $(4) source dir: _only_ if $(SRC). Leave blank for obj tree.
define add_object_rules
-$(patsubst %.o,%.pie.o,$(1)): %.pie.o: $(SRC)/%.$(3)
+$(patsubst %.o,%.pie.o,$(1)): %.pie.o: $(4)%.$(3) %.o.depends
$$(QUIET)mkdir -p "$$(dir $$@)"
$$(call OBJECT_PATTERN_implementation,$(2),\
$$(basename $$@),$$(CXXFLAGS) $$(OBJ_PIE_FLAG))
-$(patsubst %.o,%.pic.o,$(1)): %.pic.o: $(SRC)/%.$(3)
+$(patsubst %.o,%.pic.o,$(1)): %.pic.o: $(4)%.$(3) %.o.depends
$$(QUIET)mkdir -p "$$(dir $$@)"
$$(call OBJECT_PATTERN_implementation,$(2),\
$$(basename $$@),$$(CXXFLAGS) -fPIC)
+# Placeholder for depends
+$(patsubst %.o,%.o.depends,$(1)):
+ $$(QUIET)mkdir -p "$$(dir $$@)"
+ $$(QUIET)touch "$$@"
+
$(1): %.o: %.pic.o %.pie.o
$$(QUIET)mkdir -p "$$(dir $$@)"
$$(QUIET)touch "$$@"
@@ -520,8 +531,8 @@
endef
# Now actually register handlers for C(XX)_OBJECTS.
-$(eval $(call add_object_rules,$(C_OBJECTS),CC,c))
-$(eval $(call add_object_rules,$(CXX_OBJECTS),CXX,cc))
+$(eval $(call add_object_rules,$(C_OBJECTS),CC,c,$(SRC)/))
+$(eval $(call add_object_rules,$(CXX_OBJECTS),CXX,cc,$(SRC)/))
# Disable default pattern rules to help avoid leakage.
# These may already be handled by '-r', but let's keep it to be safe.
@@ -719,7 +730,7 @@
clean: qemu_clean
clean: CLEAN($(OUT)*.d) CLEAN($(OUT)*.o) CLEAN($(OUT)*.debug)
-clean: CLEAN($(OUT)*.test)
+clean: CLEAN($(OUT)*.test) CLEAN($(OUT)*.depends)
clean:
$(QUIET)# Always delete the containing directory last.
@@ -762,6 +773,7 @@
# Add the defaults from this dir to rm_clean
clean: CLEAN($(OUT)$(MODULE)/*.d) CLEAN($(OUT)$(MODULE)/*.o)
clean: CLEAN($(OUT)$(MODULE)/*.debug) CLEAN($(OUT)$(MODULE)/*.test)
+clean: CLEAN($(OUT)$(MODULE)/*.depends)
$(info + submodule: $(MODULE_NAME))
# We must eval otherwise they may be dropped.
@@ -775,8 +787,8 @@
# Note, $(MODULE) is implicit in the path to the %.c.
# See $(C_OBJECTS) for more details.
# Register rules for the module objects.
-$(eval $(call add_object_rules,$(MODULE_C_OBJECTS),CC,c))
-$(eval $(call add_object_rules,$(MODULE_CXX_OBJECTS),CXX,cc))
+$(eval $(call add_object_rules,$(MODULE_C_OBJECTS),CC,c,$(SRC)/))
+$(eval $(call add_object_rules,$(MODULE_CXX_OBJECTS),CXX,cc,$(SRC)/))
# Continue recursive inclusion of module.mk files
SUBMODULE_DIRS = $(wildcard $(SRC)/$(MODULE)/*/module.mk)
diff --git a/debugd/src/debug_daemon.cc b/debugd/src/debug_daemon.cc
index 60090e7..bd599b3 100644
--- a/debugd/src/debug_daemon.cc
+++ b/debugd/src/debug_daemon.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -21,6 +21,7 @@
ping_tool_ = new PingTool();
tracepath_tool_ = new TracePathTool();
route_tool_ = new RouteTool();
+ modem_status_tool_ = new ModemStatusTool();
try {
// TODO(ellyjones): Remove this when crosbug.com/23964 is fixed
dbus_->request_name(kDebugDaemonService);
@@ -73,4 +74,8 @@
return route_tool_->GetRoutes(options, error);
}
+std::string DebugDaemon::GetModemStatus(DBus::Error& error) { // NOLINT dbuscxx
+ return modem_status_tool_->GetModemStatus(error);
+}
+
}; // namespace debugd
diff --git a/debugd/src/debug_daemon.h b/debugd/src/debug_daemon.h
index e8a7f30..f849baf 100644
--- a/debugd/src/debug_daemon.h
+++ b/debugd/src/debug_daemon.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -10,7 +10,8 @@
#include <dbus-c++/dbus.h>
-#include "bindings/org.chromium.debugd.h"
+#include "adaptors/org.chromium.debugd.h"
+#include "modem_status_tool.h"
#include "ping_tool.h"
#include "route_tool.h"
#include "tracepath_tool.h"
@@ -47,6 +48,7 @@
DBus::Variant>&
options,
DBus::Error& error);
+ virtual std::string GetModemStatus(DBus::Error& error); // NOLINT dbuscxx
private:
DBus::Connection* dbus_;
@@ -54,6 +56,7 @@
PingTool* ping_tool_;
RouteTool* route_tool_;
TracePathTool *tracepath_tool_;
+ ModemStatusTool* modem_status_tool_;
};
}; // namespace debugd
diff --git a/debugd/src/helpers/modem_status.cc b/debugd/src/helpers/modem_status.cc
new file mode 100644
index 0000000..48ae615
--- /dev/null
+++ b/debugd/src/helpers/modem_status.cc
@@ -0,0 +1,181 @@
+// Copyright (c) 2012 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.
+
+#include <dbus-c++/dbus.h>
+#include <stdio.h>
+
+#include <base/json/json_writer.h>
+#include <base/string_util.h>
+#include <base/values.h>
+#include <chromeos/utility.h>
+
+#include "proxies/org.freedesktop.DBus.Properties.h"
+#include "proxies/org.freedesktop.ModemManager.h"
+#include "proxies/org.freedesktop.ModemManager.Modem.h"
+#include "proxies/org.freedesktop.ModemManager.Modem.Simple.h"
+
+// These are lifted from modemmanager's XML files, since dbus-c++ currently
+// doesn't emit constants for enums defined in headers.
+// TODO(ellyjones): fix that
+const uint32_t kModemTypeGsm = 1;
+const uint32_t kModemTypeCdma = 2;
+
+const char* kMMPath = "/org/freedesktop/ModemManager";
+const char* kMMService = "org.freedesktop.ModemManager";
+
+const char* kCromoPath = "/org/chromium/ModemManager";
+const char* kCromoService = "org.chromium.ModemManager";
+
+const char* kModemInterface = "org.freedesktop.ModemManager.Modem";
+const char* kModemSimpleInterface = "org.freedesktop.ModemManager.Modem.Simple";
+const char* kModemCdmaInterface = "org.freedesktop.ModemManager.Modem.Cdma";
+const char* kModemGsmInterface = "org.freedesktop.ModemManager.Modem.Gsm";
+const char* kModemGsmCardInterface =
+ "org.freedesktop.ModemManager.Modem.Gsm.Card";
+const char* kModemGsmNetworkInterface =
+ "org.freedesktop.ModemManager.Modem.Gsm.Network";
+const char* kModemGobiInterface =
+ "org.chromium.ModemManager.Modem.Gobi";
+
+class DBusPropertiesProxy
+ : public org::freedesktop::DBus::Properties_proxy,
+ public DBus::ObjectProxy {
+ public:
+ DBusPropertiesProxy(DBus::Connection& connection, const char* path, // NOLINT
+ const char* service) :
+ DBus::ObjectProxy(connection, path, service) { }
+ virtual ~DBusPropertiesProxy() { }
+ virtual void PropertiesChanged(const std::string&,
+ const std::map<std::string, DBus::Variant>&,
+ const std::vector<std::string>&) { }
+};
+
+class ModemManagerProxy
+ : public org::freedesktop::ModemManager_proxy,
+ public DBus::ObjectProxy {
+ public:
+ ModemManagerProxy(DBus::Connection& connection, const char* path, // NOLINT
+ const char* service) :
+ DBus::ObjectProxy(connection, path, service) { }
+ virtual ~ModemManagerProxy() { }
+ virtual void DeviceAdded(const DBus::Path&) { }
+ virtual void DeviceRemoved(const DBus::Path&) { }
+};
+
+class ModemSimpleProxy
+ : public org::freedesktop::ModemManager::Modem::Simple_proxy,
+ public DBus::ObjectProxy {
+ public:
+ ModemSimpleProxy(DBus::Connection& connection, const char* path, // NOLINT
+ const char* service) :
+ DBus::ObjectProxy(connection, path, service) { }
+ virtual ~ModemSimpleProxy() { }
+};
+
+class ModemProxy
+ : public org::freedesktop::ModemManager::Modem_proxy,
+ public DBus::ObjectProxy {
+ public:
+ ModemProxy(DBus::Connection& connection, const char* path, // NOLINT
+ const char* service) :
+ DBus::ObjectProxy(connection, path, service) { }
+ virtual ~ModemProxy() { }
+ virtual void StateChanged(const uint32_t&, const uint32_t&,
+ const uint32_t&) { }
+};
+
+struct Modem {
+ const char* service_;
+ DBus::Path path_;
+
+ Modem(const char* service, DBus::Path path)
+ : service_(service), path_(path) { }
+
+ Value* GetStatus(DBus::Connection& conn); // NOLINT
+};
+
+Value* FetchOneInterface(DBusPropertiesProxy& properties, // NOLINT
+ const char* interface,
+ DictionaryValue* result) {
+ std::map<std::string, DBus::Variant> propsmap =
+ properties.GetAll(interface);
+ Value* propsdict = NULL;
+ if (!chromeos::DBusPropertyMapToValue(propsmap, &propsdict))
+ return NULL;
+ std::string keypath = interface;
+ ReplaceSubstringsAfterOffset(&keypath, 0, ".", "/");
+ result->Set(keypath, propsdict);
+ return propsdict;
+}
+
+Value* Modem::GetStatus(DBus::Connection& conn) { // NOLINT
+ DictionaryValue* result = new DictionaryValue();
+ result->SetString("service", service_);
+ result->SetString("path", path_);
+
+ ModemSimpleProxy simple = ModemSimpleProxy(conn, path_.c_str(), service_);
+ Value* status = NULL;
+ std::map<std::string, DBus::Variant> statusmap = simple.GetStatus();
+ if (chromeos::DBusPropertyMapToValue(statusmap, &status))
+ result->Set("status", status);
+
+ ModemProxy modem = ModemProxy(conn, path_.c_str(), service_);
+ DBus::Struct<std::string, std::string, std::string> infomap = modem.GetInfo();
+ DictionaryValue* infodict = new DictionaryValue();
+ infodict->SetString("manufacturer", infomap._1);
+ infodict->SetString("modem", infomap._2);
+ infodict->SetString("version", infomap._3);
+ result->Set("info", infodict);
+
+ DictionaryValue* props = new DictionaryValue();
+ DBusPropertiesProxy properties = DBusPropertiesProxy(conn, path_.c_str(),
+ service_);
+ FetchOneInterface(properties, kModemInterface, props);
+ FetchOneInterface(properties, kModemSimpleInterface, props);
+ uint32_t type = modem.Type();
+ if (type == kModemTypeGsm) {
+ FetchOneInterface(properties, kModemGsmInterface, props);
+ FetchOneInterface(properties, kModemGsmCardInterface, props);
+ FetchOneInterface(properties, kModemGsmNetworkInterface, props);
+ } else {
+ FetchOneInterface(properties, kModemCdmaInterface, props);
+ }
+ result->Set("properties", props);
+
+ return result;
+}
+
+int main() {
+ DBus::BusDispatcher dispatcher;
+ DBus::default_dispatcher = &dispatcher;
+ DBus::Connection conn = DBus::Connection::SystemBus();
+ ModemManagerProxy modemmanager(conn, kMMPath, kMMService);
+ ModemManagerProxy cromo(conn, kCromoPath, kCromoService);
+ std::vector<Modem> modems;
+
+ // These two try-catch blocks are to account for one of modemmanager or cromo
+ // not being present. We don't want to crash if one of them isn't running, so
+ // we swallow the DBus exception we get from the failed attempt to enumerate
+ // devices.
+ try {
+ std::vector<DBus::Path> mm_modems = modemmanager.EnumerateDevices();
+ for (size_t i = 0; i < mm_modems.size(); ++i)
+ modems.push_back(Modem(kMMService, mm_modems[i]));
+ // cpplint thinks this is a function call
+ } catch(DBus::Error e) { }
+ try {
+ std::vector<DBus::Path> cromo_modems = cromo.EnumerateDevices();
+ for (size_t i = 0; i < cromo_modems.size(); ++i)
+ modems.push_back(Modem(kCromoService, cromo_modems[i]));
+ // cpplint thinks this is a function call
+ } catch(DBus::Error e) { }
+
+ ListValue result;
+ for (size_t i = 0; i < modems.size(); ++i)
+ result.Append(modems[i].GetStatus(conn));
+ std::string json;
+ base::JSONWriter::Write(&result, true, &json);
+ printf("%s\n", json.c_str());
+ return 0;
+}
diff --git a/debugd/src/helpers/module.mk b/debugd/src/helpers/module.mk
new file mode 100644
index 0000000..d664045
--- /dev/null
+++ b/debugd/src/helpers/module.mk
@@ -0,0 +1,26 @@
+# Copyright (c) 2012 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.
+
+include $(SRC)/common.mk
+
+define define_helper
+all: CXX_BINARY(helpers/$(1))
+$(info define_helper: $(1))
+CXX_BINARY(helpers/$(1)): helpers/$(1).o
+ $$(call cxx_binary,-lbase -lchromeos)
+endef
+
+# Construct build rules for all of the helpers. For each helper h, define a rule
+# for CXX_BINARY(helpers/h), and make CXX_BINARY(helpers/h) a dependency of
+# 'all'.
+$(eval \
+ $(foreach helper, \
+ $(wildcard $(SRC)/helpers/*.cc), \
+ $(call define_helper,$(notdir $(basename $(helper))))))
+
+MM_PROXIES := $(patsubst %,$(OUT)proxies/org.freedesktop.ModemManager%,.h \
+ .Modem.h .Modem.Simple.h)
+
+helpers/modem_status.o.depends: $(MM_PROXIES) \
+ $(OUT)proxies/org.freedesktop.DBus.Properties.h
diff --git a/debugd/src/main.cc b/debugd/src/main.cc
index 092b149..5ae81af 100644
--- a/debugd/src/main.cc
+++ b/debugd/src/main.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/modem_status_tool.cc b/debugd/src/modem_status_tool.cc
new file mode 100644
index 0000000..092bec4
--- /dev/null
+++ b/debugd/src/modem_status_tool.cc
@@ -0,0 +1,31 @@
+// Copyright (c) 2012 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.
+
+#include "modem_status_tool.h"
+
+#include <base/logging.h>
+
+#include "process_with_output.h"
+
+namespace debugd {
+
+ModemStatusTool::ModemStatusTool() { }
+ModemStatusTool::~ModemStatusTool() { }
+
+std::string ModemStatusTool::GetModemStatus(DBus::Error& error) { // NOLINT
+ char *envvar = getenv("DEBUGD_HELPERS");
+ std::string path = StringPrintf("%s/modem_status", envvar ? envvar
+ : "/usr/libexec/debugd/helpers");
+ if (path.length() > PATH_MAX)
+ return "";
+ ProcessWithOutput p;
+ p.Init();
+ p.AddArg(path);
+ p.Run();
+ std::string out;
+ p.GetOutput(&out);
+ return out;
+}
+
+}; // namespace debugd
diff --git a/debugd/src/modem_status_tool.h b/debugd/src/modem_status_tool.h
new file mode 100644
index 0000000..6a6003c
--- /dev/null
+++ b/debugd/src/modem_status_tool.h
@@ -0,0 +1,27 @@
+// Copyright (c) 2012 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 MODEM_STATUS_TOOL_H
+#define MODEM_STATUS_TOOL_H
+
+#include <string>
+
+#include <base/basictypes.h>
+#include <dbus-c++/dbus.h>
+
+namespace debugd {
+
+class ModemStatusTool {
+ public:
+ ModemStatusTool();
+ ~ModemStatusTool();
+
+ std::string GetModemStatus(DBus::Error& error); // NOLINT
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ModemStatusTool);
+};
+
+}; // namespace debugd
+
+#endif // MODEM_STATUS_TOOL_H
diff --git a/debugd/src/ping_tool.cc b/debugd/src/ping_tool.cc
index bb3de73..9a4ddbe 100644
--- a/debugd/src/ping_tool.cc
+++ b/debugd/src/ping_tool.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/ping_tool.h b/debugd/src/ping_tool.h
index 2c36ab3..7301f0f 100644
--- a/debugd/src/ping_tool.h
+++ b/debugd/src/ping_tool.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/process_with_id.cc b/debugd/src/process_with_id.cc
index 88caf3d..91f3475 100644
--- a/debugd/src/process_with_id.cc
+++ b/debugd/src/process_with_id.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/process_with_id.h b/debugd/src/process_with_id.h
index 156d123..b6f6a2e 100644
--- a/debugd/src/process_with_id.h
+++ b/debugd/src/process_with_id.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/process_with_id_test.cc b/debugd/src/process_with_id_test.cc
index f1ddbfb..386c404 100644
--- a/debugd/src/process_with_id_test.cc
+++ b/debugd/src/process_with_id_test.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/process_with_output.cc b/debugd/src/process_with_output.cc
index bdf1124..b9f8bc0 100644
--- a/debugd/src/process_with_output.cc
+++ b/debugd/src/process_with_output.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/process_with_output.h b/debugd/src/process_with_output.h
index dd78867..46e98a5 100644
--- a/debugd/src/process_with_output.h
+++ b/debugd/src/process_with_output.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/route_tool.cc b/debugd/src/route_tool.cc
index 46b733d..47ebe83 100644
--- a/debugd/src/route_tool.cc
+++ b/debugd/src/route_tool.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/route_tool.h b/debugd/src/route_tool.h
index 5deb1f8..9a6d76e 100644
--- a/debugd/src/route_tool.h
+++ b/debugd/src/route_tool.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/subprocess_tool.cc b/debugd/src/subprocess_tool.cc
index 6bf650e..e49bebe 100644
--- a/debugd/src/subprocess_tool.cc
+++ b/debugd/src/subprocess_tool.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/subprocess_tool.h b/debugd/src/subprocess_tool.h
index baa0708..5ad7353 100644
--- a/debugd/src/subprocess_tool.h
+++ b/debugd/src/subprocess_tool.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/testrunner.cc b/debugd/src/testrunner.cc
index b282906..e008978 100644
--- a/debugd/src/testrunner.cc
+++ b/debugd/src/testrunner.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/tracepath_tool.cc b/debugd/src/tracepath_tool.cc
index 532a9a1..66d0bc8 100644
--- a/debugd/src/tracepath_tool.cc
+++ b/debugd/src/tracepath_tool.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.
diff --git a/debugd/src/tracepath_tool.h b/debugd/src/tracepath_tool.h
index 53ba61f..3b2611e 100644
--- a/debugd/src/tracepath_tool.h
+++ b/debugd/src/tracepath_tool.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Copyright (c) 2012 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.