Cosmetic changes to netd client files.
+ Name the dispatch header correctly (NetdClientDispatch.h).
+ Hide the global dispatch variable (__netdClientDispatch).
+ Explain why it's okay to read the variable without locking.
+ Use quotes instead of angle-brackets for non-system includes.
+ Add necessary declarations for C compiles (and not just C++).
Change-Id: Id0932165e71d81da5fce77a684f40c2263f58e61
diff --git a/libc/bionic/NetdClient.cpp b/libc/bionic/NetdClient.cpp
index 72d90b7..75e84ee 100644
--- a/libc/bionic/NetdClient.cpp
+++ b/libc/bionic/NetdClient.cpp
@@ -18,11 +18,11 @@
#error NetdClient.cpp should NOT be included in static libc builds.
#endif
-#include <private/NetdClient.h>
-#include <private/libc_logging.h>
-#include <pthread.h>
+#include "private/libc_logging.h"
+#include "private/NetdClientDispatch.h"
#include <dlfcn.h>
+#include <pthread.h>
template <typename FunctionType>
static void netdClientInitFunction(void* handle, const char* symbol, FunctionType* function) {
diff --git a/libc/bionic/NetdClientDispatch.cpp b/libc/bionic/NetdClientDispatch.cpp
index adfe16d..6bd2357 100644
--- a/libc/bionic/NetdClientDispatch.cpp
+++ b/libc/bionic/NetdClientDispatch.cpp
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#include <private/NetdClient.h>
+#include "private/NetdClientDispatch.h"
#ifdef __i386__
#define __socketcall __attribute__((__cdecl__))
@@ -25,7 +25,9 @@
extern "C" __socketcall int __accept(int, sockaddr*, socklen_t*);
extern "C" __socketcall int __connect(int, const sockaddr*, socklen_t);
-NetdClientDispatch __netdClientDispatch __attribute__((aligned(32))) = {
+// This structure is modified only at startup (when libc.so is loaded) and never
+// afterwards, so it's okay that it's read later at runtime without a lock.
+__LIBC_HIDDEN__ NetdClientDispatch __netdClientDispatch __attribute__((aligned(32))) = {
__accept,
__connect,
};
diff --git a/libc/bionic/accept.cpp b/libc/bionic/accept.cpp
index 46b4efc..8073234 100644
--- a/libc/bionic/accept.cpp
+++ b/libc/bionic/accept.cpp
@@ -14,7 +14,8 @@
* limitations under the License.
*/
-#include <private/NetdClient.h>
+#include "private/NetdClientDispatch.h"
+
#include <sys/socket.h>
int accept(int sockfd, sockaddr* addr, socklen_t* addrlen) {
diff --git a/libc/bionic/connect.cpp b/libc/bionic/connect.cpp
index c5db46b..1673f4a 100644
--- a/libc/bionic/connect.cpp
+++ b/libc/bionic/connect.cpp
@@ -14,7 +14,8 @@
* limitations under the License.
*/
-#include <private/NetdClient.h>
+#include "private/NetdClientDispatch.h"
+
#include <sys/socket.h>
int connect(int sockfd, const sockaddr* addr, socklen_t addrlen) {
diff --git a/libc/private/NetdClient.h b/libc/private/NetdClientDispatch.h
similarity index 65%
rename from libc/private/NetdClient.h
rename to libc/private/NetdClientDispatch.h
index b2ce7a6..0390bfb 100644
--- a/libc/private/NetdClient.h
+++ b/libc/private/NetdClientDispatch.h
@@ -14,16 +14,21 @@
* limitations under the License.
*/
-#ifndef PRIVATE_NETD_CLIENT_H
-#define PRIVATE_NETD_CLIENT_H
+#ifndef PRIVATE_NETD_CLIENT_DISPATCH_H
+#define PRIVATE_NETD_CLIENT_DISPATCH_H
+#include <sys/cdefs.h>
#include <sys/socket.h>
+__BEGIN_DECLS
+
struct NetdClientDispatch {
- int (*accept)(int, sockaddr*, socklen_t*);
- int (*connect)(int, const sockaddr*, socklen_t);
+ int (*accept)(int, struct sockaddr*, socklen_t*);
+ int (*connect)(int, const struct sockaddr*, socklen_t);
};
-extern NetdClientDispatch __netdClientDispatch;
+extern __LIBC_HIDDEN__ struct NetdClientDispatch __netdClientDispatch;
-#endif // PRIVATE_NETD_CLIENT_H
+__END_DECLS
+
+#endif // PRIVATE_NETD_CLIENT_DISPATCH_H