Files
bare-operating-system/packages/bare-os-booter/lib/bare-os-syscall-ops.js
T
Raven Scott 6f923f72d1 Implement roadmap items across booter, protocol, kernel bundle, coreutils, and docs.
- Hyperswarm connection caps (env + /proc + disk.os replication_operator_sketch)
- Protomux operator metrics schema; warm-cache invalidation on replication
- ctx.bareOsSyscall nanosleep; socket bridge getsockopt/setsockopt (keepalive/nodelay)
- Extension signer pin verification before kernel.ext.d scripts; ctx/DTS updates
- Structured seeder logging (BARE_OS_SEED_LOG_*); release-checklist holepunch drift
- POSIX profile/matrix/conformance lists + handbook/env appendix/kernel-extensions
- Coreutils printf golden tests; sync kernel ↔ seeder parity after bundle
2026-04-05 02:38:24 -04:00

509 lines
14 KiB
JavaScript

/**
* Stock `ctx.bareOsSyscall` op names (single source for `/proc` introspection).
* Keep in sync with `BARE_OS_SYSCALL_OPS` in `packages/bare-os-coreutils/src/getconf.js`
* and `docs/reference/posix-conformance-matrix.json`.
*/
/** @typedef {'stable' | 'experimental'} BareOsSyscallStability */
/** @typedef {'fs' | 'proc' | 'ipc' | 'signal' | 'vfs_meta'} BareOsSyscallCategory */
/**
* Rich syscall table for `/proc/bare_os/syscalls.json` (schema v3+; v4 adds fd/signal models in index.js).
* @type {ReadonlyArray<{ name: string, category: BareOsSyscallCategory, stability: BareOsSyscallStability }>}
*/
export const BARE_OS_SYSCALL_OPS_DETAIL = Object.freeze([
{ name: 'readFile', category: 'fs', stability: 'stable' },
{ name: 'writeFile', category: 'fs', stability: 'stable' },
{ name: 'readdir', category: 'fs', stability: 'stable' },
{ name: 'mkdir', category: 'fs', stability: 'stable' },
{ name: 'stat', category: 'fs', stability: 'stable' },
{ name: 'unlink', category: 'fs', stability: 'stable' },
{ name: 'chmod', category: 'fs', stability: 'stable' },
{ name: 'chdir', category: 'fs', stability: 'stable' },
{ name: 'getcwd', category: 'fs', stability: 'stable' },
{ name: 'readlink', category: 'fs', stability: 'stable' },
{ name: 'symlink', category: 'fs', stability: 'stable' },
{ name: 'exists', category: 'fs', stability: 'stable' },
{ name: 'lstat', category: 'fs', stability: 'stable' },
{ name: 'rmdir', category: 'fs', stability: 'stable' },
{ name: 'mount', category: 'vfs_meta', stability: 'experimental' },
{ name: 'umount', category: 'vfs_meta', stability: 'experimental' },
{ name: 'kill', category: 'signal', stability: 'stable' },
{ name: 'rename', category: 'fs', stability: 'stable' },
{ name: 'link', category: 'fs', stability: 'experimental' },
{ name: 'access', category: 'fs', stability: 'stable' },
{ name: 'utimes', category: 'fs', stability: 'stable' },
{ name: 'truncate', category: 'fs', stability: 'stable' },
{ name: 'ftruncate', category: 'fs', stability: 'experimental' },
{ name: 'fsync', category: 'fs', stability: 'experimental' },
{ name: 'fdatasync', category: 'fs', stability: 'experimental' },
{ name: 'pathconf', category: 'fs', stability: 'experimental' },
{ name: 'fcntl', category: 'fs', stability: 'stable' },
{ name: 'posixPoll', category: 'fs', stability: 'experimental' },
{ name: 'select', category: 'fs', stability: 'experimental' },
{ name: 'umask', category: 'fs', stability: 'stable' },
{
name: 'socket',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['ctx.bare bare-tcp / bare-dgram', 'Hyperswarm/Protomux P2P'],
errnoHint: 'ENOSYS'
},
{
name: 'bind',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['bare-tcp Server.listen', 'not AF_INET kernel sockets'],
errnoHint: 'ENOSYS'
},
{
name: 'listen',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['bare-tcp listen backlog analogs'],
errnoHint: 'ENOSYS'
},
{
name: 'accept',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['bare-tcp accept'],
errnoHint: 'ENOSYS'
},
{
name: 'connect',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['bare-tcp connect', 'UDX'],
errnoHint: 'ENOSYS'
},
{
name: 'send',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['stream.write'],
errnoHint: 'ENOSYS'
},
{
name: 'recv',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['stream.read'],
errnoHint: 'ENOSYS'
},
{
name: 'sendmsg',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['flattened iovec send on SOCK_DGRAM bridge'],
errnoHint: 'ENOSYS'
},
{
name: 'recvmsg',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['SOCK_DGRAM bridge datagram + msgHdr envelope'],
errnoHint: 'ENOSYS'
},
{
name: 'shutdown',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['stream.end / destroy'],
errnoHint: 'ENOSYS'
},
{
name: 'getsockopt',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("getsockopt")',
'BARE_OS_POSIX_SOCKET_FD_BRIDGE: SOL_SOCKET/SO_KEEPALIVE and IPPROTO_TCP/TCP_NODELAY on bridge fds only; else ENOSYS'
],
errnoHint: 'ENOSYS'
},
{
name: 'setsockopt',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("setsockopt")',
'bridge fds: same levels/optnames as getsockopt; logical slot state only'
],
errnoHint: 'ENOSYS'
},
{
name: 'readv',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("readv")',
'bounded sequential reads from posix-pipe read FD (BARE_OS_POSIX_FD_SIM)'
],
errnoHint: 'EINVAL'
},
{
name: 'writev',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("writev")',
'bounded concatenated write to posix-pipe write FD (BARE_OS_POSIX_FD_SIM)'
],
errnoHint: 'EINVAL'
},
{
name: 'mq_open',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsSyscall("mq_open")', 'bareOsIpc.mqOpen'],
errnoHint: 'EINVAL'
},
{
name: 'mq_send',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsSyscall("mq_send")', 'bareOsIpc.mqSend'],
errnoHint: 'EAGAIN'
},
{
name: 'mq_receive',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsSyscall("mq_receive")', 'bareOsIpc.mqReceive'],
errnoHint: 'EAGAIN'
}
])
/**
* POSIX.1 XSH-style names mapped to guest behavior (not separate `ctx.bareOsSyscall` ops).
* Merged into `/proc/bare_os/syscalls.json` **`opsDetail`** for Issue 7 traceability.
* @type {ReadonlyArray<{
* name: string,
* category: BareOsSyscallCategory,
* stability: BareOsSyscallStability,
* posixAlignment: 'simulated' | 'partial' | 'ENOTSUP',
* mapsTo: string[],
* errnoHint?: string
* }>}
*/
export const BARE_OS_POSIX_XSH_OPS_DETAIL = Object.freeze([
{
name: 'open',
category: 'fs',
stability: 'stable',
posixAlignment: 'simulated',
mapsTo: ['vfs.readFile', 'vfs.writeFile', 'vfs.exists', 'vfs.lstat'],
errnoHint: 'ENOENT'
},
{
name: 'close',
category: 'fs',
stability: 'stable',
posixAlignment: 'partial',
mapsTo: ['logical fd table eviction', 'IPC channel teardown'],
errnoHint: 'EBADF'
},
{
name: 'read',
category: 'fs',
stability: 'stable',
posixAlignment: 'partial',
mapsTo: ['vfs.readFile', 'ctx.bareOsBinReadStdin', 'IPC fifo consumer'],
errnoHint: 'EAGAIN'
},
{
name: 'write',
category: 'fs',
stability: 'stable',
posixAlignment: 'partial',
mapsTo: ['vfs.writeFile', 'ctx.bareOsBinWrite', 'IPC fifo producer'],
errnoHint: 'EIO'
},
{
name: 'readv',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsSyscall("readv")', 'posix-pipe read FD', 'bounded iovec count'],
errnoHint: 'EINVAL'
},
{
name: 'writev',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsSyscall("writev")', 'posix-pipe write FD', 'bounded total bytes'],
errnoHint: 'EINVAL'
},
{
name: 'getsockopt',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("getsockopt")',
'BARE_OS_POSIX_SOCKET_FD_BRIDGE: SOL_SOCKET/SO_KEEPALIVE and IPPROTO_TCP/TCP_NODELAY on bridge fds only; else ENOSYS'
],
errnoHint: 'ENOSYS'
},
{
name: 'setsockopt',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("setsockopt")',
'bridge fds: same levels/optnames as getsockopt; logical slot state only'
],
errnoHint: 'ENOSYS'
},
{
name: 'lseek',
category: 'fs',
stability: 'stable',
posixAlignment: 'ENOTSUP',
mapsTo: ['no byte-offset FD cursor in guest'],
errnoHint: 'ESPIPE'
},
{
name: 'nanosleep',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsSyscall("nanosleep")', 'Issue 7-style delay; capped wall sleep'],
errnoHint: 'EINVAL'
},
{
name: 'pipe',
category: 'ipc',
stability: 'stable',
posixAlignment: 'simulated',
mapsTo: ['mkfifo', '/run/bare-os/ipc/*', 'BARE_OS_POSIX_FD_SIM optional channel pairs'],
errnoHint: 'EMFILE'
},
{
name: 'dup',
category: 'fs',
stability: 'stable',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsRegisterLogicalFd'],
errnoHint: 'EBADF'
},
{
name: 'dup2',
category: 'fs',
stability: 'stable',
posixAlignment: 'partial',
mapsTo: ['shell redirect table', '2>&1 merge'],
errnoHint: 'EBADF'
},
{
name: 'fcntl',
category: 'fs',
stability: 'stable',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("fcntl")',
'F_GETFL',
'F_SETFL',
'F_GETLK',
'F_SETLK',
'F_SETLKW',
'cooperative session-scoped advisory locks (path or fd→path); F_SETLKW is EAGAIN when busy unless BARE_OS_POSIX_FCNTL_BLOCKING_WAIT (bounded wait via BARE_OS_FCNTL_LOCK_WAIT_MS_MAX)',
'O_APPEND',
'O_NONBLOCK',
'bareOsLogicalFdFlags'
],
errnoHint: 'EBADF'
},
{
name: 'poll',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsPosixPoll', 'ctx.bareOsSyscall("posixPoll")'],
errnoHint: 'EINVAL'
},
{
name: 'select',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: ['ctx.bareOsSyscall("select")', 'bareOsPosixPollProbe subset'],
errnoHint: 'EBADF'
},
{
name: 'umask',
category: 'fs',
stability: 'stable',
posixAlignment: 'partial',
mapsTo: ['vfs.env.UMASK octal', 'umask shell builtin'],
errnoHint: 'EINVAL'
},
{
name: 'nanosleep',
category: 'fs',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("nanosleep")',
'host setTimeout; seconds + nanoseconds; cap 3600s; not clock_nanosleep(2)'
],
errnoHint: 'EINVAL'
},
{
name: 'socket',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: ['ctx.bareOsSyscall("socket")', 'ENOSYS-shaped probe'],
errnoHint: 'ENOSYS'
},
{
name: 'bind',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("bind")',
'SOCK_STREAM bridge: port+host before listen; SOCK_DGRAM passive bind via bareDgram.Socket.bind (BARE_OS_POSIX_SOCKET_FD_BRIDGE)'
],
errnoHint: 'EINVAL'
},
{
name: 'listen',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("listen")',
'bareTcp.Server.listen when BARE_OS_POSIX_SOCKET_FD_BRIDGE'
],
errnoHint: 'EADDRINUSE'
},
{
name: 'accept',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("accept")',
'dequeue accepted TCP socket to new logical fd; EAGAIN when empty + O_NONBLOCK'
],
errnoHint: 'EAGAIN'
},
{
name: 'connect',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'ENOTSUP',
mapsTo: [
'ctx.bareOsSyscall("connect")',
'SOCK_STREAM/SOCK_DGRAM bridge when BARE_OS_POSIX_SOCKET_FD_BRIDGE (DGRAM may follow bind on same fd)'
],
errnoHint: 'ENOSYS'
},
{
name: 'send',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("send")',
'SOCK_DGRAM connected or bound (bound requires port+host args) + SOCK_STREAM (accepted) bridge write'
],
errnoHint: 'ENOSYS'
},
{
name: 'recv',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("recv")',
'SOCK_DGRAM bridge dequeue; SOCK_STREAM accepted fd tcpRecvQueue (BARE_OS_POSIX_SOCKET_FD_BRIDGE)'
],
errnoHint: 'ENOSYS'
},
{
name: 'recvfrom',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("recvfrom")',
'SOCK_DGRAM bridge + peer address; SOCK_STREAM accepted + remoteAddress/remotePort'
],
errnoHint: 'ENOSYS'
},
{
name: 'sendmsg',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("sendmsg")',
'SOCK_DGRAM + SOCK_STREAM bridge flattened iovs (BARE_OS_POSIX_SOCKET_FD_BRIDGE); ancillary CMSGS ENOTSUP'
],
errnoHint: 'ENOSYS'
},
{
name: 'recvmsg',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("recvmsg")',
'SOCK_DGRAM bridge + msgHdr.name from rinfo; SOCK_STREAM accepted + remote addr; scatter iov / SCM_RIGHTS ENOTSUP'
],
errnoHint: 'ENOSYS'
},
{
name: 'shutdown',
category: 'ipc',
stability: 'experimental',
posixAlignment: 'partial',
mapsTo: [
'ctx.bareOsSyscall("shutdown")',
'TCP bridge: destroy socket or close listening Server'
],
errnoHint: 'EINVAL'
}
])
/** Full `opsDetail` for proc JSON (ctx ops + POSIX XSH surface). */
export const BARE_OS_SYSCALL_OPS_DETAIL_FULL = Object.freeze([
...BARE_OS_SYSCALL_OPS_DETAIL,
...BARE_OS_POSIX_XSH_OPS_DETAIL
])
export const BARE_OS_STOCK_SYSCALL_OPS = Object.freeze(
BARE_OS_SYSCALL_OPS_DETAIL.map((o) => o.name)
)
export function bareOsStockSyscallOpsCsv() {
return BARE_OS_STOCK_SYSCALL_OPS.join(',')
}
export function bareOsPosixXshOpsCsv() {
return BARE_OS_POSIX_XSH_OPS_DETAIL.map((o) => o.name).join(',')
}