Replace RW lock with mutex, shared_mutex

Test: built, flashed, booted
      system/netd/tests/runtests.sh passes
Change-Id: I42b52d815b6ba0ba6f93dc27e83a900d2abec715
diff --git a/server/NetworkController.h b/server/NetworkController.h
index 5e7af80..eb7d670 100644
--- a/server/NetworkController.h
+++ b/server/NetworkController.h
@@ -17,16 +17,18 @@
 #ifndef NETD_SERVER_NETWORK_CONTROLLER_H
 #define NETD_SERVER_NETWORK_CONTROLLER_H
 
+
+#include <android-base/thread_annotations.h>
 #include <android/multinetwork.h>
+
 #include "NetdConstants.h"
 #include "Permission.h"
 
-#include "utils/RWLock.h"
-
+#include <sys/types.h>
 #include <list>
 #include <map>
 #include <set>
-#include <sys/types.h>
+#include <shared_mutex>
 #include <unordered_map>
 #include <unordered_set>
 #include <vector>
@@ -36,6 +38,9 @@
 namespace android {
 namespace net {
 
+typedef std::shared_lock<std::shared_mutex> ScopedRLock;
+typedef std::lock_guard<std::shared_mutex> ScopedWLock;
+
 constexpr uint32_t kHandleMagic = 0xcafed00d;
 
 // Utility to convert from netId to net_handle_t. Doing this here as opposed to exporting
@@ -146,7 +151,6 @@
     unsigned getNetworkForInterfaceLocked(const char* interface) const;
     bool canProtectLocked(uid_t uid) const;
     bool isVirtualNetworkLocked(unsigned netId) const;
-
     VirtualNetwork* getVirtualNetworkForUserLocked(uid_t uid) const;
     Permission getPermissionForUserLocked(uid_t uid) const;
     int checkUserNetworkAccessLocked(uid_t uid, unsigned netId) const;
@@ -162,7 +166,7 @@
 
     // mRWLock guards all accesses to mDefaultNetId, mNetworks, mUsers, mProtectableUsers,
     // mIfindexToLastNetId and mAddressToIfindices.
-    mutable android::RWLock mRWLock;
+    mutable std::shared_mutex mRWLock;
     unsigned mDefaultNetId;
     std::map<unsigned, Network*> mNetworks;  // Map keys are NetIds.
     std::map<uid_t, Permission> mUsers;