diff --git a/doc/efun/include_list b/doc/efun/include_list
new file mode 100644
index 0000000..cc44fa9
--- /dev/null
+++ b/doc/efun/include_list
@@ -0,0 +1,80 @@
+SYNOPSIS
+        #include <sys/include_list.h>
+
+        string *include_list();
+        string *include_list(object ob);
+        string *include_list(object ob, int flags);
+
+BESCHREIBUNG
+        Diese Funktion liefert Informationen ueber alle Dateien, die bei der
+        Kompilierung von <ob> in dieses Objekt eingebunden wurden, inklusive
+        den Programmnamen von <ob>. Wird <ob> nicht angegeben, wird
+        standardmaessig das aktuelle Objekt verwendet.
+
+        Im resultierenden Array besteht die Information zu einem Includefile
+        aus drei Elementen:
+          - string [i+0]: der Name des Includefiles, wie er im Programm
+                          auftaucht, inklusive den Trennzeichen wie " " oder
+                          < >.
+          - string [i+1]: der absolute Dateipfad des Includefiles.
+          - int    [i+2]: die Tiefe der Inklusion (gewoehnlich 1, fuer
+                          verschachtelte Includes auch groesser als 1)
+
+        Der erste Eintrag im Resultat ist der Name des Programmes selbst in
+        [i+0], die anderen beiden Elemente [i+1] und [i+2] sind 0.
+
+        <flag> bezeichnet die Struktur des Ergebnisses:
+          - <flag> = INCLIST_FLAT (0, Standard):
+            Das Resultat ist ein flaches Array. Der erste Eintrag bezeichnet
+            <ob> selbst, die restlichen Eintraege bezeichnen alle Includefiles
+            in der Reihenfolge, in der sie auftreten.
+          - <flag> = INCLIST_TREE (1):
+            Das Resultat ist ein Array, dessen erster Eintrag das Objekt <ob>
+            selbst bezeichnet. Alle folgenden Eintraege bezeichnen die
+            Includefiles von <ob>. Wenn ein Includefile von <ob> selbst keine
+            Includefiles hat, wird seine Information direkt im Array
+            gespeichert. Fuer verschachtelte Includefiles wird ein Untervektor
+            erzeugt und dann in diesem Untervektor abgespeichert (wiederum
+            in [i+0], [i+1] und [i+2] sind 0). Diese Untervektoren haben
+            die gleiche Struktur wie das Resultatarray.
+
+        Wenn ein Objekt, inklusive <ob>, einem replace_programm() unterworfen
+        war, spiegeln die gelieferten Dateinamen das effektiv aktive Programm
+        wider.
+
+        Die Includepfade, die geliefert werden, beginnen immer mit '/'
+        (absolute Pfade), auch wenn der Treiber im COMPAT Modus laeuft.
+        Trotzdem beginnt der tatsaechliche Dateiname nicht mit einem '/',
+        wenn der Treiber im COMPAT Modus laeuft.
+
+BEISPIEL
+        Dieser Code erzeugt (mit /sys als Includeverzeichnis des Systems):
+
+            a.c:  #include "b.h"
+                  #include <c.h>
+            b.h:  #include "d.h"
+            c.h:  #define BAR
+            d.h:  #define FOO
+
+        Die Efun liefert drei Resultate:
+
+            include_list(a, INCLIST_FLAT)
+            -> ({ "a.c", 0, 0
+                , "\"b.h\"", "/.../b.h", 1
+                , "\"d.h\"", "/.../d.h", 2
+                , "<c.h>",   "/sys/c.h", 1
+               })
+
+             include_list(a, INCLIST_TREE)
+             -> ({ "a.c", 0, 0
+                 , ({ "\"b.h\"", "/.../b.h", 1
+                    , "\"d.h\"", "/.../d.h", 2
+                   }), 0, 0
+                 , "<c.h>",   "/sys/c.h", 1
+                 })
+
+AENDERUNGEN
+        Eingefuehrt in LDMud 3.2.9, 3.3.128
+
+SIEHE AUCH
+        debug_info(E), inherit_list(E)
