docs - refresh man pages
This commit is contained in:
1 parent
7eda8b1a8d
commit
a463834e0a
21 files changed
+731
-283
No files matched your search
+7
-2
@@ -111,9 +111,11 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
dhcp - obtain network configuration via DHCP
|
dhcp - obtain network configuration via DHCP
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
dhcp
|
dhcp
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
The DHCP client automatically obtains an IP address, subnet mask,
|
The DHCP client automatically obtains an IP address, subnet mask,
|
||||||
default gateway, and other network parameters from a DHCP server
|
default gateway, and other network parameters from a DHCP server
|
||||||
@@ -126,6 +128,7 @@
|
|||||||
The client is run automatically by the init system at boot, but
|
The client is run automatically by the init system at boot, but
|
||||||
may also be invoked manually from the shell.
|
may also be invoked manually from the shell.
|
||||||
|
|
||||||
|
|
||||||
<strong>PROTOCOL</strong>
|
<strong>PROTOCOL</strong>
|
||||||
The client performs the standard four-message DHCP exchange:
|
The client performs the standard four-message DHCP exchange:
|
||||||
|
|
||||||
@@ -140,11 +143,13 @@
|
|||||||
Each step has a 10-second timeout. If no response is received
|
Each step has a 10-second timeout. If no response is received
|
||||||
the client exits with an error and restores the previous config.
|
the client exits with an error and restores the previous config.
|
||||||
|
|
||||||
|
|
||||||
<strong>OUTPUT</strong>
|
<strong>OUTPUT</strong>
|
||||||
On success the client prints the assigned configuration:
|
On success the client prints the assigned configuration:
|
||||||
|
|
||||||
IP Address, Subnet Mask, Gateway, DNS Server, Lease Time
|
IP Address, Subnet Mask, Gateway, DNS Server, Lease Time
|
||||||
|
|
||||||
|
|
||||||
<strong>OPTIONS</strong>
|
<strong>OPTIONS</strong>
|
||||||
The DHCP client requests the following options from the server:
|
The DHCP client requests the following options from the server:
|
||||||
|
|
||||||
@@ -153,9 +158,9 @@
|
|||||||
6 DNS Server
|
6 DNS Server
|
||||||
51 Lease Time
|
51 Lease Time
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
ifconfig(1), shell(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
ifconfig(1), <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+10
-2
@@ -111,9 +111,11 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
edit - text editor for MontaukOS
|
edit - text editor for MontaukOS
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
edit [filename]
|
edit [filename]
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
edit is an interactive text editor. When invoked with a filename,
|
edit is an interactive text editor. When invoked with a filename,
|
||||||
it opens the file for editing. If the file does not exist, a new
|
it opens the file for editing. If the file does not exist, a new
|
||||||
@@ -122,8 +124,10 @@
|
|||||||
When invoked without arguments, edit opens an empty buffer. You
|
When invoked without arguments, edit opens an empty buffer. You
|
||||||
will be prompted for a filename when saving.
|
will be prompted for a filename when saving.
|
||||||
|
|
||||||
|
|
||||||
<strong>KEYBOARD SHORTCUTS</strong>
|
<strong>KEYBOARD SHORTCUTS</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>Navigation</strong>
|
<strong>Navigation</strong>
|
||||||
Arrow Keys Move cursor up/down/left/right
|
Arrow Keys Move cursor up/down/left/right
|
||||||
Home Move to start of line
|
Home Move to start of line
|
||||||
@@ -131,18 +135,21 @@
|
|||||||
Page Up Scroll up one page
|
Page Up Scroll up one page
|
||||||
Page Down Scroll down one page
|
Page Down Scroll down one page
|
||||||
|
|
||||||
|
|
||||||
<strong>Editing</strong>
|
<strong>Editing</strong>
|
||||||
Backspace Delete character before cursor
|
Backspace Delete character before cursor
|
||||||
Delete Delete character at cursor
|
Delete Delete character at cursor
|
||||||
Enter Insert new line
|
Enter Insert new line
|
||||||
Tab Insert 4 spaces
|
Tab Insert 4 spaces
|
||||||
|
|
||||||
|
|
||||||
<strong>Commands</strong>
|
<strong>Commands</strong>
|
||||||
Ctrl+S Save file
|
Ctrl+S Save file
|
||||||
Ctrl+Q Quit (warns if unsaved changes)
|
Ctrl+Q Quit (warns if unsaved changes)
|
||||||
Ctrl+F Search for text
|
Ctrl+F Search for text
|
||||||
Ctrl+G Find next occurrence
|
Ctrl+G Find next occurrence
|
||||||
|
|
||||||
|
|
||||||
<strong>DISPLAY</strong>
|
<strong>DISPLAY</strong>
|
||||||
The top line shows the filename, a modified indicator [+],
|
The top line shows the filename, a modified indicator [+],
|
||||||
and the current cursor position (Ln, Col).
|
and the current cursor position (Ln, Col).
|
||||||
@@ -152,13 +159,14 @@
|
|||||||
Line numbers are displayed in a gutter on the left side.
|
Line numbers are displayed in a gutter on the left side.
|
||||||
Lines past the end of the file are marked with ~.
|
Lines past the end of the file are marked with ~.
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
edit intro.1 Edit a file
|
edit intro.1 Edit a file
|
||||||
edit Open a new empty buffer
|
edit Open a new empty buffer
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
cat(1), shell(1)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
cat(1), <a href="shell.html">shell(1)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+8
-2
@@ -111,10 +111,12 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
fetch - HTTP/HTTPS client for MontaukOS
|
fetch - HTTP/HTTPS client for MontaukOS
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
fetch [-v] <url>
|
fetch [-v] <url>
|
||||||
fetch [-v] <host> <port> [path]
|
fetch [-v] <host> <port> [path]
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
fetch performs an HTTP/1.0 GET request and prints the response
|
fetch performs an HTTP/1.0 GET request and prints the response
|
||||||
body to the terminal. Supports both plain HTTP and HTTPS (TLS 1.2)
|
body to the terminal. Supports both plain HTTP and HTTPS (TLS 1.2)
|
||||||
@@ -131,12 +133,14 @@
|
|||||||
|
|
||||||
If no path is given, "/" is used.
|
If no path is given, "/" is used.
|
||||||
|
|
||||||
|
|
||||||
<strong>OPTIONS</strong>
|
<strong>OPTIONS</strong>
|
||||||
<strong>-v</strong>
|
<strong>-v</strong>
|
||||||
Verbose mode. Print connection info, trust anchor count, TLS
|
Verbose mode. Print connection info, trust anchor count, TLS
|
||||||
handshake progress, and the HTTP status/size header before
|
handshake progress, and the HTTP status/size header before
|
||||||
the body.
|
the body.
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
fetch https://icanhazip.com
|
fetch https://icanhazip.com
|
||||||
Print your public IP address over HTTPS.
|
Print your public IP address over HTTPS.
|
||||||
@@ -156,6 +160,7 @@
|
|||||||
fetch 10.0.68.1 80 /
|
fetch 10.0.68.1 80 /
|
||||||
Fetch from a local server by IP (legacy syntax).
|
Fetch from a local server by IP (legacy syntax).
|
||||||
|
|
||||||
|
|
||||||
<strong>TLS SUPPORT</strong>
|
<strong>TLS SUPPORT</strong>
|
||||||
HTTPS connections use BearSSL for TLS 1.2. Server certificates
|
HTTPS connections use BearSSL for TLS 1.2. Server certificates
|
||||||
are validated against the system CA bundle at
|
are validated against the system CA bundle at
|
||||||
@@ -164,12 +169,13 @@
|
|||||||
Entropy for the TLS handshake is provided by RDTSC-seeded
|
Entropy for the TLS handshake is provided by RDTSC-seeded
|
||||||
random data via the SYS_GETRANDOM syscall.
|
random data via the SYS_GETRANDOM syscall.
|
||||||
|
|
||||||
|
|
||||||
<strong>KEYBOARD</strong>
|
<strong>KEYBOARD</strong>
|
||||||
Ctrl+Q Abort the request
|
Ctrl+Q Abort the request
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
ping(1), nslookup(1), tcpconnect(1), shell(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="ping.html">ping(1)</a>, <a href="nslookup.html">nslookup(1)</a>, tcpconnect(1), <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+14
-4
@@ -111,6 +111,7 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
open, read, getsize, close, readdir - file I/O system calls
|
open, read, getsize, close, readdir - file I/O system calls
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
<strong>int montauk::open(const char* path);</strong>
|
<strong>int montauk::open(const char* path);</strong>
|
||||||
<strong>int montauk::read(int handle, uint8_t* buf, uint64_t offset, uint64_t size);</strong>
|
<strong>int montauk::read(int handle, uint8_t* buf, uint64_t offset, uint64_t size);</strong>
|
||||||
@@ -118,19 +119,22 @@
|
|||||||
<strong>void montauk::close(int handle);</strong>
|
<strong>void montauk::close(int handle);</strong>
|
||||||
<strong>int montauk::readdir(const char* path, const char** names, int max);</strong>
|
<strong>int montauk::readdir(const char* path, const char** names, int max);</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
MontaukOS provides a Virtual File System (VFS) with read/write
|
MontaukOS provides a Virtual File System (VFS) with read/write
|
||||||
support. Drive 0 is the boot ramdisk; additional drives may be
|
support. Drive 0 is the boot ramdisk; additional drives may be
|
||||||
mounted from GPT partitions backed by FAT32 or ext2 (see
|
mounted from GPT partitions backed by FAT32 or ext2 (see
|
||||||
syscalls(2), STORAGE section). Files are accessed via paths in
|
<a href="syscalls.html">syscalls(2)</a>, STORAGE section). Files are accessed via paths in
|
||||||
the format "<drive>:/<path>".
|
the format "<drive>:/<path>".
|
||||||
|
|
||||||
|
|
||||||
<strong>open</strong>
|
<strong>open</strong>
|
||||||
Opens a file and returns a non-negative handle on success, or a
|
Opens a file and returns a non-negative handle on success, or a
|
||||||
negative value on error (file not found, no free handles).
|
negative value on error (file not found, no free handles).
|
||||||
|
|
||||||
int h = montauk::open("0:/os/hello.elf");
|
int h = montauk::open("0:/os/hello.elf");
|
||||||
|
|
||||||
|
|
||||||
<strong>read</strong>
|
<strong>read</strong>
|
||||||
Reads up to 'size' bytes starting at 'offset' into 'buf'.
|
Reads up to 'size' bytes starting at 'offset' into 'buf'.
|
||||||
Returns the number of bytes actually read, or negative on error.
|
Returns the number of bytes actually read, or negative on error.
|
||||||
@@ -140,16 +144,19 @@
|
|||||||
uint8_t buf[512];
|
uint8_t buf[512];
|
||||||
int n = montauk::read(h, buf, 0, 512);
|
int n = montauk::read(h, buf, 0, 512);
|
||||||
|
|
||||||
|
|
||||||
<strong>getsize</strong>
|
<strong>getsize</strong>
|
||||||
Returns the total size in bytes of the file.
|
Returns the total size in bytes of the file.
|
||||||
|
|
||||||
uint64_t sz = montauk::getsize(h);
|
uint64_t sz = montauk::getsize(h);
|
||||||
|
|
||||||
|
|
||||||
<strong>close</strong>
|
<strong>close</strong>
|
||||||
Closes the file handle and frees kernel resources.
|
Closes the file handle and frees kernel resources.
|
||||||
|
|
||||||
montauk::close(h);
|
montauk::close(h);
|
||||||
|
|
||||||
|
|
||||||
<strong>readdir</strong>
|
<strong>readdir</strong>
|
||||||
Lists entries in a directory. Up to 'max' entry names (VFS cap
|
Lists entries in a directory. Up to 'max' entry names (VFS cap
|
||||||
256, driver-backed listings such as 0:/os/ cap 128) are written
|
256, driver-backed listings such as 0:/os/ cap 128) are written
|
||||||
@@ -165,6 +172,7 @@
|
|||||||
call, use montauk::readdir_at(path, names, max, startIndex) and
|
call, use montauk::readdir_at(path, names, max, startIndex) and
|
||||||
advance startIndex by the returned count until it returns 0.
|
advance startIndex by the returned count until it returns 0.
|
||||||
|
|
||||||
|
|
||||||
<strong>READING PATTERN</strong>
|
<strong>READING PATTERN</strong>
|
||||||
The standard pattern for reading a file:
|
The standard pattern for reading a file:
|
||||||
|
|
||||||
@@ -183,6 +191,7 @@
|
|||||||
}
|
}
|
||||||
montauk::close(h);
|
montauk::close(h);
|
||||||
|
|
||||||
|
|
||||||
<strong>WRITING, DELETING, RENAMING</strong>
|
<strong>WRITING, DELETING, RENAMING</strong>
|
||||||
<strong>int montauk::fcreate(const char* path);</strong>
|
<strong>int montauk::fcreate(const char* path);</strong>
|
||||||
<strong>int montauk::fwrite(int handle, const uint8_t* buf, uint64_t offset, uint64_t size);</strong>
|
<strong>int montauk::fwrite(int handle, const uint8_t* buf, uint64_t offset, uint64_t size);</strong>
|
||||||
@@ -201,15 +210,16 @@
|
|||||||
montauk::fs_mount), changes are written through to storage; use
|
montauk::fs_mount), changes are written through to storage; use
|
||||||
montauk::fs_sync() to flush caches before power-off.
|
montauk::fs_sync() to flush caches before power-off.
|
||||||
|
|
||||||
|
|
||||||
<strong>NOTES</strong>
|
<strong>NOTES</strong>
|
||||||
Drive 0 is loaded at boot from a USTAR tar archive into RAM.
|
Drive 0 is loaded at boot from a USTAR tar archive into RAM.
|
||||||
Other drives are mounted on demand from GPT partitions on
|
Other drives are mounted on demand from GPT partitions on
|
||||||
SATA/NVMe/USB block devices; see syscalls(2), STORAGE and
|
SATA/NVMe/USB block devices; see <a href="syscalls.html">syscalls(2)</a>, STORAGE and
|
||||||
DEVICES sections.
|
DEVICES sections.
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
syscalls(2), spawn(2), malloc(3)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="syscalls.html">syscalls(2)</a>, <a href="spawn.html">spawn(2)</a>, <a href="malloc.html">malloc(3)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
@@ -111,11 +111,13 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
fontscale - get or set terminal font scale
|
fontscale - get or set terminal font scale
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
fontscale
|
fontscale
|
||||||
fontscale <n>
|
fontscale <n>
|
||||||
fontscale <x> <y>
|
fontscale <x> <y>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
Controls the terminal font scale factor. The Flanterm terminal
|
Controls the terminal font scale factor. The Flanterm terminal
|
||||||
emulator renders text at a configurable scale multiplier.
|
emulator renders text at a configurable scale multiplier.
|
||||||
@@ -135,6 +137,7 @@
|
|||||||
Valid scale values are 1 through 8. After rescaling, the screen
|
Valid scale values are 1 through 8. After rescaling, the screen
|
||||||
is cleared.
|
is cleared.
|
||||||
|
|
||||||
|
|
||||||
<strong>OUTPUT</strong>
|
<strong>OUTPUT</strong>
|
||||||
fontscale
|
fontscale
|
||||||
Scale: 1x1 (160 cols x 50 rows)
|
Scale: 1x1 (160 cols x 50 rows)
|
||||||
@@ -142,15 +145,16 @@
|
|||||||
fontscale 2
|
fontscale 2
|
||||||
Scale set to 2x2 (80 cols x 25 rows)
|
Scale set to 2x2 (80 cols x 25 rows)
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
fontscale Show current scale and dimensions
|
fontscale Show current scale and dimensions
|
||||||
fontscale 2 Double the font size
|
fontscale 2 Double the font size
|
||||||
fontscale 3 2 3x horizontal, 2x vertical
|
fontscale 3 2 3x horizontal, 2x vertical
|
||||||
fontscale 1 Reset to default size
|
fontscale 1 Reset to default size
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
shell(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
@@ -111,14 +111,17 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
fb_info, fb_map - direct framebuffer access
|
fb_info, fb_map - direct framebuffer access
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
<strong>void montauk::fb_info(montauk::abi::FbInfo* info);</strong>
|
<strong>void montauk::fb_info(montauk::abi::FbInfo* info);</strong>
|
||||||
<strong>void* montauk::fb_map();</strong>
|
<strong>void* montauk::fb_map();</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
These syscalls allow userspace programs to access the linear
|
These syscalls allow userspace programs to access the linear
|
||||||
framebuffer directly for graphical output.
|
framebuffer directly for graphical output.
|
||||||
|
|
||||||
|
|
||||||
<strong>fb_info</strong>
|
<strong>fb_info</strong>
|
||||||
Fills in an FbInfo structure with the framebuffer geometry:
|
Fills in an FbInfo structure with the framebuffer geometry:
|
||||||
|
|
||||||
@@ -129,15 +132,18 @@
|
|||||||
The pitch is the number of bytes per scanline (may be larger
|
The pitch is the number of bytes per scanline (may be larger
|
||||||
than width * 4 due to alignment). bpp is always 32.
|
than width * 4 due to alignment). bpp is always 32.
|
||||||
|
|
||||||
|
|
||||||
<strong>fb_map</strong>
|
<strong>fb_map</strong>
|
||||||
Maps the physical framebuffer into the process address space at
|
Maps the physical framebuffer into a dedicated region of the process
|
||||||
a fixed virtual address (0x50000000) and returns that address.
|
address space and returns its address. Programs must use the returned
|
||||||
|
pointer rather than assuming a particular virtual address.
|
||||||
|
|
||||||
uint32_t* pixels = (uint32_t*)montauk::fb_map();
|
uint32_t* pixels = (uint32_t*)montauk::fb_map();
|
||||||
|
|
||||||
Each pixel is a 32-bit value in 0xAARRGGBB format (blue in the
|
Each pixel is a 32-bit value in 0xAARRGGBB format (blue in the
|
||||||
low byte). Writing to this memory directly updates the screen.
|
low byte). Writing to this memory directly updates the screen.
|
||||||
|
|
||||||
|
|
||||||
<strong>PIXEL FORMAT</strong>
|
<strong>PIXEL FORMAT</strong>
|
||||||
Bits 31-24: Alpha (unused, typically 0xFF)
|
Bits 31-24: Alpha (unused, typically 0xFF)
|
||||||
Bits 23-16: Red
|
Bits 23-16: Red
|
||||||
@@ -146,6 +152,7 @@
|
|||||||
|
|
||||||
Example: red = 0x00FF0000, green = 0x0000FF00, blue = 0x000000FF
|
Example: red = 0x00FF0000, green = 0x0000FF00, blue = 0x000000FF
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLE</strong>
|
<strong>EXAMPLE</strong>
|
||||||
Fill the screen with blue:
|
Fill the screen with blue:
|
||||||
|
|
||||||
@@ -160,6 +167,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
<strong>NOTES</strong>
|
<strong>NOTES</strong>
|
||||||
After mapping, the cursor overlay is not composited. Programs
|
After mapping, the cursor overlay is not composited. Programs
|
||||||
that use the framebuffer take full control of screen output.
|
that use the framebuffer take full control of screen output.
|
||||||
@@ -167,9 +175,9 @@
|
|||||||
Only one mapping per process is supported. Calling fb_map()
|
Only one mapping per process is supported. Calling fb_map()
|
||||||
multiple times returns the same address.
|
multiple times returns the same address.
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
syscalls(2), malloc(3)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="syscalls.html">syscalls(2)</a>, <a href="malloc.html">malloc(3)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+64
-44
@@ -128,56 +128,51 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
|
|||||||
|
|
||||||
<ul class="doc-list">
|
<ul class="doc-list">
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="intro.html">intro(1)</a>
|
|
||||||
<p>introduction to MontaukOS userspace</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="shell.html">shell(1)</a>
|
|
||||||
<p>MontaukOS interactive command shell</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="init.html">init(1)</a>
|
|
||||||
<p>MontaukOS init system</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="dhcp.html">dhcp(1)</a>
|
<a href="dhcp.html">dhcp(1)</a>
|
||||||
<p>obtain network configuration via DHCP</p>
|
<p>obtain network configuration via DHCP</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="fetch.html">fetch(1)</a>
|
|
||||||
<p>HTTP/HTTPS client for MontaukOS</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="ping.html">ping(1)</a>
|
|
||||||
<p>send ICMP echo requests</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="nslookup.html">nslookup(1)</a>
|
|
||||||
<p>DNS hostname lookup</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="fontscale.html">fontscale(1)</a>
|
|
||||||
<p>get or set terminal font scale</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="edit.html">edit(1)</a>
|
<a href="edit.html">edit(1)</a>
|
||||||
<p>text editor for MontaukOS</p>
|
<p>text editor for MontaukOS</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="fetch.html">fetch(1)</a>
|
||||||
|
<p>HTTP/HTTPS client for MontaukOS</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="fontscale.html">fontscale(1)</a>
|
||||||
|
<p>get or set terminal font scale</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="init.html">init(1)</a>
|
||||||
|
<p>MontaukOS init system</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="intro.html">intro(1)</a>
|
||||||
|
<p>introduction to MontaukOS userspace</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="man.html">man(1)</a>
|
<a href="man.html">man(1)</a>
|
||||||
<p>display manual pages</p>
|
<p>display manual pages</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="nslookup.html">nslookup(1)</a>
|
||||||
|
<p>DNS hostname lookup</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="ping.html">ping(1)</a>
|
||||||
|
<p>send ICMP echo requests</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="printctl.html">printctl(1)</a>
|
<a href="printctl.html">printctl(1)</a>
|
||||||
<p>configure printers and submit print jobs</p>
|
<p>configure printers and submit print jobs</p>
|
||||||
@@ -188,6 +183,26 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
|
|||||||
<p>MontaukOS userspace print spooler daemon</p>
|
<p>MontaukOS userspace print spooler daemon</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="shell.html">shell(1)</a>
|
||||||
|
<p>MontaukOS interactive command shell</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="sshd.html">sshd(1)</a>
|
||||||
|
<p>MontaukOS SSH-2 server</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="vol.html">vol(1)</a>
|
||||||
|
<p>list mounted volumes</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="wifi.html">wifi(1)</a>
|
||||||
|
<p>scan for wireless networks and inspect the Wi-Fi adapter</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="wiki.html">wiki(1)</a>
|
<a href="wiki.html">wiki(1)</a>
|
||||||
<p>Wikipedia article viewer for MontaukOS</p>
|
<p>Wikipedia article viewer for MontaukOS</p>
|
||||||
@@ -200,8 +215,13 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
|
|||||||
<ul class="doc-list">
|
<ul class="doc-list">
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="syscalls.html">syscalls(2)</a>
|
<a href="file.html">file(2)</a>
|
||||||
<p>overview of MontaukOS system calls</p>
|
<p>file I/O system calls</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="framebuffer.html">framebuffer(2)</a>
|
||||||
|
<p>direct framebuffer access</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
@@ -210,13 +230,8 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="file.html">file(2)</a>
|
<a href="syscalls.html">syscalls(2)</a>
|
||||||
<p>file I/O system calls</p>
|
<p>overview of MontaukOS system calls</p>
|
||||||
</li>
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<a href="framebuffer.html">framebuffer(2)</a>
|
|
||||||
<p>direct framebuffer access</p>
|
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
@@ -230,6 +245,11 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
|
|||||||
<p>userspace heap allocation</p>
|
<p>userspace heap allocation</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="rtlsdr.html">rtlsdr(3)</a>
|
||||||
|
<p>userspace RTL2832U and R820T2 radio driver</p>
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>File Formats / Reference (Section 5)</h2>
|
<h2>File Formats / Reference (Section 5)</h2>
|
||||||
|
|||||||
+26
-12
@@ -111,30 +111,44 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
init - MontaukOS init system
|
init - MontaukOS init system
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
Spawned automatically by the kernel as PID 0.
|
Spawned automatically by the kernel as PID 0.
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
init is the first userspace process started by the MontaukOS
|
init is the first userspace process started by the MontaukOS
|
||||||
kernel. It chains system services in sequence, then launches
|
kernel. It discovers system services from 0:/config/init.toml
|
||||||
the interactive shell.
|
and starts them in the order their tables appear in that file.
|
||||||
|
|
||||||
Each service is spawned as a child process. init waits for it
|
Each enabled service is spawned as a child process. Services may
|
||||||
to exit before starting the next one. If a service fails to
|
run in the background or block startup until they exit. Disabled
|
||||||
spawn, init logs an error and continues to the next stage.
|
services are logged and skipped.
|
||||||
|
|
||||||
Log output is timestamped and color-coded:
|
Log output is timestamped and color-coded:
|
||||||
|
|
||||||
HH:MM:SS INFO init Starting dhcp
|
HH:MM:SS INFO init Starting dhcp
|
||||||
HH:MM:SS OK init dhcp finished (pid 1)
|
HH:MM:SS OK init dhcp finished (pid 1)
|
||||||
|
|
||||||
<strong>BOOT SEQUENCE</strong>
|
|
||||||
The following services are started in order:
|
|
||||||
|
|
||||||
1. 0:/os/dhcp.elf Obtain network configuration via DHCP
|
<strong>CONFIGURATION</strong>
|
||||||
2. 0:/os/shell.elf Launch the interactive shell
|
Each service is declared as a named TOML table:
|
||||||
|
|
||||||
|
[services.dhcp]
|
||||||
|
path = "0:/os/dhcp.elf"
|
||||||
|
enabled = true
|
||||||
|
wait = false
|
||||||
|
|
||||||
|
path is required. name controls the name shown in the boot log and
|
||||||
|
defaults to the table name. enabled and wait both default to true.
|
||||||
|
optional skips a service whose executable is not installed.
|
||||||
|
|
||||||
|
fallback names another configured service to start if spawning the
|
||||||
|
service fails. A service with fallback_only = true is available as
|
||||||
|
a fallback but is not started during the normal pass.
|
||||||
|
|
||||||
|
After all foreground services exit, init enters an idle loop.
|
||||||
|
|
||||||
After the shell exits, init enters an idle loop.
|
|
||||||
|
|
||||||
<strong>LOG LEVELS</strong>
|
<strong>LOG LEVELS</strong>
|
||||||
init uses four log levels, each with a distinct color:
|
init uses four log levels, each with a distinct color:
|
||||||
@@ -144,9 +158,9 @@
|
|||||||
WARN Yellow Non-fatal warning
|
WARN Yellow Non-fatal warning
|
||||||
FAIL Red Service failed to start
|
FAIL Red Service failed to start
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
dhcp(1), shell(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="dhcp.html">dhcp(1)</a>, <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+47
-55
@@ -111,31 +111,22 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
intro - introduction to MontaukOS userspace
|
intro - introduction to MontaukOS userspace
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
MontaukOS is a hobbyist 64-bit operating system written in C++20,
|
MontaukOS is a 64-bit operating system written in C++20,
|
||||||
currently at version 0.1.7 (API version 8). Userspace programs
|
currently at version 0.2.0 (API version 11). Userspace programs
|
||||||
run in Ring 3, are loaded as static ELF64 binaries, and
|
run in Ring 3, are loaded as static ELF64 binaries, and
|
||||||
communicate with the kernel through the x86-64 SYSCALL/SYSRET
|
communicate with the kernel through the x86-64 SYSCALL/SYSRET
|
||||||
mechanism (150 syscalls -- see syscalls(2)).
|
mechanism (roughly 190 syscall numbers, 0-189 - see <a href="syscalls.html">syscalls(2)</a>).
|
||||||
|
|
||||||
|
Programs are built with the x86_64-montauk cross toolchain and
|
||||||
|
linked at virtual address 0x400000. MontaukOS has its own C
|
||||||
|
library along with the Montauk API (montauk:: wrappers).
|
||||||
|
|
||||||
Programs are compiled with a freestanding cross-compiler and
|
|
||||||
linked at virtual address 0x400000. There is no standard C
|
|
||||||
library for C++ programs -- all system interaction goes through
|
|
||||||
the montauk:: syscall wrappers. A desktop environment with a
|
|
||||||
window server, GUI apps, and Bluetooth/audio/networking stacks
|
|
||||||
runs on top of the same syscall API.
|
|
||||||
|
|
||||||
<strong>GETTING STARTED</strong>
|
<strong>GETTING STARTED</strong>
|
||||||
To write a new system/CLI program, create a directory under
|
To write a new system/CLI program, create a directory under
|
||||||
programs/src/ with a main.cpp file. The entry point is:
|
programs/src/ with a main.cpp file.
|
||||||
|
|
||||||
extern "C" void _start() { ... }
|
|
||||||
|
|
||||||
There is no argc/argv. Use montauk::getargs() to retrieve any
|
|
||||||
arguments passed by the parent process. Include <montauk/syscall.h>
|
|
||||||
for the full typed syscall API. GUI apps additionally use
|
|
||||||
win_create()/win_poll()/win_present() from montauk/Window.hpp
|
|
||||||
(see framebuffer(2)).
|
|
||||||
|
|
||||||
Build with:
|
Build with:
|
||||||
|
|
||||||
@@ -144,64 +135,65 @@
|
|||||||
System/CLI binaries appear in programs/bin/os/; GUI app bundles
|
System/CLI binaries appear in programs/bin/os/; GUI app bundles
|
||||||
(ELF + manifest.toml + icon) appear under programs/bin/apps/<name>/.
|
(ELF + manifest.toml + icon) appear under programs/bin/apps/<name>/.
|
||||||
|
|
||||||
|
|
||||||
<strong>RAMDISK LAYOUT</strong>
|
<strong>RAMDISK LAYOUT</strong>
|
||||||
The boot ramdisk is mounted as drive 0 with the following
|
The boot ramdisk is mounted as drive 0 with the following
|
||||||
directory structure:
|
directory structure:
|
||||||
|
|
||||||
0:/os/ System/CLI binaries (shell, init, man, etc.),
|
0:/os/ System/CLI binaries, os data
|
||||||
plus os-owned data: certs/, firmware/,
|
0:/apps/ App bundles
|
||||||
licenses/, wallpapers/
|
|
||||||
0:/apps/ GUI app bundles, one directory per app
|
|
||||||
(<app>.elf + manifest.toml + icon)
|
|
||||||
0:/config/ System-wide config TOMLs
|
0:/config/ System-wide config TOMLs
|
||||||
0:/users/<name>/ Per-user home directories (created at
|
0:/users/<name>/ User home directories
|
||||||
login), with Music/, Videos/, Pictures/,
|
0:/state/ Mutable system runtime state
|
||||||
config/ subdirectories
|
0:/tmp/ Scratch space
|
||||||
0:/fonts/ Shared fonts
|
0:/fonts/ Shared fonts
|
||||||
0:/icons/ Shared icons
|
0:/icons/ Shared icons
|
||||||
0:/man/ Manual pages
|
0:/man/ Manual pages
|
||||||
0:/www/ Web server content
|
0:/www/ Web server content
|
||||||
0:/lib/ Lua and TinyCC toolchain payloads
|
0:/sdk/ Montauk SDK (native gcc/binutils, TinyCC,
|
||||||
|
Lua, headers and libraries), when installed
|
||||||
0:/boot/ Kernel, bootloader, ramdisk image
|
0:/boot/ Kernel, bootloader, ramdisk image
|
||||||
|
|
||||||
There is no 0:/games/, 0:/common/, 0:/home/, or 0:/etc/ --
|
|
||||||
these were used by earlier single-user releases and no longer
|
|
||||||
exist. Games and other GUI programs (including doom) ship as
|
|
||||||
bundles under 0:/apps/.
|
|
||||||
|
|
||||||
<strong>SHELL</strong>
|
<strong>SHELL</strong>
|
||||||
The interactive shell is the primary way to interact with
|
The interactive shell can be used to interact with
|
||||||
MontaukOS. Commands are resolved against the current directory
|
MontaukOS. Commands are resolved against the current directory
|
||||||
first, then 0:/os/. Type 'help' at the shell prompt for a list
|
first, then 0:/os/.
|
||||||
|
|
||||||
|
Type 'help' at the shell prompt for a list
|
||||||
of commands. Use 'man shell' for detailed shell documentation.
|
of commands. Use 'man shell' for detailed shell documentation.
|
||||||
|
|
||||||
|
|
||||||
<strong>MAN PAGES</strong>
|
<strong>MAN PAGES</strong>
|
||||||
The following man pages are available:
|
The following man pages are available:
|
||||||
|
|
||||||
intro(1) This page
|
<a href="intro.html">intro(1)</a> This page
|
||||||
shell(1) Shell commands reference
|
<a href="shell.html">shell(1)</a> Shell commands reference
|
||||||
init(1) Init system
|
<a href="init.html">init(1)</a> Init system
|
||||||
dhcp(1) DHCP client
|
<a href="dhcp.html">dhcp(1)</a> DHCP client
|
||||||
fetch(1) HTTP client
|
<a href="fetch.html">fetch(1)</a> HTTP client
|
||||||
ping(1) ICMP ping
|
<a href="ping.html">ping(1)</a> ICMP ping
|
||||||
nslookup(1) DNS lookup
|
<a href="nslookup.html">nslookup(1)</a> DNS lookup
|
||||||
fontscale(1) Terminal font scaling
|
<a href="wifi.html">wifi(1)</a> Wi-Fi configuration
|
||||||
edit(1) Text editor
|
<a href="sshd.html">sshd(1)</a> SSH daemon
|
||||||
man(1) The man command itself
|
<a href="fontscale.html">fontscale(1)</a> Terminal font scaling
|
||||||
printctl(1) Printer control
|
<a href="edit.html">edit(1)</a> Text editor
|
||||||
printd(1) Print spooler daemon
|
<a href="man.html">man(1)</a> The man command itself
|
||||||
wiki(1) Wikipedia article viewer
|
<a href="printctl.html">printctl(1)</a> Printer control
|
||||||
legal(7) Copyright and legal information
|
<a href="printd.html">printd(1)</a> Print spooler daemon
|
||||||
tls-errors(5) TLS/BearSSL error reference
|
<a href="wiki.html">wiki(1)</a> Wikipedia article viewer
|
||||||
syscalls(2) Overview of all syscalls
|
<a href="legal.html">legal(7)</a> Copyright and legal information
|
||||||
spawn(2) Process spawning
|
<a href="tls-errors.html">tls-errors(5)</a> TLS/BearSSL error reference
|
||||||
file(2) File I/O syscalls
|
<a href="syscalls.html">syscalls(2)</a> Overview of all syscalls
|
||||||
framebuffer(2) Framebuffer access
|
<a href="spawn.html">spawn(2)</a> Process spawning
|
||||||
malloc(3) Memory allocation
|
<a href="file.html">file(2)</a> File I/O syscalls
|
||||||
|
<a href="framebuffer.html">framebuffer(2)</a> Framebuffer access
|
||||||
|
<a href="malloc.html">malloc(3)</a> Memory allocation
|
||||||
|
<a href="rtlsdr.html">rtlsdr(3)</a> RTL-SDR software radio API
|
||||||
|
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
<strong>SEE ALSO</strong>
|
||||||
shell(1), syscalls(2), malloc(3)</code></pre>
|
<a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a>, <a href="malloc.html">malloc(3)</a></code></pre>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+2
-1
@@ -111,6 +111,7 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
MontaukOS legal/copyright information
|
MontaukOS legal/copyright information
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
Copyright (c) 2025-2026 Daniel Hammer, et al.
|
Copyright (c) 2025-2026 Daniel Hammer, et al.
|
||||||
(includes contributors to other projects, i.e. The Limine Bootloader. Please refer to any other project's own license.)
|
(includes contributors to other projects, i.e. The Limine Bootloader. Please refer to any other project's own license.)
|
||||||
@@ -140,6 +141,7 @@
|
|||||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
PERFORMANCE OF THIS SOFTWARE.
|
PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
|
||||||
|
|
||||||
<strong>THIRD-PARTY COMPONENTS</strong>
|
<strong>THIRD-PARTY COMPONENTS</strong>
|
||||||
MontaukOS is distributed together with third-party components that remain
|
MontaukOS is distributed together with third-party components that remain
|
||||||
under their own licenses, including:
|
under their own licenses, including:
|
||||||
@@ -166,7 +168,6 @@
|
|||||||
Unsplash License
|
Unsplash License
|
||||||
|
|
||||||
Full license texts and notices are on this system in 0:/os/licenses/.</code></pre>
|
Full license texts and notices are on this system in 0:/os/licenses/.</code></pre>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+30
-21
@@ -111,60 +111,69 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
malloc, mfree, realloc - userspace heap allocation
|
malloc, mfree, realloc - userspace heap allocation
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
<strong>void* montauk::malloc(uint64_t size);</strong>
|
<strong>void* montauk::malloc(uint64_t size);</strong>
|
||||||
<strong>void montauk::mfree(void* ptr);</strong>
|
<strong>void montauk::mfree(void* ptr);</strong>
|
||||||
<strong>void* montauk::realloc(void* ptr, uint64_t size);</strong>
|
<strong>void* montauk::realloc(void* ptr, uint64_t size);</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
The userspace heap provides dynamic memory allocation on top of
|
The userspace heap provides dynamic memory allocation on top of
|
||||||
the kernel's page-mapping syscall (SYS_ALLOC). Include the
|
anonymous virtual memory. The Montauk C++ API and libc's
|
||||||
header <montauk/heap.h> to use these functions.
|
malloc/free API use the same process-wide allocator.
|
||||||
|
|
||||||
|
|
||||||
<strong>malloc</strong>
|
<strong>malloc</strong>
|
||||||
Allocates 'size' bytes from the free list. Returns a 16-byte
|
Allocates 'size' bytes from the free list. Returns a 16-byte
|
||||||
aligned pointer, or nullptr on failure. When the free list is
|
aligned pointer, or nullptr on failure. When the free list is
|
||||||
empty, it requests more pages from the kernel via SYS_ALLOC
|
empty, it reserves more pages from the kernel. Physical pages
|
||||||
(minimum 16 KiB growth, initial seed of 64 KiB).
|
are committed as they are first touched.
|
||||||
|
|
||||||
char* buf = (char*)montauk::malloc(1024);
|
char* buf = (char*)montauk::malloc(1024);
|
||||||
|
|
||||||
|
|
||||||
<strong>mfree</strong>
|
<strong>mfree</strong>
|
||||||
Returns the block to the userspace free list. No syscall is
|
Returns the block to the userspace allocator. Arena blocks are
|
||||||
made -- the memory stays mapped and is immediately reusable.
|
immediately reusable; large direct mappings are returned to the
|
||||||
|
kernel, including their virtual address range.
|
||||||
Passing nullptr is a safe no-op.
|
Passing nullptr is a safe no-op.
|
||||||
|
|
||||||
montauk::mfree(buf);
|
montauk::mfree(buf);
|
||||||
|
|
||||||
|
|
||||||
<strong>realloc</strong>
|
<strong>realloc</strong>
|
||||||
Resizes the allocation to 'size' bytes. Allocates a new block,
|
Resizes the allocation to 'size' bytes. A block with sufficient
|
||||||
copies the smaller of old/new sizes, and frees the old block.
|
capacity is retained; otherwise a new block is allocated, the
|
||||||
|
smaller of old/new requested sizes is copied, and the old block
|
||||||
|
is freed. Integer overflow fails without changing the old block.
|
||||||
If ptr is nullptr, behaves like malloc.
|
If ptr is nullptr, behaves like malloc.
|
||||||
|
|
||||||
buf = (char*)montauk::realloc(buf, 2048);
|
buf = (char*)montauk::realloc(buf, 2048);
|
||||||
|
|
||||||
<strong>IMPLEMENTATION</strong>
|
|
||||||
The allocator uses a linked free-list with first-fit search.
|
|
||||||
Blocks larger than needed are split. The allocation header is
|
|
||||||
16 bytes (magic + size). All allocations are 16-byte aligned.
|
|
||||||
|
|
||||||
The heap grows by requesting pages from the kernel via
|
<strong>IMPLEMENTATION</strong>
|
||||||
SYS_ALLOC. These pages are never returned to the kernel (since
|
The allocator uses segregated size-class bins and a coalescing
|
||||||
SYS_FREE is currently a no-op), but mfree makes them available
|
address-ordered overflow list. Headers retain both requested size
|
||||||
for future malloc calls within the process.
|
and actual block extent. A process-wide lock serializes C and C++
|
||||||
|
allocation calls. All returned pointers are 16-byte aligned.
|
||||||
|
|
||||||
|
Allocations of 256 KiB or more use direct page mappings so they
|
||||||
|
can be released promptly. Smaller allocations use growing arenas.
|
||||||
|
|
||||||
|
|
||||||
<strong>LOW-LEVEL PAGE API</strong>
|
<strong>LOW-LEVEL PAGE API</strong>
|
||||||
For large allocations or when direct page control is needed:
|
For large allocations or when direct page control is needed:
|
||||||
|
|
||||||
void* montauk::alloc(uint64_t size); // SYS_ALLOC
|
void* montauk::alloc(uint64_t size); // SYS_ALLOC
|
||||||
void montauk::free(void* ptr); // SYS_FREE (no-op)
|
void montauk::free(void* ptr); // SYS_FREE
|
||||||
|
|
||||||
|
alloc() reserves zero-filled, read/write, non-executable pages.
|
||||||
|
Size is rounded up to 4 KiB. Freed ranges are reusable.
|
||||||
|
|
||||||
alloc() maps zeroed pages starting at 0x40000000 and growing
|
|
||||||
upward. Size is rounded up to 4 KiB page boundaries.
|
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
<strong>SEE ALSO</strong>
|
||||||
syscalls(2), file(2)</code></pre>
|
<a href="syscalls.html">syscalls(2)</a>, <a href="file.html">file(2)</a></code></pre>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+8
-2
@@ -111,10 +111,12 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
man - display manual pages
|
man - display manual pages
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
<strong>man topic</strong>
|
<strong>man topic</strong>
|
||||||
<strong>man section topic</strong>
|
<strong>man section topic</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
The man command displays manual pages from the ramdisk in a
|
The man command displays manual pages from the ramdisk in a
|
||||||
fullscreen pager. Pages are stored as plain text files with
|
fullscreen pager. Pages are stored as plain text files with
|
||||||
@@ -124,6 +126,7 @@
|
|||||||
in order. If a section number is given, only that section is
|
in order. If a section number is given, only that section is
|
||||||
checked.
|
checked.
|
||||||
|
|
||||||
|
|
||||||
<strong>KEY BINDINGS</strong>
|
<strong>KEY BINDINGS</strong>
|
||||||
|
|
||||||
<strong>Navigation</strong>
|
<strong>Navigation</strong>
|
||||||
@@ -135,12 +138,14 @@
|
|||||||
G, End Go to bottom
|
G, End Go to bottom
|
||||||
q Quit
|
q Quit
|
||||||
|
|
||||||
|
|
||||||
<strong>SECTIONS</strong>
|
<strong>SECTIONS</strong>
|
||||||
1 User commands and programs
|
1 User commands and programs
|
||||||
2 System calls (kernel interface)
|
2 System calls (kernel interface)
|
||||||
3 Library functions (userspace libraries)
|
3 Library functions (userspace libraries)
|
||||||
7 Miscellaneous (legal, conventions)
|
7 Miscellaneous (legal, conventions)
|
||||||
|
|
||||||
|
|
||||||
<strong>FILES</strong>
|
<strong>FILES</strong>
|
||||||
Man pages are stored on the ramdisk at:
|
Man pages are stored on the ramdisk at:
|
||||||
|
|
||||||
@@ -148,15 +153,16 @@
|
|||||||
|
|
||||||
For example, man intro reads 0:/man/intro.1
|
For example, man intro reads 0:/man/intro.1
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
man intro View the introduction
|
man intro View the introduction
|
||||||
man 2 syscalls View syscall overview (section 2)
|
man 2 syscalls View syscall overview (section 2)
|
||||||
man malloc View malloc documentation
|
man malloc View malloc documentation
|
||||||
man legal View copyright information
|
man legal View copyright information
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
intro(1), shell(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="intro.html">intro(1)</a>, <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
@@ -111,9 +111,11 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
nslookup - DNS hostname lookup
|
nslookup - DNS hostname lookup
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
nslookup <hostname>
|
nslookup <hostname>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
Resolves a hostname to an IPv4 address using the configured
|
Resolves a hostname to an IPv4 address using the configured
|
||||||
DNS server and prints the result.
|
DNS server and prints the result.
|
||||||
@@ -122,6 +124,7 @@
|
|||||||
configured DNS server and waits up to 5 seconds for a reply.
|
configured DNS server and waits up to 5 seconds for a reply.
|
||||||
Results are cached in an 8-entry kernel cache with TTL support.
|
Results are cached in an 8-entry kernel cache with TTL support.
|
||||||
|
|
||||||
|
|
||||||
<strong>OUTPUT</strong>
|
<strong>OUTPUT</strong>
|
||||||
Server: 10.0.68.1
|
Server: 10.0.68.1
|
||||||
Name: example.com
|
Name: example.com
|
||||||
@@ -132,18 +135,20 @@
|
|||||||
|
|
||||||
Could not resolve: badhost.invalid
|
Could not resolve: badhost.invalid
|
||||||
|
|
||||||
|
|
||||||
<strong>DNS CONFIGURATION</strong>
|
<strong>DNS CONFIGURATION</strong>
|
||||||
The DNS server address is obtained automatically via DHCP.
|
The DNS server address is obtained automatically via DHCP.
|
||||||
It can also be viewed and set with ifconfig. The default
|
It can also be viewed and set with ifconfig. The default
|
||||||
is 10.0.68.1 (QEMU user-mode networking).
|
is 10.0.68.1 (QEMU user-mode networking).
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
nslookup google.com
|
nslookup google.com
|
||||||
nslookup icanhazip.com
|
nslookup icanhazip.com
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
ping(1), fetch(1), dhcp(1), ifconfig(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="ping.html">ping(1)</a>, <a href="fetch.html">fetch(1)</a>, <a href="dhcp.html">dhcp(1)</a>, ifconfig(1), <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+6
-2
@@ -111,9 +111,11 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
ping - send ICMP echo requests
|
ping - send ICMP echo requests
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
ping <host>
|
ping <host>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
Sends 4 ICMP echo requests to the specified host and prints
|
Sends 4 ICMP echo requests to the specified host and prints
|
||||||
the round-trip time for each reply.
|
the round-trip time for each reply.
|
||||||
@@ -124,6 +126,7 @@
|
|||||||
Each request has a 3-second timeout. Requests are sent at
|
Each request has a 3-second timeout. Requests are sent at
|
||||||
1-second intervals.
|
1-second intervals.
|
||||||
|
|
||||||
|
|
||||||
<strong>OUTPUT</strong>
|
<strong>OUTPUT</strong>
|
||||||
PING example.com (93.184.216.34)
|
PING example.com (93.184.216.34)
|
||||||
Reply from 93.184.216.34: time=12ms
|
Reply from 93.184.216.34: time=12ms
|
||||||
@@ -135,6 +138,7 @@
|
|||||||
|
|
||||||
Request timed out
|
Request timed out
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
ping 10.0.68.1
|
ping 10.0.68.1
|
||||||
Ping the gateway by IP address.
|
Ping the gateway by IP address.
|
||||||
@@ -142,9 +146,9 @@
|
|||||||
ping google.com
|
ping google.com
|
||||||
Ping by hostname (requires DNS).
|
Ping by hostname (requires DNS).
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
nslookup(1), ifconfig(1), shell(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="nslookup.html">nslookup(1)</a>, ifconfig(1), <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
@@ -110,36 +110,38 @@
|
|||||||
|
|
||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
printctl - configure printers and submit print jobs
|
printctl - configure printers and submit print jobs
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
<strong>printctl</strong>
|
<strong>printctl</strong>
|
||||||
<em>command</em>
|
<em>command</em>
|
||||||
[<em>options</em>]
|
<em>[ options ]</em>
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
<strong>printctl</strong>
|
<strong>printctl</strong>
|
||||||
manages the MontaukOS userspace print spooler and submits print jobs to IPP printers.
|
manages the MontaukOS userspace print spooler and submits print jobs to IPP printers.
|
||||||
|
|
||||||
<strong>COMMANDS</strong>
|
<strong>COMMANDS</strong>
|
||||||
|
|
||||||
<strong>set-printer <em>URI</em></strong>
|
<strong>set-printer URI</strong>
|
||||||
Store the default printer URI.
|
Store the default printer URI.
|
||||||
|
|
||||||
<strong>show-printer</strong>
|
<strong>show-printer</strong>
|
||||||
Print the configured default printer URI.
|
Print the configured default printer URI.
|
||||||
|
|
||||||
<strong>print <em>FILE</em> [--printer <em>URI</em>] [--name <em>JOB</em>] [--wait]</strong>
|
<strong>print FILE [--printer URI] [--name JOB] [--wait]</strong>
|
||||||
Queue a file for printing.
|
Queue a file for printing.
|
||||||
|
|
||||||
<strong>test-page [--printer <em>URI</em>] [--wait] [--no-wait]</strong>
|
<strong>test-page [--printer URI] [--wait] [--no-wait]</strong>
|
||||||
Generate and queue a simple test page.
|
Generate and queue a simple test page.
|
||||||
|
|
||||||
<strong>status [--verbose]</strong>
|
<strong>status [--verbose]</strong>
|
||||||
Show daemon state and queued, active, completed, and failed jobs.
|
Show daemon state and queued, active, completed, and failed jobs.
|
||||||
|
|
||||||
<strong>inspect <em>JOB-ID</em></strong>
|
<strong>inspect JOB-ID</strong>
|
||||||
Show full metadata and debug details for a queued, active, completed, or failed job.
|
Show full metadata and debug details for a queued, active, completed, or failed job.
|
||||||
|
|
||||||
<strong>probe [<em>URI</em>]</strong>
|
<strong>probe [URI]</strong>
|
||||||
Probe the configured printer, print host and resolution details, and show IPP capability diagnostics.</code></pre>
|
Probe the configured printer, print host and resolution details, and show IPP capability diagnostics.</code></pre>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
@@ -110,16 +110,17 @@
|
|||||||
|
|
||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
printd - MontaukOS userspace print spooler daemon
|
printd - MontaukOS userspace print spooler daemon
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
<strong>printd</strong>
|
<strong>printd</strong>
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
<strong>printd</strong>
|
<strong>printd</strong>
|
||||||
monitors the print spool directories, claims queued jobs, and delivers them to IPP printers.
|
monitors the print spool directories, claims queued jobs, and delivers them to IPP printers.
|
||||||
|
|
||||||
It is normally launched automatically by
|
It is normally launched automatically by
|
||||||
<strong>init</strong>(1)
|
<strong>init (1)</strong>
|
||||||
and does not require direct user interaction.</code></pre>
|
and does not require direct user interaction.</code></pre>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+47
-12
@@ -111,6 +111,7 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
shell - MontaukOS interactive command shell
|
shell - MontaukOS interactive command shell
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
The MontaukOS shell is a command interpreter launched by init
|
The MontaukOS shell is a command interpreter launched by init
|
||||||
after system services have started. It provides command
|
after system services have started. It provides command
|
||||||
@@ -121,6 +122,7 @@
|
|||||||
a command is not a builtin, the shell searches for a matching
|
a command is not a builtin, the shell searches for a matching
|
||||||
ELF binary and executes it as a child process.
|
ELF binary and executes it as a child process.
|
||||||
|
|
||||||
|
|
||||||
<strong>COMMAND RESOLUTION</strong>
|
<strong>COMMAND RESOLUTION</strong>
|
||||||
When a non-builtin command is entered, the shell searches for
|
When a non-builtin command is entered, the shell searches for
|
||||||
a matching binary in the following order:
|
a matching binary in the following order:
|
||||||
@@ -144,16 +146,20 @@
|
|||||||
Arguments after the command name are passed to the spawned
|
Arguments after the command name are passed to the spawned
|
||||||
process.
|
process.
|
||||||
|
|
||||||
|
|
||||||
<strong>BUILTINS</strong>
|
<strong>BUILTINS</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>help</strong>
|
<strong>help</strong>
|
||||||
Display a categorized list of available commands.
|
Display a categorized list of available commands.
|
||||||
|
|
||||||
|
|
||||||
<strong>ls [dir]</strong>
|
<strong>ls [dir]</strong>
|
||||||
List files in the current directory, or in the specified
|
List files in the current directory, or in the specified
|
||||||
directory. Directory entries are shown with a trailing slash.
|
directory. Directory entries are shown with a trailing slash.
|
||||||
Examples: ls, ls man, ls os
|
Examples: ls, ls man, ls os
|
||||||
|
|
||||||
|
|
||||||
<strong>cd [dir]</strong>
|
<strong>cd [dir]</strong>
|
||||||
Change the working directory. With no argument, returns to the
|
Change the working directory. With no argument, returns to the
|
||||||
logged-in user's home directory (0:/users/<user>); with /,
|
logged-in user's home directory (0:/users/<user>); with /,
|
||||||
@@ -161,33 +167,42 @@
|
|||||||
The shell prompt reflects the current directory.
|
The shell prompt reflects the current directory.
|
||||||
Examples: cd os, cd .., cd
|
Examples: cd os, cd .., cd
|
||||||
|
|
||||||
|
|
||||||
<strong>pwd</strong>
|
<strong>pwd</strong>
|
||||||
Print the current working directory as an absolute path
|
Print the current working directory as an absolute path
|
||||||
(e.g. "0:/os").
|
(e.g. "0:/os").
|
||||||
|
|
||||||
|
|
||||||
<strong>echo [-n] ...</strong>
|
<strong>echo [-n] ...</strong>
|
||||||
Print the arguments. -n suppresses the trailing newline.
|
Print the arguments. -n suppresses the trailing newline.
|
||||||
|
|
||||||
|
|
||||||
<strong>set [VAR=value]</strong>
|
<strong>set [VAR=value]</strong>
|
||||||
With no argument, list all shell variables (built-in and
|
With no argument, list all shell variables (built-in and
|
||||||
user-defined). With VAR=value, set a variable. With a bare
|
user-defined). With VAR=value, set a variable. With a bare
|
||||||
name, print that variable's value.
|
name, print that variable's value.
|
||||||
|
|
||||||
|
|
||||||
<strong>unset VAR</strong>
|
<strong>unset VAR</strong>
|
||||||
Remove a user-defined shell variable.
|
Remove a user-defined shell variable.
|
||||||
|
|
||||||
|
|
||||||
<strong>true / false</strong>
|
<strong>true / false</strong>
|
||||||
Return exit status 0 / 1 without doing anything. Useful with
|
Return exit status 0 / 1 without doing anything. Useful with
|
||||||
&& and ||.
|
&& and ||.
|
||||||
|
|
||||||
|
|
||||||
<strong>N:</strong>
|
<strong>N:</strong>
|
||||||
A bare "<number>:" (e.g. "1:") switches the current drive to
|
A bare "<number>:" (e.g. "1:") switches the current drive to
|
||||||
drive N and resets the working directory to that drive's root.
|
drive N and resets the working directory to that drive's root.
|
||||||
|
|
||||||
|
|
||||||
<strong>exit</strong>
|
<strong>exit</strong>
|
||||||
Terminate the shell process (with the last command's exit code).
|
Terminate the shell process (with the last command's exit code).
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNTAX</strong>
|
<strong>SYNTAX</strong>
|
||||||
|
|
||||||
<strong>Variables</strong>
|
<strong>Variables</strong>
|
||||||
NAME=value Set a shell variable (no leading $)
|
NAME=value Set a shell variable (no leading $)
|
||||||
$VAR or ${VAR} Expand a variable's value
|
$VAR or ${VAR} Expand a variable's value
|
||||||
@@ -196,11 +211,13 @@
|
|||||||
home directory, current directory)
|
home directory, current directory)
|
||||||
\$ Escape a literal '$'
|
\$ Escape a literal '$'
|
||||||
|
|
||||||
|
|
||||||
<strong>Tilde expansion</strong>
|
<strong>Tilde expansion</strong>
|
||||||
A leading ~ expands to the session home directory
|
A leading ~ expands to the session home directory
|
||||||
(0:/users/<user>) when followed by end-of-string, '/', or a
|
(0:/users/<user>) when followed by end-of-string, '/', or a
|
||||||
space.
|
space.
|
||||||
|
|
||||||
|
|
||||||
<strong>Command chaining</strong>
|
<strong>Command chaining</strong>
|
||||||
cmd1 ; cmd2 Run cmd2 unconditionally after cmd1
|
cmd1 ; cmd2 Run cmd2 unconditionally after cmd1
|
||||||
cmd1 && cmd2 Run cmd2 only if cmd1 succeeded (exit 0)
|
cmd1 && cmd2 Run cmd2 only if cmd1 succeeded (exit 0)
|
||||||
@@ -209,25 +226,29 @@
|
|||||||
Single and double quotes protect ;, &&, and || from being
|
Single and double quotes protect ;, &&, and || from being
|
||||||
treated as separators.
|
treated as separators.
|
||||||
|
|
||||||
|
|
||||||
<strong>Comments</strong>
|
<strong>Comments</strong>
|
||||||
A '#' outside of quotes starts a comment; the rest of the line
|
A '#' outside of quotes starts a comment; the rest of the line
|
||||||
is ignored.
|
is ignored.
|
||||||
|
|
||||||
|
|
||||||
<strong>EXTERNAL COMMANDS</strong>
|
<strong>EXTERNAL COMMANDS</strong>
|
||||||
All external commands live in 0:/os/ (see COMMAND RESOLUTION).
|
All external commands live in 0:/os/ (see COMMAND RESOLUTION).
|
||||||
Where a dedicated man page exists it is noted below; run
|
Where a dedicated man page exists it is noted below; run
|
||||||
'man <command>' for details.
|
'man <command>' for details.
|
||||||
|
|
||||||
|
|
||||||
<strong>File commands</strong>
|
<strong>File commands</strong>
|
||||||
cat <file> Display file contents
|
cat <file> Display file contents
|
||||||
edit [file] Text editor -- see edit(1)
|
edit [file] Text editor -- see <a href="edit.html">edit(1)</a>
|
||||||
copy <src> <dst> Copy a file
|
copy <src> <dst> Copy a file
|
||||||
move <src> <dst> Move/rename a file
|
move <src> <dst> Move/rename a file
|
||||||
rm <file> Remove a file
|
rm <file> Remove a file
|
||||||
touch <file> Create an empty file
|
touch <file> Create an empty file
|
||||||
|
|
||||||
|
|
||||||
<strong>System commands</strong>
|
<strong>System commands</strong>
|
||||||
man <topic> View manual pages -- see man(1)
|
man <topic> View manual pages -- see <a href="man.html">man(1)</a>
|
||||||
whoami Print the current username
|
whoami Print the current username
|
||||||
info / mtkfetch Show system information
|
info / mtkfetch Show system information
|
||||||
date Show current date and time
|
date Show current date and time
|
||||||
@@ -235,30 +256,39 @@
|
|||||||
proclist List running processes
|
proclist List running processes
|
||||||
power CPU power/thermal status (power [watch [secs]])
|
power CPU power/thermal status (power [watch [secs]])
|
||||||
clear Clear the screen and framebuffer
|
clear Clear the screen and framebuffer
|
||||||
fontscale [n] Get or set terminal font scale -- see fontscale(1)
|
fontscale [n] Get or set terminal font scale -- see <a href="fontscale.html">fontscale(1)</a>
|
||||||
lua Lua interpreter
|
lua Lua interpreter
|
||||||
tcc TinyCC (in-system C compiler)
|
tcc TinyCC (in-system C compiler)
|
||||||
reset Reboot the system
|
reset / reboot Request a supervised system reboot
|
||||||
shutdown Shut down the system
|
shutdown / poweroff Request a supervised system shutdown
|
||||||
|
suspend Enter ACPI sleep
|
||||||
|
|
||||||
|
Interactive shutdown and reboot are shell builtins: they post a
|
||||||
|
capability-checked request and exit the console, allowing login.elf to
|
||||||
|
flush filesystems and perform the final power operation. They do not grant
|
||||||
|
CAP_POWER_CONTROL to the shell.
|
||||||
|
|
||||||
|
|
||||||
<strong>Network commands</strong>
|
<strong>Network commands</strong>
|
||||||
ping <host> Send ICMP echo requests -- see ping(1)
|
ping <host> Send ICMP echo requests -- see <a href="ping.html">ping(1)</a>
|
||||||
nslookup <host> DNS lookup -- see nslookup(1)
|
nslookup <host> DNS lookup -- see <a href="nslookup.html">nslookup(1)</a>
|
||||||
ifconfig Show/set network configuration
|
ifconfig Show/set network configuration
|
||||||
tcpconnect <host> <port> Interactive TCP client
|
tcpconnect <host> <port> Interactive TCP client
|
||||||
irc IRC client
|
irc IRC client
|
||||||
dhcp DHCP client -- see dhcp(1)
|
dhcp DHCP client -- see <a href="dhcp.html">dhcp(1)</a>
|
||||||
fetch <url> HTTP/HTTPS client (TLS 1.2) -- see fetch(1)
|
fetch <url> HTTP/HTTPS client (TLS 1.2) -- see <a href="fetch.html">fetch(1)</a>
|
||||||
wiki <title> Wikipedia article viewer -- see wiki(1)
|
wiki <title> Wikipedia article viewer -- see <a href="wiki.html">wiki(1)</a>
|
||||||
httpd HTTP server
|
httpd HTTP server
|
||||||
|
|
||||||
Network commands accept both IP addresses and hostnames.
|
Network commands accept both IP addresses and hostnames.
|
||||||
Hostnames are resolved via the configured DNS server.
|
Hostnames are resolved via the configured DNS server.
|
||||||
|
|
||||||
|
|
||||||
<strong>Bluetooth</strong>
|
<strong>Bluetooth</strong>
|
||||||
btlist List connected Bluetooth devices
|
btlist List connected Bluetooth devices
|
||||||
btbonds List bonded (paired) Bluetooth devices
|
btbonds List bonded (paired) Bluetooth devices
|
||||||
|
|
||||||
|
|
||||||
<strong>Software-defined radio</strong>
|
<strong>Software-defined radio</strong>
|
||||||
sdr [freqMHz [rateHz]] Receive and report basic signal
|
sdr [freqMHz [rateHz]] Receive and report basic signal
|
||||||
statistics from an attached RTL-SDR dongle
|
statistics from an attached RTL-SDR dongle
|
||||||
@@ -270,22 +300,26 @@
|
|||||||
disks, devexplorer, procmgr, powermgr, printers, timezone,
|
disks, devexplorer, procmgr, powermgr, printers, timezone,
|
||||||
weather, wikipedia. There is no 0:/games/ directory.
|
weather, wikipedia. There is no 0:/games/ directory.
|
||||||
|
|
||||||
|
|
||||||
<strong>TAB COMPLETION</strong>
|
<strong>TAB COMPLETION</strong>
|
||||||
Pressing Tab completes the word under the cursor against, in
|
Pressing Tab completes the word under the cursor against, in
|
||||||
order: executable names in 0:/os/, shell builtins, and file/
|
order: executable names in 0:/os/, shell builtins, and file/
|
||||||
directory entries in the current directory. A single match is
|
directory entries in the current directory. A single match is
|
||||||
completed inline; multiple matches are listed below the prompt.
|
completed inline; multiple matches are listed below the prompt.
|
||||||
|
|
||||||
|
|
||||||
<strong>INPUT</strong>
|
<strong>INPUT</strong>
|
||||||
The shell uses non-blocking keyboard input via SYS_GETKEY (with
|
The shell uses non-blocking keyboard input via SYS_GETKEY (with
|
||||||
SYS_INPUT_WAIT to sleep between events) to support arrow key
|
SYS_INPUT_WAIT to sleep between events) to support arrow key
|
||||||
detection. Lines are limited to 255 characters.
|
detection. Lines are limited to 255 characters.
|
||||||
|
|
||||||
|
|
||||||
<strong>Editing</strong>
|
<strong>Editing</strong>
|
||||||
Backspace Delete character before cursor
|
Backspace Delete character before cursor
|
||||||
Tab Tab-complete the current word
|
Tab Tab-complete the current word
|
||||||
Enter Execute the command line
|
Enter Execute the command line
|
||||||
|
|
||||||
|
|
||||||
<strong>History</strong>
|
<strong>History</strong>
|
||||||
The shell stores the last 32 unique commands. Duplicate
|
The shell stores the last 32 unique commands. Duplicate
|
||||||
consecutive entries are suppressed.
|
consecutive entries are suppressed.
|
||||||
@@ -293,6 +327,7 @@
|
|||||||
Up Arrow Recall previous command
|
Up Arrow Recall previous command
|
||||||
Down Arrow Recall next command (or clear line)
|
Down Arrow Recall next command (or clear line)
|
||||||
|
|
||||||
|
|
||||||
<strong>PROMPT</strong>
|
<strong>PROMPT</strong>
|
||||||
The prompt displays the current drive and working directory:
|
The prompt displays the current drive and working directory:
|
||||||
|
|
||||||
@@ -300,9 +335,9 @@
|
|||||||
0:/os> _ (in os/ directory)
|
0:/os> _ (in os/ directory)
|
||||||
1:/> _ (at root of drive 1)
|
1:/> _ (at root of drive 1)
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
man(1), intro(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="man.html">man(1)</a>, <a href="intro.html">intro(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+13
-2
@@ -111,13 +111,16 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
spawn, waitpid - create and wait for processes
|
spawn, waitpid - create and wait for processes
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
<strong>int montauk::spawn(const char* path, const char* args = nullptr);</strong>
|
<strong>int montauk::spawn(const char* path, const char* args = nullptr);</strong>
|
||||||
<strong>void montauk::waitpid(int pid);</strong>
|
<strong>void montauk::waitpid(int pid);</strong>
|
||||||
<strong>int montauk::getargs(char* buf, uint64_t maxLen);</strong>
|
<strong>int montauk::getargs(char* buf, uint64_t maxLen);</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>spawn</strong>
|
<strong>spawn</strong>
|
||||||
Loads the ELF64 binary at the given VFS path and creates a new
|
Loads the ELF64 binary at the given VFS path and creates a new
|
||||||
process. The path must include the drive prefix, for example:
|
process. The path must include the drive prefix, for example:
|
||||||
@@ -136,6 +139,7 @@
|
|||||||
Failure occurs when there are no free process slots (max 256),
|
Failure occurs when there are no free process slots (max 256),
|
||||||
the file cannot be found, or the ELF is invalid.
|
the file cannot be found, or the ELF is invalid.
|
||||||
|
|
||||||
|
|
||||||
<strong>waitpid</strong>
|
<strong>waitpid</strong>
|
||||||
Blocks the calling process until the process with the given PID
|
Blocks the calling process until the process with the given PID
|
||||||
has exited. Internally, this yields the CPU in a loop:
|
has exited. Internally, this yields the CPU in a loop:
|
||||||
@@ -146,6 +150,7 @@
|
|||||||
it spawns a child and waits for it to complete before showing
|
it spawns a child and waits for it to complete before showing
|
||||||
the next prompt.
|
the next prompt.
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
Spawn a program and wait for it:
|
Spawn a program and wait for it:
|
||||||
|
|
||||||
@@ -157,6 +162,7 @@
|
|||||||
montauk::print("child exited\n");
|
montauk::print("child exited\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
<strong>getargs</strong>
|
<strong>getargs</strong>
|
||||||
Copies the argument string into buf (up to maxLen bytes, always
|
Copies the argument string into buf (up to maxLen bytes, always
|
||||||
null-terminated). Returns the number of characters copied, or
|
null-terminated). Returns the number of characters copied, or
|
||||||
@@ -168,15 +174,20 @@
|
|||||||
The argument string is set by the parent when calling spawn().
|
The argument string is set by the parent when calling spawn().
|
||||||
If no arguments were provided, the buffer will be empty.
|
If no arguments were provided, the buffer will be empty.
|
||||||
|
|
||||||
|
A spawned child inherits a snapshot of its parent's environment. Libc
|
||||||
|
exposes it through getenv(), setenv(), and environ. posix_spawn() can
|
||||||
|
instead provide an explicit envp for the child.
|
||||||
|
|
||||||
|
|
||||||
<strong>NOTES</strong>
|
<strong>NOTES</strong>
|
||||||
The _start() entry point receives no argc/argv. Use getargs()
|
The _start() entry point receives no argc/argv. Use getargs()
|
||||||
to retrieve the argument string passed by the parent process.
|
to retrieve the argument string passed by the parent process.
|
||||||
|
|
||||||
Process exit codes are not yet collected by waitpid.
|
Process exit codes are not yet collected by waitpid.
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
syscalls(2), file(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="syscalls.html">syscalls(2)</a>, <a href="file.html">file(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+395
-101
@@ -111,11 +111,11 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
syscalls - overview of MontaukOS system calls
|
syscalls - overview of MontaukOS system calls
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
MontaukOS provides 150 system calls (numbers 0-149, sparsely
|
MontaukOS provides 178 system calls (numbers 0-186, with numbers
|
||||||
assigned -- not every number in the range is in use) for
|
140-148 reserved) for userspace programs. Syscalls use the x86-64
|
||||||
userspace programs. Syscalls use the x86-64 SYSCALL instruction
|
SYSCALL instruction with the following register convention:
|
||||||
with the following register convention:
|
|
||||||
|
|
||||||
RAX Syscall number (in) / return value (out)
|
RAX Syscall number (in) / return value (out)
|
||||||
RDI Argument 1
|
RDI Argument 1
|
||||||
@@ -130,6 +130,68 @@
|
|||||||
montauk:: namespace. This page groups syscalls the same way the
|
montauk:: namespace. This page groups syscalls the same way the
|
||||||
kernel source does (one subsystem header per group).
|
kernel source does (one subsystem header per group).
|
||||||
|
|
||||||
|
|
||||||
|
<strong>CAPABILITY SECURITY</strong>
|
||||||
|
Privileged authority is stored in kernel-owned process credentials, not
|
||||||
|
inferred from a process name, PID, executable path, or merely from the
|
||||||
|
owner name returned by SYS_GETUSER. The owner identity may namespace
|
||||||
|
per-user resources such as the clipboard, but no owner name implies
|
||||||
|
administrative authority. The kernel-created init process is
|
||||||
|
the root of the delegation tree. Login authenticates a user and delegates
|
||||||
|
the appropriate session capabilities; there is no special "system" user
|
||||||
|
shortcut in the kernel.
|
||||||
|
|
||||||
|
Each process has three uint64_t masks, exposed in ProcInfo:
|
||||||
|
|
||||||
|
permitted capabilities owned by the process
|
||||||
|
effective permitted capabilities accepted by syscall checks
|
||||||
|
delegable permitted capabilities that may be given to children
|
||||||
|
|
||||||
|
Effective and delegable must be subsets of permitted. SYS_SPAWN and the
|
||||||
|
other ordinary spawn variants give the child no capabilities. A parent
|
||||||
|
uses SYS_SPAWN_CAPS to make an explicit delegation. Every requested
|
||||||
|
permitted or delegable bit must be present in the parent's delegable mask,
|
||||||
|
so a non-delegable grant cannot be propagated through another generation.
|
||||||
|
Invalid or unauthorized requests return SYS_ERR_PERMISSION (-13).
|
||||||
|
|
||||||
|
Capability bits and protected operations are:
|
||||||
|
|
||||||
|
CAP_PROCESS_ADMIN kill unrelated processes or whole sessions
|
||||||
|
CAP_POWER_REQUEST post a graceful shutdown/reboot request
|
||||||
|
CAP_POWER_CONTROL consume power requests; reset or power off
|
||||||
|
CAP_SUSPEND enter ACPI sleep
|
||||||
|
CAP_STORAGE_ADMIN change partitions, mounts, or filesystems
|
||||||
|
CAP_RAW_STORAGE raw disk reads and writes
|
||||||
|
CAP_NETWORK_ADMIN change network/Wi-Fi configuration
|
||||||
|
CAP_SET_TIME set wall-clock time or timezone
|
||||||
|
CAP_USER_ADMIN manage users/trusted config; override owner at spawn
|
||||||
|
CAP_DISPLAY_ADMIN set display mode or brightness
|
||||||
|
CAP_DEVICE_ADMIN claim USB interfaces or change Bluetooth state
|
||||||
|
CAP_LOG_READ read the kernel log
|
||||||
|
CAP_SYSTEM_IMAGE write the program images in 0:/os and 0:/apps
|
||||||
|
|
||||||
|
CAP_STANDARD_SESSION contains CAP_POWER_REQUEST and CAP_SUSPEND.
|
||||||
|
CAP_ADMIN_SESSION adds the administrative capabilities above except
|
||||||
|
CAP_POWER_CONTROL and CAP_SYSTEM_IMAGE. Final shutdown/reset authority is
|
||||||
|
deliberately retained by login, the trusted session supervisor.
|
||||||
|
SYS_POWERINFO remains readable without a capability, so the powermgr GUI
|
||||||
|
and power command are monitors, not privileged power daemons.
|
||||||
|
|
||||||
|
CAP_SYSTEM_IMAGE is likewise excluded from every session and from the
|
||||||
|
"all" wildcard in 0:/config/capabilities.toml, and must be named
|
||||||
|
explicitly to be granted. Capability grants are keyed on binary path, so
|
||||||
|
write access to 0:/os or 0:/apps is equivalent to holding whatever those
|
||||||
|
images are granted the next time a launcher runs them. Partitioning or
|
||||||
|
formatting a volume is CAP_STORAGE_ADMIN and does not carry it.
|
||||||
|
|
||||||
|
The authentication and trusted-service configuration files users.toml,
|
||||||
|
setup.toml, init.toml, and ssh.toml are readable by ordinary processes but
|
||||||
|
require CAP_USER_ADMIN to create, replace, delete, or write. The kernel
|
||||||
|
also protects the 0:/config directory entry against replacement. This
|
||||||
|
prevents changing a userspace role string from becoming a route to new
|
||||||
|
kernel authority at the next login or boot.
|
||||||
|
|
||||||
|
|
||||||
<strong>PROCESS MANAGEMENT</strong>
|
<strong>PROCESS MANAGEMENT</strong>
|
||||||
<strong>SYS_EXIT (0)</strong>
|
<strong>SYS_EXIT (0)</strong>
|
||||||
Terminate the calling process.
|
Terminate the calling process.
|
||||||
@@ -148,45 +210,84 @@
|
|||||||
int montauk::getpid();
|
int montauk::getpid();
|
||||||
|
|
||||||
<strong>SYS_SPAWN (20)</strong>
|
<strong>SYS_SPAWN (20)</strong>
|
||||||
Spawn a new process from an ELF binary on the VFS.
|
Spawn a new process from an ELF binary on the VFS. The child inherits
|
||||||
|
a snapshot of the caller's environment but no capabilities.
|
||||||
int montauk::spawn(const char* path, const char* args = nullptr);
|
int montauk::spawn(const char* path, const char* args = nullptr);
|
||||||
|
|
||||||
|
<strong>SYS_SPAWN_CAPS (185)</strong>
|
||||||
|
Spawn a child with explicit permitted, effective, and delegable masks.
|
||||||
|
The child masks must satisfy the subset rules described under CAPABILITY
|
||||||
|
SECURITY. Passing a non-null user override additionally requires the
|
||||||
|
caller to have effective CAP_USER_ADMIN; null inherits the parent owner.
|
||||||
|
int montauk::spawn_with_caps(
|
||||||
|
const char* path, const char* args, const char* user,
|
||||||
|
const montauk::abi::SpawnCapabilities& capabilities);
|
||||||
|
|
||||||
<strong>SYS_WAITPID (23)</strong>
|
<strong>SYS_WAITPID (23)</strong>
|
||||||
Block until the given process has exited.
|
Block until the given process has exited. Returns 0-255 for a normal
|
||||||
void montauk::waitpid(int pid);
|
exit, 256 plus the signal number if it was killed or crashed, or 0 if
|
||||||
|
the PID is unknown or its exit record is no longer available.
|
||||||
|
int montauk::waitpid(int pid);
|
||||||
|
|
||||||
<strong>SYS_GETARGS (25)</strong>
|
<strong>SYS_GETARGS (25)</strong>
|
||||||
Get the argument string passed to this process at spawn time.
|
Get the argument string passed to this process at spawn time.
|
||||||
int montauk::getargs(char* buf, uint64_t maxLen);
|
int montauk::getargs(char* buf, uint64_t maxLen);
|
||||||
|
|
||||||
|
<strong>SYS_GETEXECPATH (151)</strong>
|
||||||
|
Copy the absolute path from which this process was spawned into buf.
|
||||||
|
Returns the copied path length, or -1 on invalid arguments.
|
||||||
|
int mtk_getexecpath(char* buf, unsigned long maxLen);
|
||||||
|
|
||||||
|
<strong>SYS_GETENVIRON (171), SYS_SETENVIRON (172), SYS_SPAWN_ENV (173)</strong>
|
||||||
|
Libc process-environment transport. Environment data is encoded as
|
||||||
|
consecutive NAME=VALUE strings with a final empty string. Applications
|
||||||
|
normally use getenv(3), setenv(3), environ, and posix_spawn(3).
|
||||||
|
|
||||||
<strong>SYS_PROCLIST (61)</strong>
|
<strong>SYS_PROCLIST (61)</strong>
|
||||||
List running processes (pid, parent, state, name, heap usage,
|
List running processes (pid, parent, state, name, heap usage,
|
||||||
accumulated CPU time).
|
accumulated CPU time, and permitted/effective/delegable capability masks).
|
||||||
int montauk::proclist(montauk::abi::ProcInfo* buf, int max);
|
int montauk::proclist(montauk::abi::ProcInfo* buf, int max);
|
||||||
|
|
||||||
<strong>SYS_KILL (62)</strong>
|
<strong>SYS_KILL (62)</strong>
|
||||||
Terminate another process by PID.
|
Terminate a process by PID. Any process may terminate one of its own
|
||||||
|
descendants. Terminating an unrelated process requires
|
||||||
|
CAP_PROCESS_ADMIN.
|
||||||
int montauk::kill(int pid);
|
int montauk::kill(int pid);
|
||||||
|
|
||||||
|
<strong>SYS_SETSESSION (174)</strong>
|
||||||
|
Make the calling process the leader of a new process session. Processes
|
||||||
|
spawned afterward inherit the session identifier.
|
||||||
|
int montauk::setsession();
|
||||||
|
|
||||||
|
<strong>SYS_KILLSESSION (175)</strong>
|
||||||
|
Terminate all live processes in a process session. Returns the number of
|
||||||
|
members signalled; repeat until zero to wait for complete teardown.
|
||||||
|
Requires CAP_PROCESS_ADMIN.
|
||||||
|
int montauk::killsession(int sessionId);
|
||||||
|
|
||||||
<strong>SYS_CHDIR (96)</strong>
|
<strong>SYS_CHDIR (96)</strong>
|
||||||
Change the calling process's current working directory.
|
Change the calling process's current working directory.
|
||||||
int montauk::chdir(const char* path);
|
int montauk::chdir(const char* path);
|
||||||
|
|
||||||
<strong>SYS_GETCWD (95)</strong>
|
<strong>SYS_GETCWD (95)</strong>
|
||||||
Get the calling process's current working directory.
|
Get the calling process's current working directory. Returns the path
|
||||||
|
length on success, -2 if maxLen cannot hold the path and terminating NUL,
|
||||||
|
or -1 for another failure. The buffer is not modified when it is too small.
|
||||||
int montauk::getcwd(char* buf, uint64_t maxLen);
|
int montauk::getcwd(char* buf, uint64_t maxLen);
|
||||||
|
|
||||||
<strong>SYS_SETUSER (92)</strong>
|
<strong>SYS_SETUSER (92)</strong>
|
||||||
Associate a process with a logged-in user name (used by login/session
|
Associate a process with a logged-in user name (used by login/session
|
||||||
management).
|
management and per-user resource isolation). Requires CAP_USER_ADMIN.
|
||||||
|
The name never grants capabilities or implies administrator status.
|
||||||
int montauk::setuser(int pid, const char* name);
|
int montauk::setuser(int pid, const char* name);
|
||||||
|
|
||||||
<strong>SYS_GETUSER (93)</strong>
|
<strong>SYS_GETUSER (93)</strong>
|
||||||
Get the user name associated with the calling process.
|
Get the user name associated with the calling process.
|
||||||
int montauk::getuser(char* buf, uint64_t maxLen);
|
int montauk::getuser(char* buf, uint64_t maxLen);
|
||||||
|
|
||||||
|
|
||||||
<strong>THREADING</strong>
|
<strong>THREADING</strong>
|
||||||
Threads share the spawning process's address space and heap
|
Threads share the calling process's address space and heap
|
||||||
(see montauk/heap.h for the heap lock). Declared in
|
(see montauk/heap.h for the heap lock). Declared in
|
||||||
montauk/thread.h.
|
montauk/thread.h.
|
||||||
|
|
||||||
@@ -210,6 +311,7 @@
|
|||||||
thread).
|
thread).
|
||||||
int montauk::thread_self();
|
int montauk::thread_self();
|
||||||
|
|
||||||
|
|
||||||
<strong>CONSOLE I/O</strong>
|
<strong>CONSOLE I/O</strong>
|
||||||
<strong>SYS_PRINT (4)</strong>
|
<strong>SYS_PRINT (4)</strong>
|
||||||
Write a null-terminated string to the terminal.
|
Write a null-terminated string to the terminal.
|
||||||
@@ -219,6 +321,7 @@
|
|||||||
Write a single character to the terminal.
|
Write a single character to the terminal.
|
||||||
void montauk::putchar(char c);
|
void montauk::putchar(char c);
|
||||||
|
|
||||||
|
|
||||||
<strong>FILE I/O</strong>
|
<strong>FILE I/O</strong>
|
||||||
<strong>SYS_OPEN (6)</strong>
|
<strong>SYS_OPEN (6)</strong>
|
||||||
Open a file. Returns a handle or negative on error.
|
Open a file. Returns a handle or negative on error.
|
||||||
@@ -237,9 +340,9 @@
|
|||||||
void montauk::close(int handle);
|
void montauk::close(int handle);
|
||||||
|
|
||||||
<strong>SYS_READDIR (10)</strong>
|
<strong>SYS_READDIR (10)</strong>
|
||||||
List directory entries (max 256 per call for VFS directories,
|
List directory entries (max 256 per call for ramdisk directories,
|
||||||
128 for driver-backed listings such as 0:/os/). For larger
|
128 for FAT32 and ext2 directories). For larger directories use
|
||||||
directories use SYS_READDIR_AT.
|
SYS_READDIR_AT.
|
||||||
int montauk::readdir(const char* path, const char** names, int max);
|
int montauk::readdir(const char* path, const char** names, int max);
|
||||||
|
|
||||||
<strong>SYS_READDIR_AT (136)</strong>
|
<strong>SYS_READDIR_AT (136)</strong>
|
||||||
@@ -273,6 +376,15 @@
|
|||||||
manager move operations).
|
manager move operations).
|
||||||
int montauk::frename(const char* oldPath, const char* newPath);
|
int montauk::frename(const char* oldPath, const char* newPath);
|
||||||
|
|
||||||
|
<strong>SYS_STAT (152)</strong>
|
||||||
|
Get a path's size, timestamps, mode, and directory status.
|
||||||
|
int montauk::stat(const char* path, montauk::abi::FileStat* out);
|
||||||
|
|
||||||
|
<strong>SYS_UTIME (167)</strong>
|
||||||
|
Set a path's access and modification timestamps. This is the kernel
|
||||||
|
transport used by the libc utime(3) interface.
|
||||||
|
int utime(const char* path, const struct utimbuf* times);
|
||||||
|
|
||||||
<strong>SYS_DRIVELIST (79)</strong>
|
<strong>SYS_DRIVELIST (79)</strong>
|
||||||
List mounted drive numbers.
|
List mounted drive numbers.
|
||||||
int montauk::drivelist(int* outDrives, int max);
|
int montauk::drivelist(int* outDrives, int max);
|
||||||
@@ -286,20 +398,37 @@
|
|||||||
1=SATA, 2=SATAPI, 3=NVMe, 4=USB mass storage.
|
1=SATA, 2=SATAPI, 3=NVMe, 4=USB mass storage.
|
||||||
int montauk::drivekind(int drive);
|
int montauk::drivekind(int drive);
|
||||||
|
|
||||||
|
|
||||||
<strong>MEMORY</strong>
|
<strong>MEMORY</strong>
|
||||||
<strong>SYS_ALLOC (11)</strong>
|
<strong>SYS_ALLOC (11)</strong>
|
||||||
Map zeroed pages into the process address space.
|
Map zeroed pages into the process address space.
|
||||||
void* montauk::alloc(uint64_t size);
|
void* montauk::alloc(uint64_t size);
|
||||||
|
|
||||||
<strong>SYS_FREE (12)</strong>
|
<strong>SYS_FREE (12)</strong>
|
||||||
Reserved (currently a no-op).
|
Release a complete mapping previously returned by SYS_ALLOC.
|
||||||
void montauk::free(void* ptr);
|
void montauk::free(void* ptr);
|
||||||
|
|
||||||
|
<strong>SYS_MMAP_ANON (168)</strong>
|
||||||
|
Reserve a zero-filled anonymous mapping with read/write/execute
|
||||||
|
protection flags. Pages are committed on first access. Writable
|
||||||
|
executable mappings are rejected.
|
||||||
|
void* mmap(void*, size_t, int, int, int, long);
|
||||||
|
|
||||||
|
<strong>SYS_MUNMAP (169)</strong>
|
||||||
|
Release a page-aligned range. Partial unmap splits the VM area and
|
||||||
|
makes the virtual range reusable.
|
||||||
|
int munmap(void* addr, size_t length);
|
||||||
|
|
||||||
|
<strong>SYS_MPROTECT (170)</strong>
|
||||||
|
Change read/write/execute permissions on an anonymous mapping.
|
||||||
|
int mprotect(void* addr, size_t length, int prot);
|
||||||
|
|
||||||
<strong>SYS_MEMSTATS (67)</strong>
|
<strong>SYS_MEMSTATS (67)</strong>
|
||||||
Get kernel-wide physical memory usage (total/free/used bytes,
|
Get kernel-wide physical memory usage (total/free/used bytes,
|
||||||
page size).
|
page size).
|
||||||
void montauk::memstats(montauk::abi::MemStats* out);
|
void montauk::memstats(montauk::abi::MemStats* out);
|
||||||
|
|
||||||
|
|
||||||
<strong>TIMEKEEPING</strong>
|
<strong>TIMEKEEPING</strong>
|
||||||
<strong>SYS_GETTICKS (13)</strong>
|
<strong>SYS_GETTICKS (13)</strong>
|
||||||
Get APIC timer ticks since boot.
|
Get APIC timer ticks since boot.
|
||||||
@@ -310,25 +439,34 @@
|
|||||||
uint64_t montauk::get_milliseconds();
|
uint64_t montauk::get_milliseconds();
|
||||||
|
|
||||||
<strong>SYS_GETTIME (28)</strong>
|
<strong>SYS_GETTIME (28)</strong>
|
||||||
Get the current wall-clock date and time (UTC).
|
Get the current wall-clock date and time in the configured timezone.
|
||||||
Fills a montauk::abi::DateTime struct with Year, Month, Day,
|
Fills a montauk::abi::DateTime struct with Year, Month, Day,
|
||||||
Hour, Minute, and Second fields.
|
Hour, Minute, and Second fields.
|
||||||
void montauk::gettime(montauk::abi::DateTime* out);
|
void montauk::gettime(montauk::abi::DateTime* out);
|
||||||
|
|
||||||
|
<strong>SYS_SETUNIXTIME (153)</strong>
|
||||||
|
Set the system wall clock from a UTC Unix timestamp. Returns 0 on
|
||||||
|
success or -1 if the timestamp is outside the supported range. Requires
|
||||||
|
CAP_SET_TIME.
|
||||||
|
int montauk::set_unix_time(int64_t unixSeconds);
|
||||||
|
|
||||||
<strong>SYS_SETTZ (90)</strong>
|
<strong>SYS_SETTZ (90)</strong>
|
||||||
Set the process/system timezone offset, in minutes from UTC.
|
Set the system-wide timezone offset, in minutes from UTC. Requires
|
||||||
void montauk::settz(int offset_minutes);
|
CAP_SET_TIME.
|
||||||
|
int montauk::settz(int offset_minutes);
|
||||||
|
|
||||||
<strong>SYS_GETTZ (91)</strong>
|
<strong>SYS_GETTZ (91)</strong>
|
||||||
Get the current timezone offset, in minutes from UTC.
|
Get the current timezone offset, in minutes from UTC.
|
||||||
int montauk::gettz();
|
int montauk::gettz();
|
||||||
|
|
||||||
|
|
||||||
<strong>SYSTEM</strong>
|
<strong>SYSTEM</strong>
|
||||||
<strong>SYS_GETINFO (15)</strong>
|
<strong>SYS_GETINFO (15)</strong>
|
||||||
Get OS name, version string, API version, max process count,
|
Get OS name, version string, API version, max process count,
|
||||||
and the monotonic kernel build number.
|
and the monotonic kernel build number.
|
||||||
void montauk::get_info(montauk::abi::SysInfo* info);
|
void montauk::get_info(montauk::abi::SysInfo* info);
|
||||||
|
|
||||||
|
|
||||||
<strong>KEYBOARD</strong>
|
<strong>KEYBOARD</strong>
|
||||||
<strong>SYS_ISKEYAVAILABLE (16)</strong>
|
<strong>SYS_ISKEYAVAILABLE (16)</strong>
|
||||||
Check if a key event is pending (non-blocking).
|
Check if a key event is pending (non-blocking).
|
||||||
@@ -342,11 +480,19 @@
|
|||||||
Block until a printable character is typed.
|
Block until a printable character is typed.
|
||||||
char montauk::getchar();
|
char montauk::getchar();
|
||||||
|
|
||||||
|
<strong>SYS_GETCHAR_NB (166)</strong>
|
||||||
|
Return the next printable character, or 0 when none is
|
||||||
|
pending. Never blocks; key events carrying no ascii are
|
||||||
|
drained rather than left to stall a following getchar.
|
||||||
|
char montauk::getchar_nb();
|
||||||
|
|
||||||
<strong>SYS_INPUT_WAIT (123)</strong>
|
<strong>SYS_INPUT_WAIT (123)</strong>
|
||||||
Block until the input serial number differs from
|
Block until the input serial number differs from
|
||||||
observedSerial or the timeout elapses; used to sleep
|
observedSerial or the timeout elapses; used to sleep
|
||||||
efficiently between input-driven redraws.
|
efficiently between input-driven redraws.
|
||||||
uint64_t montauk::input_wait(uint64_t observedSerial, uint64_t timeoutMs);
|
uint64_t montauk::input_wait(uint64_t observedSerial,
|
||||||
|
uint64_t timeoutMs);
|
||||||
|
|
||||||
|
|
||||||
<strong>MOUSE</strong>
|
<strong>MOUSE</strong>
|
||||||
<strong>SYS_MOUSESTATE (47)</strong>
|
<strong>SYS_MOUSESTATE (47)</strong>
|
||||||
@@ -358,6 +504,7 @@
|
|||||||
dimensions).
|
dimensions).
|
||||||
void montauk::set_mouse_bounds(int32_t maxX, int32_t maxY);
|
void montauk::set_mouse_bounds(int32_t maxX, int32_t maxY);
|
||||||
|
|
||||||
|
|
||||||
<strong>NETWORKING</strong>
|
<strong>NETWORKING</strong>
|
||||||
<strong>SYS_PING (19)</strong>
|
<strong>SYS_PING (19)</strong>
|
||||||
Send an ICMP echo request and wait for reply.
|
Send an ICMP echo request and wait for reply.
|
||||||
@@ -377,7 +524,8 @@
|
|||||||
void montauk::get_netcfg(montauk::abi::NetCfg* out);
|
void montauk::get_netcfg(montauk::abi::NetCfg* out);
|
||||||
|
|
||||||
<strong>SYS_SETNETCFG (38)</strong>
|
<strong>SYS_SETNETCFG (38)</strong>
|
||||||
Set the network configuration (IP, mask, gateway, DNS server).
|
Set the network configuration (IP, mask, gateway, DNS server). Requires
|
||||||
|
CAP_NETWORK_ADMIN.
|
||||||
int montauk::set_netcfg(const montauk::abi::NetCfg* cfg);
|
int montauk::set_netcfg(const montauk::abi::NetCfg* cfg);
|
||||||
|
|
||||||
<strong>SYS_NETSTATUS (125)</strong>
|
<strong>SYS_NETSTATUS (125)</strong>
|
||||||
@@ -385,6 +533,53 @@
|
|||||||
and RX/TX packet counters.
|
and RX/TX packet counters.
|
||||||
int montauk::net_status(montauk::abi::NetStatus* out);
|
int montauk::net_status(montauk::abi::NetStatus* out);
|
||||||
|
|
||||||
|
<strong>SYS_NETIFS (165)</strong>
|
||||||
|
List registered link-layer network interfaces. The global IP
|
||||||
|
configuration belongs to the entry whose active field is set.
|
||||||
|
int montauk::net_interfaces(montauk::abi::NetIfInfo* buf,
|
||||||
|
int maxCount);
|
||||||
|
|
||||||
|
|
||||||
|
<strong>WI-FI</strong>
|
||||||
|
<strong>SYS_WIFI_SCAN (158)</strong>
|
||||||
|
Perform a channel scan and block until it finishes or timeoutMs
|
||||||
|
elapses. Returns the number of results, or -1 if no adapter is ready.
|
||||||
|
Requires CAP_NETWORK_ADMIN because it changes radio state.
|
||||||
|
int montauk::wifi_scan(montauk::abi::WifiNetwork* buf,
|
||||||
|
int maxCount, uint32_t timeoutMs);
|
||||||
|
|
||||||
|
<strong>SYS_WIFI_INFO (159)</strong>
|
||||||
|
Get adapter, link, scan, join, and last-error status.
|
||||||
|
int montauk::wifi_info(montauk::abi::WifiInfo* out);
|
||||||
|
|
||||||
|
<strong>SYS_WIFI_CONNECT (160)</strong>
|
||||||
|
Join a network and block until the link is up or the attempt fails.
|
||||||
|
Requires CAP_NETWORK_ADMIN.
|
||||||
|
int montauk::wifi_connect(const char* ssid,
|
||||||
|
const char* password);
|
||||||
|
|
||||||
|
<strong>SYS_WIFI_DISCONNECT (161)</strong>
|
||||||
|
Disconnect from the current Wi-Fi network. Requires CAP_NETWORK_ADMIN.
|
||||||
|
int montauk::wifi_disconnect();
|
||||||
|
|
||||||
|
<strong>SYS_WIFI_SCAN_START (162)</strong>
|
||||||
|
Start a non-blocking channel scan. Returns 0 if started, 1 if a scan
|
||||||
|
is already running, or -1 if no adapter is ready. Requires
|
||||||
|
CAP_NETWORK_ADMIN.
|
||||||
|
int montauk::wifi_scan_start(uint32_t timeoutMs);
|
||||||
|
|
||||||
|
<strong>SYS_WIFI_RESULTS (163)</strong>
|
||||||
|
Copy results from the most recent scan without accessing the radio.
|
||||||
|
int montauk::wifi_results(montauk::abi::WifiNetwork* buf,
|
||||||
|
int maxCount);
|
||||||
|
|
||||||
|
<strong>SYS_WIFI_CONNECT_ASYNC (164)</strong>
|
||||||
|
Start a non-blocking network join. Observe SYS_WIFI_INFO for progress
|
||||||
|
and the final result. Requires CAP_NETWORK_ADMIN.
|
||||||
|
int montauk::wifi_connect_async(const char* ssid,
|
||||||
|
const char* password);
|
||||||
|
|
||||||
|
|
||||||
<strong>SOCKETS</strong>
|
<strong>SOCKETS</strong>
|
||||||
<strong>SYS_SOCKET (29)</strong>
|
<strong>SYS_SOCKET (29)</strong>
|
||||||
Create a socket. type=SOCK_TCP (1) or SOCK_UDP (2).
|
Create a socket. type=SOCK_TCP (1) or SOCK_UDP (2).
|
||||||
@@ -431,6 +626,7 @@
|
|||||||
int montauk::recvfrom(int fd, void* buf, uint32_t maxLen,
|
int montauk::recvfrom(int fd, void* buf, uint32_t maxLen,
|
||||||
uint32_t* srcIp, uint16_t* srcPort);
|
uint32_t* srcIp, uint16_t* srcPort);
|
||||||
|
|
||||||
|
|
||||||
<strong>FRAMEBUFFER</strong>
|
<strong>FRAMEBUFFER</strong>
|
||||||
<strong>SYS_FBINFO (21)</strong>
|
<strong>SYS_FBINFO (21)</strong>
|
||||||
Get framebuffer dimensions and format.
|
Get framebuffer dimensions and format.
|
||||||
@@ -440,6 +636,34 @@
|
|||||||
Map the framebuffer into process memory.
|
Map the framebuffer into process memory.
|
||||||
void* montauk::fb_map();
|
void* montauk::fb_map();
|
||||||
|
|
||||||
|
<strong>SYS_FBFLIP (150)</strong>
|
||||||
|
Flip between double-buffered hardware scanout buffers. Index -1
|
||||||
|
queries support; index -2 acquires ownership and returns the current
|
||||||
|
front-buffer index. Flag bit 0 waits for vertical blank.
|
||||||
|
int64_t montauk::fb_flip(int64_t index, uint64_t flags);
|
||||||
|
|
||||||
|
|
||||||
|
<strong>DISPLAY CONTROL</strong>
|
||||||
|
<strong>SYS_DISPLAYINFO (154)</strong>
|
||||||
|
Get connector, mode, capability, and brightness information.
|
||||||
|
int montauk::display_info(montauk::abi::DisplayInfo* out);
|
||||||
|
|
||||||
|
<strong>SYS_DISPLAYMODES (155)</strong>
|
||||||
|
Enumerate supported display modes. Returns the number written.
|
||||||
|
int montauk::display_modes(montauk::abi::DisplayModeInfo* out,
|
||||||
|
int maxCount);
|
||||||
|
|
||||||
|
<strong>SYS_DISPLAYSETMODE (156)</strong>
|
||||||
|
Switch to a mode returned by SYS_DISPLAYMODES. Requires
|
||||||
|
CAP_DISPLAY_ADMIN.
|
||||||
|
int montauk::display_set_mode(int modeIndex);
|
||||||
|
|
||||||
|
<strong>SYS_DISPLAYBRIGHTNESS (157)</strong>
|
||||||
|
Set brightness to 0-100 percent, or pass -1 to query it. Setting requires
|
||||||
|
CAP_DISPLAY_ADMIN; querying does not.
|
||||||
|
int montauk::display_brightness(int percent = -1);
|
||||||
|
|
||||||
|
|
||||||
<strong>TERMINAL</strong>
|
<strong>TERMINAL</strong>
|
||||||
<strong>SYS_TERMSIZE (24)</strong>
|
<strong>SYS_TERMSIZE (24)</strong>
|
||||||
Get terminal dimensions (columns and rows).
|
Get terminal dimensions (columns and rows).
|
||||||
@@ -453,23 +677,28 @@
|
|||||||
void montauk::termscale(int scale_x, int scale_y);
|
void montauk::termscale(int scale_x, int scale_y);
|
||||||
void montauk::get_termscale(int* scale_x, int* scale_y);
|
void montauk::get_termscale(int* scale_x, int* scale_y);
|
||||||
|
|
||||||
|
|
||||||
<strong>RANDOM</strong>
|
<strong>RANDOM</strong>
|
||||||
<strong>SYS_GETRANDOM (45)</strong>
|
<strong>SYS_GETRANDOM (45)</strong>
|
||||||
Fill a buffer with random bytes using RDTSC-seeded entropy.
|
Fill a buffer with random bytes using RDTSC-seeded entropy.
|
||||||
Returns the number of bytes written.
|
Returns the number of bytes written.
|
||||||
int64_t montauk::getrandom(void* buf, uint32_t len);
|
int64_t montauk::getrandom(void* buf, uint32_t len);
|
||||||
|
|
||||||
|
|
||||||
<strong>POWER MANAGEMENT</strong>
|
<strong>POWER MANAGEMENT</strong>
|
||||||
<strong>SYS_RESET (26)</strong>
|
<strong>SYS_RESET (26)</strong>
|
||||||
Reboot the system.
|
Reboot the system. Requires CAP_POWER_CONTROL. A successful call does not
|
||||||
[[noreturn]] void montauk::reset();
|
return; an unauthorized call returns SYS_ERR_PERMISSION.
|
||||||
|
int montauk::reset();
|
||||||
|
|
||||||
<strong>SYS_SHUTDOWN (27)</strong>
|
<strong>SYS_SHUTDOWN (27)</strong>
|
||||||
Shut down the system.
|
Shut down the system. Requires CAP_POWER_CONTROL. A successful call does
|
||||||
[[noreturn]] void montauk::shutdown();
|
not return; an unauthorized call returns SYS_ERR_PERMISSION.
|
||||||
|
int montauk::shutdown();
|
||||||
|
|
||||||
<strong>SYS_SUSPEND (89)</strong>
|
<strong>SYS_SUSPEND (89)</strong>
|
||||||
Enter ACPI S3 sleep. Returns after wake, 0 on success.
|
Enter ACPI S3 sleep. Returns after wake, 0 on success. Requires
|
||||||
|
CAP_SUSPEND.
|
||||||
int montauk::suspend();
|
int montauk::suspend();
|
||||||
|
|
||||||
<strong>SYS_POWER_REQUEST (135)</strong>
|
<strong>SYS_POWER_REQUEST (135)</strong>
|
||||||
@@ -477,30 +706,56 @@
|
|||||||
posts a pending action (POWER_REQ_SHUTDOWN / POWER_REQ_REBOOT)
|
posts a pending action (POWER_REQ_SHUTDOWN / POWER_REQ_REBOOT)
|
||||||
then exits; login.elf reads it with POWER_REQ_QUERY
|
then exits; login.elf reads it with POWER_REQ_QUERY
|
||||||
(read-and-clear), runs the shutdown stages, and finally calls
|
(read-and-clear), runs the shutdown stages, and finally calls
|
||||||
shutdown()/reset(). See montauk::abi::PowerRequestAction.
|
shutdown()/reset(). Posting requires CAP_POWER_REQUEST; querying and
|
||||||
|
consuming the request requires CAP_POWER_CONTROL. See
|
||||||
|
montauk::abi::PowerRequestAction.
|
||||||
|
|
||||||
|
A request may also come from inside a session -- the shell's shutdown
|
||||||
|
builtin posts one. Since login only reads the request after the session
|
||||||
|
leader exits, the leader polls POWER_REQ_PEEK, a non-destructive read
|
||||||
|
requiring only CAP_POWER_REQUEST, and exits when one is pending.
|
||||||
int montauk::power_request(int action);
|
int montauk::power_request(int action);
|
||||||
|
int montauk::power_request_pending();
|
||||||
|
|
||||||
<strong>SYS_POWERINFO (149)</strong>
|
<strong>SYS_POWERINFO (149)</strong>
|
||||||
Get the CPU power/thermal snapshot (HWP state, throttling,
|
Get the CPU power/thermal snapshot (HWP state, throttling,
|
||||||
package temperature, base/max/effective frequency). Returns 0
|
package temperature, base/max/effective frequency). Returns 0
|
||||||
on success, -1 if unsupported by the running hardware.
|
on success, -1 if unsupported by the running hardware.
|
||||||
int montauk::syscall1(SYS_POWERINFO, (uint64_t)&out);
|
montauk::abi::PowerInfo out;
|
||||||
// out: montauk::abi::PowerInfo*
|
int64_t rc = montauk::syscall1(
|
||||||
|
montauk::abi::SYS_POWERINFO, (uint64_t)&out);
|
||||||
|
|
||||||
|
|
||||||
<strong>KERNEL LOG</strong>
|
<strong>KERNEL LOG</strong>
|
||||||
<strong>SYS_LOG (46)</strong>
|
<strong>SYS_LOG (46)</strong>
|
||||||
Read from the kernel ring log buffer.
|
Read from the kernel ring log buffer. Requires CAP_LOG_READ.
|
||||||
int64_t montauk::read_log(char* buf, uint64_t size);
|
int64_t montauk::read_log(char* buf, uint64_t size);
|
||||||
|
|
||||||
|
<strong>SYS_LOG_WRITE (176)</strong>
|
||||||
|
Append a userspace message to the system log.
|
||||||
|
int64_t montauk::write_log(const char* message);
|
||||||
|
|
||||||
|
|
||||||
<strong>I/O REDIRECTION</strong>
|
<strong>I/O REDIRECTION</strong>
|
||||||
Used by the terminal app and similar programs to run a child
|
Used by the terminal app and similar programs to run a child
|
||||||
process with its console I/O captured instead of going directly
|
process with its console I/O captured instead of going directly
|
||||||
to the framebuffer console.
|
to the framebuffer console.
|
||||||
|
|
||||||
<strong>SYS_SPAWN_REDIR (49)</strong>
|
<strong>SYS_SPAWN_REDIR (49)</strong>
|
||||||
Spawn a process with its console I/O redirected to the caller.
|
Spawn a process with its console I/O redirected to the caller. The child
|
||||||
|
receives no capabilities.
|
||||||
int montauk::spawn_redir(const char* path, const char* args = nullptr);
|
int montauk::spawn_redir(const char* path, const char* args = nullptr);
|
||||||
|
|
||||||
|
<strong>SYS_SPAWN_REDIR_CAPS (186)</strong>
|
||||||
|
Spawn a redirected child with explicit capability masks. It applies the
|
||||||
|
same subset and parent-delegable checks as SYS_SPAWN_CAPS. An
|
||||||
|
administrative console explicitly lets its shell delegate selected
|
||||||
|
capabilities; the shell's executable policy gives each trusted tool a
|
||||||
|
delegable mask of zero, preventing further propagation.
|
||||||
|
int montauk::spawn_redir_with_caps(
|
||||||
|
const char* path, const char* args,
|
||||||
|
const montauk::abi::SpawnCapabilities& capabilities);
|
||||||
|
|
||||||
<strong>SYS_CHILDIO_READ (50)</strong>
|
<strong>SYS_CHILDIO_READ (50)</strong>
|
||||||
Read buffered output produced by a redirected child.
|
Read buffered output produced by a redirected child.
|
||||||
int montauk::childio_read(int childPid, char* buf, int maxLen);
|
int montauk::childio_read(int childPid, char* buf, int maxLen);
|
||||||
@@ -511,12 +766,19 @@
|
|||||||
|
|
||||||
<strong>SYS_CHILDIO_WRITEKEY (52)</strong>
|
<strong>SYS_CHILDIO_WRITEKEY (52)</strong>
|
||||||
Forward a raw key event to a redirected child.
|
Forward a raw key event to a redirected child.
|
||||||
int montauk::childio_writekey(int childPid, const montauk::abi::KeyEvent* key);
|
int montauk::childio_writekey(
|
||||||
|
int childPid, const montauk::abi::KeyEvent* key);
|
||||||
|
|
||||||
<strong>SYS_CHILDIO_SETTERMSZ (53)</strong>
|
<strong>SYS_CHILDIO_SETTERMSZ (53)</strong>
|
||||||
Tell a redirected child its terminal dimensions changed.
|
Tell a redirected child its terminal dimensions changed.
|
||||||
int montauk::childio_settermsz(int childPid, int cols, int rows);
|
int montauk::childio_settermsz(int childPid, int cols, int rows);
|
||||||
|
|
||||||
|
<strong>SYS_TERMINAL_ATTACHED (177)</strong>
|
||||||
|
Return 1 when the calling process has a redirected userspace
|
||||||
|
terminal output stream, otherwise return 0.
|
||||||
|
bool montauk::terminal_attached();
|
||||||
|
|
||||||
|
|
||||||
<strong>WINDOW SERVER</strong>
|
<strong>WINDOW SERVER</strong>
|
||||||
Window server syscalls are used by GUI programs to create and
|
Window server syscalls are used by GUI programs to create and
|
||||||
drive an on-screen window (see montauk/Window.hpp for the
|
drive an on-screen window (see montauk/Window.hpp for the
|
||||||
@@ -579,6 +841,7 @@
|
|||||||
Set window flags (e.g. WIN_FLAG_FULLSCREEN).
|
Set window flags (e.g. WIN_FLAG_FULLSCREEN).
|
||||||
int montauk::win_setflags(int id, uint32_t flags);
|
int montauk::win_setflags(int id, uint32_t flags);
|
||||||
|
|
||||||
|
|
||||||
<strong>DEVICES</strong>
|
<strong>DEVICES</strong>
|
||||||
<strong>SYS_DEVLIST (63)</strong>
|
<strong>SYS_DEVLIST (63)</strong>
|
||||||
Enumerate detected devices (CPU, interrupts, timers, input,
|
Enumerate detected devices (CPU, interrupts, timers, input,
|
||||||
@@ -591,45 +854,51 @@
|
|||||||
size, NCQ/TRIM/SMART support, etc.).
|
size, NCQ/TRIM/SMART support, etc.).
|
||||||
int montauk::diskinfo(montauk::abi::DiskInfo* buf, int port);
|
int montauk::diskinfo(montauk::abi::DiskInfo* buf, int port);
|
||||||
|
|
||||||
|
|
||||||
<strong>STORAGE</strong>
|
<strong>STORAGE</strong>
|
||||||
<strong>SYS_PARTLIST (70)</strong>
|
<strong>SYS_PARTLIST (70)</strong>
|
||||||
Enumerate GPT partitions across all block devices.
|
Enumerate GPT partitions across all block devices.
|
||||||
int montauk::partlist(montauk::abi::PartInfo* buf, int max);
|
int montauk::partlist(montauk::abi::PartInfo* buf, int max);
|
||||||
|
|
||||||
<strong>SYS_DISKREAD (71)</strong>
|
<strong>SYS_DISKREAD (71)</strong>
|
||||||
Raw, driver-agnostic sector read from a block device.
|
Raw, driver-agnostic sector read from a block device. Requires
|
||||||
|
CAP_RAW_STORAGE.
|
||||||
int64_t montauk::disk_read(int blockDev, uint64_t lba,
|
int64_t montauk::disk_read(int blockDev, uint64_t lba,
|
||||||
uint32_t sectorCount, void* buf);
|
uint32_t sectorCount, void* buf);
|
||||||
|
|
||||||
<strong>SYS_DISKWRITE (72)</strong>
|
<strong>SYS_DISKWRITE (72)</strong>
|
||||||
Raw, driver-agnostic sector write to a block device.
|
Raw, driver-agnostic sector write to a block device. Requires
|
||||||
|
CAP_RAW_STORAGE.
|
||||||
int64_t montauk::disk_write(int blockDev, uint64_t lba,
|
int64_t montauk::disk_write(int blockDev, uint64_t lba,
|
||||||
uint32_t sectorCount, const void* buf);
|
uint32_t sectorCount, const void* buf);
|
||||||
|
|
||||||
<strong>SYS_GPTINIT (73)</strong>
|
<strong>SYS_GPTINIT (73)</strong>
|
||||||
Initialize a fresh GPT partition table on a block device.
|
Initialize a fresh GPT partition table on a block device. Requires
|
||||||
|
CAP_STORAGE_ADMIN.
|
||||||
int montauk::gpt_init(int blockDev);
|
int montauk::gpt_init(int blockDev);
|
||||||
|
|
||||||
<strong>SYS_GPTADD (74)</strong>
|
<strong>SYS_GPTADD (74)</strong>
|
||||||
Add a partition to an existing GPT table.
|
Add a partition to an existing GPT table. Requires CAP_STORAGE_ADMIN.
|
||||||
int montauk::gpt_add(const montauk::abi::GptAddParams* params);
|
int montauk::gpt_add(const montauk::abi::GptAddParams* params);
|
||||||
|
|
||||||
<strong>SYS_FSMOUNT (75)</strong>
|
<strong>SYS_FSMOUNT (75)</strong>
|
||||||
Mount a partition's filesystem onto a drive number.
|
Mount a partition's filesystem onto a drive number. Requires
|
||||||
|
CAP_STORAGE_ADMIN.
|
||||||
int montauk::fs_mount(int partIndex, int driveNum);
|
int montauk::fs_mount(int partIndex, int driveNum);
|
||||||
|
|
||||||
<strong>SYS_FSFORMAT (76)</strong>
|
<strong>SYS_FSFORMAT (76)</strong>
|
||||||
Format a partition with a filesystem (FS_TYPE_FAT32 or
|
Format a partition with a filesystem (FS_TYPE_FAT32 or
|
||||||
FS_TYPE_EXT2).
|
FS_TYPE_EXT2). Requires CAP_STORAGE_ADMIN.
|
||||||
int montauk::fs_format(const montauk::abi::FsFormatParams* params);
|
int montauk::fs_format(const montauk::abi::FsFormatParams* params);
|
||||||
|
|
||||||
<strong>SYS_FS_SYNC (134)</strong>
|
<strong>SYS_FS_SYNC (134)</strong>
|
||||||
Flush all block-device write caches and cleanly unmount
|
Flush all block-device write caches and cleanly unmount
|
||||||
disk-backed volumes ahead of power-off. Returns the number of
|
disk-backed volumes ahead of power-off. Returns the number of
|
||||||
volumes unmounted. Part of the graceful shutdown sequence
|
volumes unmounted. Part of the graceful shutdown sequence
|
||||||
(see SYS_POWER_REQUEST).
|
(see SYS_POWER_REQUEST). Requires CAP_STORAGE_ADMIN.
|
||||||
int montauk::fs_sync();
|
int montauk::fs_sync();
|
||||||
|
|
||||||
|
|
||||||
<strong>AUDIO</strong>
|
<strong>AUDIO</strong>
|
||||||
<strong>SYS_AUDIOOPEN (80)</strong>
|
<strong>SYS_AUDIOOPEN (80)</strong>
|
||||||
Open a mixer output stream at the given sample rate, channel
|
Open a mixer output stream at the given sample rate, channel
|
||||||
@@ -656,18 +925,21 @@
|
|||||||
audio_set_volume, audio_get_volume AUDIO_CTL_{SET,GET}_VOLUME (0/1)
|
audio_set_volume, audio_get_volume AUDIO_CTL_{SET,GET}_VOLUME (0/1)
|
||||||
audio_get_pos AUDIO_CTL_GET_POS (2)
|
audio_get_pos AUDIO_CTL_GET_POS (2)
|
||||||
audio_pause, audio_resume AUDIO_CTL_PAUSE (3)
|
audio_pause, audio_resume AUDIO_CTL_PAUSE (3)
|
||||||
audio_get_output AUDIO_CTL_GET_OUTPUT (4): 0=HDA, 1=Bluetooth
|
audio_get_output GET_OUTPUT (4): 0=HDA, 1=Bluetooth
|
||||||
audio_set_output AUDIO_CTL_SET_OUTPUT (5): switch all streams
|
audio_set_output SET_OUTPUT (5): all streams
|
||||||
(SET_OUTPUT, 5) switch a stream's output route
|
audio_ctl(handle, 5, output) SET_OUTPUT (5): one stream
|
||||||
audio_bt_status AUDIO_CTL_BT_STATUS (6)
|
audio_bt_status BT_STATUS (6): unavailable/setup/ready
|
||||||
audio_set_master_volume, _get_ AUDIO_CTL_{SET,GET}_MASTER_VOLUME (7/8), 0-100
|
audio_set_master_volume SET_MASTER_VOLUME (7), 0-100
|
||||||
audio_set_mute, audio_get_mute AUDIO_CTL_{SET,GET}_MUTE (9/10), per-stream
|
audio_get_master_volume GET_MASTER_VOLUME (8)
|
||||||
audio_set_master_mute, _get_ AUDIO_CTL_{SET,GET}_MASTER_MUTE (11/12)
|
audio_set_mute, audio_get_mute MUTE (9/10), per-stream
|
||||||
|
audio_set_master_mute SET_MASTER_MUTE (11)
|
||||||
|
audio_get_master_mute GET_MASTER_MUTE (12)
|
||||||
|
|
||||||
<strong>SYS_AUDIOLIST (128)</strong>
|
<strong>SYS_AUDIOLIST (128)</strong>
|
||||||
Enumerate active mixer streams (owner PID, name, format,
|
Enumerate active mixer streams (owner PID, name, format,
|
||||||
volume, mute/pause state).
|
volume, mute/pause state).
|
||||||
int montauk::audio_list(montauk::abi::AudioStreamInfo* buf, int maxCount);
|
int montauk::audio_list(montauk::abi::AudioStreamInfo* buf,
|
||||||
|
int maxCount);
|
||||||
|
|
||||||
<strong>SYS_AUDIOWAIT (129)</strong>
|
<strong>SYS_AUDIOWAIT (129)</strong>
|
||||||
Return the current mixer state serial. With timeoutMs > 0,
|
Return the current mixer state serial. With timeoutMs > 0,
|
||||||
@@ -675,18 +947,21 @@
|
|||||||
elapses; with timeoutMs == 0 it returns immediately.
|
elapses; with timeoutMs == 0 it returns immediately.
|
||||||
uint64_t montauk::audio_wait(uint64_t prevSerial, uint64_t timeoutMs);
|
uint64_t montauk::audio_wait(uint64_t prevSerial, uint64_t timeoutMs);
|
||||||
|
|
||||||
|
|
||||||
<strong>BLUETOOTH</strong>
|
<strong>BLUETOOTH</strong>
|
||||||
<strong>SYS_BTSCAN (84)</strong>
|
<strong>SYS_BTSCAN (84)</strong>
|
||||||
Scan for discoverable Bluetooth devices for up to timeoutMs.
|
Scan for discoverable Bluetooth devices for up to timeoutMs. Requires
|
||||||
|
CAP_DEVICE_ADMIN because it changes radio state.
|
||||||
int montauk::bt_scan(montauk::abi::BtScanResult* buf, int maxCount,
|
int montauk::bt_scan(montauk::abi::BtScanResult* buf, int maxCount,
|
||||||
uint32_t timeoutMs);
|
uint32_t timeoutMs);
|
||||||
|
|
||||||
<strong>SYS_BTCONNECT (85)</strong>
|
<strong>SYS_BTCONNECT (85)</strong>
|
||||||
Connect (and pair/bond if needed) to a device by BD_ADDR.
|
Connect (and pair/bond if needed) to a device by BD_ADDR. Requires
|
||||||
|
CAP_DEVICE_ADMIN.
|
||||||
int montauk::bt_connect(const uint8_t* bdAddr);
|
int montauk::bt_connect(const uint8_t* bdAddr);
|
||||||
|
|
||||||
<strong>SYS_BTDISCONNECT (86)</strong>
|
<strong>SYS_BTDISCONNECT (86)</strong>
|
||||||
Disconnect from a device by BD_ADDR.
|
Disconnect from a device by BD_ADDR. Requires CAP_DEVICE_ADMIN.
|
||||||
int montauk::bt_disconnect(const uint8_t* bdAddr);
|
int montauk::bt_disconnect(const uint8_t* bdAddr);
|
||||||
|
|
||||||
<strong>SYS_BTLIST (87)</strong>
|
<strong>SYS_BTLIST (87)</strong>
|
||||||
@@ -700,7 +975,8 @@
|
|||||||
<strong>SYS_BTSETADDR (137)</strong>
|
<strong>SYS_BTSETADDR (137)</strong>
|
||||||
Change the adapter's BD_ADDR (6-byte buffer, byte 0 is the
|
Change the adapter's BD_ADDR (6-byte buffer, byte 0 is the
|
||||||
least-significant octet). Volatile -- apply after the last
|
least-significant octet). Volatile -- apply after the last
|
||||||
controller reset and persist separately to bluetooth.toml.
|
controller reset and persist separately to bluetooth.toml. Requires
|
||||||
|
CAP_DEVICE_ADMIN.
|
||||||
int montauk::bt_set_addr(const uint8_t* bdAddr);
|
int montauk::bt_set_addr(const uint8_t* bdAddr);
|
||||||
|
|
||||||
<strong>SYS_BTBONDS (138)</strong>
|
<strong>SYS_BTBONDS (138)</strong>
|
||||||
@@ -708,61 +984,72 @@
|
|||||||
int montauk::bt_bonds(montauk::abi::BtBondInfo* buf, int maxCount);
|
int montauk::bt_bonds(montauk::abi::BtBondInfo* buf, int maxCount);
|
||||||
|
|
||||||
<strong>SYS_BTFORGET (139)</strong>
|
<strong>SYS_BTFORGET (139)</strong>
|
||||||
Forget a paired device; it must re-pair next time.
|
Forget a paired device; it must re-pair next time. Requires
|
||||||
|
CAP_DEVICE_ADMIN.
|
||||||
int montauk::bt_forget(const uint8_t* bdAddr);
|
int montauk::bt_forget(const uint8_t* bdAddr);
|
||||||
|
|
||||||
<strong>SOFTWARE-DEFINED RADIO</strong>
|
|
||||||
Receive-only SDR API. Receivers are enumerated by index in
|
|
||||||
[0, SYS_SDR_COUNT); SYS_SDR_OPEN returns a handle used by the
|
|
||||||
rest of the calls. Samples are delivered as interleaved 8-bit
|
|
||||||
unsigned I/Q (CU8, SDR_FORMAT_CU8) from the device's ring
|
|
||||||
buffer. Backed by an RTL-SDR (RTL2832U + R820T2) driver.
|
|
||||||
|
|
||||||
<strong>SYS_SDR_COUNT (140)</strong>
|
<strong>GENERIC USB INTERFACES</strong>
|
||||||
Number of available SDR receivers.
|
Process-owned access to USB interfaces that do not have a bound kernel
|
||||||
int montauk::sdr_count();
|
class driver. Claims are exclusive and are released automatically at
|
||||||
|
process exit. The current xHCI device model records one interface per
|
||||||
|
device slot, so claiming that interface temporarily claims the whole slot.
|
||||||
|
Kernel-owned HID, Bluetooth, mass-storage, and RTL-SDR interfaces are
|
||||||
|
visible in SYS_USB_LIST but cannot be claimed.
|
||||||
|
|
||||||
<strong>SYS_SDR_INFO (141)</strong>
|
<strong>SYS_USB_LIST (178)</strong>
|
||||||
Get static/dynamic info for one receiver by index (name, tuner,
|
List currently connected USB interfaces. Each UsbInterfaceInfo contains
|
||||||
frequency/sample-rate ranges, gain steps, present/streaming
|
stable identifiers for the current connection, endpoint addresses, maximum
|
||||||
flags).
|
packet sizes, and kernelDriverBound/claimed flags.
|
||||||
int montauk::sdr_info(int index, montauk::abi::SdrDeviceInfo* out);
|
int montauk::usb_list(montauk::abi::UsbInterfaceInfo* buf,
|
||||||
|
int maxCount);
|
||||||
|
|
||||||
<strong>SYS_SDR_OPEN (142)</strong>
|
<strong>SYS_USB_CLAIM (179)</strong>
|
||||||
Open a receiver by index. Returns a handle.
|
Exclusively claim an unbound interface. Returns a generation-checked handle
|
||||||
int montauk::sdr_open(int index);
|
owned by the calling process. Requires CAP_DEVICE_ADMIN; subsequent
|
||||||
|
operations are authorized by ownership of that handle.
|
||||||
|
int montauk::usb_claim(uint8_t slotId, uint8_t interfaceNumber);
|
||||||
|
|
||||||
<strong>SYS_SDR_CLOSE (143)</strong>
|
<strong>SYS_USB_CLOSE (180)</strong>
|
||||||
Close a receiver handle.
|
Stop active transfers and release a USB claim.
|
||||||
int montauk::sdr_close(int handle);
|
int montauk::usb_close(int handle);
|
||||||
|
|
||||||
<strong>SYS_SDR_START (144)</strong>
|
<strong>SYS_USB_CONTROL (181)</strong>
|
||||||
Begin streaming samples.
|
Execute a USB control transfer on endpoint zero. The requestType direction
|
||||||
int montauk::sdr_start(int handle);
|
bit determines whether data is read or written. request.length must equal
|
||||||
|
dataLen; control payloads are currently limited to 4096 bytes.
|
||||||
|
int montauk::usb_control(
|
||||||
|
int handle, const montauk::abi::UsbControlRequest* request,
|
||||||
|
void* data, uint32_t dataLen);
|
||||||
|
|
||||||
<strong>SYS_SDR_STOP (145)</strong>
|
<strong>SYS_USB_BULK_IN_START (182)</strong>
|
||||||
Stop streaming samples.
|
Start a continuous bulk-IN transfer pool. transferBytes is 1..4096 and
|
||||||
int montauk::sdr_stop(int handle);
|
bufferCount is 1..16. Completed data is copied into a 256 KiB per-claim
|
||||||
|
ring buffer.
|
||||||
|
int montauk::usb_bulk_in_start(int handle, uint32_t transferBytes,
|
||||||
|
uint32_t bufferCount);
|
||||||
|
|
||||||
<strong>SYS_SDR_READ (146)</strong>
|
<strong>SYS_USB_BULK_IN_STOP (183)</strong>
|
||||||
Non-blocking read of queued I/Q samples. Returns bytes copied.
|
Stop continuous bulk-IN transfers without releasing the claim.
|
||||||
int montauk::sdr_read(int handle, void* buf, uint32_t len);
|
int montauk::usb_bulk_in_stop(int handle);
|
||||||
|
|
||||||
<strong>SYS_SDR_SETPARAM (147)</strong>
|
<strong>SYS_USB_BULK_IN_READ (184)</strong>
|
||||||
Set a tunable parameter (see SDR_PARAM_* below).
|
Non-blocking read from the bulk-IN ring. Returns bytes copied, zero when no
|
||||||
int montauk::sdr_set_param(int handle, int param, uint64_t value);
|
data is queued, or USB_ERR_DISCONNECTED after queued data has been drained.
|
||||||
|
int montauk::usb_bulk_in_read(int handle, void* data, uint32_t dataLen);
|
||||||
|
|
||||||
<strong>SYS_SDR_GETPARAM (148)</strong>
|
Errors are USB_ERR_INVALID (-1), USB_ERR_BUSY (-2),
|
||||||
Get a tunable parameter's current value.
|
USB_ERR_DISCONNECTED (-3), USB_ERR_UNSUPPORTED (-4), USB_ERR_IO (-5),
|
||||||
int64_t montauk::sdr_get_param(int handle, int param);
|
USB_ERR_NO_RESOURCES (-6), USB_ERR_NOT_FOUND (-7), and
|
||||||
|
USB_ERR_KERNEL_BOUND (-8).
|
||||||
|
|
||||||
|
|
||||||
|
<strong>RESERVED SYSCALL NUMBERS</strong>
|
||||||
|
Syscall numbers 140 through 148 are reserved. They were used by an
|
||||||
|
experimental kernel SDR API and are intentionally not dispatched or exposed
|
||||||
|
through userspace syscall wrappers. RTL-SDR support is provided by
|
||||||
|
0:/os/rtlsdr.lib over the generic userspace USB API.
|
||||||
|
|
||||||
Parameters (montauk::abi::SDR_PARAM_*): FREQ (center frequency,
|
|
||||||
Hz), SAMPLE_RATE (Hz), GAIN_MODE (0=auto/AGC, 1=manual), GAIN
|
|
||||||
(tenths of dB), FREQ_CORR (ppm), AGC (demod digital AGC, 0/1),
|
|
||||||
DIRECT_SAMP (0=off, 1=I, 2=Q). Convenience wrappers exist for
|
|
||||||
each: sdr_set_freq/sdr_get_freq, sdr_set_sample_rate/
|
|
||||||
sdr_get_sample_rate, sdr_set_gain_mode, sdr_set_gain,
|
|
||||||
sdr_set_freq_correction, sdr_set_agc.
|
|
||||||
|
|
||||||
<strong>CLIPBOARD</strong>
|
<strong>CLIPBOARD</strong>
|
||||||
<strong>SYS_CLIPBOARD_SET_TEXT (119)</strong>
|
<strong>SYS_CLIPBOARD_SET_TEXT (119)</strong>
|
||||||
@@ -778,12 +1065,14 @@
|
|||||||
<strong>SYS_CLIPBOARD_GET_TEXT (121)</strong>
|
<strong>SYS_CLIPBOARD_GET_TEXT (121)</strong>
|
||||||
Read the clipboard's text contents.
|
Read the clipboard's text contents.
|
||||||
int montauk::clipboard_get_text(char* buf, uint32_t bufLen,
|
int montauk::clipboard_get_text(char* buf, uint32_t bufLen,
|
||||||
uint32_t* outLen, uint64_t* outSerial = nullptr);
|
uint32_t* outLen,
|
||||||
|
uint64_t* outSerial = nullptr);
|
||||||
|
|
||||||
<strong>SYS_CLIPBOARD_CLEAR (122)</strong>
|
<strong>SYS_CLIPBOARD_CLEAR (122)</strong>
|
||||||
Clear the clipboard.
|
Clear the clipboard.
|
||||||
int montauk::clipboard_clear();
|
int montauk::clipboard_clear();
|
||||||
|
|
||||||
|
|
||||||
<strong>GENERIC IPC</strong>
|
<strong>GENERIC IPC</strong>
|
||||||
Handle-based IPC primitives underlying streams, mailboxes,
|
Handle-based IPC primitives underlying streams, mailboxes,
|
||||||
waitsets, and shared-memory surfaces (see kernel/src/Ipc/Ipc.hpp).
|
waitsets, and shared-memory surfaces (see kernel/src/Ipc/Ipc.hpp).
|
||||||
@@ -823,13 +1112,15 @@
|
|||||||
<strong>SYS_MAILBOX_SEND (104)</strong>
|
<strong>SYS_MAILBOX_SEND (104)</strong>
|
||||||
Send a typed message, optionally attaching a handle to
|
Send a typed message, optionally attaching a handle to
|
||||||
transfer to the receiver.
|
transfer to the receiver.
|
||||||
int montauk::mailbox_send(int handle, uint32_t msgType, const void* data,
|
int montauk::mailbox_send(int handle, uint32_t msgType,
|
||||||
uint16_t len, int attachHandle = -1);
|
const void* data, uint16_t len,
|
||||||
|
int attachHandle = -1);
|
||||||
|
|
||||||
<strong>SYS_MAILBOX_RECV (105)</strong>
|
<strong>SYS_MAILBOX_RECV (105)</strong>
|
||||||
Receive a message.
|
Receive a message.
|
||||||
int montauk::mailbox_recv(int handle, uint32_t* outMsgType, void* data,
|
int montauk::mailbox_recv(int handle, uint32_t* outMsgType, void* data,
|
||||||
uint16_t* inOutLen, int* outAttachHandle = nullptr);
|
uint16_t* inOutLen,
|
||||||
|
int* outAttachHandle = nullptr);
|
||||||
|
|
||||||
<strong>SYS_WAITSET_CREATE (106)</strong>
|
<strong>SYS_WAITSET_CREATE (106)</strong>
|
||||||
Create a waitset for multiplexing waits across many handles.
|
Create a waitset for multiplexing waits across many handles.
|
||||||
@@ -847,7 +1138,8 @@
|
|||||||
<strong>SYS_WAITSET_WAIT (109)</strong>
|
<strong>SYS_WAITSET_WAIT (109)</strong>
|
||||||
Block until any member handle's watched signals fire, or
|
Block until any member handle's watched signals fire, or
|
||||||
timeoutMs elapses.
|
timeoutMs elapses.
|
||||||
int montauk::waitset_wait(int waitsetHandle, montauk::abi::IpcWaitResult* outReady,
|
int montauk::waitset_wait(
|
||||||
|
int waitsetHandle, montauk::abi::IpcWaitResult* outReady,
|
||||||
uint64_t timeoutMs = ~0ULL);
|
uint64_t timeoutMs = ~0ULL);
|
||||||
|
|
||||||
<strong>SYS_PROC_OPEN (110)</strong>
|
<strong>SYS_PROC_OPEN (110)</strong>
|
||||||
@@ -867,6 +1159,7 @@
|
|||||||
Resize a surface.
|
Resize a surface.
|
||||||
int montauk::surface_resize(int handle, uint64_t newSize);
|
int montauk::surface_resize(int handle, uint64_t newSize);
|
||||||
|
|
||||||
|
|
||||||
<strong>SHARED LIBRARIES</strong>
|
<strong>SHARED LIBRARIES</strong>
|
||||||
<strong>SYS_LOAD_LIB (114)</strong>
|
<strong>SYS_LOAD_LIB (114)</strong>
|
||||||
Load a shared library ELF (.lib) into the caller's address
|
Load a shared library ELF (.lib) into the caller's address
|
||||||
@@ -886,6 +1179,7 @@
|
|||||||
Get the base virtual address a loaded library was mapped at.
|
Get the base virtual address a loaded library was mapped at.
|
||||||
uint64_t montauk::get_libbase(int handle);
|
uint64_t montauk::get_libbase(int handle);
|
||||||
|
|
||||||
|
|
||||||
<strong>CRASH REPORTING</strong>
|
<strong>CRASH REPORTING</strong>
|
||||||
<strong>SYS_CRASH_REPORT (118)</strong>
|
<strong>SYS_CRASH_REPORT (118)</strong>
|
||||||
Retrieve the kernel-filled crash report for the last faulting
|
Retrieve the kernel-filled crash report for the last faulting
|
||||||
@@ -893,9 +1187,9 @@
|
|||||||
state, page-fault error bits). Used by the crashpad app.
|
state, page-fault error bits). Used by the crashpad app.
|
||||||
int montauk::crash_report(montauk::abi::CrashReportInfo* out);
|
int montauk::crash_report(montauk::abi::CrashReportInfo* out);
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
spawn(2), file(2), framebuffer(2), malloc(3), intro(1)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="spawn.html">spawn(2)</a>, <a href="file.html">file(2)</a>, <a href="framebuffer.html">framebuffer(2)</a>, <a href="malloc.html">malloc(3)</a>, <a href="intro.html">intro(1)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
@@ -111,11 +111,13 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
tls-errors - BearSSL TLS and X.509 error codes
|
tls-errors - BearSSL TLS and X.509 error codes
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
MontaukOS uses BearSSL for TLS 1.2 connections. When a TLS
|
MontaukOS uses BearSSL for TLS 1.2 connections. When a TLS
|
||||||
operation fails, an integer error code is reported. This page
|
operation fails, an integer error code is reported. This page
|
||||||
lists all possible error codes.
|
lists all possible error codes.
|
||||||
|
|
||||||
|
|
||||||
<strong>SSL/TLS ENGINE ERRORS</strong>
|
<strong>SSL/TLS ENGINE ERRORS</strong>
|
||||||
|
|
||||||
<strong>0 BR_ERR_OK</strong>
|
<strong>0 BR_ERR_OK</strong>
|
||||||
@@ -221,6 +223,7 @@
|
|||||||
<strong>31 BR_ERR_IO</strong>
|
<strong>31 BR_ERR_IO</strong>
|
||||||
I/O error or premature close on the underlying transport.
|
I/O error or premature close on the underlying transport.
|
||||||
|
|
||||||
|
|
||||||
<strong>X.509 CERTIFICATE ERRORS</strong>
|
<strong>X.509 CERTIFICATE ERRORS</strong>
|
||||||
|
|
||||||
<strong>32 BR_ERR_X509_OK</strong>
|
<strong>32 BR_ERR_X509_OK</strong>
|
||||||
@@ -314,6 +317,7 @@
|
|||||||
<strong>62 BR_ERR_X509_NOT_TRUSTED</strong>
|
<strong>62 BR_ERR_X509_NOT_TRUSTED</strong>
|
||||||
Chain could not be linked to a trust anchor.
|
Chain could not be linked to a trust anchor.
|
||||||
|
|
||||||
|
|
||||||
<strong>FATAL ALERTS</strong>
|
<strong>FATAL ALERTS</strong>
|
||||||
When a fatal alert is received from the peer, the error code
|
When a fatal alert is received from the peer, the error code
|
||||||
is 256 + the TLS alert value. When a fatal alert is sent to
|
is 256 + the TLS alert value. When a fatal alert is sent to
|
||||||
@@ -342,9 +346,9 @@
|
|||||||
For example, error 296 means a handshake_failure alert was
|
For example, error 296 means a handshake_failure alert was
|
||||||
received (256 + 40 = 296).
|
received (256 + 40 = 296).
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
fetch(1), syscalls(2)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="fetch.html">fetch(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
+11
-2
@@ -111,11 +111,13 @@
|
|||||||
<pre><code><strong>NAME</strong>
|
<pre><code><strong>NAME</strong>
|
||||||
wiki - Wikipedia article viewer for MontaukOS
|
wiki - Wikipedia article viewer for MontaukOS
|
||||||
|
|
||||||
|
|
||||||
<strong>SYNOPSIS</strong>
|
<strong>SYNOPSIS</strong>
|
||||||
wiki <title>
|
wiki <title>
|
||||||
wiki -f <title>
|
wiki -f <title>
|
||||||
wiki -s <query>
|
wiki -s <query>
|
||||||
|
|
||||||
|
|
||||||
<strong>DESCRIPTION</strong>
|
<strong>DESCRIPTION</strong>
|
||||||
wiki fetches and displays Wikipedia articles in the terminal.
|
wiki fetches and displays Wikipedia articles in the terminal.
|
||||||
It connects to en.wikipedia.org over HTTPS (TLS 1.2) and
|
It connects to en.wikipedia.org over HTTPS (TLS 1.2) and
|
||||||
@@ -126,6 +128,7 @@
|
|||||||
color-coded headings and word-wrapped text. Multi-word titles
|
color-coded headings and word-wrapped text. Multi-word titles
|
||||||
are accepted as separate arguments and joined automatically.
|
are accepted as separate arguments and joined automatically.
|
||||||
|
|
||||||
|
|
||||||
<strong>OPTIONS</strong>
|
<strong>OPTIONS</strong>
|
||||||
<strong>-f</strong>
|
<strong>-f</strong>
|
||||||
Full article mode. Display the complete article text instead
|
Full article mode. Display the complete article text instead
|
||||||
@@ -136,6 +139,7 @@
|
|||||||
query and display a numbered list of up to 10 results.
|
query and display a numbered list of up to 10 results.
|
||||||
Press a number key to view that article's summary.
|
Press a number key to view that article's summary.
|
||||||
|
|
||||||
|
|
||||||
<strong>EXAMPLES</strong>
|
<strong>EXAMPLES</strong>
|
||||||
wiki Linux
|
wiki Linux
|
||||||
Show a summary of the Linux article.
|
Show a summary of the Linux article.
|
||||||
@@ -146,13 +150,16 @@
|
|||||||
wiki -s operating system
|
wiki -s operating system
|
||||||
Search for articles related to "operating system".
|
Search for articles related to "operating system".
|
||||||
|
|
||||||
|
|
||||||
<strong>TLS SUPPORT</strong>
|
<strong>TLS SUPPORT</strong>
|
||||||
Connections use BearSSL for TLS 1.2. Server certificates
|
Connections use BearSSL for TLS 1.2. Server certificates
|
||||||
are validated against the system CA bundle at
|
are validated against the system CA bundle at
|
||||||
0:/os/certs/ca-certificates.crt.
|
0:/os/certs/ca-certificates.crt.
|
||||||
|
|
||||||
|
|
||||||
<strong>KEYBOARD</strong>
|
<strong>KEYBOARD</strong>
|
||||||
|
|
||||||
|
|
||||||
<strong>Article pager</strong>
|
<strong>Article pager</strong>
|
||||||
j / Down Scroll down one line
|
j / Down Scroll down one line
|
||||||
k / Up Scroll up one line
|
k / Up Scroll up one line
|
||||||
@@ -162,16 +169,18 @@
|
|||||||
G / End Jump to bottom
|
G / End Jump to bottom
|
||||||
q Quit pager
|
q Quit pager
|
||||||
|
|
||||||
|
|
||||||
<strong>Search results</strong>
|
<strong>Search results</strong>
|
||||||
1-9, 0 View article (0 = result 10)
|
1-9, 0 View article (0 = result 10)
|
||||||
q Quit search
|
q Quit search
|
||||||
|
|
||||||
|
|
||||||
<strong>General</strong>
|
<strong>General</strong>
|
||||||
Ctrl+Q Abort during network request
|
Ctrl+Q Abort during network request
|
||||||
|
|
||||||
<strong>SEE ALSO</strong>
|
|
||||||
fetch(1), ping(1), nslookup(1), shell(1)</code></pre>
|
|
||||||
|
|
||||||
|
<strong>SEE ALSO</strong>
|
||||||
|
<a href="fetch.html">fetch(1)</a>, <a href="ping.html">ping(1)</a>, <a href="nslookup.html">nslookup(1)</a>, <a href="shell.html">shell(1)</a></code></pre>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
|
|||||||
Reference in new issue
Block a user