Repository navigation
0.26.2: i386 (openkal 0.25.1, clause 5.5); one rt_sigaction record and one return from a handler - #55
Merged
Merged
Conversation
…d one return from a handler
…or the shared rt_sigreturn
…o unit names another's symbol outside the namespace
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
openkal-linux 0.26.2: the implementation on i386 (openkal 0.25.1, clause 5.5; design K7). No interface changes; x86_64 and aarch64 call the same system calls as before.
i386
src/sys.h)int $0x80, the sixth argument inebp; i386's own table. Where a call has a 64-bit time form, the name stands for it (clock_gettime64,clock_getres_time64,ppoll_time64,futex_time64,utimensat_time64).okl::openat(O_LARGEFILEon i386),fstat/fstatat(viastatxon i386:stat64's times are 32-bit),fstatfs(statfs64),mmap(mmap2, pages),lseek(_llseek),pread/pwrite(pread64with the position in two words),ftruncate(ftruncate64),nanosleep(clock_nanosleep_time64). The common numbers are -1 on i386, so a call that bypassed them fails instead of truncating a position.kflockwithout the padding (flock64aligns positions to 4);kstatfilled fromstatx; ELF32 program headers for the thread-local image and for the fault report's symbol lookup.set_thread_area,%gs;clonewithCLONE_SETTLStakes auser_desc;__okl_cloneand_startfor i386; the fault report reads i386'sucontext.src/handle.h); a program's handle: kind in bits 30-31, number in 0-21, an observed program's start in 22-29, an opened program's descriptor (its number from/proc/self/fdinfo).clock_gettime64is called.Duplicates converged (P17)
rt_sigaction's record was declared three times with anunsigned longmask (half of i386's 64-bit set, and the size the call is told was refused there); oneokl::k_sigactionwith a 64-bit mask now. The return from a handler was written twice (observe.cpp, process.cpp); oneokl_signal_return.Verification
tools/word32-check.sh(new, and a step of the CI job's llvm leg): buildssrc/*.cppstandalone for i386 with-Werror, linkstests/word32/runs.cppwith ld.lld, runs it: a pointer is 4 bytes; a file is written, read, sized and sought at 5 GiB; a task with its own thread-local value is started and joined; a 20 ms sleep through the 64-bit clock. Local: all held.run-conformance.sh openkal-linux . full): 261 held, 0 did not hold;mcpp test: 22 passed.