Export sys/plan9_helpers.h from glibc (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 12 Apr 2016 22:00:16 +0000 (18:00 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 15 Apr 2016 14:29:13 +0000 (10:29 -0400)
This way, we don't need to magically extern in symbols: there's a proper
header for it.

I also renamed it from 'sockets' to 'helpers', which is a little more
general, and put it in sys/.

Rebuild glibc.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
27 files changed:
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/Makefile
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/accept.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/bind.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/connect.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/gethstbyad.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/gethstbyad_r.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/gethstbynm2_r.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getpeername.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getprtname_r.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getsockname.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getsockopt.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getsrvbynm_r.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getsrvbypt.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/getsrvbypt_r.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/listen.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/plan9_sockets.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/plan9_sockets.h [deleted file]
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/recv.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/recvfrom.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/send.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sendto.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/setsockopt.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/shutdown.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/socket.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/socketpair.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sys/plan9_helpers.h [new file with mode: 0644]
user/iplib/epoll.c

index 2d4db9c..7bb5608 100644 (file)
@@ -56,6 +56,9 @@ ifeq ($(subdir),stdlib)
 sysdep_routines += tls
 endif
 
+# Plan 9 Shims
+sysdep_headers += sys/plan9_helpers.h
+
 # User FDs
 ifeq ($(subdir),stdlib)
 sysdep_routines += user_fd
index a57f204..6408877 100644 (file)
@@ -21,7 +21,7 @@
 #include <netinet/in.h>
 #include <sys/un.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Await a connection on socket FD.
    When a connection arrives, open a new socket to communicate with it,
index 5d04d8a..f1bbe0f 100644 (file)
@@ -23,7 +23,7 @@
 #include <netinet/in.h>
 #include <sys/un.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Give the socket FD the local address ADDR (which is LEN bytes long).  */
 int __bind(int fd, __CONST_SOCKADDR_ARG addr, socklen_t alen)
index b2ae676..7347af8 100644 (file)
@@ -22,7 +22,7 @@
 #include <sys/un.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Open a connection on socket FD to peer at ADDR (which LEN bytes long).
    For connectionless socket types, just set the default address to send to
index 8a97105..45ed1e8 100644 (file)
@@ -17,7 +17,7 @@
 #include <netdb.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type)
 {
index d2b4a58..b18c81b 100644 (file)
@@ -18,7 +18,7 @@
 #include <errno.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* similar to gethostbyaddr, just calling the reentrant _r method, and using
  * inet_ntop instead of the non-reentrant inet_ntoa. */
index 58c3db4..634b25e 100644 (file)
@@ -21,7 +21,7 @@
 #include <netinet/in.h>
 #include <sys/un.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Put the address of the peer connected to socket FD into *ADDR
    (which is *LEN bytes long), and its actual length into *LEN.  */
index 70f956e..77466bb 100644 (file)
@@ -21,7 +21,7 @@
 #include <netinet/in.h>
 #include <netdb.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 enum {
        Nname = 6,
index 6cf53f2..ec31ab4 100644 (file)
@@ -21,7 +21,7 @@
 #include <netinet/in.h>
 #include <sys/un.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Put the local address of FD into *ADDR and its length in *LEN.  */
 int __getsockname(int fd, __SOCKADDR_ARG addr, socklen_t * __restrict alen)
index 139829d..63a3169 100644 (file)
@@ -5,7 +5,7 @@
 #include <errno.h>
 #include <sys/socket.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 static int sol_socket_gso(Rock *r, int optname, void *optval, socklen_t *optlen)
 {
index 9785c2d..278f51e 100644 (file)
@@ -22,7 +22,7 @@
 #include <netinet/in.h>
 #include <netdb.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 enum {
        Nname = 6,
index df7661d..5f40b96 100644 (file)
@@ -17,7 +17,7 @@
 #include <netdb.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 struct servent *getservbyport(int port, const char *proto)
 {
index 815c3ba..96890f6 100644 (file)
@@ -17,7 +17,7 @@
 #include <netdb.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 int __getservbyport_r(int port, const char *proto, struct servent *result_buf,
                       char *buf, size_t buflen, struct servent **result)
index 49b2dde..fa04109 100644 (file)
@@ -23,7 +23,7 @@
 #include <netinet/in.h>
 #include <sys/un.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Prepare to accept connections on socket FD.
    N connection requests will be queued before further requests are refused.
index 64ff26a..23f63b0 100644 (file)
@@ -23,7 +23,7 @@
 #include <sys/un.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 void
 _sock_ingetaddr(Rock * r, struct sockaddr_in *ip, socklen_t * alen,
diff --git a/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/plan9_sockets.h b/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/plan9_sockets.h
deleted file mode 100644 (file)
index 1ce2cdd..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/* 
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
-#ifndef PLAN9_SOCKETS_H
-#define PLAN9_SOCKETS_H
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netdb.h>
-
-__BEGIN_DECLS typedef struct Rock Rock;
-
-enum {
-       Ctlsize = 128,
-
-       /* states */
-       Sopen = 0,
-       Sbound,
-       Sconnected,
-
-       /* types of name */
-       Tsys = 0,
-       Tip,
-       Tdom,
-};
-
-/*
- *  since BSD programs expect to perform both control and data functions
- *  through a single fd, we need to hide enough info under a rock to
- *  be able to open the control file when we need it.
- */
-struct Rock {
-       Rock *next;
-       unsigned long dev;                      /* inode & dev of data file */
-       unsigned long inode;            /* ... */
-       int domain;                                     /* from socket call */
-       int stype;                                      /* socket type, from socket()'s type field */
-       int sopts;                                      /* socket options, from socket()'s type field */
-       int protocol;                           /* ... */
-       int reserved;                           /* use a priveledged port # (< 1024) */
-       union {
-               struct sockaddr addr;   /* address from bind */
-               struct sockaddr_storage addr_stor;
-       };
-       union {
-               struct sockaddr raddr;  /* peer address */
-               struct sockaddr_storage raddr_stor;
-       };
-       char ctl[Ctlsize];                      /* name of control file (if any) */
-       int other;                                      /* fd of the remote end for Unix domain */
-       bool is_listener;                       /* has called listen() and will accept() */
-       int listen_fd;                          /* fd of the listen file, if any */
-};
-
-extern Rock *_sock_findrock(int, struct stat *);
-extern Rock *_sock_newrock(int);
-extern void _sock_fd_closed(int fd);
-extern void _sock_srvname(char *, char *);
-extern int _sock_srv(char *, int);
-extern int _sock_data(int, const char *, int, int, int, Rock **);
-extern int _sock_ipattr(const char *);
-extern void _sock_ingetaddr(Rock *, struct sockaddr_in *, socklen_t *,
-                                                       const char *);
-extern int _sock_strip_opts(int type);
-extern int _sock_get_opts(int type);
-extern int _rock_open_listen_fd(Rock *r);
-extern int _sock_lookup_listen_fd(int sock_fd);
-
-extern void _syserrno(void);
-
-/* The plan9 UDP header looks like:
- *
- * 52 bytes
- *             raddr (16 b)
- *             laddr (16 b)
- *             IFC addr (ignored if user says it)  (16 b)
- *             rport (2 b) (network ordering)
- *             lport (ignored if user says it) (2b)
- *
- * The v4 addr format is 10 bytes of 0s, then two 0xff, then 4 bytes of addr. */
-
-#define P9_UDP_HDR_SZ 52
-
-/* Takes network-byte ordered IPv4 addr and writes it into buf, in the plan 9 IP
- * addr format */
-void naddr_to_plan9addr(uint32_t sin_addr, uint8_t * buf);
-/* does v4 only */
-uint32_t plan9addr_to_naddr(uint8_t * buf);
-/* Returns a rock* if the socket exists and is UDP */
-Rock *udp_sock_get_rock(int fd);
-
-__END_DECLS
-#endif /* PLAN9_SOCKETS_H */
index 7a45726..611112d 100644 (file)
@@ -17,7 +17,7 @@
 #include <sys/socket.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Read N bytes into BUF from socket FD.
    Returns the number read or -1 for errors.  */
index e96eafb..a23becd 100644 (file)
@@ -18,7 +18,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Read N bytes into BUF through socket FD from peer
    at address FROM (which is FROMLEN bytes long).
index 55b05c7..9321795 100644 (file)
@@ -17,7 +17,7 @@
 #include <sys/socket.h>
 #include <arpa/inet.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Send N bytes of BUF to socket FD.  Returns the number sent or -1.  */
 ssize_t __send(int fd, __const void *buf, size_t n, int flags)
index d6e5671..55a6d8b 100644 (file)
@@ -18,7 +18,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Send N bytes of BUF on socket FD to peer at address TO (which is
    TOLEN bytes long).  Returns the number sent, or -1 for errors.  */
index 7e08aa6..38bb7cb 100644 (file)
@@ -5,7 +5,7 @@
 #include <errno.h>
 #include <sys/socket.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 static int sol_socket_sso(Rock *r, int optname, void *optval, socklen_t optlen)
 {
index 744a9a0..61d343b 100644 (file)
@@ -11,7 +11,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Shuts down all or part of the connection open on socket FD.  Returns 0 on
  * success, -1 for errors. */
index d49c4ee..fe05ad9 100644 (file)
@@ -23,7 +23,7 @@
 #include <sys/socket.h>
 #include <netinet/in.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Create a new socket of type TYPE in domain DOMAIN, using
    protocol PROTOCOL.  If PROTOCOL is zero, one is chosen automatically.
index 644bd2b..59adf62 100644 (file)
@@ -16,7 +16,7 @@
 #include <sys/uio.h>
 #include <sys/socket.h>
 
-#include "plan9_sockets.h"
+#include <sys/plan9_helpers.h>
 
 /* Create two new sockets, of type TYPE in domain DOMAIN and using
    protocol PROTOCOL, which are connected to each other, and put file
diff --git a/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sys/plan9_helpers.h b/tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sys/plan9_helpers.h
new file mode 100644 (file)
index 0000000..c9a322d
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * This file is part of the UCB release of Plan 9. It is subject to the license
+ * terms in the LICENSE file found in the top-level directory of this
+ * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
+ * part of the UCB release of Plan 9, including this file, may be copied,
+ * modified, propagated, or distributed except according to the terms contained
+ * in the LICENSE file.
+ */
+
+#pragma once
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <sys/socket.h>
+
+#include <netinet/in.h>
+#include <netdb.h>
+
+__BEGIN_DECLS
+
+typedef struct Rock Rock;
+
+enum {
+       Ctlsize = 128,
+
+       /* states */
+       Sopen = 0,
+       Sbound,
+       Sconnected,
+
+       /* types of name */
+       Tsys = 0,
+       Tip,
+       Tdom,
+};
+
+/*
+ *  since BSD programs expect to perform both control and data functions
+ *  through a single fd, we need to hide enough info under a rock to
+ *  be able to open the control file when we need it.
+ */
+struct Rock {
+       Rock *next;
+       unsigned long dev;                      /* inode & dev of data file */
+       unsigned long inode;            /* ... */
+       int domain;                                     /* from socket call */
+       int stype;                                      /* socket type, from socket()'s type field */
+       int sopts;                                      /* socket options, from socket()'s type field */
+       int protocol;                           /* ... */
+       int reserved;                           /* use a priveledged port # (< 1024) */
+       union {
+               struct sockaddr addr;   /* address from bind */
+               struct sockaddr_storage addr_stor;
+       };
+       union {
+               struct sockaddr raddr;  /* peer address */
+               struct sockaddr_storage raddr_stor;
+       };
+       char ctl[Ctlsize];                      /* name of control file (if any) */
+       int other;                                      /* fd of the remote end for Unix domain */
+       bool is_listener;                       /* has called listen() and will accept() */
+       int listen_fd;                          /* fd of the listen file, if any */
+};
+
+extern Rock *_sock_findrock(int, struct stat *);
+extern Rock *_sock_newrock(int);
+extern void _sock_fd_closed(int fd);
+extern void _sock_srvname(char *, char *);
+extern int _sock_srv(char *, int);
+extern int _sock_data(int, const char *, int, int, int, Rock **);
+extern int _sock_ipattr(const char *);
+extern void _sock_ingetaddr(Rock *, struct sockaddr_in *, socklen_t *,
+                                                       const char *);
+extern int _sock_strip_opts(int type);
+extern int _sock_get_opts(int type);
+extern int _rock_open_listen_fd(Rock *r);
+extern int _sock_lookup_listen_fd(int sock_fd);
+
+extern void _syserrno(void);
+
+/* The plan9 UDP header looks like:
+ *
+ * 52 bytes
+ *             raddr (16 b)
+ *             laddr (16 b)
+ *             IFC addr (ignored if user says it)  (16 b)
+ *             rport (2 b) (network ordering)
+ *             lport (ignored if user says it) (2b)
+ *
+ * The v4 addr format is 10 bytes of 0s, then two 0xff, then 4 bytes of addr. */
+
+#define P9_UDP_HDR_SZ 52
+
+/* Takes network-byte ordered IPv4 addr and writes it into buf, in the plan 9 IP
+ * addr format */
+void naddr_to_plan9addr(uint32_t sin_addr, uint8_t * buf);
+/* does v4 only */
+uint32_t plan9addr_to_naddr(uint8_t * buf);
+/* Returns a rock* if the socket exists and is UDP */
+Rock *udp_sock_get_rock(int fd);
+
+__END_DECLS
index 9e22c2c..87fdae5 100644 (file)
@@ -41,6 +41,7 @@
 #include <unistd.h>
 #include <malloc.h>
 #include <sys/queue.h>
+#include <sys/plan9_helpers.h>
 
 /* Sanity check, so we can ID our own FDs */
 #define EPOLL_UFD_MAGIC                0xe9011
@@ -298,8 +299,6 @@ static int __epoll_ctl_add(struct epoll_ctlr *ep, int fd,
         * As far as tracking the FD goes for epoll_wait() reporting, if the app
         * wants to track the FD they think we are using, then they already passed
         * that in event->data. */
-       extern int _sock_lookup_listen_fd(int sock_fd); /* in glibc */
-
        sock_listen_fd = _sock_lookup_listen_fd(fd);
        if (sock_listen_fd >= 0)
                fd = sock_listen_fd;
@@ -343,7 +342,6 @@ static int __epoll_ctl_del(struct epoll_ctlr *ep, int fd,
 
        /* They could be asking to clear an epoll for a listener.  We need to remove
         * the tap for the real FD we tapped */
-       extern int _sock_lookup_listen_fd(int sock_fd); /* in glibc */
        sock_listen_fd = _sock_lookup_listen_fd(fd);
        if (sock_listen_fd >= 0)
                fd = sock_listen_fd;