diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex
index 8c819d9..6a07ab1 100644
--- a/Doc/lib/libos.tex
+++ b/Doc/lib/libos.tex
@@ -644,6 +644,17 @@
 doesn't open the FIFO --- it just creates the rendezvous point.
 \end{funcdesc}
 
+\begin{funcdesc}{mknod}{path\optional{, mode=0600, major, minor}}
+Create a filesystem node (file, device special file or named pipe)
+named filename. mode specifies both the permissions to use and the
+type of node to be created, being combined (bitwise OR) with one of
+S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO (those constants are available
+in \module{stat}). For S_IFCHR and S_IFBLK, major and minor define the
+newly created device special file, otherwise they are ignored.
+
+\versionadded{2.3}
+\end{funcdesc}
+
 \begin{funcdesc}{mkdir}{path\optional{, mode}}
 Create a directory named \var{path} with numeric mode \var{mode}.
 The default \var{mode} is \code{0777} (octal).  On some systems,
diff --git a/Misc/NEWS b/Misc/NEWS
index d3ed145..e6fc808 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -56,6 +56,8 @@
 
 Extension modules
 
+- posix.mknod was added.
+
 - The locale module now exposes the C library's gettext interface.
 
 - A security hole ("double free") was found in zlib-1.1.3, a popular
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 5b80479..2a5915a 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -4582,19 +4582,52 @@
 
 #ifdef HAVE_MKFIFO
 static char posix_mkfifo__doc__[] =
-"mkfifo(file, [, mode=0666]) -> None\n\
+"mkfifo(filename, [, mode=0666]) -> None\n\
 Create a FIFO (a POSIX named pipe).";
 
 static PyObject *
 posix_mkfifo(PyObject *self, PyObject *args)
 {
-	char *file;
+	char *filename;
 	int mode = 0666;
 	int res;
-	if (!PyArg_ParseTuple(args, "s|i:mkfifo", &file, &mode))
+	if (!PyArg_ParseTuple(args, "s|i:mkfifo", &filename, &mode))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
-	res = mkfifo(file, mode);
+	res = mkfifo(filename, mode);
+	Py_END_ALLOW_THREADS
+	if (res < 0)
+		return posix_error();
+	Py_INCREF(Py_None);
+	return Py_None;
+}
+#endif
+
+
+#ifdef HAVE_MKNOD
+static char posix_mknod__doc__[] =
+"mknod(filename, [, mode=0600, major, minor]) -> None\n\
+Create a filesystem node (file, device special file or named pipe)\n\
+named filename. mode specifies both the permissions to use and the\n\
+type of node to be created, being combined (bitwise OR) with one of\n\
+S_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK,\n\
+major and minor define the newly created device special file, otherwise\n\
+they are ignored.";
+
+
+static PyObject *
+posix_mknod(PyObject *self, PyObject *args)
+{
+	char *filename;
+	int mode = 0600;
+	int major = 0;
+	int minor = 0;
+	int res;
+	if (!PyArg_ParseTuple(args, "s|iii:mknod", &filename,
+			      &mode, &major, &minor))
+		return NULL;
+	Py_BEGIN_ALLOW_THREADS
+	res = mknod(filename, mode, makedev(major, minor));
 	Py_END_ALLOW_THREADS
 	if (res < 0)
 		return posix_error();
@@ -6336,6 +6369,9 @@
 #ifdef HAVE_MKFIFO
 	{"mkfifo",	posix_mkfifo, METH_VARARGS, posix_mkfifo__doc__},
 #endif
+#ifdef HAVE_MKNOD
+	{"mknod",	posix_mknod, METH_VARARGS, posix_mknod__doc__},
+#endif
 #ifdef HAVE_FTRUNCATE
 	{"ftruncate",	posix_ftruncate, METH_VARARGS, posix_ftruncate__doc__},
 #endif
diff --git a/configure b/configure
index 48467c9..c9c9bd2 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.306 .
+# From configure.in Revision: 1.307 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.53.
 #
@@ -11245,10 +11245,11 @@
 
 
 
+
 for ac_func in alarm chown chroot clock confstr ctermid ctermid_r execv \
  flock fork fsync fdatasync fpathconf ftime ftruncate \
  gai_strerror getgroups getlogin getpeername getpid getpwent getwd \
- hstrerror inet_pton kill killpg link lstat mkfifo mktime mremap \
+ hstrerror inet_pton kill killpg link lstat mkfifo mknod mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid setgroups \
diff --git a/configure.in b/configure.in
index 8b04c03..8d1339a 100644
--- a/configure.in
+++ b/configure.in
@@ -1568,7 +1568,7 @@
 AC_CHECK_FUNCS(alarm chown chroot clock confstr ctermid ctermid_r execv \
  flock fork fsync fdatasync fpathconf ftime ftruncate \
  gai_strerror getgroups getlogin getpeername getpid getpwent getwd \
- hstrerror inet_pton kill killpg link lstat mkfifo mktime mremap \
+ hstrerror inet_pton kill killpg link lstat mkfifo mknod mktime mremap \
  nice pathconf pause plock poll pthread_init \
  putenv readlink \
  select setegid seteuid setgid setgroups \
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 5ad717b..dbc03be 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -260,6 +260,9 @@
 /* Define to 1 if you have the `mkfifo' function. */
 #undef HAVE_MKFIFO
 
+/* Define to 1 if you have the `mknod' function. */
+#undef HAVE_MKNOD
+
 /* Define to 1 if you have the `mktime' function. */
 #undef HAVE_MKTIME
 
