diff --git a/Documentation/NuttxUserGuide.html b/Documentation/NuttxUserGuide.html
index 09bad280c8a1774657010d6f6386e0df810e75bb..18a33b93a8c4156525732e4b3bb11b31a2cb77ca 100644
--- a/Documentation/NuttxUserGuide.html
+++ b/Documentation/NuttxUserGuide.html
@@ -4810,12 +4810,17 @@ notify a task when a message is available on a queue.
   int   close(int fd);
   int   dup(int fildes);
   int   dup2(int fildes1, int fildes2);
-  off_t lseek(int fd, off_t offset, int whence);
+  off_t lseek(int fd, off_t offset, int whence);           /* Prototyped but not implemented */
   int   read(int fd, void *buf, unsigned int nbytes);
   int   unlink(const char *path);
   int   write(int fd, const void *buf, unsigned int nbytes);
 </pre></ul>
 
+<ul><pre>
+  #include &lt;sys/ioctl.h&gt;
+  int    ioctl(int fd, int req, unsigned long arg);
+</pre></ul>
+
 <h2><a name="directoryoperations">2.10.2 Directory Operations</a></h2>
 <ul><pre>
   #include &lt;dirent.h&gt;
@@ -4833,8 +4838,8 @@ notify a task when a message is available on a queue.
   #include &lt;stdio.h&gt;
   int    fclose(FILE *stream);
   int    fflush(FILE *stream);
-  int    feof(FILE *stream);
-  int    ferror(FILE *stream);
+  int    feof(FILE *stream);                               /* Prototyped but not implemented */
+  int    ferror(FILE *stream);                             /* Prototyped but not implemented */
   int    fgetc(FILE *stream);
   char  *fgets(char *s, int n, FILE *stream);
   FILE  *fopen(const char *path, const char *type);
@@ -4842,28 +4847,27 @@ notify a task when a message is available on a queue.
   int    fputc(int c, FILE *stream);
   int    fputs(const char *s, FILE *stream);
   size_t fread(void *ptr, size_t size, size_t n_items, FILE *stream);
-  int    fseek(FILE *stream, long int offset, int whence);
+  int    fseek(FILE *stream, long int offset, int whence); /* Prototyped but not implemented */
   size_t fwrite(const void *ptr, size_t size, size_t n_items, FILE *stream);
   char  *gets(char *s);
 
   int    printf(const char *format, ...);
   int    puts(const char *s);
-  int    rename(const char *source, const char *target);
+  int    rename(const char *source, const char *target);   /* Prototyped but not implemented */
   int    sprintf(char *dest, const char *format, ...);
   int    ungetc(int c, FILE *stream);
   int    vprintf(const char *s, va_list ap);
   int    vfprintf(FILE *stream, const char *s, va_list ap);
   int    vsprintf(char *buf, const char *s, va_list ap);
 
-  int    chdir(const char *path);
+  int    chdir(const char *path);                          /* Prototyped but not implemented */
   FILE  *fdopen(int fd, const char *type);
-  int    fstat(int fd, FAR struct stat *buf);
-  char  *getcwd(FAR char *buf, size_t size);
-  int    ioctl(int fd, int req, unsigned long arg);
-  int    mkdir(const char *path, mode_t mode);
-  int    rmdir(const char *path);
-  int    stat(const char *path, FAR struct stat *buf);
-  int    statfs(const char *path, FAR struct statfs *buf);
+  int    fstat(int fd, FAR struct stat *buf);              /* Prototyped but not implemented */
+  char  *getcwd(FAR char *buf, size_t size);               /* Prototyped but not implemented */
+  int    mkdir(const char *path, mode_t mode);             /* Prototyped but not implemented */
+  int    rmdir(const char *path);                          /* Prototyped but not implemented */
+  int    stat(const char *path, FAR struct stat *buf);     /* Prototyped but not implemented */
+  int    statfs(const char *path, FAR struct statfs *buf); /* Prototyped but not implemented */
 </pre></ul>
 
 <h1><a name="index">Index</a></h1>
diff --git a/fs/fs_ioctl.c b/fs/fs_ioctl.c
index c93311e638409b3910293eaa7e91e89d7c69d140..01c7650bc9f7d4c0d1367b0438307270905e1682 100644
--- a/fs/fs_ioctl.c
+++ b/fs/fs_ioctl.c
@@ -43,8 +43,8 @@
 
 #include <nuttx/config.h>
 #include <sys/types.h>
-#include <stdio.h>
 #include <errno.h>
+#include <sys/ioctl.h>
 #include "fs_internal.h"
 
 /************************************************************
diff --git a/include/stdio.h b/include/stdio.h
index eba23a9ce0ed0a4e67d9d87d6e99cd841337ff17..b2937ed91b32e2bbdd27f28b805fed6123c74bb9 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -168,7 +168,6 @@ EXTERN int    chdir(const char *path);
 EXTERN FILE  *fdopen(int fd, const char *type);
 EXTERN int    fstat(int fd, FAR struct stat *buf);
 EXTERN char  *getcwd(FAR char *buf, size_t size);
-EXTERN int    ioctl(int fd, int req, unsigned long arg);
 EXTERN int    mkdir(const char *path, mode_t mode);
 EXTERN int    rmdir(const char *path);
 EXTERN int    stat(const char *path, FAR struct stat *buf);
diff --git a/include/sys/ioctl.h b/include/sys/ioctl.h
new file mode 100644
index 0000000000000000000000000000000000000000..642e64dd0a37b5ef6659599fac871a671549bc94
--- /dev/null
+++ b/include/sys/ioctl.h
@@ -0,0 +1,68 @@
+/************************************************************
+ * ioctl.h
+ *
+ *   Copyright (C) 2007 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name Gregory Nutt nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ************************************************************/
+
+#ifndef __SYS_IOCTL_H
+#define __SYS_IOCTL_H
+
+/************************************************************
+ * Included Files
+ ************************************************************/
+
+/************************************************************
+ * Type Definitions
+ ************************************************************/
+
+/************************************************************
+ * Public Function Prototypes
+ ************************************************************/
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C" {
+#else
+#define EXTERN extern
+#endif
+
+/* ioctl() is a non-standard UNIX-like API */
+
+EXTERN int ioctl(int fd, int req, unsigned long arg);
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __SYS_IOCTL_H */