All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jdk.internal.sys.posix.Ucontext Maven / Gradle / Ivy

There is a newer version: 17.alpha.0.57
Show newest version
package jdk.internal.sys.posix;

import static org.qbicc.runtime.CNative.*;
import static jdk.internal.sys.posix.Signal.*;
import static org.qbicc.runtime.stdc.Signal.*;

import java.util.function.BooleanSupplier;

import org.qbicc.runtime.Build;

@include("")
public class Ucontext {
    public static native c_int getcontext(ptr ucp);
    // setcontext, makecontext, and swapcontext were removed in POSIX.1-2008

    public static final class ucontext_t extends object {
        public ptr uc_link;
        public sigset_t uc_sigmask;
        public stack_t uc_stack;
        public mcontext_t uc_mcontext;
    }

    @incomplete(unless = Build.Target.IsAmd64.class)
    public static final class greg_t extends word {}

    @define("__USE_MISC")
    @define("__USE_GNU")
    public static final class mcontext_t extends object {

        @incomplete(unless = HasGRegs.class)
        // gregset_t == greg_t[NGREG] but we can probe the size rather than specifying
        public greg_t[] gregs;
    }

    @define("__USE_GNU")
    @incomplete(unless = HasGRegs.class)
    public static final c_int REG_PC = constant();

    public static final class HasGRegs implements BooleanSupplier {
        public boolean getAsBoolean() {
            return Build.Target.isLinux() && (Build.Target.isAmd64() || Build.Target.isI386());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy