diff --git a/ap/libc/glibc/glibc-2.22/streams/Makefile b/ap/libc/glibc/glibc-2.22/streams/Makefile
new file mode 100644
index 0000000..a8a6162
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/Makefile
@@ -0,0 +1,28 @@
+# Copyright (C) 1998-2015 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+#
+#	Makefile for streams.
+#
+subdir	:= streams
+
+include ../Makeconfig
+
+headers		= stropts.h sys/stropts.h bits/stropts.h bits/xtitypes.h
+routines	= isastream getmsg getpmsg putmsg putpmsg fattach fdetach
+
+include ../Rules
diff --git a/ap/libc/glibc/glibc-2.22/streams/Versions b/ap/libc/glibc/glibc-2.22/streams/Versions
new file mode 100644
index 0000000..9a6f4d7
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/Versions
@@ -0,0 +1,15 @@
+libc {
+  GLIBC_2.1 {
+    # f*
+    fattach; fdetach;
+
+    # g*
+    getmsg; getpmsg;
+
+    # i*
+    isastream;
+
+    # p*
+    putmsg; putpmsg;
+  }
+}
diff --git a/ap/libc/glibc/glibc-2.22/streams/fattach.c b/ap/libc/glibc/glibc-2.22/streams/fattach.c
new file mode 100644
index 0000000..6a282d8
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/fattach.c
@@ -0,0 +1,31 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stropts.h>
+
+int
+fattach (fildes, path)
+     int fildes;
+     const char *path;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (fattach)
diff --git a/ap/libc/glibc/glibc-2.22/streams/fdetach.c b/ap/libc/glibc/glibc-2.22/streams/fdetach.c
new file mode 100644
index 0000000..09706de
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/fdetach.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stropts.h>
+
+int
+fdetach (path)
+     const char *path;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (fdetach)
diff --git a/ap/libc/glibc/glibc-2.22/streams/getmsg.c b/ap/libc/glibc/glibc-2.22/streams/getmsg.c
new file mode 100644
index 0000000..5ca595a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/getmsg.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stropts.h>
+
+int
+getmsg (fildes, ctlptr, dataptr, flagsp)
+     int fildes;
+     struct strbuf *ctlptr;
+     struct strbuf *dataptr;
+     int *flagsp;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (getmsg)
diff --git a/ap/libc/glibc/glibc-2.22/streams/getpmsg.c b/ap/libc/glibc/glibc-2.22/streams/getpmsg.c
new file mode 100644
index 0000000..7e8c872
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/getpmsg.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stropts.h>
+
+int
+getpmsg (fildes, ctlptr, dataptr, bandp, flagsp)
+     int fildes;
+     struct strbuf *ctlptr;
+     struct strbuf *dataptr;
+     int *bandp;
+     int *flagsp;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (getpmsg)
diff --git a/ap/libc/glibc/glibc-2.22/streams/isastream.c b/ap/libc/glibc/glibc-2.22/streams/isastream.c
new file mode 100644
index 0000000..f8d2b20
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/isastream.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stropts.h>
+
+int
+isastream (fildes)
+     int fildes;
+{
+  /* In general we do not have a STREAMS implementation and therefore
+     return 0.  But for invalid file descriptors we have to return an
+     error.  */
+  if (__fcntl (fildes, F_GETFD) < 0)
+    return -1;
+
+  /* No STREAM.  */
+  return 0;
+}
diff --git a/ap/libc/glibc/glibc-2.22/streams/putmsg.c b/ap/libc/glibc/glibc-2.22/streams/putmsg.c
new file mode 100644
index 0000000..9197f7e
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/putmsg.c
@@ -0,0 +1,33 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stropts.h>
+
+int
+putmsg (fildes, ctlptr, dataptr, flags)
+     int fildes;
+     const struct strbuf *ctlptr;
+     const struct strbuf *dataptr;
+     int flags;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (putmsg)
diff --git a/ap/libc/glibc/glibc-2.22/streams/putpmsg.c b/ap/libc/glibc/glibc-2.22/streams/putpmsg.c
new file mode 100644
index 0000000..e9fbd0f
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/putpmsg.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stropts.h>
+
+int
+putpmsg (fildes, ctlptr, dataptr, band, flags)
+     int fildes;
+     const struct strbuf *ctlptr;
+     const struct strbuf *dataptr;
+     int band;
+     int flags;
+{
+  __set_errno (ENOSYS);
+  return -1;
+}
+
+
+stub_warning (putpmsg)
diff --git a/ap/libc/glibc/glibc-2.22/streams/stropts.h b/ap/libc/glibc/glibc-2.22/streams/stropts.h
new file mode 100644
index 0000000..7bdba7a
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/stropts.h
@@ -0,0 +1,92 @@
+/* Copyright (C) 1998-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _STROPTS_H
+#define _STROPTS_H	1
+
+#include <features.h>
+#include <bits/types.h>
+#include <bits/xtitypes.h>
+
+#ifndef __gid_t_defined
+typedef __gid_t gid_t;
+# define __gid_t_defined
+#endif
+
+#ifndef __uid_t_defined
+typedef __uid_t uid_t;
+# define __uid_t_defined
+#endif
+
+typedef __t_scalar_t t_scalar_t;
+typedef __t_uscalar_t t_uscalar_t;
+
+/* Get system specific constants.  */
+#include <bits/stropts.h>
+
+
+__BEGIN_DECLS
+
+/* Test whether FILDES is associated with a STREAM-based file.  */
+extern int isastream (int __fildes) __THROW;
+
+/* Receive next message from a STREAMS file.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int getmsg (int __fildes, struct strbuf *__restrict __ctlptr,
+		   struct strbuf *__restrict __dataptr,
+		   int *__restrict __flagsp);
+
+/* Receive next message from a STREAMS file, with *FLAGSP allowing to
+   control which message.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int getpmsg (int __fildes, struct strbuf *__restrict __ctlptr,
+		    struct strbuf *__restrict __dataptr,
+		    int *__restrict __bandp, int *__restrict __flagsp);
+
+/* Perform the I/O control operation specified by REQUEST on FD.
+   One argument may follow; its presence and type depend on REQUEST.
+   Return value depends on REQUEST.  Usually -1 indicates error.  */
+extern int ioctl (int __fd, unsigned long int __request, ...) __THROW;
+
+/* Send a message on a STREAM.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int putmsg (int __fildes, const struct strbuf *__ctlptr,
+		   const struct strbuf *__dataptr, int __flags);
+
+/* Send a message on a STREAM to the BAND.
+
+   This function is a cancellation point and therefore not marked with
+   __THROW.  */
+extern int putpmsg (int __fildes, const struct strbuf *__ctlptr,
+		    const struct strbuf *__dataptr, int __band, int __flags);
+
+/* Attach a STREAMS-based file descriptor FILDES to a file PATH in the
+   file system name space.  */
+extern int fattach (int __fildes, const char *__path) __THROW;
+
+/* Detach a name PATH from a STREAMS-based file descriptor.  */
+extern int fdetach (const char *__path) __THROW;
+
+__END_DECLS
+
+#endif /* stropts.h */
diff --git a/ap/libc/glibc/glibc-2.22/streams/sys/stropts.h b/ap/libc/glibc/glibc-2.22/streams/sys/stropts.h
new file mode 100644
index 0000000..5b5bc02
--- /dev/null
+++ b/ap/libc/glibc/glibc-2.22/streams/sys/stropts.h
@@ -0,0 +1 @@
+#include <stropts.h>
