Dieser Abschnitt listet APIs auf, die nicht für den allgemeinen Gebrauch geeignet sind, aber für Entwickler unter bestimmten Umständen nützlich sein können. Dazu gehören APIs, die schwierig oder kompliziert zu verwenden sind oder die hauptsächlich für Entwickler gedacht sind, die am Emscripten-Kern arbeiten.
Inhaltsverzeichnis
settings.js enthält Standardwerte und Optionen, die der Compiler an verschiedenen Stellen verwendet.
Warnung
Viele settings.js-Optionen sind sehr anfällig – bestimmte Kombinationen von Optionen und Kombinationen bestimmter Optionen, die mit einigen Quellcodes verwendet werden, können Emscripten schwerwiegend zum Absturz bringen. Dies ist für "fortgeschrittene Benutzer" und möglicherweise sogar nur für Personen gedacht, die Emscripten selbst entwickeln.
Die Optionen in settings.js werden normalerweise als Kommandozeilenparameter an emcc gesetzt
emcc -sOPT=VALUE
Obwohl es möglich ist, settings.js manuell zu bearbeiten, wird dies nachdrücklich abgeraten. Im Allgemeinen definiert settings.js Low-Level-Optionen, die nicht geändert werden sollten. Beachten Sie auch, dass der Compiler einige Optionen in Abhängigkeit von anderen Einstellungen ändert. Zum Beispiel ist ASSERTIONS standardmäßig aktiviert, aber in optimierten Builds (-O1+) deaktiviert.
Hinweis
Weitere Informationen darüber, welche Optionen zum Konfigurieren von Emscripten verwendet werden können, finden Sie in src/settings.js oder auf der emsettings-Seite.
Die folgenden erweiterten APIs sind in preamble.js dokumentiert.
allocate(slab, allocator)¶Dies ist als intern gekennzeichnet, da es schwierig zu verwenden ist (es wurde für mehrere Syntaxen optimiert, um Platz im generierten Code zu sparen). Normalerweise sollten Entwickler stattdessen Speicher mit _malloc() zuweisen, ihn mit setValue() initialisieren usw., aber diese Funktion kann für fortgeschrittene Entwickler in bestimmten Fällen nützlich sein.
slab – Ein Datenarray oder eine Zahl. Wenn eine Zahl, dann die Größe des zuzuweisenden Blocks in Bytes.
allocator – Wie Speicher zugewiesen werden soll, siehe ALLOC_*
Dateisystem-API behandelt die öffentliche API, die für die meisten Entwickler relevant ist. Die folgenden Funktionen werden nur für fortgeschrittene Anwendungsfälle (z. B. das Schreiben eines neuen lokalen Dateisystems) oder die Kompatibilität mit älteren Dateisystemen benötigt.
FS.hashName(parentid, name)¶FS.hashAddNode(node)¶FS.hashRemoveNode(node)¶FS.lookupNode(parent, name)¶FS.createNode(parent, name, mode, rdev)¶FS.destroyNode(node)¶FS.isRoot(node)¶FS.isMountpoint(node)¶FS.isFIFO(node)¶FS.nextfd()¶FS.getStream(fd)¶FS.createStream(stream, fd)¶FS.closeStream(fd)¶FS.getStreamFromPtr(ptr)¶FS.getPtrForStream(stream)¶FS.major(dev)¶FS.minor(dev)¶FS.getDevice(dev)¶FS.getMounts(mount)¶FS.lookup(parent, name)¶FS.mknod(path, mode, dev)¶FS.create(path, mode)¶FS.allocate(stream, offset, length)¶FS.mmap(stream, buffer, offset, length, position, prot, flags)¶FS.ioctl(stream, cmd, arg)¶FS.staticInit()¶FS.quit()¶FS.indexedDB()¶FS.DB_NAME()¶Nur für fortgeschrittene Benutzer.
FS.getMode(canRead, canWrite)¶FS.findObject(path, dontResolveLastLink)¶FS.createPath(parent, path, canRead, canWrite)¶FS.createFile(parent, name, properties, canRead, canWrite)¶FS.createDataFile(parent, name, data, canRead, canWrite, canOwn)¶FS.createDevice(parent, name, input, output)¶FS.forceLoadFile(obj)¶Legacy v1 Kompatibilitätsfunktionen.
Es gibt auch eine kleine Anzahl zusätzlicher Flag-Modi
rs
xw
xw+
xa
xa+