@k13engineering/linux-fuse 0.0.7 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/abi.d.ts +1133 -5
- package/dist/lib/abi.js +705 -535
- package/dist/lib/constants.d.ts +5 -3
- package/dist/lib/constants.js +10 -8
- package/dist/lib/convenience.js +344 -344
- package/dist/lib/dirent.js +24 -8
- package/dist/lib/filesystem.d.ts +41 -0
- package/dist/lib/filesystem.js +344 -0
- package/dist/lib/fuse-lowlevel.d.ts +3 -1
- package/dist/lib/fuse-lowlevel.js +17 -4
- package/dist/lib/index.d.ts +3 -33
- package/dist/lib/index.js +11 -283
- package/dist/lib/kernel.d.ts +9 -0
- package/dist/lib/kernel.js +21 -0
- package/dist/lib/linux-fuse.d.ts +21 -0
- package/dist/lib/linux-fuse.js +38 -0
- package/dist/lib/linux.d.ts +3 -1
- package/dist/lib/linux.js +16 -9
- package/dist/lib/message.js +6 -0
- package/dist/lib/mount.d.ts +5 -2
- package/dist/lib/mount.js +16 -4
- package/dist/lib/protocol.d.ts +6 -0
- package/dist/lib/protocol.js +861 -830
- package/dist/lib/server.js +33 -0
- package/dist/lib/syscalls.d.ts +66 -38
- package/dist/lib/syscalls.js +281 -198
- package/package.json +4 -4
package/dist/lib/protocol.js
CHANGED
|
@@ -64,7 +64,9 @@ import {
|
|
|
64
64
|
FOPEN_DIRECT_IO,
|
|
65
65
|
FOPEN_KEEP_CACHE,
|
|
66
66
|
FOPEN_NONSEEKABLE,
|
|
67
|
+
FUSE_COMPAT_SETXATTR_IN_SIZE,
|
|
67
68
|
FUSE_GETATTR_FH,
|
|
69
|
+
FUSE_SETXATTR_EXT,
|
|
68
70
|
opcode,
|
|
69
71
|
} from "./constants.js";
|
|
70
72
|
/*import type { TParsedMessageFromKernel, TParsedMessageToKernel } from "./message.ts";*/
|
|
@@ -993,7 +995,7 @@ const fuseAttrToPayloadValue = ({ attr }/*: { attr: TFuseAttr }*/) => {
|
|
|
993
995
|
mtimensec: attr.mtimeNsec % 1_000_000_000n,
|
|
994
996
|
ctime: attr.ctimeNsec / 1_000_000_000n,
|
|
995
997
|
ctimensec: attr.ctimeNsec % 1_000_000_000n,
|
|
996
|
-
|
|
998
|
+
flags: 0n,
|
|
997
999
|
};
|
|
998
1000
|
};
|
|
999
1001
|
|
|
@@ -1278,6 +1280,13 @@ const interpretXAttrPayload = /*<TForOpcode extends "GETXATTR" | "LISTXATTR">*/(
|
|
|
1278
1280
|
|
|
1279
1281
|
const createMessageFromKernelInterpreter = () => {
|
|
1280
1282
|
|
|
1283
|
+
// the layout of some requests depends on the flags the server replied to INIT with
|
|
1284
|
+
let extendedSetxattr = false;
|
|
1285
|
+
|
|
1286
|
+
const applyInitResult = ({ result }/*: { result: Extract<TFuseResponse, { forOpcode: "INIT", errorCode: undefined }>["result"] }*/) => {
|
|
1287
|
+
extendedSetxattr = hasFlag({ bitmask: result.flags, flag: FUSE_SETXATTR_EXT });
|
|
1288
|
+
};
|
|
1289
|
+
|
|
1281
1290
|
/*type TInterpretFunc<T extends string> = (
|
|
1282
1291
|
args: { unique: bigint, nodeId: bigint, requester: TRequesterInfo, payload: Uint8Array }
|
|
1283
1292
|
) => TGenericInterpretResult<Extract<TFuseRequest, { opcode: T }>>;*/
|
|
@@ -1517,7 +1526,13 @@ const createMessageFromKernelInterpreter = () => {
|
|
|
1517
1526
|
};
|
|
1518
1527
|
|
|
1519
1528
|
const interpretSymlink/*: TInterpretFunc<"SYMLINK">*/ = ({ unique, nodeId, requester, payload }) => {
|
|
1520
|
-
const { first: name, second: target } = decodeCStringPair(payload);
|
|
1529
|
+
const { error, first: name, second: target } = decodeCStringPair(payload);
|
|
1530
|
+
if (error !== undefined) {
|
|
1531
|
+
return {
|
|
1532
|
+
error: Error("Invalid payload for SYMLINK request. Expected nul-terminated name and target.", { cause: error }),
|
|
1533
|
+
interpreted: undefined,
|
|
1534
|
+
};
|
|
1535
|
+
}
|
|
1521
1536
|
|
|
1522
1537
|
return {
|
|
1523
1538
|
error: undefined,
|
|
@@ -1629,7 +1644,16 @@ const createMessageFromKernelInterpreter = () => {
|
|
|
1629
1644
|
const { newdir, flags } = supportsFlags
|
|
1630
1645
|
? fuseRename2InParser.parse({ data: payload.subarray(0, fuseRename2InParser.size) })
|
|
1631
1646
|
: { ...fuseRenameInParser.parse({ data: payload.subarray(0, fuseRenameInParser.size) }), flags: 0n };
|
|
1632
|
-
const { first: oldName, second: newName } = decodeCStringPair(payload.subarray(headerSize));
|
|
1647
|
+
const { error, first: oldName, second: newName } = decodeCStringPair(payload.subarray(headerSize));
|
|
1648
|
+
if (error !== undefined) {
|
|
1649
|
+
return {
|
|
1650
|
+
error: Error(
|
|
1651
|
+
`Invalid payload for ${supportsFlags ? "RENAME2" : "RENAME"} request. Expected nul-terminated old and new name.`,
|
|
1652
|
+
{ cause: error }
|
|
1653
|
+
),
|
|
1654
|
+
interpreted: undefined,
|
|
1655
|
+
};
|
|
1656
|
+
}
|
|
1633
1657
|
|
|
1634
1658
|
return {
|
|
1635
1659
|
error: undefined,
|
|
@@ -1953,17 +1977,23 @@ const createMessageFromKernelInterpreter = () => {
|
|
|
1953
1977
|
};
|
|
1954
1978
|
|
|
1955
1979
|
const interpretSetXAttr/*: TInterpretFunc<"SETXATTR">*/ = ({ unique, nodeId, requester, payload }) => {
|
|
1956
|
-
|
|
1980
|
+
// without FUSE_SETXATTR_EXT the kernel only sends the first fields of struct fuse_setxattr_in
|
|
1981
|
+
const headerSize = extendedSetxattr ? fuseSetxattrInParser.size : FUSE_COMPAT_SETXATTR_IN_SIZE;
|
|
1982
|
+
if (payload.length < headerSize) {
|
|
1957
1983
|
return {
|
|
1958
1984
|
error: Error(
|
|
1959
|
-
`Invalid payload size for SETXATTR request. Expected at least ${
|
|
1985
|
+
`Invalid payload size for SETXATTR request. Expected at least ${headerSize} bytes, got ${payload.length} bytes.`
|
|
1960
1986
|
),
|
|
1961
1987
|
interpreted: undefined,
|
|
1962
1988
|
};
|
|
1963
1989
|
}
|
|
1964
1990
|
|
|
1965
|
-
|
|
1966
|
-
const
|
|
1991
|
+
// the fields missing from the compat header are zero, as the kernel would have sent them
|
|
1992
|
+
const header = new Uint8Array(fuseSetxattrInParser.size);
|
|
1993
|
+
header.set(payload.subarray(0, headerSize));
|
|
1994
|
+
|
|
1995
|
+
const { size, flags, setxattr_flags } = fuseSetxattrInParser.parse({ data: header });
|
|
1996
|
+
const trailing = payload.subarray(headerSize);
|
|
1967
1997
|
const nameTerminator = trailing.indexOf(0);
|
|
1968
1998
|
if (nameTerminator === -1) {
|
|
1969
1999
|
return {
|
|
@@ -2465,466 +2495,466 @@ const createMessageFromKernelInterpreter = () => {
|
|
|
2465
2495
|
};
|
|
2466
2496
|
|
|
2467
2497
|
switch (parsedMessageFromKernel.header.opcode) {
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2498
|
+
case BigInt(opcode.INIT): {
|
|
2499
|
+
return interpretInit({
|
|
2500
|
+
unique,
|
|
2501
|
+
nodeId,
|
|
2502
|
+
requester,
|
|
2503
|
+
payload: parsedMessageFromKernel.payload,
|
|
2504
|
+
});
|
|
2505
|
+
}
|
|
2476
2506
|
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
|
|
2480
|
-
|
|
2481
|
-
|
|
2482
|
-
|
|
2483
|
-
|
|
2484
|
-
|
|
2507
|
+
case BigInt(opcode.FORGET): {
|
|
2508
|
+
return interpretForget({
|
|
2509
|
+
unique,
|
|
2510
|
+
nodeId,
|
|
2511
|
+
requester,
|
|
2512
|
+
payload: parsedMessageFromKernel.payload,
|
|
2513
|
+
});
|
|
2514
|
+
}
|
|
2485
2515
|
|
|
2486
|
-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
|
|
2492
|
-
|
|
2493
|
-
|
|
2516
|
+
case BigInt(opcode.BATCH_FORGET): {
|
|
2517
|
+
return interpretBatchForget({
|
|
2518
|
+
unique,
|
|
2519
|
+
nodeId,
|
|
2520
|
+
requester,
|
|
2521
|
+
payload: parsedMessageFromKernel.payload,
|
|
2522
|
+
});
|
|
2523
|
+
}
|
|
2494
2524
|
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
|
|
2498
|
-
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2525
|
+
case BigInt(opcode.GETATTR): {
|
|
2526
|
+
return interpretGetAttr({
|
|
2527
|
+
unique,
|
|
2528
|
+
nodeId,
|
|
2529
|
+
requester,
|
|
2530
|
+
payload: parsedMessageFromKernel.payload,
|
|
2531
|
+
});
|
|
2532
|
+
}
|
|
2503
2533
|
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2534
|
+
case BigInt(opcode.SETATTR): {
|
|
2535
|
+
return interpretSetAttr({
|
|
2536
|
+
unique,
|
|
2537
|
+
nodeId,
|
|
2538
|
+
requester,
|
|
2539
|
+
payload: parsedMessageFromKernel.payload,
|
|
2540
|
+
});
|
|
2541
|
+
}
|
|
2512
2542
|
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2543
|
+
case BigInt(opcode.LISTXATTR): {
|
|
2544
|
+
return interpretListXAttrRequest({
|
|
2545
|
+
unique,
|
|
2546
|
+
nodeId,
|
|
2547
|
+
requester,
|
|
2548
|
+
payload: parsedMessageFromKernel.payload,
|
|
2549
|
+
});
|
|
2550
|
+
}
|
|
2521
2551
|
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2552
|
+
case BigInt(opcode.GETXATTR): {
|
|
2553
|
+
return interpretGetXAttr({
|
|
2554
|
+
unique,
|
|
2555
|
+
nodeId,
|
|
2556
|
+
requester,
|
|
2557
|
+
payload: parsedMessageFromKernel.payload,
|
|
2558
|
+
});
|
|
2559
|
+
}
|
|
2530
2560
|
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2561
|
+
case BigInt(opcode.READLINK): {
|
|
2562
|
+
return interpretReadLink({
|
|
2563
|
+
unique,
|
|
2564
|
+
nodeId,
|
|
2565
|
+
requester,
|
|
2566
|
+
payload: parsedMessageFromKernel.payload,
|
|
2567
|
+
});
|
|
2568
|
+
}
|
|
2539
2569
|
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2570
|
+
case BigInt(opcode.SYMLINK): {
|
|
2571
|
+
return interpretSymlink({
|
|
2572
|
+
unique,
|
|
2573
|
+
nodeId,
|
|
2574
|
+
requester,
|
|
2575
|
+
payload: parsedMessageFromKernel.payload,
|
|
2576
|
+
});
|
|
2577
|
+
}
|
|
2548
2578
|
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2579
|
+
case BigInt(opcode.MKNOD): {
|
|
2580
|
+
return interpretMknod({
|
|
2581
|
+
unique,
|
|
2582
|
+
nodeId,
|
|
2583
|
+
requester,
|
|
2584
|
+
payload: parsedMessageFromKernel.payload,
|
|
2585
|
+
});
|
|
2586
|
+
}
|
|
2557
2587
|
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2588
|
+
case BigInt(opcode.MKDIR): {
|
|
2589
|
+
return interpretMkdir({
|
|
2590
|
+
unique,
|
|
2591
|
+
nodeId,
|
|
2592
|
+
requester,
|
|
2593
|
+
payload: parsedMessageFromKernel.payload,
|
|
2594
|
+
});
|
|
2595
|
+
}
|
|
2566
2596
|
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2597
|
+
case BigInt(opcode.UNLINK): {
|
|
2598
|
+
return interpretUnlink({
|
|
2599
|
+
unique,
|
|
2600
|
+
nodeId,
|
|
2601
|
+
requester,
|
|
2602
|
+
payload: parsedMessageFromKernel.payload,
|
|
2603
|
+
});
|
|
2604
|
+
}
|
|
2575
2605
|
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2606
|
+
case BigInt(opcode.RMDIR): {
|
|
2607
|
+
return interpretRmDir({
|
|
2608
|
+
unique,
|
|
2609
|
+
nodeId,
|
|
2610
|
+
requester,
|
|
2611
|
+
payload: parsedMessageFromKernel.payload,
|
|
2612
|
+
});
|
|
2613
|
+
}
|
|
2584
2614
|
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2615
|
+
case BigInt(opcode.RENAME): {
|
|
2616
|
+
return interpretRename({
|
|
2617
|
+
unique,
|
|
2618
|
+
nodeId,
|
|
2619
|
+
requester,
|
|
2620
|
+
payload: parsedMessageFromKernel.payload,
|
|
2621
|
+
supportsFlags: false,
|
|
2622
|
+
});
|
|
2623
|
+
}
|
|
2594
2624
|
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2625
|
+
case BigInt(opcode.RENAME2): {
|
|
2626
|
+
return interpretRename({
|
|
2627
|
+
unique,
|
|
2628
|
+
nodeId,
|
|
2629
|
+
requester,
|
|
2630
|
+
payload: parsedMessageFromKernel.payload,
|
|
2631
|
+
supportsFlags: true,
|
|
2632
|
+
});
|
|
2633
|
+
}
|
|
2604
2634
|
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2635
|
+
case BigInt(opcode.OPENDIR): {
|
|
2636
|
+
return interpretOpenDir({
|
|
2637
|
+
unique,
|
|
2638
|
+
nodeId,
|
|
2639
|
+
requester,
|
|
2640
|
+
payload: parsedMessageFromKernel.payload,
|
|
2641
|
+
});
|
|
2642
|
+
}
|
|
2613
2643
|
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
|
|
2620
|
-
|
|
2621
|
-
|
|
2644
|
+
case BigInt(opcode.LINK): {
|
|
2645
|
+
return interpretLink({
|
|
2646
|
+
unique,
|
|
2647
|
+
nodeId,
|
|
2648
|
+
requester,
|
|
2649
|
+
payload: parsedMessageFromKernel.payload,
|
|
2650
|
+
});
|
|
2651
|
+
}
|
|
2622
2652
|
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2653
|
+
case BigInt(opcode.READDIR): {
|
|
2654
|
+
return interpretReadDir({
|
|
2655
|
+
unique,
|
|
2656
|
+
nodeId,
|
|
2657
|
+
requester,
|
|
2658
|
+
payload: parsedMessageFromKernel.payload,
|
|
2659
|
+
});
|
|
2660
|
+
}
|
|
2631
2661
|
|
|
2632
|
-
|
|
2633
|
-
|
|
2634
|
-
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2662
|
+
case BigInt(opcode.RELEASE): {
|
|
2663
|
+
return interpretRelease({
|
|
2664
|
+
unique,
|
|
2665
|
+
nodeId,
|
|
2666
|
+
requester,
|
|
2667
|
+
payload: parsedMessageFromKernel.payload,
|
|
2668
|
+
});
|
|
2669
|
+
}
|
|
2640
2670
|
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2671
|
+
case BigInt(opcode.RELEASEDIR): {
|
|
2672
|
+
return interpretReleaseDir({
|
|
2673
|
+
unique,
|
|
2674
|
+
nodeId,
|
|
2675
|
+
requester,
|
|
2676
|
+
payload: parsedMessageFromKernel.payload,
|
|
2677
|
+
});
|
|
2678
|
+
}
|
|
2649
2679
|
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2680
|
+
case BigInt(opcode.FSYNCDIR): {
|
|
2681
|
+
return interpretFsync({
|
|
2682
|
+
unique,
|
|
2683
|
+
nodeId,
|
|
2684
|
+
requester,
|
|
2685
|
+
payload: parsedMessageFromKernel.payload,
|
|
2686
|
+
forOpcode: "FSYNCDIR",
|
|
2687
|
+
});
|
|
2688
|
+
}
|
|
2659
2689
|
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2690
|
+
case BigInt(opcode.STATFS): {
|
|
2691
|
+
return interpretStatFs({
|
|
2692
|
+
unique,
|
|
2693
|
+
nodeId,
|
|
2694
|
+
requester,
|
|
2695
|
+
payload: parsedMessageFromKernel.payload,
|
|
2696
|
+
});
|
|
2697
|
+
}
|
|
2668
2698
|
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2699
|
+
case BigInt(opcode.LOOKUP): {
|
|
2700
|
+
return interpretLookup({
|
|
2701
|
+
unique,
|
|
2702
|
+
nodeId,
|
|
2703
|
+
requester,
|
|
2704
|
+
payload: parsedMessageFromKernel.payload,
|
|
2705
|
+
});
|
|
2706
|
+
}
|
|
2677
2707
|
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2708
|
+
case BigInt(opcode.OPEN): {
|
|
2709
|
+
return interpretOpen({
|
|
2710
|
+
unique,
|
|
2711
|
+
nodeId,
|
|
2712
|
+
requester,
|
|
2713
|
+
payload: parsedMessageFromKernel.payload,
|
|
2714
|
+
});
|
|
2715
|
+
}
|
|
2686
2716
|
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2717
|
+
case BigInt(opcode.READ): {
|
|
2718
|
+
return interpretRead({
|
|
2719
|
+
unique,
|
|
2720
|
+
nodeId,
|
|
2721
|
+
requester,
|
|
2722
|
+
payload: parsedMessageFromKernel.payload,
|
|
2723
|
+
});
|
|
2724
|
+
}
|
|
2695
2725
|
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2703
|
-
|
|
2726
|
+
case BigInt(opcode.WRITE): {
|
|
2727
|
+
return interpretWrite({
|
|
2728
|
+
unique,
|
|
2729
|
+
nodeId,
|
|
2730
|
+
requester,
|
|
2731
|
+
payload: parsedMessageFromKernel.payload,
|
|
2732
|
+
});
|
|
2733
|
+
}
|
|
2704
2734
|
|
|
2705
|
-
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2735
|
+
case BigInt(opcode.FLUSH): {
|
|
2736
|
+
return interpretFlush({
|
|
2737
|
+
unique,
|
|
2738
|
+
nodeId,
|
|
2739
|
+
requester,
|
|
2740
|
+
payload: parsedMessageFromKernel.payload,
|
|
2741
|
+
});
|
|
2742
|
+
}
|
|
2713
2743
|
|
|
2714
|
-
|
|
2715
|
-
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2744
|
+
case BigInt(opcode.FSYNC): {
|
|
2745
|
+
return interpretFsync({
|
|
2746
|
+
unique,
|
|
2747
|
+
nodeId,
|
|
2748
|
+
requester,
|
|
2749
|
+
payload: parsedMessageFromKernel.payload,
|
|
2750
|
+
forOpcode: "FSYNC",
|
|
2751
|
+
});
|
|
2752
|
+
}
|
|
2723
2753
|
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2754
|
+
case BigInt(opcode.ACCESS): {
|
|
2755
|
+
return interpretAccess({
|
|
2756
|
+
unique,
|
|
2757
|
+
nodeId,
|
|
2758
|
+
requester,
|
|
2759
|
+
payload: parsedMessageFromKernel.payload,
|
|
2760
|
+
});
|
|
2761
|
+
}
|
|
2732
2762
|
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2763
|
+
case BigInt(opcode.SETXATTR): {
|
|
2764
|
+
return interpretSetXAttr({
|
|
2765
|
+
unique,
|
|
2766
|
+
nodeId,
|
|
2767
|
+
requester,
|
|
2768
|
+
payload: parsedMessageFromKernel.payload,
|
|
2769
|
+
});
|
|
2770
|
+
}
|
|
2741
2771
|
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2772
|
+
case BigInt(opcode.REMOVEXATTR): {
|
|
2773
|
+
return interpretRemoveXAttr({
|
|
2774
|
+
unique,
|
|
2775
|
+
nodeId,
|
|
2776
|
+
requester,
|
|
2777
|
+
payload: parsedMessageFromKernel.payload,
|
|
2778
|
+
});
|
|
2779
|
+
}
|
|
2750
2780
|
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2781
|
+
case BigInt(opcode.CREATE): {
|
|
2782
|
+
return interpretCreate({
|
|
2783
|
+
unique,
|
|
2784
|
+
nodeId,
|
|
2785
|
+
requester,
|
|
2786
|
+
payload: parsedMessageFromKernel.payload,
|
|
2787
|
+
});
|
|
2788
|
+
}
|
|
2759
2789
|
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2790
|
+
case BigInt(opcode.DESTROY): {
|
|
2791
|
+
return interpretDestroy({
|
|
2792
|
+
unique,
|
|
2793
|
+
nodeId,
|
|
2794
|
+
requester,
|
|
2795
|
+
payload: parsedMessageFromKernel.payload,
|
|
2796
|
+
});
|
|
2797
|
+
}
|
|
2768
2798
|
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2799
|
+
case BigInt(opcode.GETLK): {
|
|
2800
|
+
return interpretLk({
|
|
2801
|
+
unique,
|
|
2802
|
+
nodeId,
|
|
2803
|
+
requester,
|
|
2804
|
+
payload: parsedMessageFromKernel.payload,
|
|
2805
|
+
forOpcode: "GETLK",
|
|
2806
|
+
});
|
|
2807
|
+
}
|
|
2778
2808
|
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2809
|
+
case BigInt(opcode.SETLK): {
|
|
2810
|
+
return interpretLk({
|
|
2811
|
+
unique,
|
|
2812
|
+
nodeId,
|
|
2813
|
+
requester,
|
|
2814
|
+
payload: parsedMessageFromKernel.payload,
|
|
2815
|
+
forOpcode: "SETLK",
|
|
2816
|
+
});
|
|
2817
|
+
}
|
|
2788
2818
|
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2819
|
+
case BigInt(opcode.SETLKW): {
|
|
2820
|
+
return interpretLk({
|
|
2821
|
+
unique,
|
|
2822
|
+
nodeId,
|
|
2823
|
+
requester,
|
|
2824
|
+
payload: parsedMessageFromKernel.payload,
|
|
2825
|
+
forOpcode: "SETLKW",
|
|
2826
|
+
});
|
|
2827
|
+
}
|
|
2798
2828
|
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2829
|
+
case BigInt(opcode.INTERRUPT): {
|
|
2830
|
+
return interpretInterrupt({
|
|
2831
|
+
unique,
|
|
2832
|
+
nodeId,
|
|
2833
|
+
requester,
|
|
2834
|
+
payload: parsedMessageFromKernel.payload,
|
|
2835
|
+
});
|
|
2836
|
+
}
|
|
2807
2837
|
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2838
|
+
case BigInt(opcode.BMAP): {
|
|
2839
|
+
return interpretBmap({
|
|
2840
|
+
unique,
|
|
2841
|
+
nodeId,
|
|
2842
|
+
requester,
|
|
2843
|
+
payload: parsedMessageFromKernel.payload,
|
|
2844
|
+
});
|
|
2845
|
+
}
|
|
2816
2846
|
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2847
|
+
case BigInt(opcode.IOCTL): {
|
|
2848
|
+
return interpretIoctl({
|
|
2849
|
+
unique,
|
|
2850
|
+
nodeId,
|
|
2851
|
+
requester,
|
|
2852
|
+
payload: parsedMessageFromKernel.payload,
|
|
2853
|
+
});
|
|
2854
|
+
}
|
|
2825
2855
|
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2856
|
+
case BigInt(opcode.POLL): {
|
|
2857
|
+
return interpretPoll({
|
|
2858
|
+
unique,
|
|
2859
|
+
nodeId,
|
|
2860
|
+
requester,
|
|
2861
|
+
payload: parsedMessageFromKernel.payload,
|
|
2862
|
+
});
|
|
2863
|
+
}
|
|
2834
2864
|
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2865
|
+
case BigInt(opcode.NOTIFY_REPLY): {
|
|
2866
|
+
return interpretNotifyReply({
|
|
2867
|
+
unique,
|
|
2868
|
+
nodeId,
|
|
2869
|
+
requester,
|
|
2870
|
+
payload: parsedMessageFromKernel.payload,
|
|
2871
|
+
});
|
|
2872
|
+
}
|
|
2843
2873
|
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2874
|
+
case BigInt(opcode.FALLOCATE): {
|
|
2875
|
+
return interpretFallocate({
|
|
2876
|
+
unique,
|
|
2877
|
+
nodeId,
|
|
2878
|
+
requester,
|
|
2879
|
+
payload: parsedMessageFromKernel.payload,
|
|
2880
|
+
});
|
|
2881
|
+
}
|
|
2852
2882
|
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2883
|
+
case BigInt(opcode.READDIRPLUS): {
|
|
2884
|
+
return interpretReadDirPlus({
|
|
2885
|
+
unique,
|
|
2886
|
+
nodeId,
|
|
2887
|
+
requester,
|
|
2888
|
+
payload: parsedMessageFromKernel.payload,
|
|
2889
|
+
});
|
|
2890
|
+
}
|
|
2861
2891
|
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2892
|
+
case BigInt(opcode.LSEEK): {
|
|
2893
|
+
return interpretLseek({
|
|
2894
|
+
unique,
|
|
2895
|
+
nodeId,
|
|
2896
|
+
requester,
|
|
2897
|
+
payload: parsedMessageFromKernel.payload,
|
|
2898
|
+
});
|
|
2899
|
+
}
|
|
2870
2900
|
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2901
|
+
case BigInt(opcode.COPY_FILE_RANGE): {
|
|
2902
|
+
return interpretCopyFileRange({
|
|
2903
|
+
unique,
|
|
2904
|
+
nodeId,
|
|
2905
|
+
requester,
|
|
2906
|
+
payload: parsedMessageFromKernel.payload,
|
|
2907
|
+
});
|
|
2908
|
+
}
|
|
2879
2909
|
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2910
|
+
case BigInt(opcode.SETUPMAPPING): {
|
|
2911
|
+
return interpretSetupMapping({
|
|
2912
|
+
unique,
|
|
2913
|
+
nodeId,
|
|
2914
|
+
requester,
|
|
2915
|
+
payload: parsedMessageFromKernel.payload,
|
|
2916
|
+
});
|
|
2917
|
+
}
|
|
2888
2918
|
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2919
|
+
case BigInt(opcode.REMOVEMAPPING): {
|
|
2920
|
+
return interpretRemoveMapping({
|
|
2921
|
+
unique,
|
|
2922
|
+
nodeId,
|
|
2923
|
+
requester,
|
|
2924
|
+
payload: parsedMessageFromKernel.payload,
|
|
2925
|
+
});
|
|
2926
|
+
}
|
|
2897
2927
|
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2928
|
+
case BigInt(opcode.SYNCFS): {
|
|
2929
|
+
return interpretSyncFs({
|
|
2930
|
+
unique,
|
|
2931
|
+
nodeId,
|
|
2932
|
+
requester,
|
|
2933
|
+
payload: parsedMessageFromKernel.payload,
|
|
2934
|
+
});
|
|
2935
|
+
}
|
|
2906
2936
|
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2937
|
+
case BigInt(opcode.TMPFILE): {
|
|
2938
|
+
return interpretTmpFile({
|
|
2939
|
+
unique,
|
|
2940
|
+
nodeId,
|
|
2941
|
+
requester,
|
|
2942
|
+
payload: parsedMessageFromKernel.payload,
|
|
2943
|
+
});
|
|
2944
|
+
}
|
|
2915
2945
|
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2946
|
+
case BigInt(opcode.STATX): {
|
|
2947
|
+
return interpretStatx({
|
|
2948
|
+
unique,
|
|
2949
|
+
nodeId,
|
|
2950
|
+
requester,
|
|
2951
|
+
payload: parsedMessageFromKernel.payload,
|
|
2952
|
+
});
|
|
2953
|
+
}
|
|
2924
2954
|
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2955
|
+
default: {
|
|
2956
|
+
break;
|
|
2957
|
+
}
|
|
2928
2958
|
}
|
|
2929
2959
|
|
|
2930
2960
|
return {
|
|
@@ -2934,6 +2964,7 @@ const createMessageFromKernelInterpreter = () => {
|
|
|
2934
2964
|
};
|
|
2935
2965
|
|
|
2936
2966
|
return {
|
|
2967
|
+
applyInitResult,
|
|
2937
2968
|
interpretMessageFromKernel,
|
|
2938
2969
|
};
|
|
2939
2970
|
};
|
|
@@ -3509,190 +3540,190 @@ const createMessageToKernelInterpreter = () => {
|
|
|
3509
3540
|
}
|
|
3510
3541
|
|
|
3511
3542
|
switch (response.forOpcode) {
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
|
|
3543
|
+
case "INIT": {
|
|
3544
|
+
return encodeInitResponse({ response });
|
|
3545
|
+
}
|
|
3515
3546
|
|
|
3516
|
-
|
|
3517
|
-
|
|
3518
|
-
|
|
3547
|
+
case "GETATTR": {
|
|
3548
|
+
return encodeGetAttrResponse({ response });
|
|
3549
|
+
}
|
|
3519
3550
|
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3551
|
+
case "SETATTR": {
|
|
3552
|
+
return encodeSetAttrResponse({ response });
|
|
3553
|
+
}
|
|
3523
3554
|
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
|
|
3555
|
+
case "LISTXATTR": {
|
|
3556
|
+
return encodeListXAttrResponse({ response });
|
|
3557
|
+
}
|
|
3527
3558
|
|
|
3528
|
-
|
|
3529
|
-
|
|
3530
|
-
|
|
3559
|
+
case "GETXATTR": {
|
|
3560
|
+
return encodeGetXAttrResponse({ response });
|
|
3561
|
+
}
|
|
3531
3562
|
|
|
3532
|
-
|
|
3533
|
-
|
|
3534
|
-
|
|
3563
|
+
case "READLINK": {
|
|
3564
|
+
return encodeReadLinkResponse({ response });
|
|
3565
|
+
}
|
|
3535
3566
|
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
-
|
|
3567
|
+
case "MKNOD": {
|
|
3568
|
+
return encodeMknodResponse({ response });
|
|
3569
|
+
}
|
|
3539
3570
|
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3571
|
+
case "OPENDIR": {
|
|
3572
|
+
return encodeOpenDirResponse({ response });
|
|
3573
|
+
}
|
|
3543
3574
|
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3575
|
+
case "READDIR": {
|
|
3576
|
+
return encodeReadDirResponse({ response });
|
|
3577
|
+
}
|
|
3547
3578
|
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3579
|
+
case "RELEASEDIR": {
|
|
3580
|
+
return encodeReleaseDirResponse({ response });
|
|
3581
|
+
}
|
|
3551
3582
|
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3583
|
+
case "FSYNCDIR": {
|
|
3584
|
+
return encodeFsyncDirResponse({ response });
|
|
3585
|
+
}
|
|
3555
3586
|
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3587
|
+
case "RELEASE": {
|
|
3588
|
+
return encodeReleaseResponse({ response });
|
|
3589
|
+
}
|
|
3559
3590
|
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3591
|
+
case "STATFS": {
|
|
3592
|
+
return encodeStatFsResponse({ response });
|
|
3593
|
+
}
|
|
3563
3594
|
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3595
|
+
case "LOOKUP": {
|
|
3596
|
+
return encodeLookupResponse({ response });
|
|
3597
|
+
}
|
|
3567
3598
|
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3599
|
+
case "SYMLINK": {
|
|
3600
|
+
return encodeSymlinkResponse({ response });
|
|
3601
|
+
}
|
|
3571
3602
|
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3603
|
+
case "MKDIR": {
|
|
3604
|
+
return encodeMkdirResponse({ response });
|
|
3605
|
+
}
|
|
3575
3606
|
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3607
|
+
case "LINK": {
|
|
3608
|
+
return encodeLinkResponse({ response });
|
|
3609
|
+
}
|
|
3579
3610
|
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3611
|
+
case "UNLINK": {
|
|
3612
|
+
return encodeUnlinkResponse({ response });
|
|
3613
|
+
}
|
|
3583
3614
|
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3615
|
+
case "RMDIR": {
|
|
3616
|
+
return encodeRmDirResponse({ response });
|
|
3617
|
+
}
|
|
3587
3618
|
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3619
|
+
case "RENAME": {
|
|
3620
|
+
return encodeRenameResponse({ response });
|
|
3621
|
+
}
|
|
3591
3622
|
|
|
3592
|
-
|
|
3593
|
-
|
|
3594
|
-
|
|
3623
|
+
case "OPEN": {
|
|
3624
|
+
return encodeOpenResponse({ response });
|
|
3625
|
+
}
|
|
3595
3626
|
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3627
|
+
case "READ": {
|
|
3628
|
+
return encodeReadResponse({ response });
|
|
3629
|
+
}
|
|
3599
3630
|
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
|
|
3631
|
+
case "WRITE": {
|
|
3632
|
+
return encodeWriteResponse({ response });
|
|
3633
|
+
}
|
|
3603
3634
|
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3635
|
+
case "FLUSH": {
|
|
3636
|
+
return encodeFlushResponse({ response });
|
|
3637
|
+
}
|
|
3607
3638
|
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3639
|
+
case "FSYNC": {
|
|
3640
|
+
return encodeFsyncResponse({ response });
|
|
3641
|
+
}
|
|
3611
3642
|
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3643
|
+
case "ACCESS": {
|
|
3644
|
+
return encodeAccessResponse({ response });
|
|
3645
|
+
}
|
|
3615
3646
|
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3647
|
+
case "SETXATTR": {
|
|
3648
|
+
return encodeSetXAttrResponse({ response });
|
|
3649
|
+
}
|
|
3619
3650
|
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3651
|
+
case "REMOVEXATTR": {
|
|
3652
|
+
return encodeRemoveXAttrResponse({ response });
|
|
3653
|
+
}
|
|
3623
3654
|
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3655
|
+
case "CREATE": {
|
|
3656
|
+
return encodeCreateResponse({ response });
|
|
3657
|
+
}
|
|
3627
3658
|
|
|
3628
|
-
|
|
3629
|
-
|
|
3630
|
-
|
|
3659
|
+
case "DESTROY": {
|
|
3660
|
+
return encodeDestroyResponse({ response });
|
|
3661
|
+
}
|
|
3631
3662
|
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3663
|
+
case "GETLK": {
|
|
3664
|
+
return encodeGetLkResponse({ response });
|
|
3665
|
+
}
|
|
3635
3666
|
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3667
|
+
case "SETLK": {
|
|
3668
|
+
return encodeSetLkResponse({ response });
|
|
3669
|
+
}
|
|
3639
3670
|
|
|
3640
|
-
|
|
3641
|
-
|
|
3642
|
-
|
|
3671
|
+
case "SETLKW": {
|
|
3672
|
+
return encodeSetLkWResponse({ response });
|
|
3673
|
+
}
|
|
3643
3674
|
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3675
|
+
case "BMAP": {
|
|
3676
|
+
return encodeBmapResponse({ response });
|
|
3677
|
+
}
|
|
3647
3678
|
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
3679
|
+
case "IOCTL": {
|
|
3680
|
+
return encodeIoctlResponse({ response });
|
|
3681
|
+
}
|
|
3651
3682
|
|
|
3652
|
-
|
|
3653
|
-
|
|
3654
|
-
|
|
3683
|
+
case "POLL": {
|
|
3684
|
+
return encodePollResponse({ response });
|
|
3685
|
+
}
|
|
3655
3686
|
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3687
|
+
case "FALLOCATE": {
|
|
3688
|
+
return encodeFallocateResponse({ response });
|
|
3689
|
+
}
|
|
3659
3690
|
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3691
|
+
case "READDIRPLUS": {
|
|
3692
|
+
return encodeReadDirPlusResponse({ response });
|
|
3693
|
+
}
|
|
3663
3694
|
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
3695
|
+
case "LSEEK": {
|
|
3696
|
+
return encodeLseekResponse({ response });
|
|
3697
|
+
}
|
|
3667
3698
|
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
3699
|
+
case "COPY_FILE_RANGE": {
|
|
3700
|
+
return encodeCopyFileRangeResponse({ response });
|
|
3701
|
+
}
|
|
3671
3702
|
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
|
|
3703
|
+
case "SETUPMAPPING": {
|
|
3704
|
+
return encodeSetupMappingResponse({ response });
|
|
3705
|
+
}
|
|
3675
3706
|
|
|
3676
|
-
|
|
3677
|
-
|
|
3678
|
-
|
|
3707
|
+
case "REMOVEMAPPING": {
|
|
3708
|
+
return encodeRemoveMappingResponse({ response });
|
|
3709
|
+
}
|
|
3679
3710
|
|
|
3680
|
-
|
|
3681
|
-
|
|
3682
|
-
|
|
3711
|
+
case "SYNCFS": {
|
|
3712
|
+
return encodeSyncFsResponse({ response });
|
|
3713
|
+
}
|
|
3683
3714
|
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3715
|
+
case "TMPFILE": {
|
|
3716
|
+
return encodeTmpFileResponse({ response });
|
|
3717
|
+
}
|
|
3687
3718
|
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3719
|
+
case "STATX": {
|
|
3720
|
+
return encodeStatxResponse({ response });
|
|
3721
|
+
}
|
|
3691
3722
|
|
|
3692
|
-
|
|
3723
|
+
default: {
|
|
3693
3724
|
// @ts-expect-error exhaustiveness check
|
|
3694
|
-
|
|
3695
|
-
|
|
3725
|
+
throw Error(`Unsupported opcode: ${response.forOpcode}`);
|
|
3726
|
+
}
|
|
3696
3727
|
}
|
|
3697
3728
|
};
|
|
3698
3729
|
|
|
@@ -4248,326 +4279,326 @@ const createMessageToKernelInterpreter = () => {
|
|
|
4248
4279
|
}
|
|
4249
4280
|
|
|
4250
4281
|
switch (forOpcode) {
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4282
|
+
case "INIT": {
|
|
4283
|
+
return interpretInitResponse({
|
|
4284
|
+
unique,
|
|
4285
|
+
payload: parsedMessageToKernel.payload,
|
|
4286
|
+
});
|
|
4287
|
+
}
|
|
4257
4288
|
|
|
4258
|
-
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4289
|
+
case "GETATTR": {
|
|
4290
|
+
return interpretGetAttrResponse({
|
|
4291
|
+
unique,
|
|
4292
|
+
payload: parsedMessageToKernel.payload,
|
|
4293
|
+
});
|
|
4294
|
+
}
|
|
4264
4295
|
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4296
|
+
case "SETATTR": {
|
|
4297
|
+
return interpretSetAttrResponse({
|
|
4298
|
+
unique,
|
|
4299
|
+
payload: parsedMessageToKernel.payload,
|
|
4300
|
+
});
|
|
4301
|
+
}
|
|
4271
4302
|
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4303
|
+
case "LISTXATTR": {
|
|
4304
|
+
return interpretListXAttrResponse({
|
|
4305
|
+
unique,
|
|
4306
|
+
payload: parsedMessageToKernel.payload,
|
|
4307
|
+
request: request /*as Extract<TFuseRequest, { opcode: "LISTXATTR" }>*/,
|
|
4308
|
+
});
|
|
4309
|
+
}
|
|
4279
4310
|
|
|
4280
|
-
|
|
4281
|
-
|
|
4282
|
-
|
|
4283
|
-
|
|
4284
|
-
|
|
4285
|
-
|
|
4286
|
-
|
|
4311
|
+
case "GETXATTR": {
|
|
4312
|
+
return interpretGetXAttrResponse({
|
|
4313
|
+
unique,
|
|
4314
|
+
payload: parsedMessageToKernel.payload,
|
|
4315
|
+
request: request /*as Extract<TFuseRequest, { opcode: "GETXATTR" }>*/,
|
|
4316
|
+
});
|
|
4317
|
+
}
|
|
4287
4318
|
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4319
|
+
case "READLINK": {
|
|
4320
|
+
return interpretReadLinkResponse({
|
|
4321
|
+
unique,
|
|
4322
|
+
payload: parsedMessageToKernel.payload,
|
|
4323
|
+
});
|
|
4324
|
+
}
|
|
4294
4325
|
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4326
|
+
case "MKNOD": {
|
|
4327
|
+
return interpretMknodResponse({
|
|
4328
|
+
unique,
|
|
4329
|
+
payload: parsedMessageToKernel.payload,
|
|
4330
|
+
});
|
|
4331
|
+
}
|
|
4301
4332
|
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
4333
|
+
case "OPENDIR": {
|
|
4334
|
+
return interpretOpenDirResponse({
|
|
4335
|
+
unique,
|
|
4336
|
+
payload: parsedMessageToKernel.payload,
|
|
4337
|
+
});
|
|
4338
|
+
}
|
|
4308
4339
|
|
|
4309
|
-
|
|
4310
|
-
|
|
4311
|
-
|
|
4312
|
-
|
|
4313
|
-
|
|
4314
|
-
|
|
4340
|
+
case "READDIR": {
|
|
4341
|
+
return interpretReadDirResponse({
|
|
4342
|
+
unique,
|
|
4343
|
+
payload: parsedMessageToKernel.payload,
|
|
4344
|
+
});
|
|
4345
|
+
}
|
|
4315
4346
|
|
|
4316
|
-
|
|
4317
|
-
|
|
4318
|
-
|
|
4319
|
-
|
|
4320
|
-
|
|
4321
|
-
|
|
4347
|
+
case "RELEASEDIR": {
|
|
4348
|
+
return interpretReleaseDirResponse({
|
|
4349
|
+
unique,
|
|
4350
|
+
payload: parsedMessageToKernel.payload,
|
|
4351
|
+
});
|
|
4352
|
+
}
|
|
4322
4353
|
|
|
4323
|
-
|
|
4324
|
-
|
|
4325
|
-
|
|
4326
|
-
|
|
4327
|
-
|
|
4328
|
-
|
|
4354
|
+
case "FSYNCDIR": {
|
|
4355
|
+
return interpretFsyncDirResponse({
|
|
4356
|
+
unique,
|
|
4357
|
+
payload: parsedMessageToKernel.payload,
|
|
4358
|
+
});
|
|
4359
|
+
}
|
|
4329
4360
|
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4334
|
-
|
|
4335
|
-
|
|
4361
|
+
case "RELEASE": {
|
|
4362
|
+
return interpretReleaseResponse({
|
|
4363
|
+
unique,
|
|
4364
|
+
payload: parsedMessageToKernel.payload,
|
|
4365
|
+
});
|
|
4366
|
+
}
|
|
4336
4367
|
|
|
4337
|
-
|
|
4338
|
-
|
|
4339
|
-
|
|
4340
|
-
|
|
4341
|
-
|
|
4342
|
-
|
|
4368
|
+
case "STATFS": {
|
|
4369
|
+
return interpretStatFsResponse({
|
|
4370
|
+
unique,
|
|
4371
|
+
payload: parsedMessageToKernel.payload,
|
|
4372
|
+
});
|
|
4373
|
+
}
|
|
4343
4374
|
|
|
4344
|
-
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
|
|
4375
|
+
case "LOOKUP": {
|
|
4376
|
+
return interpretLookupResponse({
|
|
4377
|
+
unique,
|
|
4378
|
+
payload: parsedMessageToKernel.payload,
|
|
4379
|
+
});
|
|
4380
|
+
}
|
|
4350
4381
|
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4382
|
+
case "SYMLINK": {
|
|
4383
|
+
return interpretSymlinkResponse({
|
|
4384
|
+
unique,
|
|
4385
|
+
payload: parsedMessageToKernel.payload,
|
|
4386
|
+
});
|
|
4387
|
+
}
|
|
4357
4388
|
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4389
|
+
case "LINK": {
|
|
4390
|
+
return interpretLinkResponse({
|
|
4391
|
+
unique,
|
|
4392
|
+
payload: parsedMessageToKernel.payload,
|
|
4393
|
+
});
|
|
4394
|
+
}
|
|
4364
4395
|
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
|
|
4369
|
-
|
|
4370
|
-
|
|
4396
|
+
case "MKDIR": {
|
|
4397
|
+
return interpretMkdirResponse({
|
|
4398
|
+
unique,
|
|
4399
|
+
payload: parsedMessageToKernel.payload,
|
|
4400
|
+
});
|
|
4401
|
+
}
|
|
4371
4402
|
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4403
|
+
case "UNLINK": {
|
|
4404
|
+
return interpretUnlinkResponse({
|
|
4405
|
+
unique,
|
|
4406
|
+
payload: parsedMessageToKernel.payload,
|
|
4407
|
+
});
|
|
4408
|
+
}
|
|
4378
4409
|
|
|
4379
|
-
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4410
|
+
case "RMDIR": {
|
|
4411
|
+
return interpretRmDirResponse({
|
|
4412
|
+
unique,
|
|
4413
|
+
payload: parsedMessageToKernel.payload,
|
|
4414
|
+
});
|
|
4415
|
+
}
|
|
4385
4416
|
|
|
4386
|
-
|
|
4387
|
-
|
|
4388
|
-
|
|
4389
|
-
|
|
4390
|
-
|
|
4391
|
-
|
|
4417
|
+
case "RENAME": {
|
|
4418
|
+
return interpretRenameResponse({
|
|
4419
|
+
unique,
|
|
4420
|
+
payload: parsedMessageToKernel.payload,
|
|
4421
|
+
});
|
|
4422
|
+
}
|
|
4392
4423
|
|
|
4393
|
-
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4424
|
+
case "OPEN": {
|
|
4425
|
+
return interpretOpenResponse({
|
|
4426
|
+
unique,
|
|
4427
|
+
payload: parsedMessageToKernel.payload,
|
|
4428
|
+
});
|
|
4429
|
+
}
|
|
4399
4430
|
|
|
4400
|
-
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4431
|
+
case "READ": {
|
|
4432
|
+
return interpretReadResponse({
|
|
4433
|
+
unique,
|
|
4434
|
+
payload: parsedMessageToKernel.payload,
|
|
4435
|
+
});
|
|
4436
|
+
}
|
|
4406
4437
|
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4438
|
+
case "WRITE": {
|
|
4439
|
+
return interpretWriteResponse({
|
|
4440
|
+
unique,
|
|
4441
|
+
payload: parsedMessageToKernel.payload,
|
|
4442
|
+
});
|
|
4443
|
+
}
|
|
4413
4444
|
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4445
|
+
case "FLUSH": {
|
|
4446
|
+
return interpretFlushResponse({
|
|
4447
|
+
unique,
|
|
4448
|
+
payload: parsedMessageToKernel.payload,
|
|
4449
|
+
});
|
|
4450
|
+
}
|
|
4420
4451
|
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4452
|
+
case "FSYNC": {
|
|
4453
|
+
return interpretFsyncResponse({
|
|
4454
|
+
unique,
|
|
4455
|
+
payload: parsedMessageToKernel.payload,
|
|
4456
|
+
});
|
|
4457
|
+
}
|
|
4427
4458
|
|
|
4428
|
-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4459
|
+
case "ACCESS": {
|
|
4460
|
+
return interpretAccessResponse({
|
|
4461
|
+
unique,
|
|
4462
|
+
payload: parsedMessageToKernel.payload,
|
|
4463
|
+
});
|
|
4464
|
+
}
|
|
4434
4465
|
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4466
|
+
case "SETXATTR": {
|
|
4467
|
+
return interpretSetXAttrResponse({
|
|
4468
|
+
unique,
|
|
4469
|
+
payload: parsedMessageToKernel.payload,
|
|
4470
|
+
});
|
|
4471
|
+
}
|
|
4441
4472
|
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4473
|
+
case "REMOVEXATTR": {
|
|
4474
|
+
return interpretRemoveXAttrResponse({
|
|
4475
|
+
unique,
|
|
4476
|
+
payload: parsedMessageToKernel.payload,
|
|
4477
|
+
});
|
|
4478
|
+
}
|
|
4448
4479
|
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4480
|
+
case "CREATE": {
|
|
4481
|
+
return interpretCreateResponse({
|
|
4482
|
+
unique,
|
|
4483
|
+
payload: parsedMessageToKernel.payload,
|
|
4484
|
+
});
|
|
4485
|
+
}
|
|
4455
4486
|
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4487
|
+
case "DESTROY": {
|
|
4488
|
+
return interpretDestroyResponse({
|
|
4489
|
+
unique,
|
|
4490
|
+
payload: parsedMessageToKernel.payload,
|
|
4491
|
+
});
|
|
4492
|
+
}
|
|
4462
4493
|
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
|
|
4494
|
+
case "GETLK": {
|
|
4495
|
+
return interpretGetLkResponse({
|
|
4496
|
+
unique,
|
|
4497
|
+
payload: parsedMessageToKernel.payload,
|
|
4498
|
+
});
|
|
4499
|
+
}
|
|
4469
4500
|
|
|
4470
|
-
|
|
4471
|
-
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
|
|
4501
|
+
case "SETLK": {
|
|
4502
|
+
return interpretSetLkResponse({
|
|
4503
|
+
unique,
|
|
4504
|
+
payload: parsedMessageToKernel.payload,
|
|
4505
|
+
});
|
|
4506
|
+
}
|
|
4476
4507
|
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4508
|
+
case "SETLKW": {
|
|
4509
|
+
return interpretSetLkWResponse({
|
|
4510
|
+
unique,
|
|
4511
|
+
payload: parsedMessageToKernel.payload,
|
|
4512
|
+
});
|
|
4513
|
+
}
|
|
4483
4514
|
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4515
|
+
case "BMAP": {
|
|
4516
|
+
return interpretBmapResponse({
|
|
4517
|
+
unique,
|
|
4518
|
+
payload: parsedMessageToKernel.payload,
|
|
4519
|
+
});
|
|
4520
|
+
}
|
|
4490
4521
|
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4522
|
+
case "IOCTL": {
|
|
4523
|
+
return interpretIoctlResponse({
|
|
4524
|
+
unique,
|
|
4525
|
+
payload: parsedMessageToKernel.payload,
|
|
4526
|
+
});
|
|
4527
|
+
}
|
|
4497
4528
|
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4529
|
+
case "POLL": {
|
|
4530
|
+
return interpretPollResponse({
|
|
4531
|
+
unique,
|
|
4532
|
+
payload: parsedMessageToKernel.payload,
|
|
4533
|
+
});
|
|
4534
|
+
}
|
|
4504
4535
|
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4536
|
+
case "FALLOCATE": {
|
|
4537
|
+
return interpretFallocateResponse({
|
|
4538
|
+
unique,
|
|
4539
|
+
payload: parsedMessageToKernel.payload,
|
|
4540
|
+
});
|
|
4541
|
+
}
|
|
4511
4542
|
|
|
4512
|
-
|
|
4513
|
-
|
|
4514
|
-
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4543
|
+
case "READDIRPLUS": {
|
|
4544
|
+
return interpretReadDirPlusResponse({
|
|
4545
|
+
unique,
|
|
4546
|
+
payload: parsedMessageToKernel.payload,
|
|
4547
|
+
});
|
|
4548
|
+
}
|
|
4518
4549
|
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4550
|
+
case "LSEEK": {
|
|
4551
|
+
return interpretLseekResponse({
|
|
4552
|
+
unique,
|
|
4553
|
+
payload: parsedMessageToKernel.payload,
|
|
4554
|
+
});
|
|
4555
|
+
}
|
|
4525
4556
|
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
|
|
4531
|
-
|
|
4557
|
+
case "COPY_FILE_RANGE": {
|
|
4558
|
+
return interpretCopyFileRangeResponse({
|
|
4559
|
+
unique,
|
|
4560
|
+
payload: parsedMessageToKernel.payload,
|
|
4561
|
+
});
|
|
4562
|
+
}
|
|
4532
4563
|
|
|
4533
|
-
|
|
4534
|
-
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
|
|
4564
|
+
case "SETUPMAPPING": {
|
|
4565
|
+
return interpretSetupMappingResponse({
|
|
4566
|
+
unique,
|
|
4567
|
+
payload: parsedMessageToKernel.payload,
|
|
4568
|
+
});
|
|
4569
|
+
}
|
|
4539
4570
|
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4571
|
+
case "REMOVEMAPPING": {
|
|
4572
|
+
return interpretRemoveMappingResponse({
|
|
4573
|
+
unique,
|
|
4574
|
+
payload: parsedMessageToKernel.payload,
|
|
4575
|
+
});
|
|
4576
|
+
}
|
|
4546
4577
|
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4578
|
+
case "SYNCFS": {
|
|
4579
|
+
return interpretSyncFsResponse({
|
|
4580
|
+
unique,
|
|
4581
|
+
payload: parsedMessageToKernel.payload,
|
|
4582
|
+
});
|
|
4583
|
+
}
|
|
4553
4584
|
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
|
|
4585
|
+
case "TMPFILE": {
|
|
4586
|
+
return interpretTmpFileResponse({
|
|
4587
|
+
unique,
|
|
4588
|
+
payload: parsedMessageToKernel.payload,
|
|
4589
|
+
});
|
|
4590
|
+
}
|
|
4560
4591
|
|
|
4561
|
-
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
|
|
4565
|
-
|
|
4566
|
-
|
|
4592
|
+
case "STATX": {
|
|
4593
|
+
return interpretStatxResponse({
|
|
4594
|
+
unique,
|
|
4595
|
+
payload: parsedMessageToKernel.payload,
|
|
4596
|
+
});
|
|
4597
|
+
}
|
|
4567
4598
|
|
|
4568
|
-
|
|
4569
|
-
|
|
4570
|
-
|
|
4599
|
+
default: {
|
|
4600
|
+
throw Error(`unsupported opcode for interpretation: ${forOpcode}`);
|
|
4601
|
+
}
|
|
4571
4602
|
}
|
|
4572
4603
|
};
|
|
4573
4604
|
|