Reland "concierge: Add Vsock Connection to ARCVM's LMKD"

This is a reland of commit 156a8342e506465510a5c4e1797b0507fd23827f

The shutdown hang caused by these changes was fixed with
https://crrev.com/c/3705167.

Original change's description:
> concierge: Add Vsock Connection to ARCVM's LMKD

> To better respond to quickly changing memory pressure situations in
> ARCVM, concierge will maintain a vsock connection to LMKD. When LMKD
> thinks it needs to kill, it will ask concierge to confirm this kill.
> Based on the priority of the candidate process, concierge will either
> deflate the virtio balloon of ARCVM to make room for the process, or
> instruct LMKD to proceed with the kill.
>
> BUG=b:210075795
> TEST=CQ, cros_run_unit_tests --board volteer --packages
> chromeos-base/vm_host_tools, manual local integration testing with
> LMKD changes
>
> Change-Id: I375891b0f7ac6155ce67c23bf1e434647d1c0ace
> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3510915
> Commit-Queue: Kameron Lutes <kalutes@chromium.org>
> Reviewed-by: Yusuke Sato <yusukes@chromium.org>
> Tested-by: Kameron Lutes <kalutes@chromium.org>

BUG=b:210075795, b:235771253
TEST=cq

Change-Id: I7c0df307cad4c716363efc0613c7ecbc2a01f3ac
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/3713317
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Kameron Lutes <kalutes@chromium.org>
Reviewed-by: Yusuke Sato <yusukes@chromium.org>
Commit-Queue: Kameron Lutes <kalutes@chromium.org>
NOKEYCHECK=True
GitOrigin-RevId: a12670e89e995c80f0c1d89f89748a875ab5138e
2 files changed
tree: 607c6dd1cdc93443643791f14ebd5283d3aaf27f
  1. constants/
  2. dbus/
  3. mojo/
  4. src/
  5. switches/
  6. .gitignore
  7. BUILD.gn
  8. build.rs
  9. Cargo.toml
  10. LICENSE
  11. OWNERS
  12. README.md
  13. system_api.pc
README.md

This directory (platform2/system_api) contains constants and definitions like D-Bus service names that are shared between Chromium and Chromium OS.

This directory is only for things like headers and .proto files. No implementation should be added.

When writting a .proto file make sure to use:

option optimize_for = LITE_RUNTIME;

This will force usage of a lite protobuf instead of a full/heavy weight protobuf. The browser only links against the light version, so you will get cryptic link errors about missing parts of Message if you define a protobuf here and then try to use it in Chrome. Currently CrOS links against the full protobuffer library, but that might change in the future.

When declaring a protobuf, avoid use of required unless it is exactly what you mean. “Required is Forever” and very rarely should actually be used. Consult Protocol Buffer Basics: C++ for a detailed of this issue.