mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
Better error message for NAPI modules which access unsupported libuv functions (#18503)
Co-authored-by: Jarred Sumner <jarred@jarredsumner.com>
This commit is contained in:
@@ -785,6 +785,10 @@ target_include_directories(${bun} PRIVATE
|
||||
${NODEJS_HEADERS_PATH}/include
|
||||
)
|
||||
|
||||
if(NOT WIN32)
|
||||
target_include_directories(${bun} PRIVATE ${CWD}/src/bun.js/bindings/libuv)
|
||||
endif()
|
||||
|
||||
if(LINUX)
|
||||
include(CheckIncludeFiles)
|
||||
check_include_files("sys/queue.h" HAVE_SYS_QUEUE_H)
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
"build:release:with_logs": "cmake . -DCMAKE_BUILD_TYPE=Release -DENABLE_LOGS=true -GNinja -Bbuild-release && ninja -Cbuild-release",
|
||||
"build:debug-zig-release": "cmake . -DCMAKE_BUILD_TYPE=Release -DZIG_OPTIMIZE=Debug -GNinja -Bbuild-debug-zig-release && ninja -Cbuild-debug-zig-release",
|
||||
"css-properties": "bun run src/css/properties/generate_properties.ts",
|
||||
"uv-posix-stubs": "bun run src/bun.js/bindings/libuv/generate_uv_posix_stubs.ts",
|
||||
"bump": "bun ./scripts/bump.ts",
|
||||
"typecheck": "tsc --noEmit && cd test && bun run typecheck",
|
||||
"fmt": "bun run prettier",
|
||||
|
||||
@@ -130,6 +130,7 @@ pub const Features = struct {
|
||||
pub var s3: usize = 0;
|
||||
pub var csrf_verify: usize = 0;
|
||||
pub var csrf_generate: usize = 0;
|
||||
pub var unsupported_uv_function: usize = 0;
|
||||
|
||||
comptime {
|
||||
@export(&napi_module_register, .{ .name = "Bun__napi_module_register_count" });
|
||||
|
||||
@@ -363,6 +363,8 @@ static char* toFileURI(std::span<const char> span)
|
||||
|
||||
extern "C" size_t Bun__process_dlopen_count;
|
||||
|
||||
extern "C" void CrashHandler__setDlOpenAction(const char* action);
|
||||
|
||||
JSC_DEFINE_HOST_FUNCTION(Process_functionDlopen, (JSC::JSGlobalObject * globalObject_, JSC::CallFrame* callFrame))
|
||||
{
|
||||
Zig::GlobalObject* globalObject = reinterpret_cast<Zig::GlobalObject*>(globalObject_);
|
||||
@@ -438,7 +440,9 @@ JSC_DEFINE_HOST_FUNCTION(Process_functionDlopen, (JSC::JSGlobalObject * globalOb
|
||||
HMODULE handle = Bun__LoadLibraryBunString(&filename_str);
|
||||
#else
|
||||
CString utf8 = filename.utf8();
|
||||
CrashHandler__setDlOpenAction(utf8.data());
|
||||
void* handle = dlopen(utf8.data(), RTLD_LAZY);
|
||||
CrashHandler__setDlOpenAction(nullptr);
|
||||
#endif
|
||||
|
||||
globalObject->m_pendingNapiModuleDlopenHandle = handle;
|
||||
|
||||
14
src/bun.js/bindings/libuv/README.md
Normal file
14
src/bun.js/bindings/libuv/README.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# libuv copied headers
|
||||
|
||||
These are copied headers from libuv which are used by `bun uv-posix-stubs` to generate stubs which crash with a helpful error message when a NAPI
|
||||
module tries to access a libuv function which is not supported in Bun.
|
||||
|
||||
libuv commit hash: bb706f5fe71827f667f0bce532e95ce0698a498d
|
||||
|
||||
## Generating symbol stubs
|
||||
|
||||
1. Clone libuv repo using the above hash
|
||||
2. Use the following command to get the list of symbols: `llvm-nm -g libuv.dylib | grep _uv &> symbols.txt`, you're gonna have to clean them up a bit this is not automated sorry ( ͡° ͜ʖ ͡°)
|
||||
3. Update `src/symbol.txt` and `src/linker.lds` and `src/symbols.dyn`
|
||||
4. Update the `symbols` list in `generate_uv_posix_stubs.ts`
|
||||
5. Run `bun uv-posix-stubs`
|
||||
20
src/bun.js/bindings/libuv/bun.lock
Normal file
20
src/bun.js/bindings/libuv/bun.lock
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"lockfileVersion": 1,
|
||||
"workspaces": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"tree-sitter": "^0.22.4",
|
||||
"tree-sitter-c": "^0.23.5",
|
||||
},
|
||||
},
|
||||
},
|
||||
"packages": {
|
||||
"node-addon-api": ["node-addon-api@8.3.1", "", {}, "sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA=="],
|
||||
|
||||
"node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="],
|
||||
|
||||
"tree-sitter": ["tree-sitter@0.22.4", "", { "dependencies": { "node-addon-api": "^8.3.0", "node-gyp-build": "^4.8.4" } }, "sha512-usbHZP9/oxNsUY65MQUsduGRqDHQOou1cagUSwjhoSYAmSahjQDAVsh9s+SlZkn8X8+O1FULRGwHu7AFP3kjzg=="],
|
||||
|
||||
"tree-sitter-c": ["tree-sitter-c@0.23.5", "", { "dependencies": { "node-addon-api": "^8.3.0", "node-gyp-build": "^4.8.4" }, "peerDependencies": { "tree-sitter": "^0.22.1" }, "optionalPeers": ["tree-sitter"] }, "sha512-riDWhqVIt8J14R7G0YMKlUy8E7eYR0Vp6DSGL90nX5CTAXkORCyp4WaOgNtfo8dEsHyZF5e/4E9Z9kWj+qLnTQ=="],
|
||||
}
|
||||
}
|
||||
376
src/bun.js/bindings/libuv/generate_uv_posix_stubs.ts
Normal file
376
src/bun.js/bindings/libuv/generate_uv_posix_stubs.ts
Normal file
@@ -0,0 +1,376 @@
|
||||
import path, { join } from "path";
|
||||
import { symbols, test_skipped } from "./generate_uv_posix_stubs_constants";
|
||||
|
||||
import Parser from "tree-sitter";
|
||||
import C from "tree-sitter-c";
|
||||
|
||||
const parser = new Parser();
|
||||
parser.setLanguage(C);
|
||||
|
||||
const overrides = {
|
||||
uv_setup_args: {
|
||||
args: ["argc", "argv"],
|
||||
decls: ["int argc", "char **argv"],
|
||||
},
|
||||
uv_udp_try_send2: {
|
||||
args: ["arg0", "arg1", "arg2", "arg3", "arg4", "arg5"],
|
||||
decls: [
|
||||
"uv_udp_t* arg0",
|
||||
"unsigned int arg1",
|
||||
"uv_buf_t** arg2",
|
||||
"unsigned int* arg3",
|
||||
"struct sockaddr** arg4",
|
||||
"unsigned int arg5",
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
type TestInfo = {
|
||||
decls: string[];
|
||||
args: string[];
|
||||
};
|
||||
|
||||
function assert(condition: boolean, message: string) {
|
||||
if (!condition) {
|
||||
console.error(message);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Use ripgrep to find the filename + line number of the symbol's declaration is in the libuv headers
|
||||
* 2. Find the range of text which makes up the declaration
|
||||
* 3. Generate and return stub
|
||||
*/
|
||||
async function generate(symbol_name: string): Promise<[stub: string, symbol_name: string, types: TestInfo]> {
|
||||
console.log("Looking for", symbol_name);
|
||||
|
||||
const HEADER_PATH = import.meta.dir;
|
||||
|
||||
const output = await Bun.$`rg -n ${symbol_name + "\\("}`.cwd(HEADER_PATH).text();
|
||||
|
||||
if (!output.includes("UV_EXTERN")) {
|
||||
console.error("Symbol not found!");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
let matches: { filename: string; lineNumber: number; rest: string }[] = [];
|
||||
|
||||
const lines = output.split("\n");
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
const line = lines[i];
|
||||
const match = parseOutput(line);
|
||||
if (!match) continue;
|
||||
const { filename, lineNumber, rest } = match;
|
||||
if (!rest.includes("UV_EXTERN")) continue;
|
||||
|
||||
// ending in one line
|
||||
if (rest.indexOf(";") == rest.length - 1) {
|
||||
// console.log("Found single liner!");
|
||||
matches.push({ filename, lineNumber, rest });
|
||||
} else {
|
||||
const absoluteFilepath = join(HEADER_PATH, filename);
|
||||
const fileContents = await Bun.file(absoluteFilepath).text();
|
||||
console.log(absoluteFilepath, "Found multi-liner!", lineNumber);
|
||||
const fileLines = fileContents.split("\n");
|
||||
let found = false;
|
||||
let j = lineNumber;
|
||||
while (j < fileLines.length) {
|
||||
if (fileLines[j].indexOf(";") == fileLines[j].length - 1) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
console.log("j", j);
|
||||
j++;
|
||||
}
|
||||
if (!found) {
|
||||
console.error("Multi-liner end not found!");
|
||||
process.exit(1);
|
||||
}
|
||||
const multiLine = fileLines.slice(lineNumber, j + 1).join("\n");
|
||||
console.log(`MULTILINE (${lineNumber} -> ${j + 1})`);
|
||||
matches.push({ filename, lineNumber, rest: multiLine });
|
||||
// console.log(matches[matches.length - 1]);
|
||||
i = j;
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.length !== 1) {
|
||||
console.error("Found", matches.length, "matches!");
|
||||
console.error(matches);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const { filename, lineNumber, rest } = matches[0];
|
||||
|
||||
function extractParameterTypes(decl: string): TestInfo {
|
||||
if (overrides[symbol_name]) return overrides[symbol_name];
|
||||
console.log("DECL", decl);
|
||||
decl = decl.replace("UV_EXTERN", "");
|
||||
const rootNode = parser.parse(decl).rootNode;
|
||||
assert(rootNode.children[0].type === "declaration", "Root node must be a declaration");
|
||||
const declNode = rootNode.children[0];
|
||||
console.log("DECL NODE", declNode.children);
|
||||
let functionDeclNode = declNode.children.find(n => n.type === "function_declarator")!;
|
||||
// it can be a PointerDeclaratorNode:
|
||||
// uv_loop_t* uv_default_loop
|
||||
if (!functionDeclNode) {
|
||||
const pointerDeclaratorNode = declNode.children.find(n => n.type === "pointer_declarator")!;
|
||||
assert(!!pointerDeclaratorNode, "Pointer declarator not found");
|
||||
console.log("POINTER DECLARATOR", pointerDeclaratorNode.children);
|
||||
functionDeclNode = pointerDeclaratorNode.children.find(n => n.type === "function_declarator")!;
|
||||
}
|
||||
assert(!!functionDeclNode, "Function declarator not found");
|
||||
const parameterListNode = functionDeclNode.children.find(n => n.type === "parameter_list")!;
|
||||
assert(!!parameterListNode, "Parameter list not found");
|
||||
const parameterDeclarationNodes = parameterListNode.children.filter(n => n.type === "parameter_declaration")!;
|
||||
assert(parameterDeclarationNodes.length > 0, "Must have exactly one parameter declaration");
|
||||
|
||||
let decls: string[] = [];
|
||||
let args: string[] = [];
|
||||
|
||||
let i = 0;
|
||||
for (const parameterDeclarationNode of parameterDeclarationNodes) {
|
||||
console.log("PARAM", parameterDeclarationNode.children.length, parameterDeclarationNode.text);
|
||||
const last_idx = parameterDeclarationNode.children.length - 1;
|
||||
const last = parameterDeclarationNode.children[last_idx];
|
||||
if (last.type === "primitive_type") {
|
||||
if (last.text === "void") {
|
||||
decls.push("(void) 0");
|
||||
args.push("void");
|
||||
continue;
|
||||
}
|
||||
const arg = `arg${i++}`;
|
||||
decls.push(`${last.text} ${arg}`);
|
||||
args.push(arg);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (last.type === "array_declarator") {
|
||||
const arg = `arg${i++}`;
|
||||
const ident = last.children[0].text;
|
||||
const array_declarator = last.children
|
||||
.slice(1)
|
||||
.map(n => n.text)
|
||||
.join("");
|
||||
const type = parameterDeclarationNode.children
|
||||
.slice(0, last_idx)
|
||||
.map(n => n.text)
|
||||
.join(" ");
|
||||
console.log("IDENT", ident, "TYPE", type, "ARRAY DECLARATOR", array_declarator);
|
||||
decls.push(`${type} *${arg}`);
|
||||
args.push(arg);
|
||||
continue;
|
||||
}
|
||||
|
||||
// function pointer
|
||||
if (last.type === "function_declarator") {
|
||||
console.log("FUNCTION DECLARATOR", last.children);
|
||||
const return_ty = parameterDeclarationNode.children[0].text;
|
||||
// console.log("LMAO", );
|
||||
const arg = `arg${i++}`;
|
||||
const param_list = last.children[1];
|
||||
if (param_list.type !== "parameter_list") {
|
||||
throw new Error("expect param list man");
|
||||
}
|
||||
args.push(arg);
|
||||
const decl = `${return_ty} (*${arg})${param_list.text}`;
|
||||
decls.push(decl);
|
||||
continue;
|
||||
}
|
||||
|
||||
assert(
|
||||
last.type === "identifier" || last.type === "pointer_declarator" || last.type === "abstract_pointer_declarator", // ||
|
||||
// last.type === "array_declarator",
|
||||
`${symbol_name} Inalid param type, but got: ` + last.type,
|
||||
);
|
||||
|
||||
let type = "";
|
||||
for (let i = 0; i < last_idx; i++) {
|
||||
type += parameterDeclarationNode.children[i].text;
|
||||
type += " ";
|
||||
}
|
||||
|
||||
console.log(type, "LAST TYPE lol", last.type);
|
||||
if (last.type === "pointer_declarator" || last.type === "abstract_pointer_declarator") {
|
||||
let cur = last;
|
||||
do {
|
||||
type += "*";
|
||||
assert(cur.children[0].type === "*", "Pointer declarator must have a *");
|
||||
cur = cur.children[1];
|
||||
} while (!!cur && cur.type === "pointer_declarator" && cur.children.length > 0);
|
||||
}
|
||||
|
||||
const arg = `arg${i++}`;
|
||||
decls.push(`${type} ${arg}`);
|
||||
args.push(arg);
|
||||
}
|
||||
|
||||
// function extractParam(node: Parser.SyntaxNode): [decl: string, arg: string] {}
|
||||
|
||||
return { decls, args };
|
||||
}
|
||||
|
||||
function addStub(symbolName: string, decl: string): [stub: string, symbol_name: string, types: TestInfo] {
|
||||
assert(decl.includes("UV_EXTERN"), "Must include UV_EXTERN: \n" + decl);
|
||||
|
||||
const types = extractParameterTypes(decl);
|
||||
types.decls = types.decls.map(d => d + ";");
|
||||
if (types.args.length === 1 && types.args[0] === "void") {
|
||||
types.decls = [];
|
||||
types.args = [];
|
||||
}
|
||||
|
||||
const decl_without_semicolon = decl.replaceAll(";", "").trim();
|
||||
console.log(decl_without_semicolon);
|
||||
|
||||
const contents = `${decl_without_semicolon} {
|
||||
__bun_throw_not_implemented("${symbolName}");
|
||||
__builtin_unreachable();
|
||||
}`;
|
||||
|
||||
// await Bun.write(stubPath, contents);
|
||||
return [contents, symbolName, types];
|
||||
}
|
||||
|
||||
function parseOutput(line: string): { filename: string; lineNumber: number; rest: string } | null {
|
||||
// Match pattern: filename:linenumber:rest
|
||||
const match = line.match(/^([^:]+):(\d+):(.*)$/);
|
||||
|
||||
if (!match) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
filename: match[1],
|
||||
lineNumber: parseInt(match[2], 10) - 1,
|
||||
rest: match[3],
|
||||
};
|
||||
}
|
||||
|
||||
return addStub(symbol_name, rest);
|
||||
}
|
||||
|
||||
// const symbols = ["uv_async_init"];
|
||||
|
||||
if (!Bun.which("rg")) {
|
||||
console.error("You need ripgrep bro");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
for (const symbol of symbols) {
|
||||
await generate(symbol);
|
||||
}
|
||||
|
||||
let parts = await Promise.all(symbols.map(s => generate(s)));
|
||||
|
||||
const final_contents = `// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
#include "uv-posix-polyfills.h"
|
||||
|
||||
|
||||
#if OS(LINUX) || OS(DARWIN)
|
||||
${parts.map(([stub, _]) => stub).join("\n\n")}
|
||||
#endif
|
||||
|
||||
`;
|
||||
|
||||
await Bun.write(join(import.meta.dir, "../", "uv-posix-stubs.cpp"), final_contents);
|
||||
if (Bun.which("clang-format")) {
|
||||
await Bun.$`clang-format -i ${join(import.meta.dir, "../", "uv-posix-stubs.cpp")}`;
|
||||
}
|
||||
|
||||
const test_plugin_contents = ` // GENERATED CODE ... NO TOUCHY!!
|
||||
#include <node_api.h>
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <uv.h>
|
||||
|
||||
napi_value call_uv_func(napi_env env, napi_callback_info info) {
|
||||
napi_status status;
|
||||
|
||||
size_t argc = 2;
|
||||
napi_value args[2];
|
||||
status = napi_get_cb_info(env, info, &argc, args, NULL, NULL);
|
||||
if (status != napi_ok) {
|
||||
napi_throw_error(env, NULL, "Failed to parse arguments");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (argc < 1) {
|
||||
napi_throw_error(env, NULL, "Wrong number of arguments");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
napi_value arg = args[0];
|
||||
char buffer[256];
|
||||
size_t buffer_size = sizeof(buffer);
|
||||
size_t copied;
|
||||
|
||||
status = napi_get_value_string_utf8(env, arg, buffer, buffer_size, &copied);
|
||||
if (status != napi_ok) {
|
||||
napi_throw_error(env, NULL, "Failed to get string value");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buffer[copied] = '\\0';
|
||||
printf("Got string: %s\\n", buffer);
|
||||
|
||||
${parts
|
||||
.map(([_, symbol_name, types]) => {
|
||||
if (test_skipped.includes(symbol_name)) return "";
|
||||
return `
|
||||
if (strcmp(buffer, "${symbol_name}") == 0) {
|
||||
${types.decls.join("\n")}
|
||||
|
||||
${symbol_name}(${types.args.join(", ")});
|
||||
return NULL;
|
||||
}
|
||||
`;
|
||||
})
|
||||
.join("\n\n")}
|
||||
|
||||
napi_throw_error(env, NULL, "Function not found");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
napi_value Init(napi_env env, napi_value exports) {
|
||||
napi_status status;
|
||||
napi_value fn_call_uv_func;
|
||||
|
||||
// Register call_uv_func function
|
||||
status =
|
||||
napi_create_function(env, NULL, 0, call_uv_func, NULL, &fn_call_uv_func);
|
||||
if (status != napi_ok) {
|
||||
napi_throw_error(env, NULL, "Failed to create call_uv_func function");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
status = napi_set_named_property(env, exports, "callUVFunc", fn_call_uv_func);
|
||||
if (status != napi_ok) {
|
||||
napi_throw_error(env, NULL,
|
||||
"Failed to add call_uv_func function to exports");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return exports;
|
||||
}
|
||||
|
||||
NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)
|
||||
`;
|
||||
|
||||
const plugin_path_ = join(import.meta.dir, "../", "../", "test", "napi", "uv-stub-stuff", "plugin.c");
|
||||
await Bun.write(plugin_path_, test_plugin_contents);
|
||||
|
||||
if (Bun.which("clang-format")) {
|
||||
await Bun.$`clang-format -i ${plugin_path_}`.quiet();
|
||||
}
|
||||
|
||||
// for (const symbol of symbols) {
|
||||
// await generate("uv_if_indextoiid");
|
||||
// }
|
||||
|
||||
// console.log("DONE");
|
||||
335
src/bun.js/bindings/libuv/generate_uv_posix_stubs_constants.ts
Normal file
335
src/bun.js/bindings/libuv/generate_uv_posix_stubs_constants.ts
Normal file
@@ -0,0 +1,335 @@
|
||||
export const test_skipped = [
|
||||
"uv_getrusage_thread",
|
||||
"uv_thread_detach",
|
||||
"uv_thread_getname",
|
||||
"uv_thread_getpriority",
|
||||
"uv_thread_setname",
|
||||
"uv_udp_try_send2",
|
||||
"uv_utf16_length_as_wtf8",
|
||||
"uv_utf16_to_wtf8",
|
||||
"uv_wtf8_length_as_utf16",
|
||||
"uv_wtf8_to_utf16",
|
||||
"uv_thread_setpriority",
|
||||
];
|
||||
|
||||
export const symbols = [
|
||||
"uv_accept",
|
||||
"uv_async_init",
|
||||
"uv_async_send",
|
||||
"uv_available_parallelism",
|
||||
"uv_backend_fd",
|
||||
"uv_backend_timeout",
|
||||
"uv_barrier_destroy",
|
||||
"uv_barrier_init",
|
||||
"uv_barrier_wait",
|
||||
"uv_buf_init",
|
||||
"uv_cancel",
|
||||
"uv_chdir",
|
||||
"uv_check_init",
|
||||
"uv_check_start",
|
||||
"uv_check_stop",
|
||||
"uv_clock_gettime",
|
||||
"uv_close",
|
||||
"uv_cond_broadcast",
|
||||
"uv_cond_destroy",
|
||||
"uv_cond_init",
|
||||
"uv_cond_signal",
|
||||
"uv_cond_timedwait",
|
||||
"uv_cond_wait",
|
||||
"uv_cpu_info",
|
||||
"uv_cpumask_size",
|
||||
"uv_cwd",
|
||||
"uv_default_loop",
|
||||
"uv_disable_stdio_inheritance",
|
||||
"uv_dlclose",
|
||||
"uv_dlerror",
|
||||
"uv_dlopen",
|
||||
"uv_dlsym",
|
||||
"uv_err_name",
|
||||
"uv_err_name_r",
|
||||
"uv_exepath",
|
||||
"uv_fileno",
|
||||
"uv_free_cpu_info",
|
||||
"uv_free_interface_addresses",
|
||||
"uv_freeaddrinfo",
|
||||
"uv_fs_access",
|
||||
"uv_fs_chmod",
|
||||
"uv_fs_chown",
|
||||
"uv_fs_close",
|
||||
"uv_fs_closedir",
|
||||
"uv_fs_copyfile",
|
||||
"uv_fs_event_getpath",
|
||||
"uv_fs_event_init",
|
||||
"uv_fs_event_start",
|
||||
"uv_fs_event_stop",
|
||||
"uv_fs_fchmod",
|
||||
"uv_fs_fchown",
|
||||
"uv_fs_fdatasync",
|
||||
"uv_fs_fstat",
|
||||
"uv_fs_fsync",
|
||||
"uv_fs_ftruncate",
|
||||
"uv_fs_futime",
|
||||
"uv_fs_get_path",
|
||||
"uv_fs_get_ptr",
|
||||
"uv_fs_get_result",
|
||||
"uv_fs_get_statbuf",
|
||||
"uv_fs_get_system_error",
|
||||
"uv_fs_get_type",
|
||||
"uv_fs_lchown",
|
||||
"uv_fs_link",
|
||||
"uv_fs_lstat",
|
||||
"uv_fs_lutime",
|
||||
"uv_fs_mkdir",
|
||||
"uv_fs_mkdtemp",
|
||||
"uv_fs_mkstemp",
|
||||
"uv_fs_open",
|
||||
"uv_fs_opendir",
|
||||
"uv_fs_poll_getpath",
|
||||
"uv_fs_poll_init",
|
||||
"uv_fs_poll_start",
|
||||
"uv_fs_poll_stop",
|
||||
"uv_fs_read",
|
||||
"uv_fs_readdir",
|
||||
"uv_fs_readlink",
|
||||
"uv_fs_realpath",
|
||||
"uv_fs_rename",
|
||||
"uv_fs_req_cleanup",
|
||||
"uv_fs_rmdir",
|
||||
"uv_fs_scandir",
|
||||
"uv_fs_scandir_next",
|
||||
"uv_fs_sendfile",
|
||||
"uv_fs_stat",
|
||||
"uv_fs_statfs",
|
||||
"uv_fs_symlink",
|
||||
"uv_fs_unlink",
|
||||
"uv_fs_utime",
|
||||
"uv_fs_write",
|
||||
"uv_get_available_memory",
|
||||
"uv_get_constrained_memory",
|
||||
"uv_get_free_memory",
|
||||
"uv_get_osfhandle",
|
||||
"uv_get_process_title",
|
||||
"uv_get_total_memory",
|
||||
"uv_getaddrinfo",
|
||||
"uv_getnameinfo",
|
||||
"uv_getrusage",
|
||||
"uv_getrusage_thread",
|
||||
"uv_gettimeofday",
|
||||
"uv_guess_handle",
|
||||
"uv_handle_get_data",
|
||||
"uv_handle_get_loop",
|
||||
"uv_handle_get_type",
|
||||
"uv_handle_set_data",
|
||||
"uv_handle_size",
|
||||
"uv_handle_type_name",
|
||||
"uv_has_ref",
|
||||
"uv_hrtime",
|
||||
"uv_idle_init",
|
||||
"uv_idle_start",
|
||||
"uv_idle_stop",
|
||||
"uv_if_indextoiid",
|
||||
"uv_if_indextoname",
|
||||
"uv_inet_ntop",
|
||||
"uv_inet_pton",
|
||||
"uv_interface_addresses",
|
||||
"uv_ip4_addr",
|
||||
"uv_ip4_name",
|
||||
"uv_ip6_addr",
|
||||
"uv_ip6_name",
|
||||
"uv_ip_name",
|
||||
"uv_is_active",
|
||||
"uv_is_closing",
|
||||
"uv_is_readable",
|
||||
"uv_is_writable",
|
||||
"uv_key_create",
|
||||
"uv_key_delete",
|
||||
"uv_key_get",
|
||||
"uv_key_set",
|
||||
"uv_kill",
|
||||
"uv_library_shutdown",
|
||||
"uv_listen",
|
||||
"uv_loadavg",
|
||||
"uv_loop_alive",
|
||||
"uv_loop_close",
|
||||
"uv_loop_configure",
|
||||
"uv_loop_delete",
|
||||
"uv_loop_fork",
|
||||
"uv_loop_get_data",
|
||||
"uv_loop_init",
|
||||
"uv_loop_new",
|
||||
"uv_loop_set_data",
|
||||
"uv_loop_size",
|
||||
"uv_metrics_idle_time",
|
||||
"uv_metrics_info",
|
||||
"uv_mutex_destroy",
|
||||
"uv_mutex_init",
|
||||
"uv_mutex_init_recursive",
|
||||
"uv_mutex_lock",
|
||||
"uv_mutex_trylock",
|
||||
"uv_mutex_unlock",
|
||||
"uv_now",
|
||||
"uv_once",
|
||||
"uv_open_osfhandle",
|
||||
"uv_os_environ",
|
||||
"uv_os_free_environ",
|
||||
"uv_os_free_group",
|
||||
"uv_os_free_passwd",
|
||||
"uv_os_get_group",
|
||||
"uv_os_get_passwd",
|
||||
"uv_os_get_passwd2",
|
||||
"uv_os_getenv",
|
||||
"uv_os_gethostname",
|
||||
// Defined in uv-posix-polyfills.cpp
|
||||
// "uv_os_getpid",
|
||||
// Defined in uv-posix-polyfills.cpp
|
||||
// "uv_os_getppid",
|
||||
"uv_os_getpriority",
|
||||
"uv_os_homedir",
|
||||
"uv_os_setenv",
|
||||
"uv_os_setpriority",
|
||||
"uv_os_tmpdir",
|
||||
"uv_os_uname",
|
||||
"uv_os_unsetenv",
|
||||
"uv_pipe",
|
||||
"uv_pipe_bind",
|
||||
"uv_pipe_bind2",
|
||||
"uv_pipe_chmod",
|
||||
"uv_pipe_connect",
|
||||
"uv_pipe_connect2",
|
||||
"uv_pipe_getpeername",
|
||||
"uv_pipe_getsockname",
|
||||
"uv_pipe_init",
|
||||
"uv_pipe_open",
|
||||
"uv_pipe_pending_count",
|
||||
"uv_pipe_pending_instances",
|
||||
"uv_pipe_pending_type",
|
||||
"uv_poll_init",
|
||||
"uv_poll_init_socket",
|
||||
"uv_poll_start",
|
||||
"uv_poll_stop",
|
||||
"uv_prepare_init",
|
||||
"uv_prepare_start",
|
||||
"uv_prepare_stop",
|
||||
"uv_print_active_handles",
|
||||
"uv_print_all_handles",
|
||||
"uv_process_get_pid",
|
||||
"uv_process_kill",
|
||||
"uv_queue_work",
|
||||
"uv_random",
|
||||
"uv_read_start",
|
||||
"uv_read_stop",
|
||||
"uv_recv_buffer_size",
|
||||
"uv_ref",
|
||||
"uv_replace_allocator",
|
||||
"uv_req_get_data",
|
||||
"uv_req_get_type",
|
||||
"uv_req_set_data",
|
||||
"uv_req_size",
|
||||
"uv_req_type_name",
|
||||
"uv_resident_set_memory",
|
||||
"uv_run",
|
||||
"uv_rwlock_destroy",
|
||||
"uv_rwlock_init",
|
||||
"uv_rwlock_rdlock",
|
||||
"uv_rwlock_rdunlock",
|
||||
"uv_rwlock_tryrdlock",
|
||||
"uv_rwlock_trywrlock",
|
||||
"uv_rwlock_wrlock",
|
||||
"uv_rwlock_wrunlock",
|
||||
"uv_sem_destroy",
|
||||
"uv_sem_init",
|
||||
"uv_sem_post",
|
||||
"uv_sem_trywait",
|
||||
"uv_sem_wait",
|
||||
"uv_send_buffer_size",
|
||||
"uv_set_process_title",
|
||||
"uv_setup_args",
|
||||
"uv_shutdown",
|
||||
"uv_signal_init",
|
||||
"uv_signal_start",
|
||||
"uv_signal_start_oneshot",
|
||||
"uv_signal_stop",
|
||||
"uv_sleep",
|
||||
"uv_socketpair",
|
||||
"uv_spawn",
|
||||
"uv_stop",
|
||||
"uv_stream_get_write_queue_size",
|
||||
"uv_stream_set_blocking",
|
||||
"uv_strerror",
|
||||
"uv_strerror_r",
|
||||
"uv_tcp_bind",
|
||||
"uv_tcp_close_reset",
|
||||
"uv_tcp_connect",
|
||||
"uv_tcp_getpeername",
|
||||
"uv_tcp_getsockname",
|
||||
"uv_tcp_init",
|
||||
"uv_tcp_init_ex",
|
||||
"uv_tcp_keepalive",
|
||||
"uv_tcp_nodelay",
|
||||
"uv_tcp_open",
|
||||
"uv_tcp_simultaneous_accepts",
|
||||
"uv_thread_create",
|
||||
"uv_thread_create_ex",
|
||||
"uv_thread_detach",
|
||||
"uv_thread_equal",
|
||||
"uv_thread_getaffinity",
|
||||
"uv_thread_getcpu",
|
||||
"uv_thread_getname",
|
||||
"uv_thread_getpriority",
|
||||
"uv_thread_join",
|
||||
"uv_thread_self",
|
||||
"uv_thread_setaffinity",
|
||||
"uv_thread_setname",
|
||||
"uv_thread_setpriority",
|
||||
"uv_timer_again",
|
||||
"uv_timer_get_due_in",
|
||||
"uv_timer_get_repeat",
|
||||
"uv_timer_init",
|
||||
"uv_timer_set_repeat",
|
||||
"uv_timer_start",
|
||||
"uv_timer_stop",
|
||||
"uv_translate_sys_error",
|
||||
"uv_try_write",
|
||||
"uv_try_write2",
|
||||
"uv_tty_get_vterm_state",
|
||||
"uv_tty_get_winsize",
|
||||
"uv_tty_init",
|
||||
// Defined in wtf-bindings.cpp
|
||||
// "uv_tty_reset_mode",
|
||||
"uv_tty_set_mode",
|
||||
"uv_tty_set_vterm_state",
|
||||
"uv_udp_bind",
|
||||
"uv_udp_connect",
|
||||
"uv_udp_get_send_queue_count",
|
||||
"uv_udp_get_send_queue_size",
|
||||
"uv_udp_getpeername",
|
||||
"uv_udp_getsockname",
|
||||
"uv_udp_init",
|
||||
"uv_udp_init_ex",
|
||||
"uv_udp_open",
|
||||
"uv_udp_recv_start",
|
||||
"uv_udp_recv_stop",
|
||||
"uv_udp_send",
|
||||
"uv_udp_set_broadcast",
|
||||
"uv_udp_set_membership",
|
||||
"uv_udp_set_multicast_interface",
|
||||
"uv_udp_set_multicast_loop",
|
||||
"uv_udp_set_multicast_ttl",
|
||||
"uv_udp_set_source_membership",
|
||||
"uv_udp_set_ttl",
|
||||
"uv_udp_try_send",
|
||||
"uv_udp_try_send2",
|
||||
"uv_udp_using_recvmmsg",
|
||||
"uv_unref",
|
||||
"uv_update_time",
|
||||
"uv_uptime",
|
||||
"uv_utf16_length_as_wtf8",
|
||||
"uv_utf16_to_wtf8",
|
||||
"uv_version",
|
||||
"uv_version_string",
|
||||
"uv_walk",
|
||||
"uv_write",
|
||||
"uv_write2",
|
||||
"uv_wtf8_length_as_utf16",
|
||||
"uv_wtf8_to_utf16",
|
||||
];
|
||||
6
src/bun.js/bindings/libuv/package.json
Normal file
6
src/bun.js/bindings/libuv/package.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"tree-sitter": "^0.22.4",
|
||||
"tree-sitter-c": "^0.23.5"
|
||||
}
|
||||
}
|
||||
1990
src/bun.js/bindings/libuv/uv.h
Normal file
1990
src/bun.js/bindings/libuv/uv.h
Normal file
File diff suppressed because it is too large
Load Diff
32
src/bun.js/bindings/libuv/uv/aix.h
Normal file
32
src/bun.js/bindings/libuv/uv/aix.h
Normal file
@@ -0,0 +1,32 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_AIX_H
|
||||
#define UV_AIX_H
|
||||
|
||||
#define UV_PLATFORM_LOOP_FIELDS \
|
||||
int fs_fd; \
|
||||
|
||||
#define UV_PLATFORM_FS_EVENT_FIELDS \
|
||||
uv__io_t event_watcher; \
|
||||
char *dir_filename; \
|
||||
|
||||
#endif /* UV_AIX_H */
|
||||
34
src/bun.js/bindings/libuv/uv/bsd.h
Normal file
34
src/bun.js/bindings/libuv/uv/bsd.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_BSD_H
|
||||
#define UV_BSD_H
|
||||
|
||||
#define UV_PLATFORM_FS_EVENT_FIELDS \
|
||||
uv__io_t event_watcher; \
|
||||
|
||||
#define UV_IO_PRIVATE_PLATFORM_FIELDS \
|
||||
int rcount; \
|
||||
int wcount; \
|
||||
|
||||
#define UV_HAVE_KQUEUE 1
|
||||
|
||||
#endif /* UV_BSD_H */
|
||||
61
src/bun.js/bindings/libuv/uv/darwin.h
Normal file
61
src/bun.js/bindings/libuv/uv/darwin.h
Normal file
@@ -0,0 +1,61 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_DARWIN_H
|
||||
#define UV_DARWIN_H
|
||||
|
||||
#if defined(__APPLE__) && defined(__MACH__)
|
||||
# include <mach/mach.h>
|
||||
# include <mach/task.h>
|
||||
# include <mach/semaphore.h>
|
||||
# include <TargetConditionals.h>
|
||||
# define UV_PLATFORM_SEM_T semaphore_t
|
||||
#endif
|
||||
|
||||
#define UV_IO_PRIVATE_PLATFORM_FIELDS \
|
||||
int rcount; \
|
||||
int wcount; \
|
||||
|
||||
#define UV_PLATFORM_LOOP_FIELDS \
|
||||
uv_thread_t cf_thread; \
|
||||
void* _cf_reserved; \
|
||||
void* cf_state; \
|
||||
uv_mutex_t cf_mutex; \
|
||||
uv_sem_t cf_sem; \
|
||||
struct uv__queue cf_signals; \
|
||||
|
||||
#define UV_PLATFORM_FS_EVENT_FIELDS \
|
||||
uv__io_t event_watcher; \
|
||||
char* realpath; \
|
||||
int realpath_len; \
|
||||
int cf_flags; \
|
||||
uv_async_t* cf_cb; \
|
||||
struct uv__queue cf_events; \
|
||||
struct uv__queue cf_member; \
|
||||
int cf_error; \
|
||||
uv_mutex_t cf_mutex; \
|
||||
|
||||
#define UV_STREAM_PRIVATE_PLATFORM_FIELDS \
|
||||
void* select; \
|
||||
|
||||
#define UV_HAVE_KQUEUE 1
|
||||
|
||||
#endif /* UV_DARWIN_H */
|
||||
483
src/bun.js/bindings/libuv/uv/errno.h
Normal file
483
src/bun.js/bindings/libuv/uv/errno.h
Normal file
@@ -0,0 +1,483 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_ERRNO_H_
|
||||
#define UV_ERRNO_H_
|
||||
|
||||
#include <errno.h>
|
||||
#if EDOM > 0
|
||||
# define UV__ERR(x) (-(x))
|
||||
#else
|
||||
# define UV__ERR(x) (x)
|
||||
#endif
|
||||
|
||||
#define UV__EOF (-4095)
|
||||
#define UV__UNKNOWN (-4094)
|
||||
|
||||
#define UV__EAI_ADDRFAMILY (-3000)
|
||||
#define UV__EAI_AGAIN (-3001)
|
||||
#define UV__EAI_BADFLAGS (-3002)
|
||||
#define UV__EAI_CANCELED (-3003)
|
||||
#define UV__EAI_FAIL (-3004)
|
||||
#define UV__EAI_FAMILY (-3005)
|
||||
#define UV__EAI_MEMORY (-3006)
|
||||
#define UV__EAI_NODATA (-3007)
|
||||
#define UV__EAI_NONAME (-3008)
|
||||
#define UV__EAI_OVERFLOW (-3009)
|
||||
#define UV__EAI_SERVICE (-3010)
|
||||
#define UV__EAI_SOCKTYPE (-3011)
|
||||
#define UV__EAI_BADHINTS (-3013)
|
||||
#define UV__EAI_PROTOCOL (-3014)
|
||||
|
||||
/* Only map to the system errno on non-Windows platforms. It's apparently
|
||||
* a fairly common practice for Windows programmers to redefine errno codes.
|
||||
*/
|
||||
#if defined(E2BIG) && !defined(_WIN32)
|
||||
# define UV__E2BIG UV__ERR(E2BIG)
|
||||
#else
|
||||
# define UV__E2BIG (-4093)
|
||||
#endif
|
||||
|
||||
#if defined(EACCES) && !defined(_WIN32)
|
||||
# define UV__EACCES UV__ERR(EACCES)
|
||||
#else
|
||||
# define UV__EACCES (-4092)
|
||||
#endif
|
||||
|
||||
#if defined(EADDRINUSE) && !defined(_WIN32)
|
||||
# define UV__EADDRINUSE UV__ERR(EADDRINUSE)
|
||||
#else
|
||||
# define UV__EADDRINUSE (-4091)
|
||||
#endif
|
||||
|
||||
#if defined(EADDRNOTAVAIL) && !defined(_WIN32)
|
||||
# define UV__EADDRNOTAVAIL UV__ERR(EADDRNOTAVAIL)
|
||||
#else
|
||||
# define UV__EADDRNOTAVAIL (-4090)
|
||||
#endif
|
||||
|
||||
#if defined(EAFNOSUPPORT) && !defined(_WIN32)
|
||||
# define UV__EAFNOSUPPORT UV__ERR(EAFNOSUPPORT)
|
||||
#else
|
||||
# define UV__EAFNOSUPPORT (-4089)
|
||||
#endif
|
||||
|
||||
#if defined(EAGAIN) && !defined(_WIN32)
|
||||
# define UV__EAGAIN UV__ERR(EAGAIN)
|
||||
#else
|
||||
# define UV__EAGAIN (-4088)
|
||||
#endif
|
||||
|
||||
#if defined(EALREADY) && !defined(_WIN32)
|
||||
# define UV__EALREADY UV__ERR(EALREADY)
|
||||
#else
|
||||
# define UV__EALREADY (-4084)
|
||||
#endif
|
||||
|
||||
#if defined(EBADF) && !defined(_WIN32)
|
||||
# define UV__EBADF UV__ERR(EBADF)
|
||||
#else
|
||||
# define UV__EBADF (-4083)
|
||||
#endif
|
||||
|
||||
#if defined(EBUSY) && !defined(_WIN32)
|
||||
# define UV__EBUSY UV__ERR(EBUSY)
|
||||
#else
|
||||
# define UV__EBUSY (-4082)
|
||||
#endif
|
||||
|
||||
#if defined(ECANCELED) && !defined(_WIN32)
|
||||
# define UV__ECANCELED UV__ERR(ECANCELED)
|
||||
#else
|
||||
# define UV__ECANCELED (-4081)
|
||||
#endif
|
||||
|
||||
#if defined(ECHARSET) && !defined(_WIN32)
|
||||
# define UV__ECHARSET UV__ERR(ECHARSET)
|
||||
#else
|
||||
# define UV__ECHARSET (-4080)
|
||||
#endif
|
||||
|
||||
#if defined(ECONNABORTED) && !defined(_WIN32)
|
||||
# define UV__ECONNABORTED UV__ERR(ECONNABORTED)
|
||||
#else
|
||||
# define UV__ECONNABORTED (-4079)
|
||||
#endif
|
||||
|
||||
#if defined(ECONNREFUSED) && !defined(_WIN32)
|
||||
# define UV__ECONNREFUSED UV__ERR(ECONNREFUSED)
|
||||
#else
|
||||
# define UV__ECONNREFUSED (-4078)
|
||||
#endif
|
||||
|
||||
#if defined(ECONNRESET) && !defined(_WIN32)
|
||||
# define UV__ECONNRESET UV__ERR(ECONNRESET)
|
||||
#else
|
||||
# define UV__ECONNRESET (-4077)
|
||||
#endif
|
||||
|
||||
#if defined(EDESTADDRREQ) && !defined(_WIN32)
|
||||
# define UV__EDESTADDRREQ UV__ERR(EDESTADDRREQ)
|
||||
#else
|
||||
# define UV__EDESTADDRREQ (-4076)
|
||||
#endif
|
||||
|
||||
#if defined(EEXIST) && !defined(_WIN32)
|
||||
# define UV__EEXIST UV__ERR(EEXIST)
|
||||
#else
|
||||
# define UV__EEXIST (-4075)
|
||||
#endif
|
||||
|
||||
#if defined(EFAULT) && !defined(_WIN32)
|
||||
# define UV__EFAULT UV__ERR(EFAULT)
|
||||
#else
|
||||
# define UV__EFAULT (-4074)
|
||||
#endif
|
||||
|
||||
#if defined(EHOSTUNREACH) && !defined(_WIN32)
|
||||
# define UV__EHOSTUNREACH UV__ERR(EHOSTUNREACH)
|
||||
#else
|
||||
# define UV__EHOSTUNREACH (-4073)
|
||||
#endif
|
||||
|
||||
#if defined(EINTR) && !defined(_WIN32)
|
||||
# define UV__EINTR UV__ERR(EINTR)
|
||||
#else
|
||||
# define UV__EINTR (-4072)
|
||||
#endif
|
||||
|
||||
#if defined(EINVAL) && !defined(_WIN32)
|
||||
# define UV__EINVAL UV__ERR(EINVAL)
|
||||
#else
|
||||
# define UV__EINVAL (-4071)
|
||||
#endif
|
||||
|
||||
#if defined(EIO) && !defined(_WIN32)
|
||||
# define UV__EIO UV__ERR(EIO)
|
||||
#else
|
||||
# define UV__EIO (-4070)
|
||||
#endif
|
||||
|
||||
#if defined(EISCONN) && !defined(_WIN32)
|
||||
# define UV__EISCONN UV__ERR(EISCONN)
|
||||
#else
|
||||
# define UV__EISCONN (-4069)
|
||||
#endif
|
||||
|
||||
#if defined(EISDIR) && !defined(_WIN32)
|
||||
# define UV__EISDIR UV__ERR(EISDIR)
|
||||
#else
|
||||
# define UV__EISDIR (-4068)
|
||||
#endif
|
||||
|
||||
#if defined(ELOOP) && !defined(_WIN32)
|
||||
# define UV__ELOOP UV__ERR(ELOOP)
|
||||
#else
|
||||
# define UV__ELOOP (-4067)
|
||||
#endif
|
||||
|
||||
#if defined(EMFILE) && !defined(_WIN32)
|
||||
# define UV__EMFILE UV__ERR(EMFILE)
|
||||
#else
|
||||
# define UV__EMFILE (-4066)
|
||||
#endif
|
||||
|
||||
#if defined(EMSGSIZE) && !defined(_WIN32)
|
||||
# define UV__EMSGSIZE UV__ERR(EMSGSIZE)
|
||||
#else
|
||||
# define UV__EMSGSIZE (-4065)
|
||||
#endif
|
||||
|
||||
#if defined(ENAMETOOLONG) && !defined(_WIN32)
|
||||
# define UV__ENAMETOOLONG UV__ERR(ENAMETOOLONG)
|
||||
#else
|
||||
# define UV__ENAMETOOLONG (-4064)
|
||||
#endif
|
||||
|
||||
#if defined(ENETDOWN) && !defined(_WIN32)
|
||||
# define UV__ENETDOWN UV__ERR(ENETDOWN)
|
||||
#else
|
||||
# define UV__ENETDOWN (-4063)
|
||||
#endif
|
||||
|
||||
#if defined(ENETUNREACH) && !defined(_WIN32)
|
||||
# define UV__ENETUNREACH UV__ERR(ENETUNREACH)
|
||||
#else
|
||||
# define UV__ENETUNREACH (-4062)
|
||||
#endif
|
||||
|
||||
#if defined(ENFILE) && !defined(_WIN32)
|
||||
# define UV__ENFILE UV__ERR(ENFILE)
|
||||
#else
|
||||
# define UV__ENFILE (-4061)
|
||||
#endif
|
||||
|
||||
#if defined(ENOBUFS) && !defined(_WIN32)
|
||||
# define UV__ENOBUFS UV__ERR(ENOBUFS)
|
||||
#else
|
||||
# define UV__ENOBUFS (-4060)
|
||||
#endif
|
||||
|
||||
#if defined(ENODEV) && !defined(_WIN32)
|
||||
# define UV__ENODEV UV__ERR(ENODEV)
|
||||
#else
|
||||
# define UV__ENODEV (-4059)
|
||||
#endif
|
||||
|
||||
#if defined(ENOENT) && !defined(_WIN32)
|
||||
# define UV__ENOENT UV__ERR(ENOENT)
|
||||
#else
|
||||
# define UV__ENOENT (-4058)
|
||||
#endif
|
||||
|
||||
#if defined(ENOMEM) && !defined(_WIN32)
|
||||
# define UV__ENOMEM UV__ERR(ENOMEM)
|
||||
#else
|
||||
# define UV__ENOMEM (-4057)
|
||||
#endif
|
||||
|
||||
#if defined(ENONET) && !defined(_WIN32)
|
||||
# define UV__ENONET UV__ERR(ENONET)
|
||||
#else
|
||||
# define UV__ENONET (-4056)
|
||||
#endif
|
||||
|
||||
#if defined(ENOSPC) && !defined(_WIN32)
|
||||
# define UV__ENOSPC UV__ERR(ENOSPC)
|
||||
#else
|
||||
# define UV__ENOSPC (-4055)
|
||||
#endif
|
||||
|
||||
#if defined(ENOSYS) && !defined(_WIN32)
|
||||
# define UV__ENOSYS UV__ERR(ENOSYS)
|
||||
#else
|
||||
# define UV__ENOSYS (-4054)
|
||||
#endif
|
||||
|
||||
#if defined(ENOTCONN) && !defined(_WIN32)
|
||||
# define UV__ENOTCONN UV__ERR(ENOTCONN)
|
||||
#else
|
||||
# define UV__ENOTCONN (-4053)
|
||||
#endif
|
||||
|
||||
#if defined(ENOTDIR) && !defined(_WIN32)
|
||||
# define UV__ENOTDIR UV__ERR(ENOTDIR)
|
||||
#else
|
||||
# define UV__ENOTDIR (-4052)
|
||||
#endif
|
||||
|
||||
#if defined(ENOTEMPTY) && !defined(_WIN32)
|
||||
# define UV__ENOTEMPTY UV__ERR(ENOTEMPTY)
|
||||
#else
|
||||
# define UV__ENOTEMPTY (-4051)
|
||||
#endif
|
||||
|
||||
#if defined(ENOTSOCK) && !defined(_WIN32)
|
||||
# define UV__ENOTSOCK UV__ERR(ENOTSOCK)
|
||||
#else
|
||||
# define UV__ENOTSOCK (-4050)
|
||||
#endif
|
||||
|
||||
#if defined(ENOTSUP) && !defined(_WIN32)
|
||||
# define UV__ENOTSUP UV__ERR(ENOTSUP)
|
||||
#else
|
||||
# define UV__ENOTSUP (-4049)
|
||||
#endif
|
||||
|
||||
#if defined(EPERM) && !defined(_WIN32)
|
||||
# define UV__EPERM UV__ERR(EPERM)
|
||||
#else
|
||||
# define UV__EPERM (-4048)
|
||||
#endif
|
||||
|
||||
#if defined(EPIPE) && !defined(_WIN32)
|
||||
# define UV__EPIPE UV__ERR(EPIPE)
|
||||
#else
|
||||
# define UV__EPIPE (-4047)
|
||||
#endif
|
||||
|
||||
#if defined(EPROTO) && !defined(_WIN32)
|
||||
# define UV__EPROTO UV__ERR(EPROTO)
|
||||
#else
|
||||
# define UV__EPROTO (-4046)
|
||||
#endif
|
||||
|
||||
#if defined(EPROTONOSUPPORT) && !defined(_WIN32)
|
||||
# define UV__EPROTONOSUPPORT UV__ERR(EPROTONOSUPPORT)
|
||||
#else
|
||||
# define UV__EPROTONOSUPPORT (-4045)
|
||||
#endif
|
||||
|
||||
#if defined(EPROTOTYPE) && !defined(_WIN32)
|
||||
# define UV__EPROTOTYPE UV__ERR(EPROTOTYPE)
|
||||
#else
|
||||
# define UV__EPROTOTYPE (-4044)
|
||||
#endif
|
||||
|
||||
#if defined(EROFS) && !defined(_WIN32)
|
||||
# define UV__EROFS UV__ERR(EROFS)
|
||||
#else
|
||||
# define UV__EROFS (-4043)
|
||||
#endif
|
||||
|
||||
#if defined(ESHUTDOWN) && !defined(_WIN32)
|
||||
# define UV__ESHUTDOWN UV__ERR(ESHUTDOWN)
|
||||
#else
|
||||
# define UV__ESHUTDOWN (-4042)
|
||||
#endif
|
||||
|
||||
#if defined(ESPIPE) && !defined(_WIN32)
|
||||
# define UV__ESPIPE UV__ERR(ESPIPE)
|
||||
#else
|
||||
# define UV__ESPIPE (-4041)
|
||||
#endif
|
||||
|
||||
#if defined(ESRCH) && !defined(_WIN32)
|
||||
# define UV__ESRCH UV__ERR(ESRCH)
|
||||
#else
|
||||
# define UV__ESRCH (-4040)
|
||||
#endif
|
||||
|
||||
#if defined(ETIMEDOUT) && !defined(_WIN32)
|
||||
# define UV__ETIMEDOUT UV__ERR(ETIMEDOUT)
|
||||
#else
|
||||
# define UV__ETIMEDOUT (-4039)
|
||||
#endif
|
||||
|
||||
#if defined(ETXTBSY) && !defined(_WIN32)
|
||||
# define UV__ETXTBSY UV__ERR(ETXTBSY)
|
||||
#else
|
||||
# define UV__ETXTBSY (-4038)
|
||||
#endif
|
||||
|
||||
#if defined(EXDEV) && !defined(_WIN32)
|
||||
# define UV__EXDEV UV__ERR(EXDEV)
|
||||
#else
|
||||
# define UV__EXDEV (-4037)
|
||||
#endif
|
||||
|
||||
#if defined(EFBIG) && !defined(_WIN32)
|
||||
# define UV__EFBIG UV__ERR(EFBIG)
|
||||
#else
|
||||
# define UV__EFBIG (-4036)
|
||||
#endif
|
||||
|
||||
#if defined(ENOPROTOOPT) && !defined(_WIN32)
|
||||
# define UV__ENOPROTOOPT UV__ERR(ENOPROTOOPT)
|
||||
#else
|
||||
# define UV__ENOPROTOOPT (-4035)
|
||||
#endif
|
||||
|
||||
#if defined(ERANGE) && !defined(_WIN32)
|
||||
# define UV__ERANGE UV__ERR(ERANGE)
|
||||
#else
|
||||
# define UV__ERANGE (-4034)
|
||||
#endif
|
||||
|
||||
#if defined(ENXIO) && !defined(_WIN32)
|
||||
# define UV__ENXIO UV__ERR(ENXIO)
|
||||
#else
|
||||
# define UV__ENXIO (-4033)
|
||||
#endif
|
||||
|
||||
#if defined(EMLINK) && !defined(_WIN32)
|
||||
# define UV__EMLINK UV__ERR(EMLINK)
|
||||
#else
|
||||
# define UV__EMLINK (-4032)
|
||||
#endif
|
||||
|
||||
/* EHOSTDOWN is not visible on BSD-like systems when _POSIX_C_SOURCE is
|
||||
* defined. Fortunately, its value is always 64 so it's possible albeit
|
||||
* icky to hard-code it.
|
||||
*/
|
||||
#if defined(EHOSTDOWN) && !defined(_WIN32)
|
||||
# define UV__EHOSTDOWN UV__ERR(EHOSTDOWN)
|
||||
#elif defined(__APPLE__) || \
|
||||
defined(__DragonFly__) || \
|
||||
defined(__FreeBSD__) || \
|
||||
defined(__NetBSD__) || \
|
||||
defined(__OpenBSD__)
|
||||
# define UV__EHOSTDOWN (-64)
|
||||
#else
|
||||
# define UV__EHOSTDOWN (-4031)
|
||||
#endif
|
||||
|
||||
#if defined(EREMOTEIO) && !defined(_WIN32)
|
||||
# define UV__EREMOTEIO UV__ERR(EREMOTEIO)
|
||||
#else
|
||||
# define UV__EREMOTEIO (-4030)
|
||||
#endif
|
||||
|
||||
#if defined(ENOTTY) && !defined(_WIN32)
|
||||
# define UV__ENOTTY UV__ERR(ENOTTY)
|
||||
#else
|
||||
# define UV__ENOTTY (-4029)
|
||||
#endif
|
||||
|
||||
#if defined(EFTYPE) && !defined(_WIN32)
|
||||
# define UV__EFTYPE UV__ERR(EFTYPE)
|
||||
#else
|
||||
# define UV__EFTYPE (-4028)
|
||||
#endif
|
||||
|
||||
#if defined(EILSEQ) && !defined(_WIN32)
|
||||
# define UV__EILSEQ UV__ERR(EILSEQ)
|
||||
#else
|
||||
# define UV__EILSEQ (-4027)
|
||||
#endif
|
||||
|
||||
#if defined(EOVERFLOW) && !defined(_WIN32)
|
||||
# define UV__EOVERFLOW UV__ERR(EOVERFLOW)
|
||||
#else
|
||||
# define UV__EOVERFLOW (-4026)
|
||||
#endif
|
||||
|
||||
#if defined(ESOCKTNOSUPPORT) && !defined(_WIN32)
|
||||
# define UV__ESOCKTNOSUPPORT UV__ERR(ESOCKTNOSUPPORT)
|
||||
#else
|
||||
# define UV__ESOCKTNOSUPPORT (-4025)
|
||||
#endif
|
||||
|
||||
/* FreeBSD defines ENODATA in /usr/include/c++/v1/errno.h which is only visible
|
||||
* if C++ is being used. Define it directly to avoid problems when integrating
|
||||
* libuv in a C++ project.
|
||||
*/
|
||||
#if defined(ENODATA) && !defined(_WIN32)
|
||||
# define UV__ENODATA UV__ERR(ENODATA)
|
||||
#elif defined(__FreeBSD__)
|
||||
# define UV__ENODATA (-9919)
|
||||
#else
|
||||
# define UV__ENODATA (-4024)
|
||||
#endif
|
||||
|
||||
#if defined(EUNATCH) && !defined(_WIN32)
|
||||
# define UV__EUNATCH UV__ERR(EUNATCH)
|
||||
#else
|
||||
# define UV__EUNATCH (-4023)
|
||||
#endif
|
||||
|
||||
#if defined(ENOEXEC) && !defined(_WIN32)
|
||||
# define UV__ENOEXEC UV__ERR(ENOEXEC)
|
||||
#else
|
||||
# define UV__ENOEXEC (-4022)
|
||||
#endif
|
||||
|
||||
#endif /* UV_ERRNO_H_ */
|
||||
34
src/bun.js/bindings/libuv/uv/linux.h
Normal file
34
src/bun.js/bindings/libuv/uv/linux.h
Normal file
@@ -0,0 +1,34 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_LINUX_H
|
||||
#define UV_LINUX_H
|
||||
|
||||
#define UV_PLATFORM_LOOP_FIELDS \
|
||||
uv__io_t inotify_read_watcher; \
|
||||
void* inotify_watchers; \
|
||||
int inotify_fd; \
|
||||
|
||||
#define UV_PLATFORM_FS_EVENT_FIELDS \
|
||||
struct uv__queue watchers; \
|
||||
int wd; \
|
||||
|
||||
#endif /* UV_LINUX_H */
|
||||
33
src/bun.js/bindings/libuv/uv/os390.h
Normal file
33
src/bun.js/bindings/libuv/uv/os390.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/* Copyright libuv project contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_MVS_H
|
||||
#define UV_MVS_H
|
||||
|
||||
#define UV_PLATFORM_SEM_T long
|
||||
|
||||
#define UV_PLATFORM_LOOP_FIELDS \
|
||||
void* ep; \
|
||||
|
||||
#define UV_PLATFORM_FS_EVENT_FIELDS \
|
||||
char rfis_rftok[8]; \
|
||||
|
||||
#endif /* UV_MVS_H */
|
||||
31
src/bun.js/bindings/libuv/uv/posix.h
Normal file
31
src/bun.js/bindings/libuv/uv/posix.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/* Copyright libuv project contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_POSIX_H
|
||||
#define UV_POSIX_H
|
||||
|
||||
#define UV_PLATFORM_LOOP_FIELDS \
|
||||
struct pollfd* poll_fds; \
|
||||
size_t poll_fds_used; \
|
||||
size_t poll_fds_size; \
|
||||
unsigned char poll_fds_iterating; \
|
||||
|
||||
#endif /* UV_POSIX_H */
|
||||
44
src/bun.js/bindings/libuv/uv/sunos.h
Normal file
44
src/bun.js/bindings/libuv/uv/sunos.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_SUNOS_H
|
||||
#define UV_SUNOS_H
|
||||
|
||||
#include <sys/port.h>
|
||||
#include <port.h>
|
||||
|
||||
/* For the sake of convenience and reduced #ifdef-ery in src/unix/sunos.c,
|
||||
* add the fs_event fields even when this version of SunOS doesn't support
|
||||
* file watching.
|
||||
*/
|
||||
#define UV_PLATFORM_LOOP_FIELDS \
|
||||
uv__io_t fs_event_watcher; \
|
||||
int fs_fd; \
|
||||
|
||||
#if defined(PORT_SOURCE_FILE)
|
||||
|
||||
# define UV_PLATFORM_FS_EVENT_FIELDS \
|
||||
file_obj_t fo; \
|
||||
int fd; \
|
||||
|
||||
#endif /* defined(PORT_SOURCE_FILE) */
|
||||
|
||||
#endif /* UV_SUNOS_H */
|
||||
37
src/bun.js/bindings/libuv/uv/threadpool.h
Normal file
37
src/bun.js/bindings/libuv/uv/threadpool.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is private to libuv. It provides common functionality to both
|
||||
* Windows and Unix backends.
|
||||
*/
|
||||
|
||||
#ifndef UV_THREADPOOL_H_
|
||||
#define UV_THREADPOOL_H_
|
||||
|
||||
struct uv__work {
|
||||
void (*work)(struct uv__work *w);
|
||||
void (*done)(struct uv__work *w, int status);
|
||||
struct uv_loop_s* loop;
|
||||
struct uv__queue wq;
|
||||
};
|
||||
|
||||
#endif /* UV_THREADPOOL_H_ */
|
||||
521
src/bun.js/bindings/libuv/uv/tree.h
Normal file
521
src/bun.js/bindings/libuv/uv/tree.h
Normal file
@@ -0,0 +1,521 @@
|
||||
/*-
|
||||
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
|
||||
* All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 UV_TREE_H_
|
||||
#define UV_TREE_H_
|
||||
|
||||
#ifndef UV__UNUSED
|
||||
# if __GNUC__
|
||||
# define UV__UNUSED __attribute__((unused))
|
||||
# else
|
||||
# define UV__UNUSED
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This file defines data structures for red-black trees.
|
||||
* A red-black tree is a binary search tree with the node color as an
|
||||
* extra attribute. It fulfills a set of conditions:
|
||||
* - every search path from the root to a leaf consists of the
|
||||
* same number of black nodes,
|
||||
* - each red node (except for the root) has a black parent,
|
||||
* - each leaf node is black.
|
||||
*
|
||||
* Every operation on a red-black tree is bounded as O(lg n).
|
||||
* The maximum height of a red-black tree is 2lg (n+1).
|
||||
*/
|
||||
|
||||
/* Macros that define a red-black tree */
|
||||
#define RB_HEAD(name, type) \
|
||||
struct name { \
|
||||
struct type *rbh_root; /* root of the tree */ \
|
||||
}
|
||||
|
||||
#define RB_INITIALIZER(root) \
|
||||
{ NULL }
|
||||
|
||||
#define RB_INIT(root) do { \
|
||||
(root)->rbh_root = NULL; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define RB_BLACK 0
|
||||
#define RB_RED 1
|
||||
#define RB_ENTRY(type) \
|
||||
struct { \
|
||||
struct type *rbe_left; /* left element */ \
|
||||
struct type *rbe_right; /* right element */ \
|
||||
struct type *rbe_parent; /* parent element */ \
|
||||
int rbe_color; /* node color */ \
|
||||
}
|
||||
|
||||
#define RB_LEFT(elm, field) (elm)->field.rbe_left
|
||||
#define RB_RIGHT(elm, field) (elm)->field.rbe_right
|
||||
#define RB_PARENT(elm, field) (elm)->field.rbe_parent
|
||||
#define RB_COLOR(elm, field) (elm)->field.rbe_color
|
||||
#define RB_ROOT(head) (head)->rbh_root
|
||||
#define RB_EMPTY(head) (RB_ROOT(head) == NULL)
|
||||
|
||||
#define RB_SET(elm, parent, field) do { \
|
||||
RB_PARENT(elm, field) = parent; \
|
||||
RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \
|
||||
RB_COLOR(elm, field) = RB_RED; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define RB_SET_BLACKRED(black, red, field) do { \
|
||||
RB_COLOR(black, field) = RB_BLACK; \
|
||||
RB_COLOR(red, field) = RB_RED; \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#ifndef RB_AUGMENT
|
||||
#define RB_AUGMENT(x) do {} while (0)
|
||||
#endif
|
||||
|
||||
#define RB_ROTATE_LEFT(head, elm, tmp, field) do { \
|
||||
(tmp) = RB_RIGHT(elm, field); \
|
||||
if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \
|
||||
RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \
|
||||
} \
|
||||
RB_AUGMENT(elm); \
|
||||
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
|
||||
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
|
||||
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
else \
|
||||
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
} else \
|
||||
(head)->rbh_root = (tmp); \
|
||||
RB_LEFT(tmp, field) = (elm); \
|
||||
RB_PARENT(elm, field) = (tmp); \
|
||||
RB_AUGMENT(tmp); \
|
||||
if ((RB_PARENT(tmp, field))) \
|
||||
RB_AUGMENT(RB_PARENT(tmp, field)); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
#define RB_ROTATE_RIGHT(head, elm, tmp, field) do { \
|
||||
(tmp) = RB_LEFT(elm, field); \
|
||||
if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \
|
||||
RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \
|
||||
} \
|
||||
RB_AUGMENT(elm); \
|
||||
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
|
||||
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
|
||||
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
else \
|
||||
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
|
||||
} else \
|
||||
(head)->rbh_root = (tmp); \
|
||||
RB_RIGHT(tmp, field) = (elm); \
|
||||
RB_PARENT(elm, field) = (tmp); \
|
||||
RB_AUGMENT(tmp); \
|
||||
if ((RB_PARENT(tmp, field))) \
|
||||
RB_AUGMENT(RB_PARENT(tmp, field)); \
|
||||
} while (/*CONSTCOND*/ 0)
|
||||
|
||||
/* Generates prototypes and inline functions */
|
||||
#define RB_PROTOTYPE(name, type, field, cmp) \
|
||||
RB_PROTOTYPE_INTERNAL(name, type, field, cmp,)
|
||||
#define RB_PROTOTYPE_STATIC(name, type, field, cmp) \
|
||||
RB_PROTOTYPE_INTERNAL(name, type, field, cmp, UV__UNUSED static)
|
||||
#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr) \
|
||||
attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \
|
||||
attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\
|
||||
attr struct type *name##_RB_REMOVE(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_INSERT(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_FIND(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_NFIND(struct name *, struct type *); \
|
||||
attr struct type *name##_RB_NEXT(struct type *); \
|
||||
attr struct type *name##_RB_PREV(struct type *); \
|
||||
attr struct type *name##_RB_MINMAX(struct name *, int); \
|
||||
\
|
||||
|
||||
/* Main rb operation.
|
||||
* Moves node close to the key of elm to top
|
||||
*/
|
||||
#define RB_GENERATE(name, type, field, cmp) \
|
||||
RB_GENERATE_INTERNAL(name, type, field, cmp,)
|
||||
#define RB_GENERATE_STATIC(name, type, field, cmp) \
|
||||
RB_GENERATE_INTERNAL(name, type, field, cmp, UV__UNUSED static)
|
||||
#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr) \
|
||||
attr void \
|
||||
name##_RB_INSERT_COLOR(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *parent, *gparent, *tmp; \
|
||||
while ((parent = RB_PARENT(elm, field)) != NULL && \
|
||||
RB_COLOR(parent, field) == RB_RED) { \
|
||||
gparent = RB_PARENT(parent, field); \
|
||||
if (parent == RB_LEFT(gparent, field)) { \
|
||||
tmp = RB_RIGHT(gparent, field); \
|
||||
if (tmp && RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_COLOR(tmp, field) = RB_BLACK; \
|
||||
RB_SET_BLACKRED(parent, gparent, field); \
|
||||
elm = gparent; \
|
||||
continue; \
|
||||
} \
|
||||
if (RB_RIGHT(parent, field) == elm) { \
|
||||
RB_ROTATE_LEFT(head, parent, tmp, field); \
|
||||
tmp = parent; \
|
||||
parent = elm; \
|
||||
elm = tmp; \
|
||||
} \
|
||||
RB_SET_BLACKRED(parent, gparent, field); \
|
||||
RB_ROTATE_RIGHT(head, gparent, tmp, field); \
|
||||
} else { \
|
||||
tmp = RB_LEFT(gparent, field); \
|
||||
if (tmp && RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_COLOR(tmp, field) = RB_BLACK; \
|
||||
RB_SET_BLACKRED(parent, gparent, field); \
|
||||
elm = gparent; \
|
||||
continue; \
|
||||
} \
|
||||
if (RB_LEFT(parent, field) == elm) { \
|
||||
RB_ROTATE_RIGHT(head, parent, tmp, field); \
|
||||
tmp = parent; \
|
||||
parent = elm; \
|
||||
elm = tmp; \
|
||||
} \
|
||||
RB_SET_BLACKRED(parent, gparent, field); \
|
||||
RB_ROTATE_LEFT(head, gparent, tmp, field); \
|
||||
} \
|
||||
} \
|
||||
RB_COLOR(head->rbh_root, field) = RB_BLACK; \
|
||||
} \
|
||||
\
|
||||
attr void \
|
||||
name##_RB_REMOVE_COLOR(struct name *head, struct type *parent, \
|
||||
struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp; \
|
||||
while ((elm == NULL || RB_COLOR(elm, field) == RB_BLACK) && \
|
||||
elm != RB_ROOT(head)) { \
|
||||
if (RB_LEFT(parent, field) == elm) { \
|
||||
tmp = RB_RIGHT(parent, field); \
|
||||
if (RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_SET_BLACKRED(tmp, parent, field); \
|
||||
RB_ROTATE_LEFT(head, parent, tmp, field); \
|
||||
tmp = RB_RIGHT(parent, field); \
|
||||
} \
|
||||
if ((RB_LEFT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) && \
|
||||
(RB_RIGHT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) { \
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
elm = parent; \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
} else { \
|
||||
if (RB_RIGHT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK) { \
|
||||
struct type *oleft; \
|
||||
if ((oleft = RB_LEFT(tmp, field)) \
|
||||
!= NULL) \
|
||||
RB_COLOR(oleft, field) = RB_BLACK; \
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
RB_ROTATE_RIGHT(head, tmp, oleft, field); \
|
||||
tmp = RB_RIGHT(parent, field); \
|
||||
} \
|
||||
RB_COLOR(tmp, field) = RB_COLOR(parent, field); \
|
||||
RB_COLOR(parent, field) = RB_BLACK; \
|
||||
if (RB_RIGHT(tmp, field)) \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) = RB_BLACK; \
|
||||
RB_ROTATE_LEFT(head, parent, tmp, field); \
|
||||
elm = RB_ROOT(head); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
tmp = RB_LEFT(parent, field); \
|
||||
if (RB_COLOR(tmp, field) == RB_RED) { \
|
||||
RB_SET_BLACKRED(tmp, parent, field); \
|
||||
RB_ROTATE_RIGHT(head, parent, tmp, field); \
|
||||
tmp = RB_LEFT(parent, field); \
|
||||
} \
|
||||
if ((RB_LEFT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) && \
|
||||
(RB_RIGHT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_RIGHT(tmp, field), field) == RB_BLACK)) { \
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
elm = parent; \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
} else { \
|
||||
if (RB_LEFT(tmp, field) == NULL || \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) == RB_BLACK) { \
|
||||
struct type *oright; \
|
||||
if ((oright = RB_RIGHT(tmp, field)) \
|
||||
!= NULL) \
|
||||
RB_COLOR(oright, field) = RB_BLACK; \
|
||||
RB_COLOR(tmp, field) = RB_RED; \
|
||||
RB_ROTATE_LEFT(head, tmp, oright, field); \
|
||||
tmp = RB_LEFT(parent, field); \
|
||||
} \
|
||||
RB_COLOR(tmp, field) = RB_COLOR(parent, field); \
|
||||
RB_COLOR(parent, field) = RB_BLACK; \
|
||||
if (RB_LEFT(tmp, field)) \
|
||||
RB_COLOR(RB_LEFT(tmp, field), field) = RB_BLACK; \
|
||||
RB_ROTATE_RIGHT(head, parent, tmp, field); \
|
||||
elm = RB_ROOT(head); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
if (elm) \
|
||||
RB_COLOR(elm, field) = RB_BLACK; \
|
||||
} \
|
||||
\
|
||||
attr struct type * \
|
||||
name##_RB_REMOVE(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *child, *parent, *old = elm; \
|
||||
int color; \
|
||||
if (RB_LEFT(elm, field) == NULL) \
|
||||
child = RB_RIGHT(elm, field); \
|
||||
else if (RB_RIGHT(elm, field) == NULL) \
|
||||
child = RB_LEFT(elm, field); \
|
||||
else { \
|
||||
struct type *left; \
|
||||
elm = RB_RIGHT(elm, field); \
|
||||
while ((left = RB_LEFT(elm, field)) != NULL) \
|
||||
elm = left; \
|
||||
child = RB_RIGHT(elm, field); \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
color = RB_COLOR(elm, field); \
|
||||
if (child) \
|
||||
RB_PARENT(child, field) = parent; \
|
||||
if (parent) { \
|
||||
if (RB_LEFT(parent, field) == elm) \
|
||||
RB_LEFT(parent, field) = child; \
|
||||
else \
|
||||
RB_RIGHT(parent, field) = child; \
|
||||
RB_AUGMENT(parent); \
|
||||
} else \
|
||||
RB_ROOT(head) = child; \
|
||||
if (RB_PARENT(elm, field) == old) \
|
||||
parent = elm; \
|
||||
(elm)->field = (old)->field; \
|
||||
if (RB_PARENT(old, field)) { \
|
||||
if (RB_LEFT(RB_PARENT(old, field), field) == old) \
|
||||
RB_LEFT(RB_PARENT(old, field), field) = elm; \
|
||||
else \
|
||||
RB_RIGHT(RB_PARENT(old, field), field) = elm; \
|
||||
RB_AUGMENT(RB_PARENT(old, field)); \
|
||||
} else \
|
||||
RB_ROOT(head) = elm; \
|
||||
RB_PARENT(RB_LEFT(old, field), field) = elm; \
|
||||
if (RB_RIGHT(old, field)) \
|
||||
RB_PARENT(RB_RIGHT(old, field), field) = elm; \
|
||||
if (parent) { \
|
||||
left = parent; \
|
||||
do { \
|
||||
RB_AUGMENT(left); \
|
||||
} while ((left = RB_PARENT(left, field)) != NULL); \
|
||||
} \
|
||||
goto color; \
|
||||
} \
|
||||
parent = RB_PARENT(elm, field); \
|
||||
color = RB_COLOR(elm, field); \
|
||||
if (child) \
|
||||
RB_PARENT(child, field) = parent; \
|
||||
if (parent) { \
|
||||
if (RB_LEFT(parent, field) == elm) \
|
||||
RB_LEFT(parent, field) = child; \
|
||||
else \
|
||||
RB_RIGHT(parent, field) = child; \
|
||||
RB_AUGMENT(parent); \
|
||||
} else \
|
||||
RB_ROOT(head) = child; \
|
||||
color: \
|
||||
if (color == RB_BLACK) \
|
||||
name##_RB_REMOVE_COLOR(head, parent, child); \
|
||||
return (old); \
|
||||
} \
|
||||
\
|
||||
/* Inserts a node into the RB tree */ \
|
||||
attr struct type * \
|
||||
name##_RB_INSERT(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp; \
|
||||
struct type *parent = NULL; \
|
||||
int comp = 0; \
|
||||
tmp = RB_ROOT(head); \
|
||||
while (tmp) { \
|
||||
parent = tmp; \
|
||||
comp = (cmp)(elm, parent); \
|
||||
if (comp < 0) \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
else if (comp > 0) \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
else \
|
||||
return (tmp); \
|
||||
} \
|
||||
RB_SET(elm, parent, field); \
|
||||
if (parent != NULL) { \
|
||||
if (comp < 0) \
|
||||
RB_LEFT(parent, field) = elm; \
|
||||
else \
|
||||
RB_RIGHT(parent, field) = elm; \
|
||||
RB_AUGMENT(parent); \
|
||||
} else \
|
||||
RB_ROOT(head) = elm; \
|
||||
name##_RB_INSERT_COLOR(head, elm); \
|
||||
return (NULL); \
|
||||
} \
|
||||
\
|
||||
/* Finds the node with the same key as elm */ \
|
||||
attr struct type * \
|
||||
name##_RB_FIND(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp = RB_ROOT(head); \
|
||||
int comp; \
|
||||
while (tmp) { \
|
||||
comp = cmp(elm, tmp); \
|
||||
if (comp < 0) \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
else if (comp > 0) \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
else \
|
||||
return (tmp); \
|
||||
} \
|
||||
return (NULL); \
|
||||
} \
|
||||
\
|
||||
/* Finds the first node greater than or equal to the search key */ \
|
||||
attr struct type * \
|
||||
name##_RB_NFIND(struct name *head, struct type *elm) \
|
||||
{ \
|
||||
struct type *tmp = RB_ROOT(head); \
|
||||
struct type *res = NULL; \
|
||||
int comp; \
|
||||
while (tmp) { \
|
||||
comp = cmp(elm, tmp); \
|
||||
if (comp < 0) { \
|
||||
res = tmp; \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
} \
|
||||
else if (comp > 0) \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
else \
|
||||
return (tmp); \
|
||||
} \
|
||||
return (res); \
|
||||
} \
|
||||
\
|
||||
/* ARGSUSED */ \
|
||||
attr struct type * \
|
||||
name##_RB_NEXT(struct type *elm) \
|
||||
{ \
|
||||
if (RB_RIGHT(elm, field)) { \
|
||||
elm = RB_RIGHT(elm, field); \
|
||||
while (RB_LEFT(elm, field)) \
|
||||
elm = RB_LEFT(elm, field); \
|
||||
} else { \
|
||||
if (RB_PARENT(elm, field) && \
|
||||
(elm == RB_LEFT(RB_PARENT(elm, field), field))) \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
else { \
|
||||
while (RB_PARENT(elm, field) && \
|
||||
(elm == RB_RIGHT(RB_PARENT(elm, field), field))) \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
} \
|
||||
} \
|
||||
return (elm); \
|
||||
} \
|
||||
\
|
||||
/* ARGSUSED */ \
|
||||
attr struct type * \
|
||||
name##_RB_PREV(struct type *elm) \
|
||||
{ \
|
||||
if (RB_LEFT(elm, field)) { \
|
||||
elm = RB_LEFT(elm, field); \
|
||||
while (RB_RIGHT(elm, field)) \
|
||||
elm = RB_RIGHT(elm, field); \
|
||||
} else { \
|
||||
if (RB_PARENT(elm, field) && \
|
||||
(elm == RB_RIGHT(RB_PARENT(elm, field), field))) \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
else { \
|
||||
while (RB_PARENT(elm, field) && \
|
||||
(elm == RB_LEFT(RB_PARENT(elm, field), field))) \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
elm = RB_PARENT(elm, field); \
|
||||
} \
|
||||
} \
|
||||
return (elm); \
|
||||
} \
|
||||
\
|
||||
attr struct type * \
|
||||
name##_RB_MINMAX(struct name *head, int val) \
|
||||
{ \
|
||||
struct type *tmp = RB_ROOT(head); \
|
||||
struct type *parent = NULL; \
|
||||
while (tmp) { \
|
||||
parent = tmp; \
|
||||
if (val < 0) \
|
||||
tmp = RB_LEFT(tmp, field); \
|
||||
else \
|
||||
tmp = RB_RIGHT(tmp, field); \
|
||||
} \
|
||||
return (parent); \
|
||||
}
|
||||
|
||||
#define RB_NEGINF -1
|
||||
#define RB_INF 1
|
||||
|
||||
#define RB_INSERT(name, x, y) name##_RB_INSERT(x, y)
|
||||
#define RB_REMOVE(name, x, y) name##_RB_REMOVE(x, y)
|
||||
#define RB_FIND(name, x, y) name##_RB_FIND(x, y)
|
||||
#define RB_NFIND(name, x, y) name##_RB_NFIND(x, y)
|
||||
#define RB_NEXT(name, x) name##_RB_NEXT(x)
|
||||
#define RB_PREV(name, x) name##_RB_PREV(x)
|
||||
#define RB_MIN(name, x) name##_RB_MINMAX(x, RB_NEGINF)
|
||||
#define RB_MAX(name, x) name##_RB_MINMAX(x, RB_INF)
|
||||
|
||||
#define RB_FOREACH(x, name, head) \
|
||||
for ((x) = RB_MIN(name, head); \
|
||||
(x) != NULL; \
|
||||
(x) = name##_RB_NEXT(x))
|
||||
|
||||
#define RB_FOREACH_FROM(x, name, y) \
|
||||
for ((x) = (y); \
|
||||
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#define RB_FOREACH_SAFE(x, name, head, y) \
|
||||
for ((x) = RB_MIN(name, head); \
|
||||
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#define RB_FOREACH_REVERSE(x, name, head) \
|
||||
for ((x) = RB_MAX(name, head); \
|
||||
(x) != NULL; \
|
||||
(x) = name##_RB_PREV(x))
|
||||
|
||||
#define RB_FOREACH_REVERSE_FROM(x, name, y) \
|
||||
for ((x) = (y); \
|
||||
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#define RB_FOREACH_REVERSE_SAFE(x, name, head, y) \
|
||||
for ((x) = RB_MAX(name, head); \
|
||||
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \
|
||||
(x) = (y))
|
||||
|
||||
#endif /* UV_TREE_H_ */
|
||||
512
src/bun.js/bindings/libuv/uv/unix.h
Normal file
512
src/bun.js/bindings/libuv/uv/unix.h
Normal file
@@ -0,0 +1,512 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_UNIX_H
|
||||
#define UV_UNIX_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <netinet/tcp.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h> /* MAXHOSTNAMELEN on Solaris */
|
||||
|
||||
#include <termios.h>
|
||||
#include <pwd.h>
|
||||
|
||||
#if !defined(__MVS__)
|
||||
#include <semaphore.h>
|
||||
#include <sys/param.h> /* MAXHOSTNAMELEN on Linux and the BSDs */
|
||||
#endif
|
||||
#include <pthread.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "uv/threadpool.h"
|
||||
|
||||
#if defined(__linux__)
|
||||
# include "uv/linux.h"
|
||||
#elif defined (__MVS__)
|
||||
# include "uv/os390.h"
|
||||
#elif defined(__PASE__) /* __PASE__ and _AIX are both defined on IBM i */
|
||||
# include "uv/posix.h" /* IBM i needs uv/posix.h, not uv/aix.h */
|
||||
#elif defined(_AIX)
|
||||
# include "uv/aix.h"
|
||||
#elif defined(__sun)
|
||||
# include "uv/sunos.h"
|
||||
#elif defined(__APPLE__)
|
||||
# include "uv/darwin.h"
|
||||
#elif defined(__DragonFly__) || \
|
||||
defined(__FreeBSD__) || \
|
||||
defined(__OpenBSD__) || \
|
||||
defined(__NetBSD__)
|
||||
# include "uv/bsd.h"
|
||||
#elif defined(__CYGWIN__) || \
|
||||
defined(__MSYS__) || \
|
||||
defined(__HAIKU__) || \
|
||||
defined(__QNX__) || \
|
||||
defined(__GNU__)
|
||||
# include "uv/posix.h"
|
||||
#endif
|
||||
|
||||
#ifndef NI_MAXHOST
|
||||
# define NI_MAXHOST 1025
|
||||
#endif
|
||||
|
||||
#ifndef NI_MAXSERV
|
||||
# define NI_MAXSERV 32
|
||||
#endif
|
||||
|
||||
#ifndef UV_IO_PRIVATE_PLATFORM_FIELDS
|
||||
# define UV_IO_PRIVATE_PLATFORM_FIELDS /* empty */
|
||||
#endif
|
||||
|
||||
struct uv__io_s;
|
||||
struct uv_loop_s;
|
||||
|
||||
typedef void (*uv__io_cb)(struct uv_loop_s* loop,
|
||||
struct uv__io_s* w,
|
||||
unsigned int events);
|
||||
typedef struct uv__io_s uv__io_t;
|
||||
|
||||
struct uv__io_s {
|
||||
uv__io_cb cb;
|
||||
struct uv__queue pending_queue;
|
||||
struct uv__queue watcher_queue;
|
||||
unsigned int pevents; /* Pending event mask i.e. mask at next tick. */
|
||||
unsigned int events; /* Current event mask. */
|
||||
int fd;
|
||||
UV_IO_PRIVATE_PLATFORM_FIELDS
|
||||
};
|
||||
|
||||
#ifndef UV_PLATFORM_SEM_T
|
||||
# define UV_PLATFORM_SEM_T sem_t
|
||||
#endif
|
||||
|
||||
#ifndef UV_PLATFORM_LOOP_FIELDS
|
||||
# define UV_PLATFORM_LOOP_FIELDS /* empty */
|
||||
#endif
|
||||
|
||||
#ifndef UV_PLATFORM_FS_EVENT_FIELDS
|
||||
# define UV_PLATFORM_FS_EVENT_FIELDS /* empty */
|
||||
#endif
|
||||
|
||||
#ifndef UV_STREAM_PRIVATE_PLATFORM_FIELDS
|
||||
# define UV_STREAM_PRIVATE_PLATFORM_FIELDS /* empty */
|
||||
#endif
|
||||
|
||||
/* Note: May be cast to struct iovec. See writev(2). */
|
||||
typedef struct uv_buf_t {
|
||||
char* base;
|
||||
size_t len;
|
||||
} uv_buf_t;
|
||||
|
||||
typedef int uv_file;
|
||||
typedef int uv_os_sock_t;
|
||||
typedef int uv_os_fd_t;
|
||||
typedef pid_t uv_pid_t;
|
||||
|
||||
#define UV_ONCE_INIT PTHREAD_ONCE_INIT
|
||||
|
||||
typedef pthread_once_t uv_once_t;
|
||||
typedef pthread_t uv_thread_t;
|
||||
typedef pthread_mutex_t uv_mutex_t;
|
||||
typedef pthread_rwlock_t uv_rwlock_t;
|
||||
typedef UV_PLATFORM_SEM_T uv_sem_t;
|
||||
typedef pthread_cond_t uv_cond_t;
|
||||
typedef pthread_key_t uv_key_t;
|
||||
|
||||
/* Note: guard clauses should match uv_barrier_init's in src/unix/thread.c. */
|
||||
#if defined(_AIX) || \
|
||||
defined(__OpenBSD__) || \
|
||||
!defined(PTHREAD_BARRIER_SERIAL_THREAD)
|
||||
/* TODO(bnoordhuis) Merge into uv_barrier_t in v2. */
|
||||
struct _uv_barrier {
|
||||
uv_mutex_t mutex;
|
||||
uv_cond_t cond;
|
||||
unsigned threshold;
|
||||
unsigned in;
|
||||
unsigned out;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct _uv_barrier* b;
|
||||
# if defined(PTHREAD_BARRIER_SERIAL_THREAD)
|
||||
/* TODO(bnoordhuis) Remove padding in v2. */
|
||||
char pad[sizeof(pthread_barrier_t) - sizeof(struct _uv_barrier*)];
|
||||
# endif
|
||||
} uv_barrier_t;
|
||||
#else
|
||||
typedef pthread_barrier_t uv_barrier_t;
|
||||
#endif
|
||||
|
||||
/* Platform-specific definitions for uv_spawn support. */
|
||||
typedef gid_t uv_gid_t;
|
||||
typedef uid_t uv_uid_t;
|
||||
|
||||
typedef struct dirent uv__dirent_t;
|
||||
|
||||
#define UV_DIR_PRIVATE_FIELDS \
|
||||
DIR* dir;
|
||||
|
||||
#if defined(DT_UNKNOWN)
|
||||
# define HAVE_DIRENT_TYPES
|
||||
# if defined(DT_REG)
|
||||
# define UV__DT_FILE DT_REG
|
||||
# else
|
||||
# define UV__DT_FILE -1
|
||||
# endif
|
||||
# if defined(DT_DIR)
|
||||
# define UV__DT_DIR DT_DIR
|
||||
# else
|
||||
# define UV__DT_DIR -2
|
||||
# endif
|
||||
# if defined(DT_LNK)
|
||||
# define UV__DT_LINK DT_LNK
|
||||
# else
|
||||
# define UV__DT_LINK -3
|
||||
# endif
|
||||
# if defined(DT_FIFO)
|
||||
# define UV__DT_FIFO DT_FIFO
|
||||
# else
|
||||
# define UV__DT_FIFO -4
|
||||
# endif
|
||||
# if defined(DT_SOCK)
|
||||
# define UV__DT_SOCKET DT_SOCK
|
||||
# else
|
||||
# define UV__DT_SOCKET -5
|
||||
# endif
|
||||
# if defined(DT_CHR)
|
||||
# define UV__DT_CHAR DT_CHR
|
||||
# else
|
||||
# define UV__DT_CHAR -6
|
||||
# endif
|
||||
# if defined(DT_BLK)
|
||||
# define UV__DT_BLOCK DT_BLK
|
||||
# else
|
||||
# define UV__DT_BLOCK -7
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Platform-specific definitions for uv_dlopen support. */
|
||||
#define UV_DYNAMIC /* empty */
|
||||
|
||||
typedef struct {
|
||||
void* handle;
|
||||
char* errmsg;
|
||||
} uv_lib_t;
|
||||
|
||||
#define UV_LOOP_PRIVATE_FIELDS \
|
||||
unsigned long flags; \
|
||||
int backend_fd; \
|
||||
struct uv__queue pending_queue; \
|
||||
struct uv__queue watcher_queue; \
|
||||
uv__io_t** watchers; \
|
||||
unsigned int nwatchers; \
|
||||
unsigned int nfds; \
|
||||
struct uv__queue wq; \
|
||||
uv_mutex_t wq_mutex; \
|
||||
uv_async_t wq_async; \
|
||||
uv_rwlock_t cloexec_lock; \
|
||||
uv_handle_t* closing_handles; \
|
||||
struct uv__queue process_handles; \
|
||||
struct uv__queue prepare_handles; \
|
||||
struct uv__queue check_handles; \
|
||||
struct uv__queue idle_handles; \
|
||||
struct uv__queue async_handles; \
|
||||
void (*async_unused)(void); /* TODO(bnoordhuis) Remove in libuv v2. */ \
|
||||
uv__io_t async_io_watcher; \
|
||||
int async_wfd; \
|
||||
struct { \
|
||||
void* min; \
|
||||
unsigned int nelts; \
|
||||
} timer_heap; \
|
||||
uint64_t timer_counter; \
|
||||
uint64_t time; \
|
||||
int signal_pipefd[2]; \
|
||||
uv__io_t signal_io_watcher; \
|
||||
uv_signal_t child_watcher; \
|
||||
int emfile_fd; \
|
||||
UV_PLATFORM_LOOP_FIELDS \
|
||||
|
||||
#define UV_REQ_TYPE_PRIVATE /* empty */
|
||||
|
||||
#define UV_REQ_PRIVATE_FIELDS /* empty */
|
||||
|
||||
#define UV_PRIVATE_REQ_TYPES /* empty */
|
||||
|
||||
#define UV_WRITE_PRIVATE_FIELDS \
|
||||
struct uv__queue queue; \
|
||||
unsigned int write_index; \
|
||||
uv_buf_t* bufs; \
|
||||
unsigned int nbufs; \
|
||||
int error; \
|
||||
uv_buf_t bufsml[4]; \
|
||||
|
||||
#define UV_CONNECT_PRIVATE_FIELDS \
|
||||
struct uv__queue queue; \
|
||||
|
||||
#define UV_SHUTDOWN_PRIVATE_FIELDS /* empty */
|
||||
|
||||
#define UV_UDP_SEND_PRIVATE_FIELDS \
|
||||
struct uv__queue queue; \
|
||||
union { \
|
||||
struct sockaddr addr; \
|
||||
struct sockaddr_storage storage; \
|
||||
} u; \
|
||||
unsigned int nbufs; \
|
||||
uv_buf_t* bufs; \
|
||||
ssize_t status; \
|
||||
uv_udp_send_cb send_cb; \
|
||||
uv_buf_t bufsml[4]; \
|
||||
|
||||
#define UV_HANDLE_PRIVATE_FIELDS \
|
||||
uv_handle_t* next_closing; \
|
||||
unsigned int flags; \
|
||||
|
||||
#define UV_STREAM_PRIVATE_FIELDS \
|
||||
uv_connect_t *connect_req; \
|
||||
uv_shutdown_t *shutdown_req; \
|
||||
uv__io_t io_watcher; \
|
||||
struct uv__queue write_queue; \
|
||||
struct uv__queue write_completed_queue; \
|
||||
uv_connection_cb connection_cb; \
|
||||
int delayed_error; \
|
||||
int accepted_fd; \
|
||||
void* queued_fds; \
|
||||
UV_STREAM_PRIVATE_PLATFORM_FIELDS \
|
||||
|
||||
#define UV_TCP_PRIVATE_FIELDS /* empty */
|
||||
|
||||
#define UV_UDP_PRIVATE_FIELDS \
|
||||
uv_alloc_cb alloc_cb; \
|
||||
uv_udp_recv_cb recv_cb; \
|
||||
uv__io_t io_watcher; \
|
||||
struct uv__queue write_queue; \
|
||||
struct uv__queue write_completed_queue; \
|
||||
|
||||
#define UV_PIPE_PRIVATE_FIELDS \
|
||||
const char* pipe_fname; /* NULL or strdup'ed */
|
||||
|
||||
#define UV_POLL_PRIVATE_FIELDS \
|
||||
uv__io_t io_watcher;
|
||||
|
||||
#define UV_PREPARE_PRIVATE_FIELDS \
|
||||
uv_prepare_cb prepare_cb; \
|
||||
struct uv__queue queue; \
|
||||
|
||||
#define UV_CHECK_PRIVATE_FIELDS \
|
||||
uv_check_cb check_cb; \
|
||||
struct uv__queue queue; \
|
||||
|
||||
#define UV_IDLE_PRIVATE_FIELDS \
|
||||
uv_idle_cb idle_cb; \
|
||||
struct uv__queue queue; \
|
||||
|
||||
#define UV_ASYNC_PRIVATE_FIELDS \
|
||||
uv_async_cb async_cb; \
|
||||
struct uv__queue queue; \
|
||||
int pending; \
|
||||
|
||||
#define UV_TIMER_PRIVATE_FIELDS \
|
||||
uv_timer_cb timer_cb; \
|
||||
union { \
|
||||
void* heap[3]; \
|
||||
struct uv__queue queue; \
|
||||
} node; \
|
||||
uint64_t timeout; \
|
||||
uint64_t repeat; \
|
||||
uint64_t start_id;
|
||||
|
||||
#define UV_GETADDRINFO_PRIVATE_FIELDS \
|
||||
struct uv__work work_req; \
|
||||
uv_getaddrinfo_cb cb; \
|
||||
struct addrinfo* hints; \
|
||||
char* hostname; \
|
||||
char* service; \
|
||||
struct addrinfo* addrinfo; \
|
||||
int retcode;
|
||||
|
||||
#define UV_GETNAMEINFO_PRIVATE_FIELDS \
|
||||
struct uv__work work_req; \
|
||||
uv_getnameinfo_cb getnameinfo_cb; \
|
||||
struct sockaddr_storage storage; \
|
||||
int flags; \
|
||||
char host[NI_MAXHOST]; \
|
||||
char service[NI_MAXSERV]; \
|
||||
int retcode;
|
||||
|
||||
#define UV_PROCESS_PRIVATE_FIELDS \
|
||||
struct uv__queue queue; \
|
||||
int status; \
|
||||
|
||||
#define UV_FS_PRIVATE_FIELDS \
|
||||
const char *new_path; \
|
||||
uv_file file; \
|
||||
int flags; \
|
||||
mode_t mode; \
|
||||
unsigned int nbufs; \
|
||||
uv_buf_t* bufs; \
|
||||
off_t off; \
|
||||
uv_uid_t uid; \
|
||||
uv_gid_t gid; \
|
||||
double atime; \
|
||||
double mtime; \
|
||||
struct uv__work work_req; \
|
||||
uv_buf_t bufsml[4]; \
|
||||
|
||||
#define UV_WORK_PRIVATE_FIELDS \
|
||||
struct uv__work work_req;
|
||||
|
||||
#define UV_TTY_PRIVATE_FIELDS \
|
||||
struct termios orig_termios; \
|
||||
int mode;
|
||||
|
||||
#define UV_SIGNAL_PRIVATE_FIELDS \
|
||||
/* RB_ENTRY(uv_signal_s) tree_entry; */ \
|
||||
struct { \
|
||||
struct uv_signal_s* rbe_left; \
|
||||
struct uv_signal_s* rbe_right; \
|
||||
struct uv_signal_s* rbe_parent; \
|
||||
int rbe_color; \
|
||||
} tree_entry; \
|
||||
/* Use two counters here so we don have to fiddle with atomics. */ \
|
||||
unsigned int caught_signals; \
|
||||
unsigned int dispatched_signals;
|
||||
|
||||
#define UV_FS_EVENT_PRIVATE_FIELDS \
|
||||
uv_fs_event_cb cb; \
|
||||
UV_PLATFORM_FS_EVENT_FIELDS \
|
||||
|
||||
/* fs open() flags supported on this platform: */
|
||||
#if defined(O_APPEND)
|
||||
# define UV_FS_O_APPEND O_APPEND
|
||||
#else
|
||||
# define UV_FS_O_APPEND 0
|
||||
#endif
|
||||
#if defined(O_CREAT)
|
||||
# define UV_FS_O_CREAT O_CREAT
|
||||
#else
|
||||
# define UV_FS_O_CREAT 0
|
||||
#endif
|
||||
|
||||
#if defined(__linux__) && defined(__arm__)
|
||||
# define UV_FS_O_DIRECT 0x10000
|
||||
#elif defined(__linux__) && defined(__m68k__)
|
||||
# define UV_FS_O_DIRECT 0x10000
|
||||
#elif defined(__linux__) && defined(__mips__)
|
||||
# define UV_FS_O_DIRECT 0x08000
|
||||
#elif defined(__linux__) && defined(__powerpc__)
|
||||
# define UV_FS_O_DIRECT 0x20000
|
||||
#elif defined(__linux__) && defined(__s390x__)
|
||||
# define UV_FS_O_DIRECT 0x04000
|
||||
#elif defined(__linux__) && defined(__x86_64__)
|
||||
# define UV_FS_O_DIRECT 0x04000
|
||||
#elif defined(__linux__) && defined(__loongarch__)
|
||||
# define UV_FS_O_DIRECT 0x04000
|
||||
#elif defined(O_DIRECT)
|
||||
# define UV_FS_O_DIRECT O_DIRECT
|
||||
#else
|
||||
# define UV_FS_O_DIRECT 0
|
||||
#endif
|
||||
|
||||
#if defined(O_DIRECTORY)
|
||||
# define UV_FS_O_DIRECTORY O_DIRECTORY
|
||||
#else
|
||||
# define UV_FS_O_DIRECTORY 0
|
||||
#endif
|
||||
#if defined(O_DSYNC)
|
||||
# define UV_FS_O_DSYNC O_DSYNC
|
||||
#else
|
||||
# define UV_FS_O_DSYNC 0
|
||||
#endif
|
||||
#if defined(O_EXCL)
|
||||
# define UV_FS_O_EXCL O_EXCL
|
||||
#else
|
||||
# define UV_FS_O_EXCL 0
|
||||
#endif
|
||||
#if defined(O_EXLOCK)
|
||||
# define UV_FS_O_EXLOCK O_EXLOCK
|
||||
#else
|
||||
# define UV_FS_O_EXLOCK 0
|
||||
#endif
|
||||
#if defined(O_NOATIME)
|
||||
# define UV_FS_O_NOATIME O_NOATIME
|
||||
#else
|
||||
# define UV_FS_O_NOATIME 0
|
||||
#endif
|
||||
#if defined(O_NOCTTY)
|
||||
# define UV_FS_O_NOCTTY O_NOCTTY
|
||||
#else
|
||||
# define UV_FS_O_NOCTTY 0
|
||||
#endif
|
||||
#if defined(O_NOFOLLOW)
|
||||
# define UV_FS_O_NOFOLLOW O_NOFOLLOW
|
||||
#else
|
||||
# define UV_FS_O_NOFOLLOW 0
|
||||
#endif
|
||||
#if defined(O_NONBLOCK)
|
||||
# define UV_FS_O_NONBLOCK O_NONBLOCK
|
||||
#else
|
||||
# define UV_FS_O_NONBLOCK 0
|
||||
#endif
|
||||
#if defined(O_RDONLY)
|
||||
# define UV_FS_O_RDONLY O_RDONLY
|
||||
#else
|
||||
# define UV_FS_O_RDONLY 0
|
||||
#endif
|
||||
#if defined(O_RDWR)
|
||||
# define UV_FS_O_RDWR O_RDWR
|
||||
#else
|
||||
# define UV_FS_O_RDWR 0
|
||||
#endif
|
||||
#if defined(O_SYMLINK)
|
||||
# define UV_FS_O_SYMLINK O_SYMLINK
|
||||
#else
|
||||
# define UV_FS_O_SYMLINK 0
|
||||
#endif
|
||||
#if defined(O_SYNC)
|
||||
# define UV_FS_O_SYNC O_SYNC
|
||||
#else
|
||||
# define UV_FS_O_SYNC 0
|
||||
#endif
|
||||
#if defined(O_TRUNC)
|
||||
# define UV_FS_O_TRUNC O_TRUNC
|
||||
#else
|
||||
# define UV_FS_O_TRUNC 0
|
||||
#endif
|
||||
#if defined(O_WRONLY)
|
||||
# define UV_FS_O_WRONLY O_WRONLY
|
||||
#else
|
||||
# define UV_FS_O_WRONLY 0
|
||||
#endif
|
||||
|
||||
/* fs open() flags supported on other platforms: */
|
||||
#define UV_FS_O_FILEMAP 0
|
||||
#define UV_FS_O_RANDOM 0
|
||||
#define UV_FS_O_SHORT_LIVED 0
|
||||
#define UV_FS_O_SEQUENTIAL 0
|
||||
#define UV_FS_O_TEMPORARY 0
|
||||
|
||||
#endif /* UV_UNIX_H */
|
||||
43
src/bun.js/bindings/libuv/uv/version.h
Normal file
43
src/bun.js/bindings/libuv/uv/version.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef UV_VERSION_H
|
||||
#define UV_VERSION_H
|
||||
|
||||
/*
|
||||
* Versions with the same major number are ABI stable. API is allowed to
|
||||
* evolve between minor releases, but only in a backwards compatible way.
|
||||
* Make sure you update the -soname directives in configure.ac
|
||||
* whenever you bump UV_VERSION_MAJOR or UV_VERSION_MINOR (but
|
||||
* not UV_VERSION_PATCH.)
|
||||
*/
|
||||
|
||||
#define UV_VERSION_MAJOR 1
|
||||
#define UV_VERSION_MINOR 50
|
||||
#define UV_VERSION_PATCH 1
|
||||
#define UV_VERSION_IS_RELEASE 0
|
||||
#define UV_VERSION_SUFFIX "dev"
|
||||
|
||||
#define UV_VERSION_HEX ((UV_VERSION_MAJOR << 16) | \
|
||||
(UV_VERSION_MINOR << 8) | \
|
||||
(UV_VERSION_PATCH))
|
||||
|
||||
#endif /* UV_VERSION_H */
|
||||
698
src/bun.js/bindings/libuv/uv/win.h
Normal file
698
src/bun.js/bindings/libuv/uv/win.h
Normal file
@@ -0,0 +1,698 @@
|
||||
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to
|
||||
* deal in the Software without restriction, including without limitation the
|
||||
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
* sell copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _WIN32_WINNT
|
||||
# define _WIN32_WINNT 0x0A00
|
||||
#endif
|
||||
|
||||
#if !defined(_SSIZE_T_) && !defined(_SSIZE_T_DEFINED)
|
||||
typedef intptr_t ssize_t;
|
||||
# define SSIZE_MAX INTPTR_MAX
|
||||
# define _SSIZE_T_
|
||||
# define _SSIZE_T_DEFINED
|
||||
#endif
|
||||
|
||||
#include <winsock2.h>
|
||||
|
||||
#ifndef LOCALE_INVARIANT
|
||||
# define LOCALE_INVARIANT 0x007f
|
||||
#endif
|
||||
|
||||
#include <mswsock.h>
|
||||
/* Disable the typedef in mstcpip.h of MinGW. */
|
||||
#define _TCP_INITIAL_RTO_PARAMETERS _TCP_INITIAL_RTO_PARAMETERS__AVOID
|
||||
#define TCP_INITIAL_RTO_PARAMETERS TCP_INITIAL_RTO_PARAMETERS__AVOID
|
||||
#define PTCP_INITIAL_RTO_PARAMETERS PTCP_INITIAL_RTO_PARAMETERS__AVOID
|
||||
#include <ws2tcpip.h>
|
||||
#undef _TCP_INITIAL_RTO_PARAMETERS
|
||||
#undef TCP_INITIAL_RTO_PARAMETERS
|
||||
#undef PTCP_INITIAL_RTO_PARAMETERS
|
||||
#include <windows.h>
|
||||
|
||||
#include <process.h>
|
||||
#include <signal.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "uv/tree.h"
|
||||
#include "uv/threadpool.h"
|
||||
|
||||
#define MAX_PIPENAME_LEN 256
|
||||
|
||||
#ifndef S_IFLNK
|
||||
# define S_IFLNK 0xA000
|
||||
#endif
|
||||
|
||||
/* Define missing in Windows Kit Include\{VERSION}\ucrt\sys\stat.h */
|
||||
#if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES && !defined(S_IFIFO)
|
||||
# define S_IFIFO _S_IFIFO
|
||||
#endif
|
||||
|
||||
/* Additional signals supported by uv_signal and or uv_kill. The CRT defines
|
||||
* the following signals already:
|
||||
*
|
||||
* #define SIGINT 2
|
||||
* #define SIGILL 4
|
||||
* #define SIGABRT_COMPAT 6
|
||||
* #define SIGFPE 8
|
||||
* #define SIGSEGV 11
|
||||
* #define SIGTERM 15
|
||||
* #define SIGBREAK 21
|
||||
* #define SIGABRT 22
|
||||
*
|
||||
* The additional signals have values that are common on other Unix
|
||||
* variants (Linux and Darwin)
|
||||
*/
|
||||
#define SIGHUP 1
|
||||
#define SIGQUIT 3
|
||||
#define SIGKILL 9
|
||||
#define SIGWINCH 28
|
||||
|
||||
/* Redefine NSIG to take SIGWINCH into consideration */
|
||||
#if defined(NSIG) && NSIG <= SIGWINCH
|
||||
# undef NSIG
|
||||
#endif
|
||||
#ifndef NSIG
|
||||
# define NSIG SIGWINCH + 1
|
||||
#endif
|
||||
|
||||
/* The CRT defines SIGABRT_COMPAT as 6, which equals SIGABRT on many unix-like
|
||||
* platforms. However MinGW doesn't define it, so we do. */
|
||||
#ifndef SIGABRT_COMPAT
|
||||
# define SIGABRT_COMPAT 6
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Guids and typedefs for winsock extension functions
|
||||
* Mingw32 doesn't have these :-(
|
||||
*/
|
||||
#ifndef WSAID_ACCEPTEX
|
||||
# define WSAID_ACCEPTEX \
|
||||
{0xb5367df1, 0xcbac, 0x11cf, \
|
||||
{0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}
|
||||
|
||||
# define WSAID_CONNECTEX \
|
||||
{0x25a207b9, 0xddf3, 0x4660, \
|
||||
{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}}
|
||||
|
||||
# define WSAID_GETACCEPTEXSOCKADDRS \
|
||||
{0xb5367df2, 0xcbac, 0x11cf, \
|
||||
{0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}
|
||||
|
||||
# define WSAID_DISCONNECTEX \
|
||||
{0x7fda2e11, 0x8630, 0x436f, \
|
||||
{0xa0, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57}}
|
||||
|
||||
# define WSAID_TRANSMITFILE \
|
||||
{0xb5367df0, 0xcbac, 0x11cf, \
|
||||
{0x95, 0xca, 0x00, 0x80, 0x5f, 0x48, 0xa1, 0x92}}
|
||||
|
||||
typedef BOOL (PASCAL *LPFN_ACCEPTEX)
|
||||
(SOCKET sListenSocket,
|
||||
SOCKET sAcceptSocket,
|
||||
PVOID lpOutputBuffer,
|
||||
DWORD dwReceiveDataLength,
|
||||
DWORD dwLocalAddressLength,
|
||||
DWORD dwRemoteAddressLength,
|
||||
LPDWORD lpdwBytesReceived,
|
||||
LPOVERLAPPED lpOverlapped);
|
||||
|
||||
typedef BOOL (PASCAL *LPFN_CONNECTEX)
|
||||
(SOCKET s,
|
||||
const struct sockaddr* name,
|
||||
int namelen,
|
||||
PVOID lpSendBuffer,
|
||||
DWORD dwSendDataLength,
|
||||
LPDWORD lpdwBytesSent,
|
||||
LPOVERLAPPED lpOverlapped);
|
||||
|
||||
typedef void (PASCAL *LPFN_GETACCEPTEXSOCKADDRS)
|
||||
(PVOID lpOutputBuffer,
|
||||
DWORD dwReceiveDataLength,
|
||||
DWORD dwLocalAddressLength,
|
||||
DWORD dwRemoteAddressLength,
|
||||
LPSOCKADDR* LocalSockaddr,
|
||||
LPINT LocalSockaddrLength,
|
||||
LPSOCKADDR* RemoteSockaddr,
|
||||
LPINT RemoteSockaddrLength);
|
||||
|
||||
typedef BOOL (PASCAL *LPFN_DISCONNECTEX)
|
||||
(SOCKET hSocket,
|
||||
LPOVERLAPPED lpOverlapped,
|
||||
DWORD dwFlags,
|
||||
DWORD reserved);
|
||||
|
||||
typedef BOOL (PASCAL *LPFN_TRANSMITFILE)
|
||||
(SOCKET hSocket,
|
||||
HANDLE hFile,
|
||||
DWORD nNumberOfBytesToWrite,
|
||||
DWORD nNumberOfBytesPerSend,
|
||||
LPOVERLAPPED lpOverlapped,
|
||||
LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
|
||||
DWORD dwFlags);
|
||||
|
||||
typedef PVOID RTL_SRWLOCK;
|
||||
typedef RTL_SRWLOCK SRWLOCK, *PSRWLOCK;
|
||||
#endif
|
||||
|
||||
typedef int (WSAAPI* LPFN_WSARECV)
|
||||
(SOCKET socket,
|
||||
LPWSABUF buffers,
|
||||
DWORD buffer_count,
|
||||
LPDWORD bytes,
|
||||
LPDWORD flags,
|
||||
LPWSAOVERLAPPED overlapped,
|
||||
LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine);
|
||||
|
||||
typedef int (WSAAPI* LPFN_WSARECVFROM)
|
||||
(SOCKET socket,
|
||||
LPWSABUF buffers,
|
||||
DWORD buffer_count,
|
||||
LPDWORD bytes,
|
||||
LPDWORD flags,
|
||||
struct sockaddr* addr,
|
||||
LPINT addr_len,
|
||||
LPWSAOVERLAPPED overlapped,
|
||||
LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine);
|
||||
|
||||
#ifndef _NTDEF_
|
||||
typedef LONG NTSTATUS;
|
||||
typedef NTSTATUS *PNTSTATUS;
|
||||
#endif
|
||||
|
||||
#ifndef RTL_CONDITION_VARIABLE_INIT
|
||||
typedef PVOID CONDITION_VARIABLE, *PCONDITION_VARIABLE;
|
||||
#endif
|
||||
|
||||
typedef struct _AFD_POLL_HANDLE_INFO {
|
||||
HANDLE Handle;
|
||||
ULONG Events;
|
||||
NTSTATUS Status;
|
||||
} AFD_POLL_HANDLE_INFO, *PAFD_POLL_HANDLE_INFO;
|
||||
|
||||
typedef struct _AFD_POLL_INFO {
|
||||
LARGE_INTEGER Timeout;
|
||||
ULONG NumberOfHandles;
|
||||
ULONG Exclusive;
|
||||
AFD_POLL_HANDLE_INFO Handles[1];
|
||||
} AFD_POLL_INFO, *PAFD_POLL_INFO;
|
||||
|
||||
#define UV_MSAFD_PROVIDER_COUNT 4
|
||||
|
||||
|
||||
/**
|
||||
* It should be possible to cast uv_buf_t[] to WSABUF[]
|
||||
* see http://msdn.microsoft.com/en-us/library/ms741542(v=vs.85).aspx
|
||||
*/
|
||||
typedef struct uv_buf_t {
|
||||
ULONG len;
|
||||
char* base;
|
||||
} uv_buf_t;
|
||||
|
||||
typedef int uv_file;
|
||||
typedef SOCKET uv_os_sock_t;
|
||||
typedef HANDLE uv_os_fd_t;
|
||||
typedef int uv_pid_t;
|
||||
|
||||
typedef HANDLE uv_thread_t;
|
||||
|
||||
typedef HANDLE uv_sem_t;
|
||||
|
||||
typedef CRITICAL_SECTION uv_mutex_t;
|
||||
|
||||
/* This condition variable implementation is based on the SetEvent solution
|
||||
* (section 3.2) at http://www.cs.wustl.edu/~schmidt/win32-cv-1.html
|
||||
* We could not use the SignalObjectAndWait solution (section 3.4) because
|
||||
* it want the 2nd argument (type uv_mutex_t) of uv_cond_wait() and
|
||||
* uv_cond_timedwait() to be HANDLEs, but we use CRITICAL_SECTIONs.
|
||||
*/
|
||||
|
||||
typedef union {
|
||||
CONDITION_VARIABLE cond_var;
|
||||
struct {
|
||||
unsigned int waiters_count;
|
||||
CRITICAL_SECTION waiters_count_lock;
|
||||
HANDLE signal_event;
|
||||
HANDLE broadcast_event;
|
||||
} unused_; /* TODO: retained for ABI compatibility; remove me in v2.x. */
|
||||
} uv_cond_t;
|
||||
|
||||
typedef struct {
|
||||
SRWLOCK read_write_lock_;
|
||||
/* TODO: retained for ABI compatibility; remove me in v2.x */
|
||||
#ifdef _WIN64
|
||||
unsigned char padding_[72];
|
||||
#else
|
||||
unsigned char padding_[44];
|
||||
#endif
|
||||
} uv_rwlock_t;
|
||||
|
||||
typedef struct {
|
||||
unsigned threshold;
|
||||
unsigned in;
|
||||
uv_mutex_t mutex;
|
||||
/* TODO: in v2 make this a uv_cond_t, without unused_ */
|
||||
CONDITION_VARIABLE cond;
|
||||
unsigned out;
|
||||
} uv_barrier_t;
|
||||
|
||||
typedef struct {
|
||||
DWORD tls_index;
|
||||
} uv_key_t;
|
||||
|
||||
#define UV_ONCE_INIT { 0, NULL }
|
||||
|
||||
typedef struct uv_once_s {
|
||||
unsigned char unused;
|
||||
INIT_ONCE init_once;
|
||||
} uv_once_t;
|
||||
|
||||
/* Platform-specific definitions for uv_spawn support. */
|
||||
typedef unsigned char uv_uid_t;
|
||||
typedef unsigned char uv_gid_t;
|
||||
|
||||
typedef struct uv__dirent_s {
|
||||
int d_type;
|
||||
char d_name[1];
|
||||
} uv__dirent_t;
|
||||
|
||||
#define UV_DIR_PRIVATE_FIELDS \
|
||||
HANDLE dir_handle; \
|
||||
WIN32_FIND_DATAW find_data; \
|
||||
BOOL need_find_call;
|
||||
|
||||
#define HAVE_DIRENT_TYPES
|
||||
#define UV__DT_DIR UV_DIRENT_DIR
|
||||
#define UV__DT_FILE UV_DIRENT_FILE
|
||||
#define UV__DT_LINK UV_DIRENT_LINK
|
||||
#define UV__DT_FIFO UV_DIRENT_FIFO
|
||||
#define UV__DT_SOCKET UV_DIRENT_SOCKET
|
||||
#define UV__DT_CHAR UV_DIRENT_CHAR
|
||||
#define UV__DT_BLOCK UV_DIRENT_BLOCK
|
||||
|
||||
/* Platform-specific definitions for uv_dlopen support. */
|
||||
#define UV_DYNAMIC FAR WINAPI
|
||||
typedef struct {
|
||||
HMODULE handle;
|
||||
char* errmsg;
|
||||
} uv_lib_t;
|
||||
|
||||
#define UV_LOOP_PRIVATE_FIELDS \
|
||||
/* The loop's I/O completion port */ \
|
||||
HANDLE iocp; \
|
||||
/* The current time according to the event loop. in msecs. */ \
|
||||
uint64_t time; \
|
||||
/* Tail of a single-linked circular queue of pending reqs. If the queue */ \
|
||||
/* is empty, tail_ is NULL. If there is only one item, */ \
|
||||
/* tail_->next_req == tail_ */ \
|
||||
uv_req_t* pending_reqs_tail; \
|
||||
/* Head of a single-linked list of closed handles */ \
|
||||
uv_handle_t* endgame_handles; \
|
||||
/* TODO(bnoordhuis) Stop heap-allocating |timer_heap| in libuv v2.x. */ \
|
||||
void* timer_heap; \
|
||||
/* Lists of active loop (prepare / check / idle) watchers */ \
|
||||
uv_prepare_t* prepare_handles; \
|
||||
uv_check_t* check_handles; \
|
||||
uv_idle_t* idle_handles; \
|
||||
/* This pointer will refer to the prepare/check/idle handle whose */ \
|
||||
/* callback is scheduled to be called next. This is needed to allow */ \
|
||||
/* safe removal from one of the lists above while that list being */ \
|
||||
/* iterated over. */ \
|
||||
uv_prepare_t* next_prepare_handle; \
|
||||
uv_check_t* next_check_handle; \
|
||||
uv_idle_t* next_idle_handle; \
|
||||
/* This handle holds the peer sockets for the fast variant of uv_poll_t */ \
|
||||
SOCKET poll_peer_sockets[UV_MSAFD_PROVIDER_COUNT]; \
|
||||
/* No longer used. */ \
|
||||
unsigned int active_tcp_streams; \
|
||||
/* No longer used. */ \
|
||||
unsigned int active_udp_streams; \
|
||||
/* Counter to started timer */ \
|
||||
uint64_t timer_counter; \
|
||||
/* Threadpool */ \
|
||||
struct uv__queue wq; \
|
||||
uv_mutex_t wq_mutex; \
|
||||
uv_async_t wq_async;
|
||||
|
||||
#define UV_REQ_TYPE_PRIVATE \
|
||||
/* TODO: remove the req suffix */ \
|
||||
UV_ACCEPT, \
|
||||
UV_FS_EVENT_REQ, \
|
||||
UV_POLL_REQ, \
|
||||
UV_PROCESS_EXIT, \
|
||||
UV_READ, \
|
||||
UV_UDP_RECV, \
|
||||
UV_WAKEUP, \
|
||||
UV_SIGNAL_REQ,
|
||||
|
||||
#define UV_REQ_PRIVATE_FIELDS \
|
||||
union { \
|
||||
/* Used by I/O operations */ \
|
||||
struct { \
|
||||
OVERLAPPED overlapped; \
|
||||
size_t queued_bytes; \
|
||||
} io; \
|
||||
/* in v2, we can move these to the UV_CONNECT_PRIVATE_FIELDS */ \
|
||||
struct { \
|
||||
ULONG_PTR result; /* overlapped.Internal is reused to hold the result */\
|
||||
HANDLE pipeHandle; \
|
||||
DWORD duplex_flags; \
|
||||
WCHAR* name; \
|
||||
} connect; \
|
||||
} u; \
|
||||
struct uv_req_s* next_req;
|
||||
|
||||
#define UV_WRITE_PRIVATE_FIELDS \
|
||||
int coalesced; \
|
||||
uv_buf_t write_buffer; \
|
||||
HANDLE event_handle; \
|
||||
HANDLE wait_handle;
|
||||
|
||||
#define UV_CONNECT_PRIVATE_FIELDS \
|
||||
/* empty */
|
||||
|
||||
#define UV_SHUTDOWN_PRIVATE_FIELDS \
|
||||
/* empty */
|
||||
|
||||
#define UV_UDP_SEND_PRIVATE_FIELDS \
|
||||
/* empty */
|
||||
|
||||
#define UV_PRIVATE_REQ_TYPES \
|
||||
typedef struct uv_pipe_accept_s { \
|
||||
UV_REQ_FIELDS \
|
||||
HANDLE pipeHandle; \
|
||||
struct uv_pipe_accept_s* next_pending; \
|
||||
} uv_pipe_accept_t; \
|
||||
\
|
||||
typedef struct uv_tcp_accept_s { \
|
||||
UV_REQ_FIELDS \
|
||||
SOCKET accept_socket; \
|
||||
char accept_buffer[sizeof(struct sockaddr_storage) * 2 + 32]; \
|
||||
HANDLE event_handle; \
|
||||
HANDLE wait_handle; \
|
||||
struct uv_tcp_accept_s* next_pending; \
|
||||
} uv_tcp_accept_t; \
|
||||
\
|
||||
typedef struct uv_read_s { \
|
||||
UV_REQ_FIELDS \
|
||||
HANDLE event_handle; \
|
||||
HANDLE wait_handle; \
|
||||
} uv_read_t;
|
||||
|
||||
#define uv_stream_connection_fields \
|
||||
unsigned int write_reqs_pending; \
|
||||
uv_shutdown_t* shutdown_req;
|
||||
|
||||
#define uv_stream_server_fields \
|
||||
uv_connection_cb connection_cb;
|
||||
|
||||
#define UV_STREAM_PRIVATE_FIELDS \
|
||||
unsigned int reqs_pending; \
|
||||
int activecnt; \
|
||||
uv_read_t read_req; \
|
||||
union { \
|
||||
struct { uv_stream_connection_fields } conn; \
|
||||
struct { uv_stream_server_fields } serv; \
|
||||
} stream;
|
||||
|
||||
#define uv_tcp_server_fields \
|
||||
uv_tcp_accept_t* accept_reqs; \
|
||||
unsigned int processed_accepts; \
|
||||
uv_tcp_accept_t* pending_accepts; \
|
||||
LPFN_ACCEPTEX func_acceptex;
|
||||
|
||||
#define uv_tcp_connection_fields \
|
||||
uv_buf_t read_buffer; \
|
||||
LPFN_CONNECTEX func_connectex;
|
||||
|
||||
#define UV_TCP_PRIVATE_FIELDS \
|
||||
SOCKET socket; \
|
||||
int delayed_error; \
|
||||
union { \
|
||||
struct { uv_tcp_server_fields } serv; \
|
||||
struct { uv_tcp_connection_fields } conn; \
|
||||
} tcp;
|
||||
|
||||
#define UV_UDP_PRIVATE_FIELDS \
|
||||
SOCKET socket; \
|
||||
unsigned int reqs_pending; \
|
||||
int activecnt; \
|
||||
uv_req_t recv_req; \
|
||||
uv_buf_t recv_buffer; \
|
||||
struct sockaddr_storage recv_from; \
|
||||
int recv_from_len; \
|
||||
uv_udp_recv_cb recv_cb; \
|
||||
uv_alloc_cb alloc_cb; \
|
||||
LPFN_WSARECV func_wsarecv; \
|
||||
LPFN_WSARECVFROM func_wsarecvfrom;
|
||||
|
||||
#define uv_pipe_server_fields \
|
||||
int pending_instances; \
|
||||
uv_pipe_accept_t* accept_reqs; \
|
||||
uv_pipe_accept_t* pending_accepts;
|
||||
|
||||
#define uv_pipe_connection_fields \
|
||||
uv_timer_t* eof_timer; \
|
||||
uv_write_t dummy; /* TODO: retained for ABI compat; remove this in v2.x. */ \
|
||||
DWORD ipc_remote_pid; \
|
||||
union { \
|
||||
uint32_t payload_remaining; \
|
||||
uint64_t dummy; /* TODO: retained for ABI compat; remove this in v2.x. */ \
|
||||
} ipc_data_frame; \
|
||||
struct uv__queue ipc_xfer_queue; \
|
||||
int ipc_xfer_queue_length; \
|
||||
uv_write_t* non_overlapped_writes_tail; \
|
||||
CRITICAL_SECTION readfile_thread_lock; \
|
||||
volatile HANDLE readfile_thread_handle;
|
||||
|
||||
#define UV_PIPE_PRIVATE_FIELDS \
|
||||
HANDLE handle; \
|
||||
WCHAR* name; \
|
||||
union { \
|
||||
struct { uv_pipe_server_fields } serv; \
|
||||
struct { uv_pipe_connection_fields } conn; \
|
||||
} pipe;
|
||||
|
||||
/* TODO: put the parser states in a union - TTY handles are always half-duplex
|
||||
* so read-state can safely overlap write-state. */
|
||||
#define UV_TTY_PRIVATE_FIELDS \
|
||||
HANDLE handle; \
|
||||
union { \
|
||||
struct { \
|
||||
/* Used for readable TTY handles */ \
|
||||
union { \
|
||||
/* TODO: remove me in v2.x. */ \
|
||||
HANDLE unused_; \
|
||||
int mode; \
|
||||
} mode; \
|
||||
uv_buf_t read_line_buffer; \
|
||||
HANDLE read_raw_wait; \
|
||||
/* Fields used for translating win keystrokes into vt100 characters */ \
|
||||
char last_key[8]; \
|
||||
unsigned char last_key_offset; \
|
||||
unsigned char last_key_len; \
|
||||
WCHAR last_utf16_high_surrogate; \
|
||||
INPUT_RECORD last_input_record; \
|
||||
} rd; \
|
||||
struct { \
|
||||
/* Used for writable TTY handles */ \
|
||||
/* utf8-to-utf16 conversion state */ \
|
||||
unsigned int utf8_codepoint; \
|
||||
unsigned char utf8_bytes_left; \
|
||||
/* eol conversion state */ \
|
||||
unsigned char previous_eol; \
|
||||
/* ansi parser state */ \
|
||||
unsigned short ansi_parser_state; \
|
||||
unsigned char ansi_csi_argc; \
|
||||
unsigned short ansi_csi_argv[4]; \
|
||||
COORD saved_position; \
|
||||
WORD saved_attributes; \
|
||||
} wr; \
|
||||
} tty;
|
||||
|
||||
#define UV_POLL_PRIVATE_FIELDS \
|
||||
SOCKET socket; \
|
||||
/* Used in fast mode */ \
|
||||
SOCKET peer_socket; \
|
||||
AFD_POLL_INFO afd_poll_info_1; \
|
||||
AFD_POLL_INFO afd_poll_info_2; \
|
||||
/* Used in fast and slow mode. */ \
|
||||
uv_req_t poll_req_1; \
|
||||
uv_req_t poll_req_2; \
|
||||
unsigned char submitted_events_1; \
|
||||
unsigned char submitted_events_2; \
|
||||
unsigned char mask_events_1; \
|
||||
unsigned char mask_events_2; \
|
||||
unsigned char events;
|
||||
|
||||
#define UV_TIMER_PRIVATE_FIELDS \
|
||||
union { \
|
||||
void* heap[3]; \
|
||||
struct uv__queue queue; \
|
||||
} node; \
|
||||
int unused; \
|
||||
uint64_t timeout; \
|
||||
uint64_t repeat; \
|
||||
uint64_t start_id; \
|
||||
uv_timer_cb timer_cb;
|
||||
|
||||
#define UV_ASYNC_PRIVATE_FIELDS \
|
||||
struct uv_req_s async_req; \
|
||||
uv_async_cb async_cb; \
|
||||
/* char to avoid alignment issues */ \
|
||||
char volatile async_sent;
|
||||
|
||||
#define UV_PREPARE_PRIVATE_FIELDS \
|
||||
uv_prepare_t* prepare_prev; \
|
||||
uv_prepare_t* prepare_next; \
|
||||
uv_prepare_cb prepare_cb;
|
||||
|
||||
#define UV_CHECK_PRIVATE_FIELDS \
|
||||
uv_check_t* check_prev; \
|
||||
uv_check_t* check_next; \
|
||||
uv_check_cb check_cb;
|
||||
|
||||
#define UV_IDLE_PRIVATE_FIELDS \
|
||||
uv_idle_t* idle_prev; \
|
||||
uv_idle_t* idle_next; \
|
||||
uv_idle_cb idle_cb;
|
||||
|
||||
#define UV_HANDLE_PRIVATE_FIELDS \
|
||||
uv_handle_t* endgame_next; \
|
||||
unsigned int flags;
|
||||
|
||||
#define UV_GETADDRINFO_PRIVATE_FIELDS \
|
||||
struct uv__work work_req; \
|
||||
uv_getaddrinfo_cb getaddrinfo_cb; \
|
||||
void* alloc; \
|
||||
WCHAR* node; \
|
||||
WCHAR* service; \
|
||||
/* The addrinfoW field is used to store a pointer to the hints, and */ \
|
||||
/* later on to store the result of GetAddrInfoW. The final result will */ \
|
||||
/* be converted to struct addrinfo* and stored in the addrinfo field. */ \
|
||||
struct addrinfoW* addrinfow; \
|
||||
struct addrinfo* addrinfo; \
|
||||
int retcode;
|
||||
|
||||
#define UV_GETNAMEINFO_PRIVATE_FIELDS \
|
||||
struct uv__work work_req; \
|
||||
uv_getnameinfo_cb getnameinfo_cb; \
|
||||
struct sockaddr_storage storage; \
|
||||
int flags; \
|
||||
char host[NI_MAXHOST]; \
|
||||
char service[NI_MAXSERV]; \
|
||||
int retcode;
|
||||
|
||||
#define UV_PROCESS_PRIVATE_FIELDS \
|
||||
struct uv_process_exit_s { \
|
||||
UV_REQ_FIELDS \
|
||||
} exit_req; \
|
||||
void* unused; /* TODO: retained for ABI compat; remove this in v2.x. */ \
|
||||
int exit_signal; \
|
||||
HANDLE wait_handle; \
|
||||
HANDLE process_handle; \
|
||||
volatile char exit_cb_pending;
|
||||
|
||||
#define UV_FS_PRIVATE_FIELDS \
|
||||
struct uv__work work_req; \
|
||||
int flags; \
|
||||
DWORD sys_errno_; \
|
||||
union { \
|
||||
/* TODO: remove me in 0.9. */ \
|
||||
WCHAR* pathw; \
|
||||
int fd; \
|
||||
} file; \
|
||||
union { \
|
||||
struct { \
|
||||
int mode; \
|
||||
WCHAR* new_pathw; \
|
||||
int file_flags; \
|
||||
int fd_out; \
|
||||
unsigned int nbufs; \
|
||||
uv_buf_t* bufs; \
|
||||
int64_t offset; \
|
||||
uv_buf_t bufsml[4]; \
|
||||
} info; \
|
||||
struct { \
|
||||
double atime; \
|
||||
double mtime; \
|
||||
} time; \
|
||||
} fs;
|
||||
|
||||
#define UV_WORK_PRIVATE_FIELDS \
|
||||
struct uv__work work_req;
|
||||
|
||||
#define UV_FS_EVENT_PRIVATE_FIELDS \
|
||||
struct uv_fs_event_req_s { \
|
||||
UV_REQ_FIELDS \
|
||||
} req; \
|
||||
HANDLE dir_handle; \
|
||||
int req_pending; \
|
||||
uv_fs_event_cb cb; \
|
||||
WCHAR* filew; \
|
||||
WCHAR* short_filew; \
|
||||
WCHAR* dirw; \
|
||||
char* buffer;
|
||||
|
||||
#define UV_SIGNAL_PRIVATE_FIELDS \
|
||||
RB_ENTRY(uv_signal_s) tree_entry; \
|
||||
struct uv_req_s signal_req; \
|
||||
unsigned long pending_signum;
|
||||
|
||||
#ifndef F_OK
|
||||
#define F_OK 0
|
||||
#endif
|
||||
#ifndef R_OK
|
||||
#define R_OK 4
|
||||
#endif
|
||||
#ifndef W_OK
|
||||
#define W_OK 2
|
||||
#endif
|
||||
#ifndef X_OK
|
||||
#define X_OK 1
|
||||
#endif
|
||||
|
||||
/* fs open() flags supported on this platform: */
|
||||
#define UV_FS_O_APPEND _O_APPEND
|
||||
#define UV_FS_O_CREAT _O_CREAT
|
||||
#define UV_FS_O_EXCL _O_EXCL
|
||||
#define UV_FS_O_FILEMAP 0x20000000
|
||||
#define UV_FS_O_RANDOM _O_RANDOM
|
||||
#define UV_FS_O_RDONLY _O_RDONLY
|
||||
#define UV_FS_O_RDWR _O_RDWR
|
||||
#define UV_FS_O_SEQUENTIAL _O_SEQUENTIAL
|
||||
#define UV_FS_O_SHORT_LIVED _O_SHORT_LIVED
|
||||
#define UV_FS_O_TEMPORARY _O_TEMPORARY
|
||||
#define UV_FS_O_TRUNC _O_TRUNC
|
||||
#define UV_FS_O_WRONLY _O_WRONLY
|
||||
|
||||
/* fs open() flags supported on other platforms (or mapped on this platform): */
|
||||
#define UV_FS_O_DIRECT 0x02000000 /* FILE_FLAG_NO_BUFFERING */
|
||||
#define UV_FS_O_DIRECTORY 0
|
||||
#define UV_FS_O_DSYNC 0x04000000 /* FILE_FLAG_WRITE_THROUGH */
|
||||
#define UV_FS_O_EXLOCK 0x10000000 /* EXCLUSIVE SHARING MODE */
|
||||
#define UV_FS_O_NOATIME 0
|
||||
#define UV_FS_O_NOCTTY 0
|
||||
#define UV_FS_O_NOFOLLOW 0
|
||||
#define UV_FS_O_NONBLOCK 0
|
||||
#define UV_FS_O_SYMLINK 0
|
||||
#define UV_FS_O_SYNC 0x08000000 /* FILE_FLAG_WRITE_THROUGH */
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
#if OS(LINUX) || OS(DARWIN)
|
||||
|
||||
void __bun_throw_not_implemented(const char* symbol_name)
|
||||
{
|
||||
CrashHandler__unsupportedUVFunction(symbol_name);
|
||||
}
|
||||
|
||||
uv_pid_t uv_os_getpid()
|
||||
{
|
||||
return getpid();
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include "root.h"
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if OS(LINUX) || OS(DARWIN)
|
||||
|
||||
typedef int uv_pid_t;
|
||||
// These functions are called by the stubs to crash with a nice error message
|
||||
// when accessing a libuv functin which we do not support on posix
|
||||
extern "C" void CrashHandler__unsupportedUVFunction(const char* function_name);
|
||||
void __bun_throw_not_implemented(const char* symbol_name);
|
||||
|
||||
// Returns the current process ID.
|
||||
extern "C" BUN_EXPORT uv_pid_t uv_os_getpid();
|
||||
// libuv headers will use UV_EXTERN
|
||||
#define UV_EXTERN extern "C" __attribute__((visibility("default"))) __attribute__((used))
|
||||
|
||||
// Returns the parent process ID.
|
||||
extern "C" BUN_EXPORT uv_pid_t uv_os_getppid();
|
||||
#include <uv.h>
|
||||
|
||||
#endif
|
||||
|
||||
2168
src/bun.js/bindings/uv-posix-stubs.cpp
Normal file
2168
src/bun.js/bindings/uv-posix-stubs.cpp
Normal file
File diff suppressed because it is too large
Load Diff
@@ -53,10 +53,7 @@ var panic_mutex = bun.Mutex{};
|
||||
threadlocal var panic_stage: usize = 0;
|
||||
|
||||
threadlocal var inside_native_plugin: ?[*:0]const u8 = null;
|
||||
|
||||
export fn CrashHandler__setInsideNativePlugin(name: ?[*:0]const u8) callconv(.C) void {
|
||||
inside_native_plugin = name;
|
||||
}
|
||||
threadlocal var unsupported_uv_function: ?[*:0]const u8 = null;
|
||||
|
||||
/// This can be set by various parts of the codebase to indicate a broader
|
||||
/// action being taken. It is printed when a crash happens, which can help
|
||||
@@ -69,7 +66,6 @@ pub threadlocal var current_action: ?Action = null;
|
||||
|
||||
var before_crash_handlers: std.ArrayListUnmanaged(struct { *anyopaque, *const OnBeforeCrash }) = .{};
|
||||
|
||||
// TODO: I don't think it's safe to lock/unlock a mutex inside a signal handler.
|
||||
var before_crash_handlers_mutex: bun.Mutex = .{};
|
||||
|
||||
const CPUFeatures = @import("./bun.js/bindings/CPUFeatures.zig");
|
||||
@@ -137,6 +133,8 @@ pub const Action = union(enum) {
|
||||
kind: bun.ImportKind,
|
||||
} else void,
|
||||
|
||||
dlopen: []const u8,
|
||||
|
||||
pub fn format(act: Action, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void {
|
||||
switch (act) {
|
||||
.parse => |path| try writer.print("parsing {s}", .{path}),
|
||||
@@ -168,6 +166,7 @@ pub const Action = union(enum) {
|
||||
res.kind.label(),
|
||||
});
|
||||
},
|
||||
.dlopen => |path| try writer.print("while loading native module: {s}", .{path}),
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -247,6 +246,20 @@ pub fn crashHandler(
|
||||
\\
|
||||
;
|
||||
writer.print(Output.prettyFmt(fmt, true), .{native_plugin_name}) catch std.posix.abort();
|
||||
} else if (bun.analytics.Features.unsupported_uv_function > 0) {
|
||||
const name = unsupported_uv_function orelse "<unknown>";
|
||||
const fmt =
|
||||
\\Bun encountered a crash when running a NAPI module that tried to call
|
||||
\\the <red>{s}<r> libuv function.
|
||||
\\
|
||||
\\Bun is actively working on supporting all libuv functions for POSIX
|
||||
\\systems, please see this issue to track our progress:
|
||||
\\
|
||||
\\<cyan>https://github.com/oven-sh/bun/issues/4290<r>
|
||||
\\
|
||||
\\
|
||||
;
|
||||
writer.print(Output.prettyFmt(fmt, true), .{name}) catch std.posix.abort();
|
||||
}
|
||||
} else {
|
||||
if (Output.enable_ansi_colors) {
|
||||
@@ -346,6 +359,20 @@ pub fn crashHandler(
|
||||
\\
|
||||
\\
|
||||
, true), .{native_plugin_name}) catch std.posix.abort();
|
||||
} else if (bun.analytics.Features.unsupported_uv_function > 0) {
|
||||
const name = unsupported_uv_function orelse "<unknown>";
|
||||
const fmt =
|
||||
\\Bun encountered a crash when running a NAPI module that tried to call
|
||||
\\the <red>{s}<r> libuv function.
|
||||
\\
|
||||
\\Bun is actively working on supporting all libuv functions for POSIX
|
||||
\\systems, please see this issue to track our progress:
|
||||
\\
|
||||
\\<cyan>https://github.com/oven-sh/bun/issues/4290<r>
|
||||
\\
|
||||
\\
|
||||
;
|
||||
writer.print(Output.prettyFmt(fmt, true), .{name}) catch std.posix.abort();
|
||||
} else if (reason == .out_of_memory) {
|
||||
writer.writeAll(
|
||||
\\Bun has run out of memory.
|
||||
@@ -1831,10 +1858,33 @@ pub fn isPanicking() bool {
|
||||
return panicking.load(.monotonic) > 0;
|
||||
}
|
||||
|
||||
export fn CrashHandler__setInsideNativePlugin(name: ?[*:0]const u8) callconv(.C) void {
|
||||
inside_native_plugin = name;
|
||||
}
|
||||
|
||||
fn unsupportUVFunction(name: ?[*:0]const u8) callconv(.C) void {
|
||||
bun.analytics.Features.unsupported_uv_function += 1;
|
||||
unsupported_uv_function = name;
|
||||
std.debug.panic("unsupported uv function: {s}", .{name.?});
|
||||
}
|
||||
|
||||
export fn Bun__crashHandler(message_ptr: [*]u8, message_len: usize) noreturn {
|
||||
crashHandler(.{ .panic = message_ptr[0..message_len] }, null, @returnAddress());
|
||||
}
|
||||
|
||||
export fn CrashHandler__setDlOpenAction(action: ?[*:0]const u8) void {
|
||||
if (action) |str| {
|
||||
bun.debugAssert(current_action == null);
|
||||
current_action = .{ .dlopen = bun.sliceTo(str, 0) };
|
||||
} else {
|
||||
bun.debugAssert(current_action != null and current_action.? == .dlopen);
|
||||
current_action = null;
|
||||
}
|
||||
}
|
||||
|
||||
comptime {
|
||||
_ = &Bun__crashHandler;
|
||||
if (!bun.Environment.isWindows) {
|
||||
@export(&unsupportUVFunction, .{ .name = "CrashHandler__unsupportedUVFunction" });
|
||||
}
|
||||
}
|
||||
|
||||
320
src/linker.lds
320
src/linker.lds
@@ -4,8 +4,324 @@ BUN_1.2 {
|
||||
node_api_*;
|
||||
node_module_register;
|
||||
|
||||
uv_os_getpid;
|
||||
uv_os_getppid;
|
||||
|
||||
uv_accept;
|
||||
uv_async_init;
|
||||
uv_async_send;
|
||||
uv_available_parallelism;
|
||||
uv_backend_fd;
|
||||
uv_backend_timeout;
|
||||
uv_barrier_destroy;
|
||||
uv_barrier_init;
|
||||
uv_barrier_wait;
|
||||
uv_buf_init;
|
||||
uv_cancel;
|
||||
uv_chdir;
|
||||
uv_check_init;
|
||||
uv_check_start;
|
||||
uv_check_stop;
|
||||
uv_clock_gettime;
|
||||
uv_close;
|
||||
uv_cond_broadcast;
|
||||
uv_cond_destroy;
|
||||
uv_cond_init;
|
||||
uv_cond_signal;
|
||||
uv_cond_timedwait;
|
||||
uv_cond_wait;
|
||||
uv_cpu_info;
|
||||
uv_cpumask_size;
|
||||
uv_cwd;
|
||||
uv_default_loop;
|
||||
uv_disable_stdio_inheritance;
|
||||
uv_dlclose;
|
||||
uv_dlerror;
|
||||
uv_dlopen;
|
||||
uv_dlsym;
|
||||
uv_err_name;
|
||||
uv_err_name_r;
|
||||
uv_exepath;
|
||||
uv_fileno;
|
||||
uv_free_cpu_info;
|
||||
uv_free_interface_addresses;
|
||||
uv_freeaddrinfo;
|
||||
uv_fs_access;
|
||||
uv_fs_chmod;
|
||||
uv_fs_chown;
|
||||
uv_fs_close;
|
||||
uv_fs_closedir;
|
||||
uv_fs_copyfile;
|
||||
uv_fs_event_getpath;
|
||||
uv_fs_event_init;
|
||||
uv_fs_event_start;
|
||||
uv_fs_event_stop;
|
||||
uv_fs_fchmod;
|
||||
uv_fs_fchown;
|
||||
uv_fs_fdatasync;
|
||||
uv_fs_fstat;
|
||||
uv_fs_fsync;
|
||||
uv_fs_ftruncate;
|
||||
uv_fs_futime;
|
||||
uv_fs_get_path;
|
||||
uv_fs_get_ptr;
|
||||
uv_fs_get_result;
|
||||
uv_fs_get_statbuf;
|
||||
uv_fs_get_system_error;
|
||||
uv_fs_get_type;
|
||||
uv_fs_lchown;
|
||||
uv_fs_link;
|
||||
uv_fs_lstat;
|
||||
uv_fs_lutime;
|
||||
uv_fs_mkdir;
|
||||
uv_fs_mkdtemp;
|
||||
uv_fs_mkstemp;
|
||||
uv_fs_open;
|
||||
uv_fs_opendir;
|
||||
uv_fs_poll_getpath;
|
||||
uv_fs_poll_init;
|
||||
uv_fs_poll_start;
|
||||
uv_fs_poll_stop;
|
||||
uv_fs_read;
|
||||
uv_fs_readdir;
|
||||
uv_fs_readlink;
|
||||
uv_fs_realpath;
|
||||
uv_fs_rename;
|
||||
uv_fs_req_cleanup;
|
||||
uv_fs_rmdir;
|
||||
uv_fs_scandir;
|
||||
uv_fs_scandir_next;
|
||||
uv_fs_sendfile;
|
||||
uv_fs_stat;
|
||||
uv_fs_statfs;
|
||||
uv_fs_symlink;
|
||||
uv_fs_unlink;
|
||||
uv_fs_utime;
|
||||
uv_fs_write;
|
||||
uv_get_available_memory;
|
||||
uv_get_constrained_memory;
|
||||
uv_get_free_memory;
|
||||
uv_get_osfhandle;
|
||||
uv_get_process_title;
|
||||
uv_get_total_memory;
|
||||
uv_getaddrinfo;
|
||||
uv_getnameinfo;
|
||||
uv_getrusage;
|
||||
uv_getrusage_thread;
|
||||
uv_gettimeofday;
|
||||
uv_guess_handle;
|
||||
uv_handle_get_data;
|
||||
uv_handle_get_loop;
|
||||
uv_handle_get_type;
|
||||
uv_handle_set_data;
|
||||
uv_handle_size;
|
||||
uv_handle_type_name;
|
||||
uv_has_ref;
|
||||
uv_hrtime;
|
||||
uv_idle_init;
|
||||
uv_idle_start;
|
||||
uv_idle_stop;
|
||||
uv_if_indextoiid;
|
||||
uv_if_indextoname;
|
||||
uv_inet_ntop;
|
||||
uv_inet_pton;
|
||||
uv_interface_addresses;
|
||||
uv_ip_name;
|
||||
uv_ip4_addr;
|
||||
uv_ip4_name;
|
||||
uv_ip6_addr;
|
||||
uv_ip6_name;
|
||||
uv_is_active;
|
||||
uv_is_closing;
|
||||
uv_is_readable;
|
||||
uv_is_writable;
|
||||
uv_key_create;
|
||||
uv_key_delete;
|
||||
uv_key_get;
|
||||
uv_key_set;
|
||||
uv_kill;
|
||||
uv_library_shutdown;
|
||||
uv_listen;
|
||||
uv_loadavg;
|
||||
uv_loop_alive;
|
||||
uv_loop_close;
|
||||
uv_loop_configure;
|
||||
uv_loop_delete;
|
||||
uv_loop_fork;
|
||||
uv_loop_get_data;
|
||||
uv_loop_init;
|
||||
uv_loop_new;
|
||||
uv_loop_set_data;
|
||||
uv_loop_size;
|
||||
uv_metrics_idle_time;
|
||||
uv_metrics_info;
|
||||
uv_mutex_destroy;
|
||||
uv_mutex_init;
|
||||
uv_mutex_init_recursive;
|
||||
uv_mutex_lock;
|
||||
uv_mutex_trylock;
|
||||
uv_mutex_unlock;
|
||||
uv_now;
|
||||
uv_once;
|
||||
uv_open_osfhandle;
|
||||
uv_os_environ;
|
||||
uv_os_free_environ;
|
||||
uv_os_free_group;
|
||||
uv_os_free_passwd;
|
||||
uv_os_get_group;
|
||||
uv_os_get_passwd;
|
||||
uv_os_get_passwd2;
|
||||
uv_os_getenv;
|
||||
uv_os_gethostname;
|
||||
uv_os_getpid;
|
||||
uv_os_getppid;
|
||||
uv_os_getpriority;
|
||||
uv_os_homedir;
|
||||
uv_os_setenv;
|
||||
uv_os_setpriority;
|
||||
uv_os_tmpdir;
|
||||
uv_os_uname;
|
||||
uv_os_unsetenv;
|
||||
uv_pipe;
|
||||
uv_pipe_bind;
|
||||
uv_pipe_bind2;
|
||||
uv_pipe_chmod;
|
||||
uv_pipe_connect;
|
||||
uv_pipe_connect2;
|
||||
uv_pipe_getpeername;
|
||||
uv_pipe_getsockname;
|
||||
uv_pipe_init;
|
||||
uv_pipe_open;
|
||||
uv_pipe_pending_count;
|
||||
uv_pipe_pending_instances;
|
||||
uv_pipe_pending_type;
|
||||
uv_poll_init;
|
||||
uv_poll_init_socket;
|
||||
uv_poll_start;
|
||||
uv_poll_stop;
|
||||
uv_prepare_init;
|
||||
uv_prepare_start;
|
||||
uv_prepare_stop;
|
||||
uv_print_active_handles;
|
||||
uv_print_all_handles;
|
||||
uv_process_get_pid;
|
||||
uv_process_kill;
|
||||
uv_queue_work;
|
||||
uv_random;
|
||||
uv_read_start;
|
||||
uv_read_stop;
|
||||
uv_recv_buffer_size;
|
||||
uv_ref;
|
||||
uv_replace_allocator;
|
||||
uv_req_get_data;
|
||||
uv_req_get_type;
|
||||
uv_req_set_data;
|
||||
uv_req_size;
|
||||
uv_req_type_name;
|
||||
uv_resident_set_memory;
|
||||
uv_run;
|
||||
uv_rwlock_destroy;
|
||||
uv_rwlock_init;
|
||||
uv_rwlock_rdlock;
|
||||
uv_rwlock_rdunlock;
|
||||
uv_rwlock_tryrdlock;
|
||||
uv_rwlock_trywrlock;
|
||||
uv_rwlock_wrlock;
|
||||
uv_rwlock_wrunlock;
|
||||
uv_sem_destroy;
|
||||
uv_sem_init;
|
||||
uv_sem_post;
|
||||
uv_sem_trywait;
|
||||
uv_sem_wait;
|
||||
uv_send_buffer_size;
|
||||
uv_set_process_title;
|
||||
uv_setup_args;
|
||||
uv_shutdown;
|
||||
uv_signal_init;
|
||||
uv_signal_start;
|
||||
uv_signal_start_oneshot;
|
||||
uv_signal_stop;
|
||||
uv_sleep;
|
||||
uv_socketpair;
|
||||
uv_spawn;
|
||||
uv_stop;
|
||||
uv_stream_get_write_queue_size;
|
||||
uv_stream_set_blocking;
|
||||
uv_strerror;
|
||||
uv_strerror_r;
|
||||
uv_tcp_bind;
|
||||
uv_tcp_close_reset;
|
||||
uv_tcp_connect;
|
||||
uv_tcp_getpeername;
|
||||
uv_tcp_getsockname;
|
||||
uv_tcp_init;
|
||||
uv_tcp_init_ex;
|
||||
uv_tcp_keepalive;
|
||||
uv_tcp_nodelay;
|
||||
uv_tcp_open;
|
||||
uv_tcp_simultaneous_accepts;
|
||||
uv_thread_create;
|
||||
uv_thread_create_ex;
|
||||
uv_thread_detach;
|
||||
uv_thread_equal;
|
||||
uv_thread_getaffinity;
|
||||
uv_thread_getcpu;
|
||||
uv_thread_getname;
|
||||
uv_thread_getpriority;
|
||||
uv_thread_join;
|
||||
uv_thread_self;
|
||||
uv_thread_setaffinity;
|
||||
uv_thread_setname;
|
||||
uv_thread_setpriority;
|
||||
uv_timer_again;
|
||||
uv_timer_get_due_in;
|
||||
uv_timer_get_repeat;
|
||||
uv_timer_init;
|
||||
uv_timer_set_repeat;
|
||||
uv_timer_start;
|
||||
uv_timer_stop;
|
||||
uv_translate_sys_error;
|
||||
uv_try_write;
|
||||
uv_try_write2;
|
||||
uv_tty_get_vterm_state;
|
||||
uv_tty_get_winsize;
|
||||
uv_tty_init;
|
||||
uv_tty_reset_mode;
|
||||
uv_tty_set_mode;
|
||||
uv_tty_set_vterm_state;
|
||||
uv_udp_bind;
|
||||
uv_udp_connect;
|
||||
uv_udp_get_send_queue_count;
|
||||
uv_udp_get_send_queue_size;
|
||||
uv_udp_getpeername;
|
||||
uv_udp_getsockname;
|
||||
uv_udp_init;
|
||||
uv_udp_init_ex;
|
||||
uv_udp_open;
|
||||
uv_udp_recv_start;
|
||||
uv_udp_recv_stop;
|
||||
uv_udp_send;
|
||||
uv_udp_set_broadcast;
|
||||
uv_udp_set_membership;
|
||||
uv_udp_set_multicast_interface;
|
||||
uv_udp_set_multicast_loop;
|
||||
uv_udp_set_multicast_ttl;
|
||||
uv_udp_set_source_membership;
|
||||
uv_udp_set_ttl;
|
||||
uv_udp_try_send;
|
||||
uv_udp_try_send2;
|
||||
uv_udp_using_recvmmsg;
|
||||
uv_unref;
|
||||
uv_update_time;
|
||||
uv_uptime;
|
||||
uv_utf16_length_as_wtf8;
|
||||
uv_utf16_to_wtf8;
|
||||
uv_version;
|
||||
uv_version_string;
|
||||
uv_walk;
|
||||
uv_write;
|
||||
uv_write2;
|
||||
uv_wtf8_length_as_utf16;
|
||||
uv_wtf8_to_utf16;
|
||||
|
||||
|
||||
extern "C++" {
|
||||
v8::*;
|
||||
|
||||
@@ -2109,6 +2109,325 @@ const napi_functions_to_export = .{
|
||||
node_api_create_external_string_utf16,
|
||||
};
|
||||
|
||||
const uv_functions_to_export = if (bun.Environment.isPosix) struct {
|
||||
pub extern "c" fn uv_accept() void;
|
||||
pub extern "c" fn uv_async_init() void;
|
||||
pub extern "c" fn uv_async_send() void;
|
||||
pub extern "c" fn uv_available_parallelism() void;
|
||||
pub extern "c" fn uv_backend_fd() void;
|
||||
pub extern "c" fn uv_backend_timeout() void;
|
||||
pub extern "c" fn uv_barrier_destroy() void;
|
||||
pub extern "c" fn uv_barrier_init() void;
|
||||
pub extern "c" fn uv_barrier_wait() void;
|
||||
pub extern "c" fn uv_buf_init() void;
|
||||
pub extern "c" fn uv_cancel() void;
|
||||
pub extern "c" fn uv_chdir() void;
|
||||
pub extern "c" fn uv_check_init() void;
|
||||
pub extern "c" fn uv_check_start() void;
|
||||
pub extern "c" fn uv_check_stop() void;
|
||||
pub extern "c" fn uv_clock_gettime() void;
|
||||
pub extern "c" fn uv_close() void;
|
||||
pub extern "c" fn uv_cond_broadcast() void;
|
||||
pub extern "c" fn uv_cond_destroy() void;
|
||||
pub extern "c" fn uv_cond_init() void;
|
||||
pub extern "c" fn uv_cond_signal() void;
|
||||
pub extern "c" fn uv_cond_timedwait() void;
|
||||
pub extern "c" fn uv_cond_wait() void;
|
||||
pub extern "c" fn uv_cpu_info() void;
|
||||
pub extern "c" fn uv_cpumask_size() void;
|
||||
pub extern "c" fn uv_cwd() void;
|
||||
pub extern "c" fn uv_default_loop() void;
|
||||
pub extern "c" fn uv_disable_stdio_inheritance() void;
|
||||
pub extern "c" fn uv_dlclose() void;
|
||||
pub extern "c" fn uv_dlerror() void;
|
||||
pub extern "c" fn uv_dlopen() void;
|
||||
pub extern "c" fn uv_dlsym() void;
|
||||
pub extern "c" fn uv_err_name() void;
|
||||
pub extern "c" fn uv_err_name_r() void;
|
||||
pub extern "c" fn uv_exepath() void;
|
||||
pub extern "c" fn uv_fileno() void;
|
||||
pub extern "c" fn uv_free_cpu_info() void;
|
||||
pub extern "c" fn uv_free_interface_addresses() void;
|
||||
pub extern "c" fn uv_freeaddrinfo() void;
|
||||
pub extern "c" fn uv_fs_access() void;
|
||||
pub extern "c" fn uv_fs_chmod() void;
|
||||
pub extern "c" fn uv_fs_chown() void;
|
||||
pub extern "c" fn uv_fs_close() void;
|
||||
pub extern "c" fn uv_fs_closedir() void;
|
||||
pub extern "c" fn uv_fs_copyfile() void;
|
||||
pub extern "c" fn uv_fs_event_getpath() void;
|
||||
pub extern "c" fn uv_fs_event_init() void;
|
||||
pub extern "c" fn uv_fs_event_start() void;
|
||||
pub extern "c" fn uv_fs_event_stop() void;
|
||||
pub extern "c" fn uv_fs_fchmod() void;
|
||||
pub extern "c" fn uv_fs_fchown() void;
|
||||
pub extern "c" fn uv_fs_fdatasync() void;
|
||||
pub extern "c" fn uv_fs_fstat() void;
|
||||
pub extern "c" fn uv_fs_fsync() void;
|
||||
pub extern "c" fn uv_fs_ftruncate() void;
|
||||
pub extern "c" fn uv_fs_futime() void;
|
||||
pub extern "c" fn uv_fs_get_path() void;
|
||||
pub extern "c" fn uv_fs_get_ptr() void;
|
||||
pub extern "c" fn uv_fs_get_result() void;
|
||||
pub extern "c" fn uv_fs_get_statbuf() void;
|
||||
pub extern "c" fn uv_fs_get_system_error() void;
|
||||
pub extern "c" fn uv_fs_get_type() void;
|
||||
pub extern "c" fn uv_fs_lchown() void;
|
||||
pub extern "c" fn uv_fs_link() void;
|
||||
pub extern "c" fn uv_fs_lstat() void;
|
||||
pub extern "c" fn uv_fs_lutime() void;
|
||||
pub extern "c" fn uv_fs_mkdir() void;
|
||||
pub extern "c" fn uv_fs_mkdtemp() void;
|
||||
pub extern "c" fn uv_fs_mkstemp() void;
|
||||
pub extern "c" fn uv_fs_open() void;
|
||||
pub extern "c" fn uv_fs_opendir() void;
|
||||
pub extern "c" fn uv_fs_poll_getpath() void;
|
||||
pub extern "c" fn uv_fs_poll_init() void;
|
||||
pub extern "c" fn uv_fs_poll_start() void;
|
||||
pub extern "c" fn uv_fs_poll_stop() void;
|
||||
pub extern "c" fn uv_fs_read() void;
|
||||
pub extern "c" fn uv_fs_readdir() void;
|
||||
pub extern "c" fn uv_fs_readlink() void;
|
||||
pub extern "c" fn uv_fs_realpath() void;
|
||||
pub extern "c" fn uv_fs_rename() void;
|
||||
pub extern "c" fn uv_fs_req_cleanup() void;
|
||||
pub extern "c" fn uv_fs_rmdir() void;
|
||||
pub extern "c" fn uv_fs_scandir() void;
|
||||
pub extern "c" fn uv_fs_scandir_next() void;
|
||||
pub extern "c" fn uv_fs_sendfile() void;
|
||||
pub extern "c" fn uv_fs_stat() void;
|
||||
pub extern "c" fn uv_fs_statfs() void;
|
||||
pub extern "c" fn uv_fs_symlink() void;
|
||||
pub extern "c" fn uv_fs_unlink() void;
|
||||
pub extern "c" fn uv_fs_utime() void;
|
||||
pub extern "c" fn uv_fs_write() void;
|
||||
pub extern "c" fn uv_get_available_memory() void;
|
||||
pub extern "c" fn uv_get_constrained_memory() void;
|
||||
pub extern "c" fn uv_get_free_memory() void;
|
||||
pub extern "c" fn uv_get_osfhandle() void;
|
||||
pub extern "c" fn uv_get_process_title() void;
|
||||
pub extern "c" fn uv_get_total_memory() void;
|
||||
pub extern "c" fn uv_getaddrinfo() void;
|
||||
pub extern "c" fn uv_getnameinfo() void;
|
||||
pub extern "c" fn uv_getrusage() void;
|
||||
pub extern "c" fn uv_getrusage_thread() void;
|
||||
pub extern "c" fn uv_gettimeofday() void;
|
||||
pub extern "c" fn uv_guess_handle() void;
|
||||
pub extern "c" fn uv_handle_get_data() void;
|
||||
pub extern "c" fn uv_handle_get_loop() void;
|
||||
pub extern "c" fn uv_handle_get_type() void;
|
||||
pub extern "c" fn uv_handle_set_data() void;
|
||||
pub extern "c" fn uv_handle_size() void;
|
||||
pub extern "c" fn uv_handle_type_name() void;
|
||||
pub extern "c" fn uv_has_ref() void;
|
||||
pub extern "c" fn uv_hrtime() void;
|
||||
pub extern "c" fn uv_idle_init() void;
|
||||
pub extern "c" fn uv_idle_start() void;
|
||||
pub extern "c" fn uv_idle_stop() void;
|
||||
pub extern "c" fn uv_if_indextoiid() void;
|
||||
pub extern "c" fn uv_if_indextoname() void;
|
||||
pub extern "c" fn uv_inet_ntop() void;
|
||||
pub extern "c" fn uv_inet_pton() void;
|
||||
pub extern "c" fn uv_interface_addresses() void;
|
||||
pub extern "c" fn uv_ip_name() void;
|
||||
pub extern "c" fn uv_ip4_addr() void;
|
||||
pub extern "c" fn uv_ip4_name() void;
|
||||
pub extern "c" fn uv_ip6_addr() void;
|
||||
pub extern "c" fn uv_ip6_name() void;
|
||||
pub extern "c" fn uv_is_active() void;
|
||||
pub extern "c" fn uv_is_closing() void;
|
||||
pub extern "c" fn uv_is_readable() void;
|
||||
pub extern "c" fn uv_is_writable() void;
|
||||
pub extern "c" fn uv_key_create() void;
|
||||
pub extern "c" fn uv_key_delete() void;
|
||||
pub extern "c" fn uv_key_get() void;
|
||||
pub extern "c" fn uv_key_set() void;
|
||||
pub extern "c" fn uv_kill() void;
|
||||
pub extern "c" fn uv_library_shutdown() void;
|
||||
pub extern "c" fn uv_listen() void;
|
||||
pub extern "c" fn uv_loadavg() void;
|
||||
pub extern "c" fn uv_loop_alive() void;
|
||||
pub extern "c" fn uv_loop_close() void;
|
||||
pub extern "c" fn uv_loop_configure() void;
|
||||
pub extern "c" fn uv_loop_delete() void;
|
||||
pub extern "c" fn uv_loop_fork() void;
|
||||
pub extern "c" fn uv_loop_get_data() void;
|
||||
pub extern "c" fn uv_loop_init() void;
|
||||
pub extern "c" fn uv_loop_new() void;
|
||||
pub extern "c" fn uv_loop_set_data() void;
|
||||
pub extern "c" fn uv_loop_size() void;
|
||||
pub extern "c" fn uv_metrics_idle_time() void;
|
||||
pub extern "c" fn uv_metrics_info() void;
|
||||
pub extern "c" fn uv_mutex_destroy() void;
|
||||
pub extern "c" fn uv_mutex_init() void;
|
||||
pub extern "c" fn uv_mutex_init_recursive() void;
|
||||
pub extern "c" fn uv_mutex_lock() void;
|
||||
pub extern "c" fn uv_mutex_trylock() void;
|
||||
pub extern "c" fn uv_mutex_unlock() void;
|
||||
pub extern "c" fn uv_now() void;
|
||||
pub extern "c" fn uv_once() void;
|
||||
pub extern "c" fn uv_open_osfhandle() void;
|
||||
pub extern "c" fn uv_os_environ() void;
|
||||
pub extern "c" fn uv_os_free_environ() void;
|
||||
pub extern "c" fn uv_os_free_group() void;
|
||||
pub extern "c" fn uv_os_free_passwd() void;
|
||||
pub extern "c" fn uv_os_get_group() void;
|
||||
pub extern "c" fn uv_os_get_passwd() void;
|
||||
pub extern "c" fn uv_os_get_passwd2() void;
|
||||
pub extern "c" fn uv_os_getenv() void;
|
||||
pub extern "c" fn uv_os_gethostname() void;
|
||||
pub extern "c" fn uv_os_getpid() void;
|
||||
pub extern "c" fn uv_os_getppid() void;
|
||||
pub extern "c" fn uv_os_getpriority() void;
|
||||
pub extern "c" fn uv_os_homedir() void;
|
||||
pub extern "c" fn uv_os_setenv() void;
|
||||
pub extern "c" fn uv_os_setpriority() void;
|
||||
pub extern "c" fn uv_os_tmpdir() void;
|
||||
pub extern "c" fn uv_os_uname() void;
|
||||
pub extern "c" fn uv_os_unsetenv() void;
|
||||
pub extern "c" fn uv_pipe() void;
|
||||
pub extern "c" fn uv_pipe_bind() void;
|
||||
pub extern "c" fn uv_pipe_bind2() void;
|
||||
pub extern "c" fn uv_pipe_chmod() void;
|
||||
pub extern "c" fn uv_pipe_connect() void;
|
||||
pub extern "c" fn uv_pipe_connect2() void;
|
||||
pub extern "c" fn uv_pipe_getpeername() void;
|
||||
pub extern "c" fn uv_pipe_getsockname() void;
|
||||
pub extern "c" fn uv_pipe_init() void;
|
||||
pub extern "c" fn uv_pipe_open() void;
|
||||
pub extern "c" fn uv_pipe_pending_count() void;
|
||||
pub extern "c" fn uv_pipe_pending_instances() void;
|
||||
pub extern "c" fn uv_pipe_pending_type() void;
|
||||
pub extern "c" fn uv_poll_init() void;
|
||||
pub extern "c" fn uv_poll_init_socket() void;
|
||||
pub extern "c" fn uv_poll_start() void;
|
||||
pub extern "c" fn uv_poll_stop() void;
|
||||
pub extern "c" fn uv_prepare_init() void;
|
||||
pub extern "c" fn uv_prepare_start() void;
|
||||
pub extern "c" fn uv_prepare_stop() void;
|
||||
pub extern "c" fn uv_print_active_handles() void;
|
||||
pub extern "c" fn uv_print_all_handles() void;
|
||||
pub extern "c" fn uv_process_get_pid() void;
|
||||
pub extern "c" fn uv_process_kill() void;
|
||||
pub extern "c" fn uv_queue_work() void;
|
||||
pub extern "c" fn uv_random() void;
|
||||
pub extern "c" fn uv_read_start() void;
|
||||
pub extern "c" fn uv_read_stop() void;
|
||||
pub extern "c" fn uv_recv_buffer_size() void;
|
||||
pub extern "c" fn uv_ref() void;
|
||||
pub extern "c" fn uv_replace_allocator() void;
|
||||
pub extern "c" fn uv_req_get_data() void;
|
||||
pub extern "c" fn uv_req_get_type() void;
|
||||
pub extern "c" fn uv_req_set_data() void;
|
||||
pub extern "c" fn uv_req_size() void;
|
||||
pub extern "c" fn uv_req_type_name() void;
|
||||
pub extern "c" fn uv_resident_set_memory() void;
|
||||
pub extern "c" fn uv_run() void;
|
||||
pub extern "c" fn uv_rwlock_destroy() void;
|
||||
pub extern "c" fn uv_rwlock_init() void;
|
||||
pub extern "c" fn uv_rwlock_rdlock() void;
|
||||
pub extern "c" fn uv_rwlock_rdunlock() void;
|
||||
pub extern "c" fn uv_rwlock_tryrdlock() void;
|
||||
pub extern "c" fn uv_rwlock_trywrlock() void;
|
||||
pub extern "c" fn uv_rwlock_wrlock() void;
|
||||
pub extern "c" fn uv_rwlock_wrunlock() void;
|
||||
pub extern "c" fn uv_sem_destroy() void;
|
||||
pub extern "c" fn uv_sem_init() void;
|
||||
pub extern "c" fn uv_sem_post() void;
|
||||
pub extern "c" fn uv_sem_trywait() void;
|
||||
pub extern "c" fn uv_sem_wait() void;
|
||||
pub extern "c" fn uv_send_buffer_size() void;
|
||||
pub extern "c" fn uv_set_process_title() void;
|
||||
pub extern "c" fn uv_setup_args() void;
|
||||
pub extern "c" fn uv_shutdown() void;
|
||||
pub extern "c" fn uv_signal_init() void;
|
||||
pub extern "c" fn uv_signal_start() void;
|
||||
pub extern "c" fn uv_signal_start_oneshot() void;
|
||||
pub extern "c" fn uv_signal_stop() void;
|
||||
pub extern "c" fn uv_sleep() void;
|
||||
pub extern "c" fn uv_socketpair() void;
|
||||
pub extern "c" fn uv_spawn() void;
|
||||
pub extern "c" fn uv_stop() void;
|
||||
pub extern "c" fn uv_stream_get_write_queue_size() void;
|
||||
pub extern "c" fn uv_stream_set_blocking() void;
|
||||
pub extern "c" fn uv_strerror() void;
|
||||
pub extern "c" fn uv_strerror_r() void;
|
||||
pub extern "c" fn uv_tcp_bind() void;
|
||||
pub extern "c" fn uv_tcp_close_reset() void;
|
||||
pub extern "c" fn uv_tcp_connect() void;
|
||||
pub extern "c" fn uv_tcp_getpeername() void;
|
||||
pub extern "c" fn uv_tcp_getsockname() void;
|
||||
pub extern "c" fn uv_tcp_init() void;
|
||||
pub extern "c" fn uv_tcp_init_ex() void;
|
||||
pub extern "c" fn uv_tcp_keepalive() void;
|
||||
pub extern "c" fn uv_tcp_nodelay() void;
|
||||
pub extern "c" fn uv_tcp_open() void;
|
||||
pub extern "c" fn uv_tcp_simultaneous_accepts() void;
|
||||
pub extern "c" fn uv_thread_create() void;
|
||||
pub extern "c" fn uv_thread_create_ex() void;
|
||||
pub extern "c" fn uv_thread_detach() void;
|
||||
pub extern "c" fn uv_thread_equal() void;
|
||||
pub extern "c" fn uv_thread_getaffinity() void;
|
||||
pub extern "c" fn uv_thread_getcpu() void;
|
||||
pub extern "c" fn uv_thread_getname() void;
|
||||
pub extern "c" fn uv_thread_getpriority() void;
|
||||
pub extern "c" fn uv_thread_join() void;
|
||||
pub extern "c" fn uv_thread_self() void;
|
||||
pub extern "c" fn uv_thread_setaffinity() void;
|
||||
pub extern "c" fn uv_thread_setname() void;
|
||||
pub extern "c" fn uv_thread_setpriority() void;
|
||||
pub extern "c" fn uv_timer_again() void;
|
||||
pub extern "c" fn uv_timer_get_due_in() void;
|
||||
pub extern "c" fn uv_timer_get_repeat() void;
|
||||
pub extern "c" fn uv_timer_init() void;
|
||||
pub extern "c" fn uv_timer_set_repeat() void;
|
||||
pub extern "c" fn uv_timer_start() void;
|
||||
pub extern "c" fn uv_timer_stop() void;
|
||||
pub extern "c" fn uv_translate_sys_error() void;
|
||||
pub extern "c" fn uv_try_write() void;
|
||||
pub extern "c" fn uv_try_write2() void;
|
||||
pub extern "c" fn uv_tty_get_vterm_state() void;
|
||||
pub extern "c" fn uv_tty_get_winsize() void;
|
||||
pub extern "c" fn uv_tty_init() void;
|
||||
pub extern "c" fn uv_tty_reset_mode() void;
|
||||
pub extern "c" fn uv_tty_set_mode() void;
|
||||
pub extern "c" fn uv_tty_set_vterm_state() void;
|
||||
pub extern "c" fn uv_udp_bind() void;
|
||||
pub extern "c" fn uv_udp_connect() void;
|
||||
pub extern "c" fn uv_udp_get_send_queue_count() void;
|
||||
pub extern "c" fn uv_udp_get_send_queue_size() void;
|
||||
pub extern "c" fn uv_udp_getpeername() void;
|
||||
pub extern "c" fn uv_udp_getsockname() void;
|
||||
pub extern "c" fn uv_udp_init() void;
|
||||
pub extern "c" fn uv_udp_init_ex() void;
|
||||
pub extern "c" fn uv_udp_open() void;
|
||||
pub extern "c" fn uv_udp_recv_start() void;
|
||||
pub extern "c" fn uv_udp_recv_stop() void;
|
||||
pub extern "c" fn uv_udp_send() void;
|
||||
pub extern "c" fn uv_udp_set_broadcast() void;
|
||||
pub extern "c" fn uv_udp_set_membership() void;
|
||||
pub extern "c" fn uv_udp_set_multicast_interface() void;
|
||||
pub extern "c" fn uv_udp_set_multicast_loop() void;
|
||||
pub extern "c" fn uv_udp_set_multicast_ttl() void;
|
||||
pub extern "c" fn uv_udp_set_source_membership() void;
|
||||
pub extern "c" fn uv_udp_set_ttl() void;
|
||||
pub extern "c" fn uv_udp_try_send() void;
|
||||
pub extern "c" fn uv_udp_try_send2() void;
|
||||
pub extern "c" fn uv_udp_using_recvmmsg() void;
|
||||
pub extern "c" fn uv_unref() void;
|
||||
pub extern "c" fn uv_update_time() void;
|
||||
pub extern "c" fn uv_uptime() void;
|
||||
pub extern "c" fn uv_utf16_length_as_wtf8() void;
|
||||
pub extern "c" fn uv_utf16_to_wtf8() void;
|
||||
pub extern "c" fn uv_version() void;
|
||||
pub extern "c" fn uv_version_string() void;
|
||||
pub extern "c" fn uv_walk() void;
|
||||
pub extern "c" fn uv_write() void;
|
||||
pub extern "c" fn uv_write2() void;
|
||||
pub extern "c" fn uv_wtf8_length_as_utf16() void;
|
||||
pub extern "c" fn uv_wtf8_to_utf16() void;
|
||||
} else struct {};
|
||||
|
||||
pub fn fixDeadCodeElimination() void {
|
||||
JSC.markBinding(@src());
|
||||
|
||||
@@ -2116,6 +2435,10 @@ pub fn fixDeadCodeElimination() void {
|
||||
std.mem.doNotOptimizeAway(&fn_name);
|
||||
}
|
||||
|
||||
inline for (comptime std.meta.declarations(uv_functions_to_export)) |decl| {
|
||||
std.mem.doNotOptimizeAway(&@field(uv_functions_to_export, decl.name));
|
||||
}
|
||||
|
||||
inline for (comptime std.meta.declarations(V8API)) |decl| {
|
||||
std.mem.doNotOptimizeAway(&@field(V8API, decl.name));
|
||||
}
|
||||
|
||||
470
src/symbols.dyn
470
src/symbols.dyn
@@ -1,4 +1,71 @@
|
||||
{
|
||||
__ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm;
|
||||
__ZN2v811HandleScopeC1EPNS_7IsolateE;
|
||||
__ZN2v811HandleScopeD1Ev;
|
||||
__ZN2v811HandleScopeD2Ev;
|
||||
__ZN2v812api_internal12ToLocalEmptyEv;
|
||||
__ZN2v812api_internal13DisposeGlobalEPm;
|
||||
__ZN2v812api_internal17FromJustIsNothingEv;
|
||||
__ZN2v812api_internal18GlobalizeReferenceEPNS_8internal7IsolateEm;
|
||||
__ZN2v814ObjectTemplate11NewInstanceENS_5LocalINS_7ContextEEE;
|
||||
__ZN2v814ObjectTemplate21SetInternalFieldCountEi;
|
||||
__ZN2v814ObjectTemplate3NewEPNS_7IsolateENS_5LocalINS_16FunctionTemplateEEE;
|
||||
__ZN2v816FunctionTemplate11GetFunctionENS_5LocalINS_7ContextEEE;
|
||||
__ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEiNS_19ConstructorBehaviorENS_14SideEffectTypeEPKNS_9CFunctionEttt;
|
||||
__ZN2v820EscapableHandleScopeC1EPNS_7IsolateE;
|
||||
__ZN2v820EscapableHandleScopeC2EPNS_7IsolateE;
|
||||
__ZN2v820EscapableHandleScopeD1Ev;
|
||||
__ZN2v820EscapableHandleScopeD2Ev;
|
||||
__ZN2v824EscapableHandleScopeBase10EscapeSlotEPm;
|
||||
__ZN2v824EscapableHandleScopeBaseC2EPNS_7IsolateE;
|
||||
__ZN2v85Array3NewEPNS_7IsolateEPNS_5LocalINS_5ValueEEEm;
|
||||
__ZN2v86Number3NewEPNS_7IsolateEd;
|
||||
__ZN2v86Object16GetInternalFieldEi;
|
||||
__ZN2v86Object16SetInternalFieldEiNS_5LocalINS_4DataEEE;
|
||||
__ZN2v86Object20SlowGetInternalFieldEi;
|
||||
__ZN2v86Object3NewEPNS_7IsolateE;
|
||||
__ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_;
|
||||
__ZN2v86String11NewFromUtf8EPNS_7IsolateEPKcNS_13NewStringTypeEi;
|
||||
__ZN2v86String14NewFromOneByteEPNS_7IsolateEPKhNS_13NewStringTypeEi;
|
||||
__ZN2v87Boolean3NewEPNS_7IsolateEb;
|
||||
__ZN2v87Context10GetIsolateEv;
|
||||
__ZN2v87Isolate10GetCurrentEv;
|
||||
__ZN2v87Isolate13TryGetCurrentEv;
|
||||
__ZN2v87Isolate17GetCurrentContextEv;
|
||||
__ZN2v88External3NewEPNS_7IsolateEPv;
|
||||
__ZN2v88Function7SetNameENS_5LocalINS_6StringEEE;
|
||||
__ZN2v88internal35IsolateFromNeverReadOnlySpaceObjectEm;
|
||||
__ZN3JSC9CallFrame13describeFrameEv;
|
||||
__ZN4node25AddEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_;
|
||||
__ZN4node28RemoveEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_;
|
||||
__ZNK2v814ObjectTemplate18InternalFieldCountEv;
|
||||
__ZNK2v85Value10FullIsTrueEv;
|
||||
__ZNK2v85Value10IsFunctionEv;
|
||||
__ZNK2v85Value11FullIsFalseEv;
|
||||
__ZNK2v85Value11IsUndefinedEv;
|
||||
__ZNK2v85Value11Uint32ValueENS_5LocalINS_7ContextEEE;
|
||||
__ZNK2v85Value17IsNullOrUndefinedEv;
|
||||
__ZNK2v85Value6IsNullEv;
|
||||
__ZNK2v85Value6IsTrueEv;
|
||||
__ZNK2v85Value7IsFalseEv;
|
||||
__ZNK2v85Value8IsNumberEv;
|
||||
__ZNK2v85Value8IsObjectEv;
|
||||
__ZNK2v85Value8IsStringEv;
|
||||
__ZNK2v85Value8IsUint32Ev;
|
||||
__ZNK2v85Value9IsBooleanEv;
|
||||
__ZNK2v86Number5ValueEv;
|
||||
__ZNK2v86String10IsExternalEv;
|
||||
__ZNK2v86String10Utf8LengthEPNS_7IsolateE;
|
||||
__ZNK2v86String17IsExternalOneByteEv;
|
||||
__ZNK2v86String17IsExternalTwoByteEv;
|
||||
__ZNK2v86String19ContainsOnlyOneByteEv;
|
||||
__ZNK2v86String6LengthEv;
|
||||
__ZNK2v86String9IsOneByteEv;
|
||||
__ZNK2v86String9WriteUtf8EPNS_7IsolateEPciPii;
|
||||
__ZNK2v87Boolean5ValueEv;
|
||||
__ZNK2v88External5ValueEv;
|
||||
__ZNK2v88Function7GetNameEv;
|
||||
_dumpBtjsTrace;
|
||||
_napi_acquire_threadsafe_function;
|
||||
_napi_add_async_cleanup_hook;
|
||||
_napi_add_env_cleanup_hook;
|
||||
@@ -17,22 +84,22 @@
|
||||
_napi_coerce_to_number;
|
||||
_napi_coerce_to_object;
|
||||
_napi_coerce_to_string;
|
||||
_napi_create_array;
|
||||
_napi_create_array_with_length;
|
||||
_napi_create_array;
|
||||
_napi_create_arraybuffer;
|
||||
_napi_create_async_work;
|
||||
_napi_create_bigint_int64;
|
||||
_napi_create_bigint_uint64;
|
||||
_napi_create_bigint_words;
|
||||
_napi_create_buffer;
|
||||
_napi_create_buffer_copy;
|
||||
_napi_create_buffer;
|
||||
_napi_create_dataview;
|
||||
_napi_create_date;
|
||||
_napi_create_double;
|
||||
_napi_create_error;
|
||||
_napi_create_external;
|
||||
_napi_create_external_arraybuffer;
|
||||
_napi_create_external_buffer;
|
||||
_napi_create_external;
|
||||
_napi_create_function;
|
||||
_napi_create_int32;
|
||||
_napi_create_int64;
|
||||
@@ -75,8 +142,8 @@
|
||||
_napi_get_new_target;
|
||||
_napi_get_node_version;
|
||||
_napi_get_null;
|
||||
_napi_get_property;
|
||||
_napi_get_property_names;
|
||||
_napi_get_property;
|
||||
_napi_get_prototype;
|
||||
_napi_get_reference_value;
|
||||
_napi_get_threadsafe_function_context;
|
||||
@@ -135,94 +202,341 @@
|
||||
_napi_set_named_property;
|
||||
_napi_set_property;
|
||||
_napi_strict_equals;
|
||||
_napi_throw;
|
||||
_napi_throw_error;
|
||||
_napi_throw_range_error;
|
||||
_napi_throw_type_error;
|
||||
_napi_throw;
|
||||
_napi_type_tag_object;
|
||||
_napi_typeof;
|
||||
_napi_unref_threadsafe_function;
|
||||
_napi_unwrap;
|
||||
_napi_wrap;
|
||||
_node_api_create_buffer_from_arraybuffer;
|
||||
_node_api_create_external_string_latin1;
|
||||
_node_api_create_external_string_utf16;
|
||||
_node_api_create_syntax_error;
|
||||
_node_api_symbol_for;
|
||||
_node_api_throw_syntax_error;
|
||||
_node_api_create_buffer_from_arraybuffer;
|
||||
_node_api_get_module_file_name;
|
||||
_node_api_post_finalizer;
|
||||
_node_api_create_property_key_latin1;
|
||||
_node_api_create_property_key_utf16;
|
||||
_node_api_create_property_key_utf8;
|
||||
__ZN2v87Isolate10GetCurrentEv;
|
||||
__ZN2v87Isolate13TryGetCurrentEv;
|
||||
__ZN2v87Isolate17GetCurrentContextEv;
|
||||
__ZN4node25AddEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_;
|
||||
__ZN4node28RemoveEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_;
|
||||
__ZN2v86Number3NewEPNS_7IsolateEd;
|
||||
__ZNK2v86Number5ValueEv;
|
||||
__ZN2v86String11NewFromUtf8EPNS_7IsolateEPKcNS_13NewStringTypeEi;
|
||||
__ZNK2v86String9WriteUtf8EPNS_7IsolateEPciPii;
|
||||
__ZN2v812api_internal12ToLocalEmptyEv;
|
||||
__ZNK2v86String6LengthEv;
|
||||
__ZN2v88External3NewEPNS_7IsolateEPv;
|
||||
__ZNK2v88External5ValueEv;
|
||||
__ZN2v86Object3NewEPNS_7IsolateE;
|
||||
__ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_;
|
||||
__ZN2v86Object16SetInternalFieldEiNS_5LocalINS_4DataEEE;
|
||||
__ZN2v86Object20SlowGetInternalFieldEi;
|
||||
__ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm;
|
||||
__ZN2v811HandleScopeC1EPNS_7IsolateE;
|
||||
__ZN2v811HandleScopeD1Ev;
|
||||
__ZN2v811HandleScopeD2Ev;
|
||||
__ZN2v816FunctionTemplate11GetFunctionENS_5LocalINS_7ContextEEE;
|
||||
__ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEiNS_19ConstructorBehaviorENS_14SideEffectTypeEPKNS_9CFunctionEttt;
|
||||
__ZN2v814ObjectTemplate11NewInstanceENS_5LocalINS_7ContextEEE;
|
||||
__ZN2v814ObjectTemplate21SetInternalFieldCountEi;
|
||||
__ZNK2v814ObjectTemplate18InternalFieldCountEv;
|
||||
__ZN2v814ObjectTemplate3NewEPNS_7IsolateENS_5LocalINS_16FunctionTemplateEEE;
|
||||
__ZN2v824EscapableHandleScopeBase10EscapeSlotEPm;
|
||||
__ZN2v824EscapableHandleScopeBaseC2EPNS_7IsolateE;
|
||||
__ZN2v88internal35IsolateFromNeverReadOnlySpaceObjectEm;
|
||||
_node_api_create_syntax_error;
|
||||
_node_api_get_module_file_name;
|
||||
_node_api_post_finalizer;
|
||||
_node_api_symbol_for;
|
||||
_node_api_throw_syntax_error;
|
||||
_node_module_register;
|
||||
__ZN3JSC9CallFrame13describeFrameEv;
|
||||
__ZN2v85Array3NewEPNS_7IsolateEPNS_5LocalINS_5ValueEEEm;
|
||||
__ZN2v88Function7SetNameENS_5LocalINS_6StringEEE;
|
||||
__ZNK2v85Value9IsBooleanEv;
|
||||
__ZNK2v87Boolean5ValueEv;
|
||||
__ZNK2v85Value10FullIsTrueEv;
|
||||
__ZNK2v85Value11FullIsFalseEv;
|
||||
__ZN2v820EscapableHandleScopeC1EPNS_7IsolateE;
|
||||
__ZN2v820EscapableHandleScopeC2EPNS_7IsolateE;
|
||||
__ZN2v820EscapableHandleScopeD1Ev;
|
||||
__ZN2v820EscapableHandleScopeD2Ev;
|
||||
__ZNK2v85Value8IsObjectEv;
|
||||
__ZNK2v85Value8IsNumberEv;
|
||||
__ZNK2v85Value8IsUint32Ev;
|
||||
__ZNK2v85Value11Uint32ValueENS_5LocalINS_7ContextEEE;
|
||||
__ZNK2v85Value11IsUndefinedEv;
|
||||
__ZNK2v85Value6IsNullEv;
|
||||
__ZNK2v85Value17IsNullOrUndefinedEv;
|
||||
__ZNK2v85Value6IsTrueEv;
|
||||
__ZNK2v85Value7IsFalseEv;
|
||||
__ZNK2v85Value8IsStringEv;
|
||||
__ZN2v87Boolean3NewEPNS_7IsolateEb;
|
||||
__ZN2v86Object16GetInternalFieldEi;
|
||||
__ZN2v87Context10GetIsolateEv;
|
||||
__ZN2v86String14NewFromOneByteEPNS_7IsolateEPKhNS_13NewStringTypeEi;
|
||||
__ZNK2v86String10Utf8LengthEPNS_7IsolateE;
|
||||
__ZNK2v86String10IsExternalEv;
|
||||
__ZNK2v86String17IsExternalOneByteEv;
|
||||
__ZNK2v86String17IsExternalTwoByteEv;
|
||||
__ZNK2v86String9IsOneByteEv;
|
||||
__ZNK2v86String19ContainsOnlyOneByteEv;
|
||||
__ZN2v812api_internal18GlobalizeReferenceEPNS_8internal7IsolateEm;
|
||||
__ZN2v812api_internal13DisposeGlobalEPm;
|
||||
__ZNK2v88Function7GetNameEv;
|
||||
__ZNK2v85Value10IsFunctionEv;
|
||||
__ZN2v812api_internal17FromJustIsNothingEv;
|
||||
_uv_accept;
|
||||
_uv_async_init;
|
||||
_uv_async_send;
|
||||
_uv_available_parallelism;
|
||||
_uv_backend_fd;
|
||||
_uv_backend_timeout;
|
||||
_uv_barrier_destroy;
|
||||
_uv_barrier_init;
|
||||
_uv_barrier_wait;
|
||||
_uv_buf_init;
|
||||
_uv_cancel;
|
||||
_uv_chdir;
|
||||
_uv_check_init;
|
||||
_uv_check_start;
|
||||
_uv_check_stop;
|
||||
_uv_clock_gettime;
|
||||
_uv_close;
|
||||
_uv_cond_broadcast;
|
||||
_uv_cond_destroy;
|
||||
_uv_cond_init;
|
||||
_uv_cond_signal;
|
||||
_uv_cond_timedwait;
|
||||
_uv_cond_wait;
|
||||
_uv_cpu_info;
|
||||
_uv_cpumask_size;
|
||||
_uv_cwd;
|
||||
_uv_default_loop;
|
||||
_uv_disable_stdio_inheritance;
|
||||
_uv_dlclose;
|
||||
_uv_dlerror;
|
||||
_uv_dlopen;
|
||||
_uv_dlsym;
|
||||
_uv_err_name_r;
|
||||
_uv_err_name;
|
||||
_uv_exepath;
|
||||
_uv_fileno;
|
||||
_uv_free_cpu_info;
|
||||
_uv_free_interface_addresses;
|
||||
_uv_freeaddrinfo;
|
||||
_uv_fs_access;
|
||||
_uv_fs_chmod;
|
||||
_uv_fs_chown;
|
||||
_uv_fs_close;
|
||||
_uv_fs_closedir;
|
||||
_uv_fs_copyfile;
|
||||
_uv_fs_event_getpath;
|
||||
_uv_fs_event_init;
|
||||
_uv_fs_event_start;
|
||||
_uv_fs_event_stop;
|
||||
_uv_fs_fchmod;
|
||||
_uv_fs_fchown;
|
||||
_uv_fs_fdatasync;
|
||||
_uv_fs_fstat;
|
||||
_uv_fs_fsync;
|
||||
_uv_fs_ftruncate;
|
||||
_uv_fs_futime;
|
||||
_uv_fs_get_path;
|
||||
_uv_fs_get_ptr;
|
||||
_uv_fs_get_result;
|
||||
_uv_fs_get_statbuf;
|
||||
_uv_fs_get_system_error;
|
||||
_uv_fs_get_type;
|
||||
_uv_fs_lchown;
|
||||
_uv_fs_link;
|
||||
_uv_fs_lstat;
|
||||
_uv_fs_lutime;
|
||||
_uv_fs_mkdir;
|
||||
_uv_fs_mkdtemp;
|
||||
_uv_fs_mkstemp;
|
||||
_uv_fs_open;
|
||||
_uv_fs_opendir;
|
||||
_uv_fs_poll_getpath;
|
||||
_uv_fs_poll_init;
|
||||
_uv_fs_poll_start;
|
||||
_uv_fs_poll_stop;
|
||||
_uv_fs_read;
|
||||
_uv_fs_readdir;
|
||||
_uv_fs_readlink;
|
||||
_uv_fs_realpath;
|
||||
_uv_fs_rename;
|
||||
_uv_fs_req_cleanup;
|
||||
_uv_fs_rmdir;
|
||||
_uv_fs_scandir_next;
|
||||
_uv_fs_scandir;
|
||||
_uv_fs_sendfile;
|
||||
_uv_fs_stat;
|
||||
_uv_fs_statfs;
|
||||
_uv_fs_symlink;
|
||||
_uv_fs_unlink;
|
||||
_uv_fs_utime;
|
||||
_uv_fs_write;
|
||||
_uv_get_available_memory;
|
||||
_uv_get_constrained_memory;
|
||||
_uv_get_free_memory;
|
||||
_uv_get_osfhandle;
|
||||
_uv_get_process_title;
|
||||
_uv_get_total_memory;
|
||||
_uv_getaddrinfo;
|
||||
_uv_getnameinfo;
|
||||
_uv_getrusage_thread;
|
||||
_uv_getrusage;
|
||||
_uv_gettimeofday;
|
||||
_uv_guess_handle;
|
||||
_uv_handle_get_data;
|
||||
_uv_handle_get_loop;
|
||||
_uv_handle_get_type;
|
||||
_uv_handle_set_data;
|
||||
_uv_handle_size;
|
||||
_uv_handle_type_name;
|
||||
_uv_has_ref;
|
||||
_uv_hrtime;
|
||||
_uv_idle_init;
|
||||
_uv_idle_start;
|
||||
_uv_idle_stop;
|
||||
_uv_if_indextoiid;
|
||||
_uv_if_indextoname;
|
||||
_uv_inet_ntop;
|
||||
_uv_inet_pton;
|
||||
_uv_interface_addresses;
|
||||
_uv_ip_name;
|
||||
_uv_ip4_addr;
|
||||
_uv_ip4_name;
|
||||
_uv_ip6_addr;
|
||||
_uv_ip6_name;
|
||||
_uv_is_active;
|
||||
_uv_is_closing;
|
||||
_uv_is_readable;
|
||||
_uv_is_writable;
|
||||
_uv_key_create;
|
||||
_uv_key_delete;
|
||||
_uv_key_get;
|
||||
_uv_key_set;
|
||||
_uv_kill;
|
||||
_uv_library_shutdown;
|
||||
_uv_listen;
|
||||
_uv_loadavg;
|
||||
_uv_loop_alive;
|
||||
_uv_loop_close;
|
||||
_uv_loop_configure;
|
||||
_uv_loop_delete;
|
||||
_uv_loop_fork;
|
||||
_uv_loop_get_data;
|
||||
_uv_loop_init;
|
||||
_uv_loop_new;
|
||||
_uv_loop_set_data;
|
||||
_uv_loop_size;
|
||||
_uv_metrics_idle_time;
|
||||
_uv_metrics_info;
|
||||
_uv_mutex_destroy;
|
||||
_uv_mutex_init_recursive;
|
||||
_uv_mutex_init;
|
||||
_uv_mutex_lock;
|
||||
_uv_mutex_trylock;
|
||||
_uv_mutex_unlock;
|
||||
_uv_now;
|
||||
_uv_once;
|
||||
_uv_open_osfhandle;
|
||||
_uv_os_environ;
|
||||
_uv_os_free_environ;
|
||||
_uv_os_free_group;
|
||||
_uv_os_free_passwd;
|
||||
_uv_os_get_group;
|
||||
_uv_os_get_passwd;
|
||||
_uv_os_get_passwd2;
|
||||
_uv_os_getenv;
|
||||
_uv_os_gethostname;
|
||||
_uv_os_getpid;
|
||||
_uv_os_getppid;
|
||||
_dumpBtjsTrace;
|
||||
_uv_os_getpriority;
|
||||
_uv_os_homedir;
|
||||
_uv_os_setenv;
|
||||
_uv_os_setpriority;
|
||||
_uv_os_tmpdir;
|
||||
_uv_os_uname;
|
||||
_uv_os_unsetenv;
|
||||
_uv_pipe_bind;
|
||||
_uv_pipe_bind2;
|
||||
_uv_pipe_chmod;
|
||||
_uv_pipe_connect;
|
||||
_uv_pipe_connect2;
|
||||
_uv_pipe_getpeername;
|
||||
_uv_pipe_getsockname;
|
||||
_uv_pipe_init;
|
||||
_uv_pipe_open;
|
||||
_uv_pipe_pending_count;
|
||||
_uv_pipe_pending_instances;
|
||||
_uv_pipe_pending_type;
|
||||
_uv_pipe;
|
||||
_uv_poll_init_socket;
|
||||
_uv_poll_init;
|
||||
_uv_poll_start;
|
||||
_uv_poll_stop;
|
||||
_uv_prepare_init;
|
||||
_uv_prepare_start;
|
||||
_uv_prepare_stop;
|
||||
_uv_print_active_handles;
|
||||
_uv_print_all_handles;
|
||||
_uv_process_get_pid;
|
||||
_uv_process_kill;
|
||||
_uv_queue_work;
|
||||
_uv_random;
|
||||
_uv_read_start;
|
||||
_uv_read_stop;
|
||||
_uv_recv_buffer_size;
|
||||
_uv_ref;
|
||||
_uv_replace_allocator;
|
||||
_uv_req_get_data;
|
||||
_uv_req_get_type;
|
||||
_uv_req_set_data;
|
||||
_uv_req_size;
|
||||
_uv_req_type_name;
|
||||
_uv_resident_set_memory;
|
||||
_uv_run;
|
||||
_uv_rwlock_destroy;
|
||||
_uv_rwlock_init;
|
||||
_uv_rwlock_rdlock;
|
||||
_uv_rwlock_rdunlock;
|
||||
_uv_rwlock_tryrdlock;
|
||||
_uv_rwlock_trywrlock;
|
||||
_uv_rwlock_wrlock;
|
||||
_uv_rwlock_wrunlock;
|
||||
_uv_sem_destroy;
|
||||
_uv_sem_init;
|
||||
_uv_sem_post;
|
||||
_uv_sem_trywait;
|
||||
_uv_sem_wait;
|
||||
_uv_send_buffer_size;
|
||||
_uv_set_process_title;
|
||||
_uv_setup_args;
|
||||
_uv_shutdown;
|
||||
_uv_signal_init;
|
||||
_uv_signal_start_oneshot;
|
||||
_uv_signal_start;
|
||||
_uv_signal_stop;
|
||||
_uv_sleep;
|
||||
_uv_socketpair;
|
||||
_uv_spawn;
|
||||
_uv_stop;
|
||||
_uv_stream_get_write_queue_size;
|
||||
_uv_stream_set_blocking;
|
||||
_uv_strerror_r;
|
||||
_uv_strerror;
|
||||
_uv_tcp_bind;
|
||||
_uv_tcp_close_reset;
|
||||
_uv_tcp_connect;
|
||||
_uv_tcp_getpeername;
|
||||
_uv_tcp_getsockname;
|
||||
_uv_tcp_init_ex;
|
||||
_uv_tcp_init;
|
||||
_uv_tcp_keepalive;
|
||||
_uv_tcp_nodelay;
|
||||
_uv_tcp_open;
|
||||
_uv_tcp_simultaneous_accepts;
|
||||
_uv_thread_create_ex;
|
||||
_uv_thread_create;
|
||||
_uv_thread_detach;
|
||||
_uv_thread_equal;
|
||||
_uv_thread_getaffinity;
|
||||
_uv_thread_getcpu;
|
||||
_uv_thread_getname;
|
||||
_uv_thread_getpriority;
|
||||
_uv_thread_join;
|
||||
_uv_thread_self;
|
||||
_uv_thread_setaffinity;
|
||||
_uv_thread_setname;
|
||||
_uv_thread_setpriority;
|
||||
_uv_timer_again;
|
||||
_uv_timer_get_due_in;
|
||||
_uv_timer_get_repeat;
|
||||
_uv_timer_init;
|
||||
_uv_timer_set_repeat;
|
||||
_uv_timer_start;
|
||||
_uv_timer_stop;
|
||||
_uv_translate_sys_error;
|
||||
_uv_try_write;
|
||||
_uv_try_write2;
|
||||
_uv_tty_get_vterm_state;
|
||||
_uv_tty_get_winsize;
|
||||
_uv_tty_init;
|
||||
_uv_tty_reset_mode;
|
||||
_uv_tty_set_mode;
|
||||
_uv_tty_set_vterm_state;
|
||||
_uv_udp_bind;
|
||||
_uv_udp_connect;
|
||||
_uv_udp_get_send_queue_count;
|
||||
_uv_udp_get_send_queue_size;
|
||||
_uv_udp_getpeername;
|
||||
_uv_udp_getsockname;
|
||||
_uv_udp_init_ex;
|
||||
_uv_udp_init;
|
||||
_uv_udp_open;
|
||||
_uv_udp_recv_start;
|
||||
_uv_udp_recv_stop;
|
||||
_uv_udp_send;
|
||||
_uv_udp_set_broadcast;
|
||||
_uv_udp_set_membership;
|
||||
_uv_udp_set_multicast_interface;
|
||||
_uv_udp_set_multicast_loop;
|
||||
_uv_udp_set_multicast_ttl;
|
||||
_uv_udp_set_source_membership;
|
||||
_uv_udp_set_ttl;
|
||||
_uv_udp_try_send;
|
||||
_uv_udp_try_send2;
|
||||
_uv_udp_using_recvmmsg;
|
||||
_uv_unref;
|
||||
_uv_update_time;
|
||||
_uv_uptime;
|
||||
_uv_utf16_length_as_wtf8;
|
||||
_uv_utf16_to_wtf8;
|
||||
_uv_version_string;
|
||||
_uv_version;
|
||||
_uv_walk;
|
||||
_uv_write;
|
||||
_uv_write2;
|
||||
_uv_wtf8_length_as_utf16;
|
||||
_uv_wtf8_to_utf16;
|
||||
};
|
||||
|
||||
460
src/symbols.txt
460
src/symbols.txt
@@ -1,3 +1,70 @@
|
||||
__ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm
|
||||
__ZN2v811HandleScopeC1EPNS_7IsolateE
|
||||
__ZN2v811HandleScopeD1Ev
|
||||
__ZN2v811HandleScopeD2Ev
|
||||
__ZN2v812api_internal12ToLocalEmptyEv
|
||||
__ZN2v812api_internal13DisposeGlobalEPm
|
||||
__ZN2v812api_internal17FromJustIsNothingEv
|
||||
__ZN2v812api_internal18GlobalizeReferenceEPNS_8internal7IsolateEm
|
||||
__ZN2v814ObjectTemplate11NewInstanceENS_5LocalINS_7ContextEEE
|
||||
__ZN2v814ObjectTemplate21SetInternalFieldCountEi
|
||||
__ZN2v814ObjectTemplate3NewEPNS_7IsolateENS_5LocalINS_16FunctionTemplateEEE
|
||||
__ZN2v816FunctionTemplate11GetFunctionENS_5LocalINS_7ContextEEE
|
||||
__ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEiNS_19ConstructorBehaviorENS_14SideEffectTypeEPKNS_9CFunctionEttt
|
||||
__ZN2v820EscapableHandleScopeC1EPNS_7IsolateE
|
||||
__ZN2v820EscapableHandleScopeC2EPNS_7IsolateE
|
||||
__ZN2v820EscapableHandleScopeD1Ev
|
||||
__ZN2v820EscapableHandleScopeD2Ev
|
||||
__ZN2v824EscapableHandleScopeBase10EscapeSlotEPm
|
||||
__ZN2v824EscapableHandleScopeBaseC2EPNS_7IsolateE
|
||||
__ZN2v85Array3NewEPNS_7IsolateEPNS_5LocalINS_5ValueEEEm
|
||||
__ZN2v86Number3NewEPNS_7IsolateEd
|
||||
__ZN2v86Object16GetInternalFieldEi
|
||||
__ZN2v86Object16SetInternalFieldEiNS_5LocalINS_4DataEEE
|
||||
__ZN2v86Object20SlowGetInternalFieldEi
|
||||
__ZN2v86Object3NewEPNS_7IsolateE
|
||||
__ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_
|
||||
__ZN2v86String11NewFromUtf8EPNS_7IsolateEPKcNS_13NewStringTypeEi
|
||||
__ZN2v86String14NewFromOneByteEPNS_7IsolateEPKhNS_13NewStringTypeEi
|
||||
__ZN2v87Boolean3NewEPNS_7IsolateEb
|
||||
__ZN2v87Context10GetIsolateEv
|
||||
__ZN2v87Isolate10GetCurrentEv
|
||||
__ZN2v87Isolate13TryGetCurrentEv
|
||||
__ZN2v87Isolate17GetCurrentContextEv
|
||||
__ZN2v88External3NewEPNS_7IsolateEPv
|
||||
__ZN2v88Function7SetNameENS_5LocalINS_6StringEEE
|
||||
__ZN2v88internal35IsolateFromNeverReadOnlySpaceObjectEm
|
||||
__ZN3JSC9CallFrame13describeFrameEv
|
||||
__ZN4node25AddEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_
|
||||
__ZN4node28RemoveEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_
|
||||
__ZNK2v814ObjectTemplate18InternalFieldCountEv
|
||||
__ZNK2v85Value10FullIsTrueEv
|
||||
__ZNK2v85Value10IsFunctionEv
|
||||
__ZNK2v85Value11FullIsFalseEv
|
||||
__ZNK2v85Value11IsUndefinedEv
|
||||
__ZNK2v85Value11Uint32ValueENS_5LocalINS_7ContextEEE
|
||||
__ZNK2v85Value17IsNullOrUndefinedEv
|
||||
__ZNK2v85Value6IsNullEv
|
||||
__ZNK2v85Value6IsTrueEv
|
||||
__ZNK2v85Value7IsFalseEv
|
||||
__ZNK2v85Value8IsNumberEv
|
||||
__ZNK2v85Value8IsObjectEv
|
||||
__ZNK2v85Value8IsStringEv
|
||||
__ZNK2v85Value8IsUint32Ev
|
||||
__ZNK2v85Value9IsBooleanEv
|
||||
__ZNK2v86Number5ValueEv
|
||||
__ZNK2v86String10IsExternalEv
|
||||
__ZNK2v86String10Utf8LengthEPNS_7IsolateE
|
||||
__ZNK2v86String17IsExternalOneByteEv
|
||||
__ZNK2v86String17IsExternalTwoByteEv
|
||||
__ZNK2v86String19ContainsOnlyOneByteEv
|
||||
__ZNK2v86String6LengthEv
|
||||
__ZNK2v86String9IsOneByteEv
|
||||
__ZNK2v86String9WriteUtf8EPNS_7IsolateEPciPii
|
||||
__ZNK2v87Boolean5ValueEv
|
||||
__ZNK2v88External5ValueEv
|
||||
__ZNK2v88Function7GetNameEv
|
||||
_dumpBtjsTrace
|
||||
_napi_acquire_threadsafe_function
|
||||
_napi_add_async_cleanup_hook
|
||||
_napi_add_env_cleanup_hook
|
||||
@@ -143,84 +210,331 @@ _napi_typeof
|
||||
_napi_unref_threadsafe_function
|
||||
_napi_unwrap
|
||||
_napi_wrap
|
||||
_node_api_create_buffer_from_arraybuffer
|
||||
_node_api_create_external_string_latin1
|
||||
_node_api_create_external_string_utf16
|
||||
_node_api_create_syntax_error
|
||||
_node_api_symbol_for
|
||||
_node_api_throw_syntax_error
|
||||
_node_api_create_buffer_from_arraybuffer
|
||||
_node_api_get_module_file_name
|
||||
_node_api_post_finalizer
|
||||
_node_api_create_property_key_latin1
|
||||
_node_api_create_property_key_utf16
|
||||
_node_api_create_property_key_utf8
|
||||
__ZN2v87Isolate10GetCurrentEv
|
||||
__ZN2v87Isolate13TryGetCurrentEv
|
||||
__ZN2v87Isolate17GetCurrentContextEv
|
||||
__ZN4node25AddEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_
|
||||
__ZN4node28RemoveEnvironmentCleanupHookEPN2v87IsolateEPFvPvES3_
|
||||
__ZN2v86Number3NewEPNS_7IsolateEd
|
||||
__ZNK2v86Number5ValueEv
|
||||
__ZN2v86String11NewFromUtf8EPNS_7IsolateEPKcNS_13NewStringTypeEi
|
||||
__ZNK2v86String9WriteUtf8EPNS_7IsolateEPciPii
|
||||
__ZN2v812api_internal12ToLocalEmptyEv
|
||||
__ZNK2v86String6LengthEv
|
||||
__ZN2v88External3NewEPNS_7IsolateEPv
|
||||
__ZNK2v88External5ValueEv
|
||||
__ZN2v86Object3NewEPNS_7IsolateE
|
||||
__ZN2v86Object3SetENS_5LocalINS_7ContextEEENS1_INS_5ValueEEES5_
|
||||
__ZN2v86Object16SetInternalFieldEiNS_5LocalINS_4DataEEE
|
||||
__ZN2v86Object20SlowGetInternalFieldEi
|
||||
__ZN2v811HandleScope12CreateHandleEPNS_8internal7IsolateEm
|
||||
__ZN2v811HandleScopeC1EPNS_7IsolateE
|
||||
__ZN2v811HandleScopeD1Ev
|
||||
__ZN2v811HandleScopeD2Ev
|
||||
__ZN2v816FunctionTemplate11GetFunctionENS_5LocalINS_7ContextEEE
|
||||
__ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEiNS_19ConstructorBehaviorENS_14SideEffectTypeEPKNS_9CFunctionEttt
|
||||
__ZN2v814ObjectTemplate11NewInstanceENS_5LocalINS_7ContextEEE
|
||||
__ZN2v814ObjectTemplate21SetInternalFieldCountEi
|
||||
__ZNK2v814ObjectTemplate18InternalFieldCountEv
|
||||
__ZN2v814ObjectTemplate3NewEPNS_7IsolateENS_5LocalINS_16FunctionTemplateEEE
|
||||
__ZN2v824EscapableHandleScopeBase10EscapeSlotEPm
|
||||
__ZN2v824EscapableHandleScopeBaseC2EPNS_7IsolateE
|
||||
__ZN2v88internal35IsolateFromNeverReadOnlySpaceObjectEm
|
||||
_node_api_create_syntax_error
|
||||
_node_api_get_module_file_name
|
||||
_node_api_post_finalizer
|
||||
_node_api_symbol_for
|
||||
_node_api_throw_syntax_error
|
||||
_node_module_register
|
||||
__ZN3JSC9CallFrame13describeFrameEv
|
||||
__ZN2v85Array3NewEPNS_7IsolateEPNS_5LocalINS_5ValueEEEm
|
||||
__ZN2v88Function7SetNameENS_5LocalINS_6StringEEE
|
||||
__ZNK2v85Value9IsBooleanEv
|
||||
__ZNK2v87Boolean5ValueEv
|
||||
__ZNK2v85Value10FullIsTrueEv
|
||||
__ZNK2v85Value11FullIsFalseEv
|
||||
__ZN2v820EscapableHandleScopeC1EPNS_7IsolateE
|
||||
__ZN2v820EscapableHandleScopeC2EPNS_7IsolateE
|
||||
__ZN2v820EscapableHandleScopeD1Ev
|
||||
__ZN2v820EscapableHandleScopeD2Ev
|
||||
__ZNK2v85Value8IsObjectEv
|
||||
__ZNK2v85Value8IsNumberEv
|
||||
__ZNK2v85Value8IsUint32Ev
|
||||
__ZNK2v85Value11Uint32ValueENS_5LocalINS_7ContextEEE
|
||||
__ZNK2v85Value11IsUndefinedEv
|
||||
__ZNK2v85Value6IsNullEv
|
||||
__ZNK2v85Value17IsNullOrUndefinedEv
|
||||
__ZNK2v85Value6IsTrueEv
|
||||
__ZNK2v85Value7IsFalseEv
|
||||
__ZNK2v85Value8IsStringEv
|
||||
__ZN2v87Boolean3NewEPNS_7IsolateEb
|
||||
__ZN2v86Object16GetInternalFieldEi
|
||||
__ZN2v87Context10GetIsolateEv
|
||||
__ZN2v86String14NewFromOneByteEPNS_7IsolateEPKhNS_13NewStringTypeEi
|
||||
__ZNK2v86String10Utf8LengthEPNS_7IsolateE
|
||||
__ZNK2v86String10IsExternalEv
|
||||
__ZNK2v86String17IsExternalOneByteEv
|
||||
__ZNK2v86String17IsExternalTwoByteEv
|
||||
__ZNK2v86String9IsOneByteEv
|
||||
__ZNK2v86String19ContainsOnlyOneByteEv
|
||||
__ZN2v812api_internal18GlobalizeReferenceEPNS_8internal7IsolateEm
|
||||
__ZN2v812api_internal13DisposeGlobalEPm
|
||||
__ZNK2v88Function7GetNameEv
|
||||
__ZNK2v85Value10IsFunctionEv
|
||||
__ZN2v812api_internal17FromJustIsNothingEv
|
||||
_uv_accept
|
||||
_uv_async_init
|
||||
_uv_async_send
|
||||
_uv_available_parallelism
|
||||
_uv_backend_fd
|
||||
_uv_backend_timeout
|
||||
_uv_barrier_destroy
|
||||
_uv_barrier_init
|
||||
_uv_barrier_wait
|
||||
_uv_buf_init
|
||||
_uv_cancel
|
||||
_uv_chdir
|
||||
_uv_check_init
|
||||
_uv_check_start
|
||||
_uv_check_stop
|
||||
_uv_clock_gettime
|
||||
_uv_close
|
||||
_uv_cond_broadcast
|
||||
_uv_cond_destroy
|
||||
_uv_cond_init
|
||||
_uv_cond_signal
|
||||
_uv_cond_timedwait
|
||||
_uv_cond_wait
|
||||
_uv_cpu_info
|
||||
_uv_cpumask_size
|
||||
_uv_cwd
|
||||
_uv_default_loop
|
||||
_uv_disable_stdio_inheritance
|
||||
_uv_dlclose
|
||||
_uv_dlerror
|
||||
_uv_dlopen
|
||||
_uv_dlsym
|
||||
_uv_err_name
|
||||
_uv_err_name_r
|
||||
_uv_exepath
|
||||
_uv_fileno
|
||||
_uv_free_cpu_info
|
||||
_uv_free_interface_addresses
|
||||
_uv_freeaddrinfo
|
||||
_uv_fs_access
|
||||
_uv_fs_chmod
|
||||
_uv_fs_chown
|
||||
_uv_fs_close
|
||||
_uv_fs_closedir
|
||||
_uv_fs_copyfile
|
||||
_uv_fs_event_getpath
|
||||
_uv_fs_event_init
|
||||
_uv_fs_event_start
|
||||
_uv_fs_event_stop
|
||||
_uv_fs_fchmod
|
||||
_uv_fs_fchown
|
||||
_uv_fs_fdatasync
|
||||
_uv_fs_fstat
|
||||
_uv_fs_fsync
|
||||
_uv_fs_ftruncate
|
||||
_uv_fs_futime
|
||||
_uv_fs_get_path
|
||||
_uv_fs_get_ptr
|
||||
_uv_fs_get_result
|
||||
_uv_fs_get_statbuf
|
||||
_uv_fs_get_system_error
|
||||
_uv_fs_get_type
|
||||
_uv_fs_lchown
|
||||
_uv_fs_link
|
||||
_uv_fs_lstat
|
||||
_uv_fs_lutime
|
||||
_uv_fs_mkdir
|
||||
_uv_fs_mkdtemp
|
||||
_uv_fs_mkstemp
|
||||
_uv_fs_open
|
||||
_uv_fs_opendir
|
||||
_uv_fs_poll_getpath
|
||||
_uv_fs_poll_init
|
||||
_uv_fs_poll_start
|
||||
_uv_fs_poll_stop
|
||||
_uv_fs_read
|
||||
_uv_fs_readdir
|
||||
_uv_fs_readlink
|
||||
_uv_fs_realpath
|
||||
_uv_fs_rename
|
||||
_uv_fs_req_cleanup
|
||||
_uv_fs_rmdir
|
||||
_uv_fs_scandir
|
||||
_uv_fs_scandir_next
|
||||
_uv_fs_sendfile
|
||||
_uv_fs_stat
|
||||
_uv_fs_statfs
|
||||
_uv_fs_symlink
|
||||
_uv_fs_unlink
|
||||
_uv_fs_utime
|
||||
_uv_fs_write
|
||||
_uv_get_available_memory
|
||||
_uv_get_constrained_memory
|
||||
_uv_get_free_memory
|
||||
_uv_get_osfhandle
|
||||
_uv_get_process_title
|
||||
_uv_get_total_memory
|
||||
_uv_getaddrinfo
|
||||
_uv_getnameinfo
|
||||
_uv_getrusage
|
||||
_uv_getrusage_thread
|
||||
_uv_gettimeofday
|
||||
_uv_guess_handle
|
||||
_uv_handle_get_data
|
||||
_uv_handle_get_loop
|
||||
_uv_handle_get_type
|
||||
_uv_handle_set_data
|
||||
_uv_handle_size
|
||||
_uv_handle_type_name
|
||||
_uv_has_ref
|
||||
_uv_hrtime
|
||||
_uv_idle_init
|
||||
_uv_idle_start
|
||||
_uv_idle_stop
|
||||
_uv_if_indextoiid
|
||||
_uv_if_indextoname
|
||||
_uv_inet_ntop
|
||||
_uv_inet_pton
|
||||
_uv_interface_addresses
|
||||
_uv_ip_name
|
||||
_uv_ip4_addr
|
||||
_uv_ip4_name
|
||||
_uv_ip6_addr
|
||||
_uv_ip6_name
|
||||
_uv_is_active
|
||||
_uv_is_closing
|
||||
_uv_is_readable
|
||||
_uv_is_writable
|
||||
_uv_key_create
|
||||
_uv_key_delete
|
||||
_uv_key_get
|
||||
_uv_key_set
|
||||
_uv_kill
|
||||
_uv_library_shutdown
|
||||
_uv_listen
|
||||
_uv_loadavg
|
||||
_uv_loop_alive
|
||||
_uv_loop_close
|
||||
_uv_loop_configure
|
||||
_uv_loop_delete
|
||||
_uv_loop_fork
|
||||
_uv_loop_get_data
|
||||
_uv_loop_init
|
||||
_uv_loop_new
|
||||
_uv_loop_set_data
|
||||
_uv_loop_size
|
||||
_uv_metrics_idle_time
|
||||
_uv_metrics_info
|
||||
_uv_mutex_destroy
|
||||
_uv_mutex_init
|
||||
_uv_mutex_init_recursive
|
||||
_uv_mutex_lock
|
||||
_uv_mutex_trylock
|
||||
_uv_mutex_unlock
|
||||
_uv_now
|
||||
_uv_once
|
||||
_uv_open_osfhandle
|
||||
_uv_os_environ
|
||||
_uv_os_free_environ
|
||||
_uv_os_free_group
|
||||
_uv_os_free_passwd
|
||||
_uv_os_get_group
|
||||
_uv_os_get_passwd
|
||||
_uv_os_get_passwd2
|
||||
_uv_os_getenv
|
||||
_uv_os_gethostname
|
||||
_uv_os_getpid
|
||||
_uv_os_getppid
|
||||
_dumpBtjsTrace
|
||||
_uv_os_getpriority
|
||||
_uv_os_homedir
|
||||
_uv_os_setenv
|
||||
_uv_os_setpriority
|
||||
_uv_os_tmpdir
|
||||
_uv_os_uname
|
||||
_uv_os_unsetenv
|
||||
_uv_pipe
|
||||
_uv_pipe_bind
|
||||
_uv_pipe_bind2
|
||||
_uv_pipe_chmod
|
||||
_uv_pipe_connect
|
||||
_uv_pipe_connect2
|
||||
_uv_pipe_getpeername
|
||||
_uv_pipe_getsockname
|
||||
_uv_pipe_init
|
||||
_uv_pipe_open
|
||||
_uv_pipe_pending_count
|
||||
_uv_pipe_pending_instances
|
||||
_uv_pipe_pending_type
|
||||
_uv_poll_init
|
||||
_uv_poll_init_socket
|
||||
_uv_poll_start
|
||||
_uv_poll_stop
|
||||
_uv_prepare_init
|
||||
_uv_prepare_start
|
||||
_uv_prepare_stop
|
||||
_uv_print_active_handles
|
||||
_uv_print_all_handles
|
||||
_uv_process_get_pid
|
||||
_uv_process_kill
|
||||
_uv_queue_work
|
||||
_uv_random
|
||||
_uv_read_start
|
||||
_uv_read_stop
|
||||
_uv_recv_buffer_size
|
||||
_uv_ref
|
||||
_uv_replace_allocator
|
||||
_uv_req_get_data
|
||||
_uv_req_get_type
|
||||
_uv_req_set_data
|
||||
_uv_req_size
|
||||
_uv_req_type_name
|
||||
_uv_resident_set_memory
|
||||
_uv_run
|
||||
_uv_rwlock_destroy
|
||||
_uv_rwlock_init
|
||||
_uv_rwlock_rdlock
|
||||
_uv_rwlock_rdunlock
|
||||
_uv_rwlock_tryrdlock
|
||||
_uv_rwlock_trywrlock
|
||||
_uv_rwlock_wrlock
|
||||
_uv_rwlock_wrunlock
|
||||
_uv_sem_destroy
|
||||
_uv_sem_init
|
||||
_uv_sem_post
|
||||
_uv_sem_trywait
|
||||
_uv_sem_wait
|
||||
_uv_send_buffer_size
|
||||
_uv_set_process_title
|
||||
_uv_setup_args
|
||||
_uv_shutdown
|
||||
_uv_signal_init
|
||||
_uv_signal_start
|
||||
_uv_signal_start_oneshot
|
||||
_uv_signal_stop
|
||||
_uv_sleep
|
||||
_uv_socketpair
|
||||
_uv_spawn
|
||||
_uv_stop
|
||||
_uv_stream_get_write_queue_size
|
||||
_uv_stream_set_blocking
|
||||
_uv_strerror
|
||||
_uv_strerror_r
|
||||
_uv_tcp_bind
|
||||
_uv_tcp_close_reset
|
||||
_uv_tcp_connect
|
||||
_uv_tcp_getpeername
|
||||
_uv_tcp_getsockname
|
||||
_uv_tcp_init
|
||||
_uv_tcp_init_ex
|
||||
_uv_tcp_keepalive
|
||||
_uv_tcp_nodelay
|
||||
_uv_tcp_open
|
||||
_uv_tcp_simultaneous_accepts
|
||||
_uv_thread_create
|
||||
_uv_thread_create_ex
|
||||
_uv_thread_detach
|
||||
_uv_thread_equal
|
||||
_uv_thread_getaffinity
|
||||
_uv_thread_getcpu
|
||||
_uv_thread_getname
|
||||
_uv_thread_getpriority
|
||||
_uv_thread_join
|
||||
_uv_thread_self
|
||||
_uv_thread_setaffinity
|
||||
_uv_thread_setname
|
||||
_uv_thread_setpriority
|
||||
_uv_timer_again
|
||||
_uv_timer_get_due_in
|
||||
_uv_timer_get_repeat
|
||||
_uv_timer_init
|
||||
_uv_timer_set_repeat
|
||||
_uv_timer_start
|
||||
_uv_timer_stop
|
||||
_uv_translate_sys_error
|
||||
_uv_try_write
|
||||
_uv_try_write2
|
||||
_uv_tty_get_vterm_state
|
||||
_uv_tty_get_winsize
|
||||
_uv_tty_init
|
||||
_uv_tty_reset_mode
|
||||
_uv_tty_set_mode
|
||||
_uv_tty_set_vterm_state
|
||||
_uv_udp_bind
|
||||
_uv_udp_connect
|
||||
_uv_udp_get_send_queue_count
|
||||
_uv_udp_get_send_queue_size
|
||||
_uv_udp_getpeername
|
||||
_uv_udp_getsockname
|
||||
_uv_udp_init
|
||||
_uv_udp_init_ex
|
||||
_uv_udp_open
|
||||
_uv_udp_recv_start
|
||||
_uv_udp_recv_stop
|
||||
_uv_udp_send
|
||||
_uv_udp_set_broadcast
|
||||
_uv_udp_set_membership
|
||||
_uv_udp_set_multicast_interface
|
||||
_uv_udp_set_multicast_loop
|
||||
_uv_udp_set_multicast_ttl
|
||||
_uv_udp_set_source_membership
|
||||
_uv_udp_set_ttl
|
||||
_uv_udp_try_send
|
||||
_uv_udp_try_send2
|
||||
_uv_udp_using_recvmmsg
|
||||
_uv_unref
|
||||
_uv_update_time
|
||||
_uv_uptime
|
||||
_uv_utf16_length_as_wtf8
|
||||
_uv_utf16_to_wtf8
|
||||
_uv_version
|
||||
_uv_version_string
|
||||
_uv_walk
|
||||
_uv_write
|
||||
_uv_write2
|
||||
_uv_wtf8_length_as_utf16
|
||||
_uv_wtf8_to_utf16
|
||||
|
||||
18
test/napi/uv-stub-stuff/good_plugin.c
Normal file
18
test/napi/uv-stub-stuff/good_plugin.c
Normal file
@@ -0,0 +1,18 @@
|
||||
#include <node_api.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
typedef pid_t uv_pid_t;
|
||||
uv_pid_t uv_os_getpid();
|
||||
|
||||
napi_value Init(napi_env env, napi_value exports) {
|
||||
uv_pid_t pid = uv_os_getpid();
|
||||
printf("%d\n", pid);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
NAPI_MODULE(NODE_GYP_MODULE_NAME, Init)
|
||||
3197
test/napi/uv-stub-stuff/plugin.c
Normal file
3197
test/napi/uv-stub-stuff/plugin.c
Normal file
File diff suppressed because it is too large
Load Diff
92
test/napi/uv_stub.test.ts
Normal file
92
test/napi/uv_stub.test.ts
Normal file
@@ -0,0 +1,92 @@
|
||||
import { beforeAll, describe, expect, afterEach, test } from "bun:test";
|
||||
import path from "node:path";
|
||||
import { bunEnv, bunExe, makeTree, tempDirWithFiles, isWindows } from "harness";
|
||||
import source from "./uv-stub-stuff/plugin.c";
|
||||
import goodSource from "./uv-stub-stuff/good_plugin.c";
|
||||
import { symbols, test_skipped } from "../../src/bun.js/bindings/libuv/generate_uv_posix_stubs_constants";
|
||||
|
||||
const symbols_to_test = symbols.filter(s => !test_skipped.includes(s));
|
||||
|
||||
// We use libuv on Windows
|
||||
describe.if(!isWindows)("uv stubs", () => {
|
||||
const cwd = process.cwd();
|
||||
let tempdir: string = "";
|
||||
let outdir: string = "";
|
||||
|
||||
beforeAll(async () => {
|
||||
const files = {
|
||||
"plugin.c": await Bun.file(source).text(),
|
||||
"good_plugin.c": await Bun.file(goodSource).text(),
|
||||
"package.json": JSON.stringify({
|
||||
"name": "fake-plugin",
|
||||
"module": "index.ts",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"@types/bun": "latest",
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^5.0.0",
|
||||
},
|
||||
"scripts": {
|
||||
"build:napi": "node-gyp configure && node-gyp build",
|
||||
},
|
||||
"dependencies": {
|
||||
"node-gyp": "10.2.0",
|
||||
},
|
||||
}),
|
||||
"index.ts": `const symbol = process.argv[2]; const foo = require("./build/Release/xXx123_foo_counter_321xXx.node"); foo.callUVFunc(symbol)`,
|
||||
"nocrash.ts": `const foo = require("./build/Release/good_plugin.node");console.log('HI!')`,
|
||||
"binding.gyp": `{
|
||||
"targets": [
|
||||
{
|
||||
"target_name": "xXx123_foo_counter_321xXx",
|
||||
"sources": [ "plugin.c" ],
|
||||
"include_dirs": [ ".", "./libuv" ],
|
||||
"cflags": ["-fPIC"],
|
||||
"ldflags": ["-Wl,--export-dynamic"]
|
||||
},
|
||||
{
|
||||
"target_name": "good_plugin",
|
||||
"sources": [ "good_plugin.c" ],
|
||||
"include_dirs": [ ".", "./libuv" ],
|
||||
"cflags": ["-fPIC"],
|
||||
"ldflags": ["-Wl,--export-dynamic"]
|
||||
}
|
||||
]
|
||||
}
|
||||
`,
|
||||
};
|
||||
|
||||
tempdir = tempDirWithFiles("native-plugins", files);
|
||||
|
||||
await makeTree(tempdir, files);
|
||||
outdir = path.join(tempdir, "dist");
|
||||
|
||||
process.chdir(tempdir);
|
||||
|
||||
const libuvDir = path.join(__dirname, "../../src/bun.js/bindings/libuv");
|
||||
await Bun.$`cp -R ${libuvDir} ${path.join(tempdir, "libuv")}`;
|
||||
await Bun.$`${bunExe()} i && ${bunExe()} build:napi`.env(bunEnv).cwd(tempdir);
|
||||
console.log("tempdir:", tempdir);
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
process.chdir(cwd);
|
||||
});
|
||||
|
||||
for (const symbol of symbols_to_test) {
|
||||
test(`should crash when calling unsupported uv functions: ${symbol}`, async () => {
|
||||
console.log("GO:", symbol);
|
||||
const { stderr } = await Bun.$`${bunExe()} run index.ts ${symbol}`.cwd(tempdir).throws(false).quiet();
|
||||
const stderrStr = stderr.toString();
|
||||
expect(stderrStr).toContain("Bun encountered a crash when running a NAPI module that tried to call");
|
||||
expect(stderrStr).toContain(symbol);
|
||||
});
|
||||
}
|
||||
|
||||
test("should not crash when calling supported uv functions", async () => {
|
||||
const { stdout, exitCode } = await Bun.$`${bunExe()} run nocrash.ts`.cwd(tempdir).throws(false).quiet();
|
||||
expect(exitCode).toBe(0);
|
||||
expect(stdout.toString()).toContain("HI!");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user