@ai-ecoverse/slicc-kernel 1.98.4 → 1.99.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.
@@ -1478,6 +1478,57 @@ var init_cred = __esm({
1478
1478
  }
1479
1479
  });
1480
1480
 
1481
+ // src/process/wasi/slicc-sem.ts
1482
+ function remainingMs(deadline, now) {
1483
+ if (deadline <= now) return 0;
1484
+ return Number((deadline - now + NS_PER_MS - 1n) / NS_PER_MS);
1485
+ }
1486
+ function semImports(host) {
1487
+ const { mem } = host;
1488
+ const call2 = (req) => host.o.kernel.call(req);
1489
+ const name2 = (ptr, len) => mem.string(ptr, len);
1490
+ return {
1491
+ sem_open: (np, nl, oflag, mode, value2, out) => {
1492
+ const handle = call2({
1493
+ op: "sem-open",
1494
+ name: name2(np, nl),
1495
+ create: (oflag & SEM_CREAT) !== 0,
1496
+ exclusive: (oflag & SEM_EXCL) !== 0,
1497
+ mode,
1498
+ value: value2
1499
+ });
1500
+ mem.view().setUint32(out, handle, true);
1501
+ },
1502
+ sem_close: (handle) => void call2({ op: "sem-close", handle }),
1503
+ sem_unlink: (np, nl) => void call2({ op: "sem-unlink", name: name2(np, nl) }),
1504
+ sem_post: (handle) => void call2({ op: "sem-post", handle }),
1505
+ sem_wait: (handle, how, clock, deadline) => {
1506
+ const kind = HOW[how];
1507
+ if (!kind) throw new WasiError("EINVAL");
1508
+ let timeoutMs2 = -1;
1509
+ if (kind === "timed") {
1510
+ if (deadline < 0n) throw new WasiError("EINVAL");
1511
+ if (clock !== CLOCK.REALTIME && clock !== CLOCK.MONOTONIC) throw new WasiError("EINVAL");
1512
+ timeoutMs2 = remainingMs(deadline, host.now(clock));
1513
+ }
1514
+ call2({ op: "sem-wait", handle, how: kind, timeoutMs: timeoutMs2 });
1515
+ },
1516
+ sem_getvalue: (handle, out) => void mem.view().setInt32(out, call2({ op: "sem-getvalue", handle }), true)
1517
+ };
1518
+ }
1519
+ var SEM_CREAT, SEM_EXCL, HOW, NS_PER_MS;
1520
+ var init_slicc_sem = __esm({
1521
+ "src/process/wasi/slicc-sem.ts"() {
1522
+ "use strict";
1523
+ init_wasi_abi();
1524
+ init_wasi_files();
1525
+ SEM_CREAT = 1;
1526
+ SEM_EXCL = 2;
1527
+ HOW = ["block", "try", "timed"];
1528
+ NS_PER_MS = 1000000n;
1529
+ }
1530
+ });
1531
+
1481
1532
  // src/kernel/pipe.ts
1482
1533
  var PIPE_CAPACITY;
1483
1534
  var init_pipe = __esm({
@@ -3056,7 +3107,7 @@ function filestatOf(path, s) {
3056
3107
  size: BigInt(s.size),
3057
3108
  ino: s.ino !== void 0 ? BigInt(s.ino) : pathInode(path),
3058
3109
  ...s.nlink !== void 0 ? { nlink: BigInt(s.nlink) } : {},
3059
- mtimeNs: BigInt(Math.round(s.mtimeMs ?? 0)) * NS_PER_MS
3110
+ mtimeNs: BigInt(Math.round(s.mtimeMs ?? 0)) * NS_PER_MS2
3060
3111
  };
3061
3112
  }
3062
3113
  function kernelFiletype(kind) {
@@ -3106,7 +3157,7 @@ function wrap(table) {
3106
3157
  }
3107
3158
  return out;
3108
3159
  }
3109
- var WasiExit, IDS, NS_PER_MS, AT_SYMLINK_NOFOLLOW, AT_EACCESS, ROOT_IDS, GONE, S_IFIFO, DEFAULT_UMASK, MONOTONIC_BASE, MAX_READ, SIGPIPE_EXIT, SIG_IGN, SEALED_MODE, WasiHost;
3160
+ var WasiExit, IDS, NS_PER_MS2, AT_SYMLINK_NOFOLLOW, AT_EACCESS, ROOT_IDS, GONE, S_IFIFO, DEFAULT_UMASK, MONOTONIC_BASE, MAX_READ, SIGPIPE_EXIT, SIG_IGN, SEALED_MODE, WasiHost;
3110
3161
  var init_wasi_host = __esm({
3111
3162
  "src/process/wasi/wasi-host.ts"() {
3112
3163
  "use strict";
@@ -3114,6 +3165,7 @@ var init_wasi_host = __esm({
3114
3165
  init_physical_path();
3115
3166
  init_cpu_clock();
3116
3167
  init_cred();
3168
+ init_slicc_sem();
3117
3169
  init_wasi_abi();
3118
3170
  init_wasi_fds();
3119
3171
  init_wasi_files();
@@ -3129,14 +3181,14 @@ var init_wasi_host = __esm({
3129
3181
  }
3130
3182
  };
3131
3183
  IDS = ["ruid", "euid", "suid", "rgid", "egid", "sgid"];
3132
- NS_PER_MS = 1000000n;
3184
+ NS_PER_MS2 = 1000000n;
3133
3185
  AT_SYMLINK_NOFOLLOW = 1;
3134
3186
  AT_EACCESS = 2;
3135
3187
  ROOT_IDS = Object.freeze({ uid: 0, gid: 0 });
3136
3188
  GONE = /* @__PURE__ */ new Set(["ENOENT", "ENOTDIR"]);
3137
3189
  S_IFIFO = 4096;
3138
3190
  DEFAULT_UMASK = 18;
3139
- MONOTONIC_BASE = BigInt(Math.round(performance.timeOrigin)) * NS_PER_MS;
3191
+ MONOTONIC_BASE = BigInt(Math.round(performance.timeOrigin)) * NS_PER_MS2;
3140
3192
  MAX_READ = 1024 * 1024;
3141
3193
  SIGPIPE_EXIT = 141;
3142
3194
  SIG_IGN = 1;
@@ -3334,6 +3386,7 @@ var init_wasi_host = __esm({
3334
3386
  });
3335
3387
  void this.o.kernel.call({ op: "proc-setcred", change });
3336
3388
  },
3389
+ ...semImports(this),
3337
3390
  groups_get: (buf, cap, count) => {
3338
3391
  const { groups } = this.o.kernel.call({ op: "proc-cred" });
3339
3392
  if (cap !== 0 && cap < groups.length) throw new WasiError("EINVAL");
@@ -3424,7 +3477,7 @@ var init_wasi_host = __esm({
3424
3477
  return this.cache;
3425
3478
  }
3426
3479
  now(id) {
3427
- if (id === CLOCK.REALTIME) return BigInt(Date.now()) * NS_PER_MS;
3480
+ if (id === CLOCK.REALTIME) return BigInt(Date.now()) * NS_PER_MS2;
3428
3481
  if (id === CLOCK.MONOTONIC) {
3429
3482
  return MONOTONIC_BASE + BigInt(Math.round(performance.now() * 1e6));
3430
3483
  }
@@ -3933,7 +3986,7 @@ var init_wasi_host = __esm({
3933
3986
  current ??= statOf(path);
3934
3987
  return current[field2] ?? current.mtimeMs ?? now;
3935
3988
  };
3936
- const pick = (set, setNow, value2, field2) => flags & setNow ? now : flags & set ? Number(value2 / NS_PER_MS) : kept(field2);
3989
+ const pick = (set, setNow, value2, field2) => flags & setNow ? now : flags & set ? Number(value2 / NS_PER_MS2) : kept(field2);
3937
3990
  (follow2 ? this.o.fs.utimes : this.o.fs.lutimes).call(
3938
3991
  this.o.fs,
3939
3992
  path,
@@ -4591,7 +4644,7 @@ var KERNEL_VERSION, OS_RELEASE;
4591
4644
  var init_version = __esm({
4592
4645
  "src/version.ts"() {
4593
4646
  "use strict";
4594
- KERNEL_VERSION = true ? "1.98.4" : "0.0.0-dev";
4647
+ KERNEL_VERSION = true ? "1.99.0" : "0.0.0-dev";
4595
4648
  OS_RELEASE = "6.0.0-slicc";
4596
4649
  }
4597
4650
  });
@@ -13414,7 +13467,7 @@ var init_wasix_fork = __esm({
13414
13467
  function timeoutMs(ns) {
13415
13468
  const value2 = BigInt.asUintN(64, ns);
13416
13469
  if (value2 === FOREVER) return -1;
13417
- const ms = (value2 + NS_PER_MS2 - 1n) / NS_PER_MS2;
13470
+ const ms = (value2 + NS_PER_MS3 - 1n) / NS_PER_MS3;
13418
13471
  return ms > BigInt(MAX_TIMEOUT_MS) ? -1 : Number(ms);
13419
13472
  }
13420
13473
  function wasixEpollImports(host) {
@@ -13475,7 +13528,7 @@ function wasixEpollImports(host) {
13475
13528
  }
13476
13529
  };
13477
13530
  }
13478
- var EVENT_SIZE, DATA_OFFSET, DATA_SIZE, MAX_EVENTS, FOREVER, MAX_TIMEOUT_MS, NS_PER_MS2, EVENTFD_SEMAPHORE, EVENTFD_NONBLOCK, EVENTFD_MAX, OPS;
13531
+ var EVENT_SIZE, DATA_OFFSET, DATA_SIZE, MAX_EVENTS, FOREVER, MAX_TIMEOUT_MS, NS_PER_MS3, EVENTFD_SEMAPHORE, EVENTFD_NONBLOCK, EVENTFD_MAX, OPS;
13479
13532
  var init_wasix_epoll = __esm({
13480
13533
  "src/process/wasi/wasix-epoll.ts"() {
13481
13534
  "use strict";
@@ -13487,7 +13540,7 @@ var init_wasix_epoll = __esm({
13487
13540
  MAX_EVENTS = 4096;
13488
13541
  FOREVER = 0xffffffffffffffffn;
13489
13542
  MAX_TIMEOUT_MS = 2147483647;
13490
- NS_PER_MS2 = 1000000n;
13543
+ NS_PER_MS3 = 1000000n;
13491
13544
  EVENTFD_SEMAPHORE = 1;
13492
13545
  EVENTFD_NONBLOCK = 4;
13493
13546
  EVENTFD_MAX = 0xfffffffffffffffen;