Split C API docs in Py3k branch.
diff --git a/Doc/c-api/objbuffer.rst b/Doc/c-api/objbuffer.rst
new file mode 100644
index 0000000..2ce0d97
--- /dev/null
+++ b/Doc/c-api/objbuffer.rst
@@ -0,0 +1,37 @@
+.. highlightlang:: c
+
+.. _abstract-buffer:
+
+Buffer Protocol
+===============
+
+
+.. cfunction:: int PyObject_AsCharBuffer(PyObject *obj, const char **buffer, Py_ssize_t *buffer_len)
+
+   Returns a pointer to a read-only memory location useable as character- based
+   input.  The *obj* argument must support the single-segment character buffer
+   interface.  On success, returns ``0``, sets *buffer* to the memory location and
+   *buffer_len* to the buffer length.  Returns ``-1`` and sets a :exc:`TypeError`
+   on error.
+
+
+.. cfunction:: int PyObject_AsReadBuffer(PyObject *obj, const void **buffer, Py_ssize_t *buffer_len)
+
+   Returns a pointer to a read-only memory location containing arbitrary data.  The
+   *obj* argument must support the single-segment readable buffer interface.  On
+   success, returns ``0``, sets *buffer* to the memory location and *buffer_len* to
+   the buffer length.  Returns ``-1`` and sets a :exc:`TypeError` on error.
+
+
+.. cfunction:: int PyObject_CheckReadBuffer(PyObject *o)
+
+   Returns ``1`` if *o* supports the single-segment readable buffer interface.
+   Otherwise returns ``0``.
+
+
+.. cfunction:: int PyObject_AsWriteBuffer(PyObject *obj, void **buffer, Py_ssize_t *buffer_len)
+
+   Returns a pointer to a writable memory location.  The *obj* argument must
+   support the single-segment, character buffer interface.  On success, returns
+   ``0``, sets *buffer* to the memory location and *buffer_len* to the buffer
+   length.  Returns ``-1`` and sets a :exc:`TypeError` on error.