From 10fb4a7c7ef9b0f0d5ed38f85a44f8fa2c94b6f4 Mon Sep 17 00:00:00 2001
From: Adam Barth <abarth@google.com>
Date: Sat, 11 May 2019 03:52:48 +0000
Subject: [PATCH] [sdk] Add sys and vfs to the SDK

Several customers have started copying these libraries into their tree.
We're now at a point where we can add these libraries to the SDK.

DX-387 #done

Test: Captured by the "api" files.
Change-Id: I0d2ecb6a259a145a9563ed5d3c39e28b5b467c89
---
 sdk/BUILD.gn                  |  2 ++
 sdk/core.api                  |  2 ++
 sdk/lib/sys/cpp/BUILD.gn      |  4 ++--
 sdk/lib/sys/cpp/sys_cpp.api   |  7 +++++++
 sdk/lib/vfs/cpp/BUILD.gn      |  2 +-
 sdk/lib/vfs/cpp/pseudo_dir.cc |  2 +-
 sdk/lib/vfs/cpp/pseudo_dir.h  |  2 +-
 sdk/lib/vfs/cpp/vfs_cpp.api   | 19 +++++++++++++++++++
 8 files changed, 35 insertions(+), 5 deletions(-)
 create mode 100644 sdk/lib/sys/cpp/sys_cpp.api
 create mode 100644 sdk/lib/vfs/cpp/vfs_cpp.api

diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index d10d371de01..d3b384d78c1 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -223,7 +223,9 @@ sdk("core") {
     "//sdk/fidl/fuchsia.wlan.service:fuchsia.wlan.service_sdk($fidl_toolchain)",
     "//sdk/lib/fidl/cpp:cpp_sdk",
     "//sdk/lib/svc:svc_sdk",
+    "//sdk/lib/sys/cpp:cpp_sdk",
     "//sdk/lib/ui/scenic/cpp:cpp_sdk",
+    "//sdk/lib/vfs/cpp:cpp_sdk",
     "//src/developer/debug/zxdb:zxdb_sdk($host_toolchain)",
     "//third_party/vulkan_loader_and_validation_layers/loader:loader_sdk",
     "//zircon/public/fidl/fuchsia-cobalt:fuchsia-cobalt_sdk($fidl_toolchain)",
diff --git a/sdk/core.api b/sdk/core.api
index d632e32bffd..eb9c30d2ce2 100644
--- a/sdk/core.api
+++ b/sdk/core.api
@@ -72,9 +72,11 @@ sdk://pkg/memfs
 sdk://pkg/scenic_cpp
 sdk://pkg/svc
 sdk://pkg/sync
+sdk://pkg/sys_cpp
 sdk://pkg/syslog
 sdk://pkg/sysroot
 sdk://pkg/trace-engine
+sdk://pkg/vfs_cpp
 sdk://pkg/vulkan
 sdk://pkg/vulkan_layers
 sdk://pkg/zx
diff --git a/sdk/lib/sys/cpp/BUILD.gn b/sdk/lib/sys/cpp/BUILD.gn
index 3fec66f116a..8984c0f2a2c 100644
--- a/sdk/lib/sys/cpp/BUILD.gn
+++ b/sdk/lib/sys/cpp/BUILD.gn
@@ -5,9 +5,9 @@
 import("//build/cpp/sdk_source_set.gni")
 
 sdk_source_set("cpp") {
-  category = "internal"
+  category = "partner"
 
-  sdk_name = "component_cpp"
+  sdk_name = "sys_cpp"
 
   include_base = "//sdk"
   sources = [
diff --git a/sdk/lib/sys/cpp/sys_cpp.api b/sdk/lib/sys/cpp/sys_cpp.api
new file mode 100644
index 00000000000..b879bda47bc
--- /dev/null
+++ b/sdk/lib/sys/cpp/sys_cpp.api
@@ -0,0 +1,7 @@
+{
+  "pkg/sys_cpp/include/lib/sys/cpp/component_context.h": "ff4c4d1ce381efb0dc5dae5055662112",
+  "pkg/sys_cpp/include/lib/sys/cpp/file_descriptor.h": "58738a9a1ef1ac925ef71f6cce5aa125",
+  "pkg/sys_cpp/include/lib/sys/cpp/outgoing_directory.h": "775faaa854915512c5fb3bd4e7830ddd",
+  "pkg/sys_cpp/include/lib/sys/cpp/service_directory.h": "e75f61dbfa217e1ad6d0f566d1c697b4",
+  "pkg/sys_cpp/include/lib/sys/cpp/termination_reason.h": "dab213c57751fef9e454676a31c91d29"
+}
\ No newline at end of file
diff --git a/sdk/lib/vfs/cpp/BUILD.gn b/sdk/lib/vfs/cpp/BUILD.gn
index efb443fe752..a0c3f57abd5 100644
--- a/sdk/lib/vfs/cpp/BUILD.gn
+++ b/sdk/lib/vfs/cpp/BUILD.gn
@@ -9,7 +9,7 @@ import("//build/test/test_package.gni")
 import("//build/testing/environments.gni")
 
 sdk_source_set("cpp") {
-  category = "internal"
+  category = "partner"
 
   sdk_name = "vfs_cpp"
 
diff --git a/sdk/lib/vfs/cpp/pseudo_dir.cc b/sdk/lib/vfs/cpp/pseudo_dir.cc
index 0e0d8041a0d..1f1f075d3d3 100644
--- a/sdk/lib/vfs/cpp/pseudo_dir.cc
+++ b/sdk/lib/vfs/cpp/pseudo_dir.cc
@@ -10,7 +10,7 @@
 
 namespace vfs {
 
-PseudoDir::PseudoDir() = default;
+PseudoDir::PseudoDir() : next_node_id_(kDotId + 1) {}
 
 PseudoDir::~PseudoDir() = default;
 
diff --git a/sdk/lib/vfs/cpp/pseudo_dir.h b/sdk/lib/vfs/cpp/pseudo_dir.h
index 779ed0971e8..b30cd5f6d9e 100644
--- a/sdk/lib/vfs/cpp/pseudo_dir.h
+++ b/sdk/lib/vfs/cpp/pseudo_dir.h
@@ -126,7 +126,7 @@ class PseudoDir : public vfs::internal::Directory {
 
   mutable std::mutex mutex_;
 
-  std::atomic_uint64_t next_node_id_ = 2; // which is kDotId +1
+  std::atomic_uint64_t next_node_id_;
 
   // for enumeration
   std::map<uint64_t, std::unique_ptr<Entry>> entries_by_id_
diff --git a/sdk/lib/vfs/cpp/vfs_cpp.api b/sdk/lib/vfs/cpp/vfs_cpp.api
new file mode 100644
index 00000000000..a41f5b17bd3
--- /dev/null
+++ b/sdk/lib/vfs/cpp/vfs_cpp.api
@@ -0,0 +1,19 @@
+{
+  "pkg/vfs_cpp/include/lib/vfs/cpp/composed_service_dir.h": "628459256ecf7e4ae6db5d23f2041175",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/flags.h": "5a700c7864cd728ce3ffa6d4acd20df7",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/connection.h": "f58947278e1468543f0445e02fd1548f",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/directory.h": "b8d41e52de7e017b04f4e4b9c48b6648",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/directory_connection.h": "b53a64592784fdb51ac6a9d6ea1ee91d",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/dirent_filler.h": "44c99e0fd2c75a6666d84382922c3e67",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/file.h": "24d07b948b027a790483334bc81e4dbd",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/file_connection.h": "7ba00803dd0f4283f0812120be9b74b5",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/node.h": "622ae637eaf703b5218b28ac1c63f160",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/internal/node_connection.h": "ea05c0eb1c3950ca4425476b22e967d3",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/lazy_dir.h": "e565e4bdd078da1c76a035e8ca16eb38",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/node_kind.h": "2091ae012ff50b8c226b94218a923fee",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/pseudo_dir.h": "b8ae9314ddec3648d295565bf0d6e89b",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/pseudo_file.h": "ee6c095df60f847b368c5fb55c14fd43",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/remote_dir.h": "15b3a2fa5fd0195e5cff3070c51b78f0",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/service.h": "d7e9bae70e437a2d3794ea605bcd5fe7",
+  "pkg/vfs_cpp/include/lib/vfs/cpp/vmo_file.h": "c7c3fde60688fbb618770194d15541fe"
+}
\ No newline at end of file
-- 
GitLab