public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: frysk.sys.Fork.* return a ProcessIdentifier. Date: Wed, 06 Feb 2008 22:25:00 -0000 [thread overview] Message-ID: <20080206222513.9556.qmail@sourceware.org> (raw) The branch, master has been updated via 72daf237213a1f1758262e493f709c74a7f37630 (commit) from 24d8dca03611b748442112923bd6aeb02c9b249d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 72daf237213a1f1758262e493f709c74a7f37630 Author: Andrew Cagney <cagney@redhat.com> Date: Wed Feb 6 17:24:04 2008 -0500 frysk.sys.Fork.* return a ProcessIdentifier. frysk-core/frysk/proc/live/ChangeLog 2008-02-06 Andrew Cagney <cagney@redhat.com> * LinuxPtraceHost.java: Update to match frysk.sys.Fork. * TestRefresh.java: Ditto. frysk-core/frysk/testbed/ChangeLog 2008-02-06 Andrew Cagney <cagney@redhat.com> * OffspringType.java: Update to match frysk.sys.Fork. * SynchronizedOffspring.java: Ditto. frysk-sys/frysk/sys/ChangeLog 2008-02-06 Andrew Cagney <cagney@redhat.com> * Wait.java (drain(ProcessIdentifier)) (drainNoHang(ProcessIdentifier)) (wait(ProcessIdentifier,WaitBuilder,SignalBuilder,long,boolean)) (waitAll(ProcessIdentifier, WaitBuilder)): New. * Fork.java (exec, daemon, ptrace): Return a ProcessIdentifier. * cni/Fork.cxx: Update. * TestWait.java: Update. * TestFork.java: Update. * TestPtrace.java: Update. frysk-sys/frysk/testbed/ChangeLog 2008-02-06 Andrew Cagney <cagney@redhat.com> * TestTearDownProcess.java: Update to match frysk.sys.Fork. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/proc/live/ChangeLog | 5 + frysk-core/frysk/proc/live/LinuxPtraceHost.java | 6 +- frysk-core/frysk/testbed/ChangeLog | 5 + frysk-core/frysk/testbed/OffspringType.java | 30 +++++--- .../frysk/testbed/SynchronizedOffspring.java | 14 ++-- frysk-sys/frysk/sys/ChangeLog | 10 +++ frysk-sys/frysk/sys/Fork.java | 26 +++---- frysk-sys/frysk/sys/TestFork.java | 17 ++-- frysk-sys/frysk/sys/TestPtrace.java | 44 +++++------ frysk-sys/frysk/sys/TestWait.java | 16 ++-- frysk-sys/frysk/sys/Wait.java | 79 +++++++++++-------- frysk-sys/frysk/sys/cni/Fork.cxx | 27 ++++--- frysk-sys/frysk/testbed/ChangeLog | 4 + frysk-sys/frysk/testbed/TestTearDownProcess.java | 63 +++++++--------- 14 files changed, 193 insertions(+), 153 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index 9f54dab..01f0b15 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,3 +1,8 @@ +2008-02-06 Andrew Cagney <cagney@redhat.com> + + * LinuxPtraceHost.java: Update to match frysk.sys.Fork. + * TestRefresh.java: Ditto. + 2008-01-31 Andrew Cagney <cagney@redhat.com> * LinuxPtraceHost.java (requestRefresh(Set,HostRefreshBuilder)) diff --git a/frysk-core/frysk/proc/live/LinuxPtraceHost.java b/frysk-core/frysk/proc/live/LinuxPtraceHost.java index 3a7ddd3..14a7e16 100644 --- a/frysk-core/frysk/proc/live/LinuxPtraceHost.java +++ b/frysk-core/frysk/proc/live/LinuxPtraceHost.java @@ -52,6 +52,7 @@ import java.util.Iterator; import frysk.proc.TaskId; import frysk.proc.Task; import frysk.proc.TaskObserver.Attached; +import frysk.sys.ProcessIdentifier; import frysk.proc.Manager; import java.util.logging.Level; import frysk.sys.Fork; @@ -244,7 +245,8 @@ public class LinuxPtraceHost extends LiveHost { Manager.eventLoop.add(new Event() { public void execute() { logger.log(Level.FINE, "{0} sendCreateAttachedProc\n", this); - int pid = Fork.ptrace(stdin, stdout, stderr, args); + ProcessIdentifier pid + = Fork.ptrace(stdin, stdout, stderr, args); // See if the Host knows about this task. TaskId myTaskId = new TaskId(Tid.get()); Task myTask = get(myTaskId); @@ -253,7 +255,7 @@ public class LinuxPtraceHost extends LiveHost { Proc myProc = getSelf(); myTask = new LinuxPtraceTask(myProc, myTaskId); } - LinuxPtraceProc proc = new LinuxPtraceProc (myTask, new ProcId(pid)); + LinuxPtraceProc proc = new LinuxPtraceProc (myTask, new ProcId(pid.intValue())); new LinuxPtraceTask(proc, attachedObserver); } }); diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog index 3c18689..265a881 100644 --- a/frysk-core/frysk/testbed/ChangeLog +++ b/frysk-core/frysk/testbed/ChangeLog @@ -1,3 +1,8 @@ +2008-02-06 Andrew Cagney <cagney@redhat.com> + + * OffspringType.java: Update to match frysk.sys.Fork. + * SynchronizedOffspring.java: Ditto. + 2008-01-25 Andrew Cagney <cagney@redhat.com> * TestIsa.java: New. diff --git a/frysk-core/frysk/testbed/OffspringType.java b/frysk-core/frysk/testbed/OffspringType.java index fb7352c..f86e20e 100644 --- a/frysk-core/frysk/testbed/OffspringType.java +++ b/frysk-core/frysk/testbed/OffspringType.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2007, Red Hat Inc. +// Copyright 2007, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -44,17 +44,23 @@ import frysk.proc.Manager; import frysk.proc.TaskObserver; import frysk.proc.Action; import frysk.proc.Task; +import frysk.sys.ProcessIdentifier; +import frysk.sys.ProcessIdentifierFactory; public abstract class OffspringType { private OffspringType() { } - public abstract int startOffspring(String stdin, String stdout, - String stderr, String[] argv); + public abstract ProcessIdentifier startOffspring(String stdin, + String stdout, + String stderr, + String[] argv); /** * Create a daemon offspring. */ static public final OffspringType DAEMON = new OffspringType() { - public int startOffspring (String stdin, String stdout, - String stderr, String[] argv) { + public ProcessIdentifier startOffspring(String stdin, + String stdout, + String stderr, + String[] argv) { return Fork.daemon(stdin, stdout, stderr, argv); } }; @@ -62,8 +68,10 @@ public abstract class OffspringType { * Create a child offspring. */ static public final OffspringType CHILD = new OffspringType() { - public int startOffspring (String stdin, String stdout, - String stderr, String[] argv) { + public ProcessIdentifier startOffspring(String stdin, + String stdout, + String stderr, + String[] argv) { return Fork.exec(stdin, stdout, stderr, argv); } }; @@ -71,8 +79,10 @@ public abstract class OffspringType { * Create a running attached child offspring. */ static protected final OffspringType ATTACHED_CHILD = new OffspringType() { - public int startOffspring (String stdin, String stdout, - String stderr, String[] argv) { + public ProcessIdentifier startOffspring(String stdin, + String stdout, + String stderr, + String[] argv) { // Capture the child process id as it flys past. class TidObserver extends TaskObserverBase @@ -93,7 +103,7 @@ public abstract class OffspringType { tidObserver); TestLib.assertRunUntilStop("starting attached child"); // Return that captured TID. - return tidObserver.tid; + return ProcessIdentifierFactory.createFIXME(tidObserver.tid); } }; } diff --git a/frysk-core/frysk/testbed/SynchronizedOffspring.java b/frysk-core/frysk/testbed/SynchronizedOffspring.java index 2027803..75d7307 100644 --- a/frysk-core/frysk/testbed/SynchronizedOffspring.java +++ b/frysk-core/frysk/testbed/SynchronizedOffspring.java @@ -40,6 +40,7 @@ package frysk.testbed; import frysk.sys.Signal; +import frysk.sys.ProcessIdentifier; import frysk.proc.Manager; import java.util.logging.Level; @@ -57,20 +58,21 @@ public class SynchronizedOffspring // mask all the way down to the exec'ed child. public static final Signal START_ACK = Signal.HUP; - private final int pid; + private final ProcessIdentifier pid; + /** * Return the ProcessID of the child. */ - public int getPid () { - return pid; + public int getPid() { + return pid.intValue(); } /** * Create a child process (using startChild), return once the * process is running. Wait for acknowledge SIG. */ - protected SynchronizedOffspring (OffspringType type, - Signal sig, String[] argv) { + protected SynchronizedOffspring(OffspringType type, + Signal sig, String[] argv) { logger.log(Level.FINE, "{0} new ...\n", this); SignalWaiter ack = new SignalWaiter(Manager.eventLoop, sig, "startOffspring"); @@ -81,7 +83,7 @@ public class SynchronizedOffspring TearDownProcess.add(pid); ack.assertRunUntilSignaled(); logger.log(Level.FINE, "{0} ... new pid {1,number,integer}\n", - new Object[] {this, new Integer(pid) }); + new Object[] { this, pid }); } public SynchronizedOffspring(Signal sig, String[] argv) { diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index 043f839..366fbc7 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,5 +1,15 @@ 2008-02-06 Andrew Cagney <cagney@redhat.com> + * Wait.java (drain(ProcessIdentifier)) + (drainNoHang(ProcessIdentifier)) + (wait(ProcessIdentifier,WaitBuilder,SignalBuilder,long,boolean)) + (waitAll(ProcessIdentifier, WaitBuilder)): New. + * Fork.java (exec, daemon, ptrace): Return a ProcessIdentifier. + * cni/Fork.cxx: Update. + * TestWait.java: Update. + * TestFork.java: Update. + * TestPtrace.java: Update. + * cni/Errno.hxx (tryGarbageCollect(int&): Delete. (tryGarbageCollect(int&,int,const char*)): Delete. (tryGarbageCollect(int&,int,const char*,const char*,int)): Delete. diff --git a/frysk-sys/frysk/sys/Fork.java b/frysk-sys/frysk/sys/Fork.java index 14b0977..587147c 100644 --- a/frysk-sys/frysk/sys/Fork.java +++ b/frysk-sys/frysk/sys/Fork.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2005, 2007, Red Hat Inc. +// Copyright 2005, 2007, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -44,22 +44,20 @@ package frysk.sys; * sort of exec. */ -public final class Fork -{ +public final class Fork { /** * Create a child process running ARGV[0] with arguments * ARGV[1..]. * * Also wire up IN, OUT, and ERR. */ - public static native int exec (String in, String out, String err, - String[] argv); + public static native ProcessIdentifier exec(String in, String out, + String err, String[] argv); /** * Create a child process running ARGV[0] with arguments * ARGV[1..]. */ - public static final int exec (String[] argv) - { + public static final ProcessIdentifier exec(String[] argv) { return exec (null, null, null, argv); } @@ -69,14 +67,13 @@ public final class Fork * * Also wire up IN, OUT, and ERR. */ - public static native int ptrace (String in, String out, String err, - String[] argv); + public static native ProcessIdentifier ptrace(String in, String out, + String err, String[] argv); /** * Create a child process running ARGV[0] with arguments * ARGV[1...]; mark the process for tracing. */ - public static final int ptrace (String[] argv) - { + public static final ProcessIdentifier ptrace(String[] argv) { return ptrace (null, null, null, argv); } @@ -86,14 +83,13 @@ public final class Fork * * Also wire up IN, OUT, and ERR. */ - public static native int daemon (String in, String out, String err, - String[] argv); + public static native ProcessIdentifier daemon(String in, String out, + String err, String[] argv); /** * Create a "daemon" process running ARGV[0] with arguments * ARGV[1...]; a daemon has process ID 1 as its parent. */ - public static final int daemon (String[] argv) - { + public static final ProcessIdentifier daemon(String[] argv) { return daemon (null, null, null, argv); } } diff --git a/frysk-sys/frysk/sys/TestFork.java b/frysk-sys/frysk/sys/TestFork.java index 308b785..0ab8809 100644 --- a/frysk-sys/frysk/sys/TestFork.java +++ b/frysk-sys/frysk/sys/TestFork.java @@ -75,13 +75,14 @@ public class TestFork assertTrue("SIGHUP masked", new SignalSet().getProcMask().contains(Signal.HUP)); logger.log(Level.FINE, "Creating funit-procmask to check the mask\n"); - int pid = Fork.exec(null, "/dev/null", null, - new String[] { - Config.getPkgLibFile("funit-procmask") - .getPath(), - "-n", - "1" - }); + ProcessIdentifier pid + = Fork.exec(null, "/dev/null", null, + new String[] { + Config.getPkgLibFile("funit-procmask") + .getPath(), + "-n", + "1" + }); TearDownProcess.add(pid); // Capture the child's status; to see if it was correct. class ExitStatus extends UnhandledWaitBuilder { @@ -111,7 +112,7 @@ public class TestFork }, getTimeoutMilliseconds()); // (a timeout will also fail with the below) - assertEquals("pid", pid, exitStatus.pid); + assertEquals("pid", pid.intValue(), exitStatus.pid); assertEquals("signal", null, exitStatus.signal); assertEquals("status", 0, exitStatus.status); } diff --git a/frysk-sys/frysk/sys/TestPtrace.java b/frysk-sys/frysk/sys/TestPtrace.java index 97c016f..7b9a8b8 100644 --- a/frysk-sys/frysk/sys/TestPtrace.java +++ b/frysk-sys/frysk/sys/TestPtrace.java @@ -61,52 +61,48 @@ public class TestPtrace TearDownProcess.tearDown (); } - public void testChildContinue () - { - final int pid = Fork.ptrace(null, null, null, - new String[] { "/bin/true" }); - assertTrue ("pid", pid > 0); - TearDownProcess.add (pid); + public void testChildContinue() { + final ProcessIdentifier pid + = Fork.ptrace(null, null, null, + new String[] { + "/bin/true" + }); + assertTrue("pid", pid.intValue() > 0); + TearDownProcess.add(pid); // The initial stop. - Wait.waitAll (pid, new UnhandledWaitBuilder () - { - private final int id = pid; - protected void unhandled (String why) - { + Wait.waitAll(pid, new UnhandledWaitBuilder() { + private final ProcessIdentifier id = pid; + protected void unhandled(String why) { fail (why); } public void stopped(int pid, Signal signal) { - assertEquals("stopped pid", id, pid); + assertEquals("stopped pid", id.intValue(), pid); assertEquals("stopped sig", Signal.TRAP, signal); } }); Ptrace.singleStep(pid, Signal.NONE); - Wait.waitAll (pid, new UnhandledWaitBuilder () - { - private final int id = pid; - protected void unhandled (String why) - { + Wait.waitAll(pid, new UnhandledWaitBuilder() { + private final ProcessIdentifier id = pid; + protected void unhandled(String why) { fail (why); } public void stopped(int pid, Signal signal) { - assertEquals("stopped pid", id, pid); + assertEquals("stopped pid", id.intValue(), pid); assertEquals("stopped sig", Signal.TRAP, signal); } }); Ptrace.cont(pid, Signal.TERM); - Wait.waitAll (pid, new UnhandledWaitBuilder () - { - private final int id = pid; - protected void unhandled (String why) - { + Wait.waitAll(pid, new UnhandledWaitBuilder() { + private final ProcessIdentifier id = pid; + protected void unhandled(String why) { fail (why); } public void terminated(int pid, Signal signal, int status, boolean coreDumped) { - assertEquals("terminated pid", id, pid); + assertEquals("terminated pid", id.intValue(), pid); assertEquals("terminated signal", Signal.TERM, signal); assertEquals("terminated status", -Signal.TERM.intValue(), status); diff --git a/frysk-sys/frysk/sys/TestWait.java b/frysk-sys/frysk/sys/TestWait.java index ab51104..d52f655 100644 --- a/frysk-sys/frysk/sys/TestWait.java +++ b/frysk-sys/frysk/sys/TestWait.java @@ -108,11 +108,11 @@ public class TestWait public void testNoTimeout() { WaitOnChild waitOnChild = new WaitOnChild (); - int pid = Fork.exec (new String[] { "/bin/false" }); + ProcessIdentifier pid = Fork.exec(new String[] { "/bin/false" }); assertFalse("timeout", - Wait.waitAll (getTimeoutMilliseconds (), waitOnChild, - unhandledSignalBuilder)); - assertEquals ("pid", pid, waitOnChild.pid); + Wait.waitAll(getTimeoutMilliseconds (), waitOnChild, + unhandledSignalBuilder)); + assertEquals ("pid", pid.intValue(), waitOnChild.pid); } @@ -167,20 +167,20 @@ public class TestWait public void testWaitExit0() { WaitOnChild waitOnChild = new WaitOnChild(); - int pid = Fork.exec(new String[] { "/bin/true" }); + ProcessIdentifier pid = Fork.exec(new String[] { "/bin/true" }); Wait.waitAll(getTimeoutMilliseconds(), waitOnChild, unhandledSignalBuilder); - assertEquals("pid", pid, waitOnChild.pid); + assertEquals("pid", pid.intValue(), waitOnChild.pid); assertEquals("signal", null, waitOnChild.signal); assertEquals("status", 0, waitOnChild.status); } public void testWaitExit1() { WaitOnChild waitOnChild = new WaitOnChild(); - int pid = Fork.exec(new String[] { "/bin/false" }); + ProcessIdentifier pid = Fork.exec(new String[] { "/bin/false" }); Wait.waitAll(getTimeoutMilliseconds(), waitOnChild, unhandledSignalBuilder); - assertEquals("pid", pid, waitOnChild.pid); + assertEquals("pid", pid.intValue(), waitOnChild.pid); assertEquals("signal", null, waitOnChild.signal); assertEquals("status", 1, waitOnChild.status); } diff --git a/frysk-sys/frysk/sys/Wait.java b/frysk-sys/frysk/sys/Wait.java index 74235e6..80c1a10 100644 --- a/frysk-sys/frysk/sys/Wait.java +++ b/frysk-sys/frysk/sys/Wait.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2005, 2007, Red Hat Inc. +// Copyright 2005, 2007, 2008, Red Hat Inc. // // FRYSK is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by @@ -46,15 +46,13 @@ import java.util.logging.Logger; * tasks. */ -public final class Wait -{ +public final class Wait { private static Logger logger; /** * Finds, and returns the logger, but only when logging is * enabled.. */ - static Logger getLogger () - { + static Logger getLogger() { // Seems that when calling a native static methods this isn't // initialized, force it. if (logger == null) @@ -69,18 +67,18 @@ public final class Wait /** * Add Sig to the set of signals checked during poll. */ - public static native void signalAdd (Signal sig); + public static native void signalAdd(Signal sig); /** * Empty the set of signals, and file descriptors, checked during * poll. */ - public static native void signalEmpty (); + public static native void signalEmpty(); /** * Read in all the pending wait events, and then pass them to the * observer. If there is no outstanding event return immediatly. */ - public native static void waitAllNoHang (WaitBuilder builder); + public native static void waitAllNoHang(WaitBuilder builder); /** * Wait for a waitpid or signal event. Returns when at least one * event has been received, or the specified timeout has expired. @@ -97,45 +95,60 @@ public final class Wait * Return true if the timeout expired; note that waitpid events * may have also been processed. */ - public static native boolean wait (int pid, - WaitBuilder waitBuilder, - SignalBuilder signalBuilder, - long millisecondTimeout, - boolean ignoreECHILD); - public static boolean wait (int pid, - WaitBuilder waitBuilder, - SignalBuilder signalBuilder, - long millisecondTimeout) { + public static boolean wait(ProcessIdentifier pid, + WaitBuilder waitBuilder, + SignalBuilder signalBuilder, hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-02-06 22:25 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080206222513.9556.qmail@sourceware.org \ --to=cagney@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).