Skip to content

0.12.0 --- an enumeration ends with its directory, an 8 MiB reservation, and the input position as measured - #32

Merged
Sunrisepeak merged 10 commits into
mainfrom
openkal-0.16.0
Oct 24, 2026
Merged

Sunrisepeak merged 10 commits into
mainfrom
openkal-0.16.0

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member
  • An enumeration ends when its directory is closed, under a slim lock, with a closed directory and a mismatched iterator refused and a racing close safe (clause 6.6). Measured with GetProcessHandleCount: 104 before and after sixty-four abandoned enumerations.
  • A started context is given an 8 MiB reservation unless more is asked for, the same room the other two implementations give; kal_task_start_sized (openkal 0.16) reserves at least the size requested. Measured: 1 MiB asked, 8.25 MiB told; 64 MiB asked, 64.25 MiB told.
  • KAL_TERM_PASS_INPUT is virtual terminal input with line input off. Measured on a console the test allocates, with key events written into it: with line input off and virtual terminal input off the return key is 0x0d and Ctrl+J produces no byte; with virtual terminal input on they are 0x0d and 0x0a, the bytes the other two deliver with the position set; with line input on, 61 0d 0a, so the position reads clear there and a request leaves it so.

…rectory is refused by kal_fs_list_next

The shape openkal-linux#34 measured was here too. Listings not yet read to the
end are kept on a list under a slim lock with their directory's handle, the
close ends them, a listing another context is reading is released by that
context on its way out (clause 6.6), and the iterator is found among the open
listings rather than read through.
…sk_start_sized asks

A reservation, as the other two implementations give, so a program that asks
for nothing has the same room on all three. The reservation exceeds the request
by the pages this environment keeps for its guard, so the context is told at
least what it asked for.
This environment alters what is typed only while it assembles lines, and has no
switch of its own for the alteration; the position is reported as it stands and
a request for it is neither refused nor composed.
The leak is counted in this environment's table of the process's handles; a
closed directory and a mismatched one are refused, and a close racing a read
ends it. A console allocated by the test is given the return key and Ctrl+J as
key events, and what arrives under each mode is printed beside the position's
read-back. A least stack size is room, and asking for nothing gives 8 MiB.
The call that maps a key to one is user32's, which a test linked as this
package's are does not reach; a key event written by a program carries none.
…the position states: the return key is 0x0d, and Ctrl+J is not it
…es a byte, so a key that produces none is measured rather than waited for
… measured

With line input off and virtual terminal input off, the console delivered the
return key as 0x0d and consumed Ctrl+J without a byte, which alters what was
typed; with virtual terminal input on it delivered 0x0d and 0x0a, the bytes the
other two implementations deliver with the position set. The position is read
from both flags and established by the second; with line input on it reads
clear and a request leaves it so. A console that refuses virtual terminal input
is written again without it.
@Sunrisepeak
Sunrisepeak merged commit a0112c0 into main Oct 24, 2026
8 checks passed
@Sunrisepeak
Sunrisepeak deleted the openkal-0.16.0 branch October 24, 2026 22:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant