public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Pass a Signal through WaitBuilder .terminated and .exitEvent. Date: Tue, 22 Jan 2008 18:37:00 -0000 [thread overview] Message-ID: <20080122183757.28105.qmail@sourceware.org> (raw) The branch, master has been updated via a99507d78618aa744a397a231de9646d506f7394 (commit) from ff8a7920dbc285868c8bafab1c30d6fb378ef76b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit a99507d78618aa744a397a231de9646d506f7394 Author: Andrew Cagney <cagney@redhat.com> Date: Tue Jan 22 13:37:25 2008 -0500 Pass a Signal through WaitBuilder .terminated and .exitEvent. frysk-core/frysk/proc/live/ChangeLog 2008-01-22 Andrew Cagney <cagney@redhat.com> * LinuxWaitBuilder.java: Update to match WaitBuilder.exitEvent(int,Signal,int,boolean) and WaitBuilder.terminated(int,Signal,int,boolean). frysk-core/frysk/testbed/ChangeLog 2008-01-22 Andrew Cagney <cagney@redhat.com> * LegacyOffspring.java: Update to match WaitBuilder.terminated(int,Signal,int,boolean) and WaitBuilder.exitEvent(int,Signal,int,boolean). * SlaveOffspring.java: Ditto. frysk-sys/frysk/expunit/ChangeLog 2008-01-22 Andrew Cagney <cagney@redhat.com> * Expect.java (expectTermination(Signal)): New. * TestExpect.java: Update. * TerminationException.java (TerminationException(Signal, int, String)): Replace TerminationException(int). * WaitObserver.java (WaitObserver(Signal)): New. (exitEvent(int,Signal,int,boolean)): Replace exitEvent(int,boolean,int,boolean). (terminated(int,Signal,int,boolean)): Replace terminated(int,boolean,int,boolean. frysk-sys/frysk/sys/ChangeLog 2008-01-22 Andrew Cagney <cagney@redhat.com> * WaitBuilder.java (terminated(int,Signal,int,boolean)): Replace terminated(int,boolean,int,boolean). (exitEvent(int,Signal,int)): Replace exitEvent(int,boolean,int). * cni/Wait.cxx (processStatus): Update. * UnhandledWaitBuilder.java: Update. * TestFork.java: Update. frysk-sys/frysk/testbed/ChangeLog 2008-01-22 Andrew Cagney <cagney@redhat.com> * TearDownProcess.java: Update to match WaitBuilder.terminating(int,Signal,int,boolean) and WaitBuilder.exitEvent(int,Signal,int,boolean). ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/proc/live/ChangeLog | 6 ++ frysk-core/frysk/proc/live/LinuxWaitBuilder.java | 23 ++++--- frysk-core/frysk/testbed/ChangeLog | 7 ++ frysk-core/frysk/testbed/LegacyOffspring.java | 8 +- frysk-core/frysk/testbed/SlaveOffspring.java | 8 +- frysk-sys/frysk/expunit/ChangeLog | 12 ++++ frysk-sys/frysk/expunit/Expect.java | 23 +++++-- frysk-sys/frysk/expunit/TerminationException.java | 18 +++--- frysk-sys/frysk/expunit/TestExpect.java | 7 +- frysk-sys/frysk/expunit/WaitObserver.java | 73 +++++++++------------ frysk-sys/frysk/sys/ChangeLog | 9 +++ frysk-sys/frysk/sys/TestFork.java | 14 ++-- frysk-sys/frysk/sys/TestPipePair.java | 16 ++-- frysk-sys/frysk/sys/TestPtrace.java | 13 ++-- frysk-sys/frysk/sys/TestWait.java | 54 +++++++--------- frysk-sys/frysk/sys/UnhandledWaitBuilder.java | 35 +++++------ frysk-sys/frysk/sys/WaitBuilder.java | 19 +++--- frysk-sys/frysk/sys/cni/Wait.cxx | 26 +++++--- frysk-sys/frysk/testbed/ChangeLog | 6 ++ frysk-sys/frysk/testbed/TearDownProcess.java | 10 ++-- 20 files changed, 211 insertions(+), 176 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog index 26334fd..093b9f2 100644 --- a/frysk-core/frysk/proc/live/ChangeLog +++ b/frysk-core/frysk/proc/live/ChangeLog @@ -1,3 +1,9 @@ +2008-01-22 Andrew Cagney <cagney@redhat.com> + + * LinuxWaitBuilder.java: Update to match + WaitBuilder.exitEvent(int,Signal,int,boolean) and + WaitBuilder.terminated(int,Signal,int,boolean). + 2008-01-21 Andrew Cagney <cagney@redhat.com> * LinuxWaitBuilder.java: Update to match diff --git a/frysk-core/frysk/proc/live/LinuxWaitBuilder.java b/frysk-core/frysk/proc/live/LinuxWaitBuilder.java index 2f0edab..aa203f4 100644 --- a/frysk-core/frysk/proc/live/LinuxWaitBuilder.java +++ b/frysk-core/frysk/proc/live/LinuxWaitBuilder.java @@ -1,6 +1,6 @@ // This file is part of the program FRYSK. // -// Copyright 2005, 2006, 2007, Red Hat Inc. +// Copyright 2005, 2006, 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 @@ -55,9 +55,7 @@ import frysk.proc.TaskObserver; * Handles wait events generated by the wait builder. */ -class LinuxWaitBuilder - implements WaitBuilder -{ +class LinuxWaitBuilder implements WaitBuilder { LinuxWaitBuilder (LinuxPtraceHost host) { searchId = new SearchId (host); @@ -164,15 +162,17 @@ class LinuxWaitBuilder attemptDeliveringFsckedKernelEvents (); } - public void exitEvent (int pid, boolean signal, int value, - boolean coreDumped) + public void exitEvent(int pid, Signal signal, int status, + boolean coreDumped) { LinuxPtraceTask task = searchId.get(pid, "{0} exitEvent\n"); if (task == null) // Stray pid from uncontrolled fork. logMissing("exited", pid); + else if (signal != null) + task.processTerminatingEvent(true, signal.intValue()); else - task.processTerminatingEvent(signal, value); + task.processTerminatingEvent(false, status); } public void execEvent (int pid) @@ -217,14 +217,15 @@ class LinuxWaitBuilder task.processSignaledEvent(sig.intValue()); } - public void terminated (int pid, boolean signal, int value, - boolean coreDumped) - { + public void terminated(int pid, Signal signal, int status, + boolean coreDumped) { LinuxPtraceTask task = searchId.get(pid, "{0} terminated\n"); if (task == null) // Stray pid from uncontrolled fork. logMissing("terminated", pid); + else if (signal != null) + task.processTerminatedEvent(true, signal.intValue()); else - task.processTerminatedEvent(signal, value); + task.processTerminatedEvent(false, status); } } diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog index 0436377..e7f2ede 100644 --- a/frysk-core/frysk/testbed/ChangeLog +++ b/frysk-core/frysk/testbed/ChangeLog @@ -1,3 +1,10 @@ +2008-01-22 Andrew Cagney <cagney@redhat.com> + + * LegacyOffspring.java: Update to match + WaitBuilder.terminated(int,Signal,int,boolean) and + WaitBuilder.exitEvent(int,Signal,int,boolean). + * SlaveOffspring.java: Ditto. + 2008-01-17 Andrew Cagney <cagney@redhat.com> * SlaveOffspring.java (assertSendStop()): Move from here ... diff --git a/frysk-core/frysk/testbed/LegacyOffspring.java b/frysk-core/frysk/testbed/LegacyOffspring.java index d892e7a..45aefba 100644 --- a/frysk-core/frysk/testbed/LegacyOffspring.java +++ b/frysk-core/frysk/testbed/LegacyOffspring.java @@ -237,12 +237,12 @@ public class LegacyOffspring protected void unhandled (String why) { TestCase.fail ("killing child (" + why + ")"); } - public void terminated (int pid, boolean signal, - int value, - boolean coreDumped) { + public void terminated(int pid, Signal signal, + int value, + boolean coreDumped) { // Termination with signal is ok. TestCase.assertTrue("terminated with signal", - signal); + signal != null); } }); } diff --git a/frysk-core/frysk/testbed/SlaveOffspring.java b/frysk-core/frysk/testbed/SlaveOffspring.java index 022156d..bd46a23 100644 --- a/frysk-core/frysk/testbed/SlaveOffspring.java +++ b/frysk-core/frysk/testbed/SlaveOffspring.java @@ -244,12 +244,12 @@ public class SlaveOffspring protected void unhandled (String why) { TestCase.fail ("killing child (" + why + ")"); } - public void terminated (int pid, boolean signal, - int value, - boolean coreDumped) { + public void terminated(int pid, Signal signal, + int value, + boolean coreDumped) { // Termination with signal is ok. TestCase.assertTrue("terminated with signal", - signal); + signal != null); } }); } diff --git a/frysk-sys/frysk/expunit/ChangeLog b/frysk-sys/frysk/expunit/ChangeLog index dff3059..0ff37e8 100644 --- a/frysk-sys/frysk/expunit/ChangeLog +++ b/frysk-sys/frysk/expunit/ChangeLog @@ -1,3 +1,15 @@ +2008-01-22 Andrew Cagney <cagney@redhat.com> + + * Expect.java (expectTermination(Signal)): New. + * TestExpect.java: Update. + * TerminationException.java (TerminationException(Signal, int, + String)): Replace TerminationException(int). + * WaitObserver.java (WaitObserver(Signal)): New. + (exitEvent(int,Signal,int,boolean)): Replace + exitEvent(int,boolean,int,boolean). + (terminated(int,Signal,int,boolean)): Replace + terminated(int,boolean,int,boolean. + 2008-01-21 Andrew Cagney <cagney@redhat.com> * WaitObserver.java: Update to match diff --git a/frysk-sys/frysk/expunit/Expect.java b/frysk-sys/frysk/expunit/Expect.java index 4195d48..1e4809c 100644 --- a/frysk-sys/frysk/expunit/Expect.java +++ b/frysk-sys/frysk/expunit/Expect.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 @@ -335,18 +335,27 @@ public class Expect } /** - * Expect the child process to have terminated. A +ve or zero - * value indicates an exit status, a -ve value indicates - * termination with signal. + * Expect the child process to exit with status. */ - public void expectTermination (final int status) - { + public void expectTermination(int status) { + try { + expect (); + } + catch (EndOfFileException e) { + // This is blocking; which probably isn't good. + pid.blockingWait(new WaitObserver(status)); + } + } + /** + * Expect the child process to be terminated by SIGNAL. + */ + public void expectTermination(Signal signal) { try { expect (); } catch (EndOfFileException e) { // This is blocking; which probably isn't good. - pid.blockingWait (new WaitObserver (status)); + pid.blockingWait(new WaitObserver(signal)); } } } diff --git a/frysk-sys/frysk/expunit/TerminationException.java b/frysk-sys/frysk/expunit/TerminationException.java index 7c69c9f..2f126e0 100644 --- a/frysk-sys/frysk/expunit/TerminationException.java +++ b/frysk-sys/frysk/expunit/TerminationException.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 @@ -39,6 +39,8 @@ package frysk.expunit; +import frysk.sys.Signal; + /** * Thrown an an end-of-file is encountered and nothing else matches. */ @@ -47,15 +49,13 @@ public class TerminationException extends RuntimeException { static final long serialVersionUID = 1; - static private String expecting (int expectedStatus) - { - if (expectedStatus >= 0) - return " (expecting exit with status " + expectedStatus + ")"; + static private String expecting(Signal expectedSignal, int expectedStatus) { + if (expectedSignal != null) + return " (expecting kill with signal " + expectedSignal + ")"; else - return " (expecting kill with signal " + expectedStatus + ")"; + return " (expecting exit with status " + expectedStatus + ")"; } - TerminationException (int expectedStatus, String s) - { - super (s + expecting (expectedStatus)); + TerminationException(Signal expectedSignal, int expectedStatus, String s) { + super (s + expecting(expectedSignal, expectedStatus)); } } diff --git a/frysk-sys/frysk/expunit/TestExpect.java b/frysk-sys/frysk/expunit/TestExpect.java index 9b487bf..c3d792e 100644 --- a/frysk-sys/frysk/expunit/TestExpect.java +++ b/frysk-sys/frysk/expunit/TestExpect.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 @@ -98,10 +98,9 @@ public class TestExpect /** * Check the signal status. */ - public void testKill () - { + public void testKill() { e = new Expect ("kill -HUP $$"); - e.expectTermination (-Signal.HUP.intValue()); + e.expectTermination(Signal.HUP); } /** diff --git a/frysk-sys/frysk/expunit/WaitObserver.java b/frysk-sys/frysk/expunit/WaitObserver.java index 378c2f2..7ed630e 100644 --- a/frysk-sys/frysk/expunit/WaitObserver.java +++ b/frysk-sys/frysk/expunit/WaitObserver.java @@ -43,61 +43,52 @@ import frysk.sys.Signal; import frysk.sys.WaitBuilder; class WaitObserver implements WaitBuilder { + private final Signal expectedSignal; private final int expectedStatus; /** * Observe wait status, expecting a specific termination value. */ - WaitObserver (int expectedStatus) - { + WaitObserver(int expectedStatus) { + this.expectedSignal = null; this.expectedStatus = expectedStatus; } - public void disappeared (int pid, Throwable t) - { - throw new TerminationException (expectedStatus, "Process disappeared"); + WaitObserver(Signal expectedSignal) { + this.expectedSignal = expectedSignal; + this.expectedStatus = -1; } - public void terminated (int pid, boolean signal, int value, - boolean coreDumped) - { - if (signal) { - if (expectedStatus != -value) - throw new TerminationException (expectedStatus, - "Killed with signal " - + value); - } - else { - if (expectedStatus != value) - throw new TerminationException (expectedStatus, - "Exited with status " + value); + private RuntimeException terminationException(String msg) { + return new TerminationException(expectedSignal, expectedStatus, msg); + } + public void disappeared(int pid, Throwable t) { + throw terminationException("Process disappeared"); + } + public void terminated(int pid, Signal signal, int status, + boolean coreDumped) { + if (signal != null) { + if (signal != expectedSignal) + throw terminationException("Killed with signal " + signal); + } else { + if (status != expectedStatus) + throw terminationException("Exited with status " + status); } } public void stopped(int pid, Signal signal) { - throw new TerminationException(expectedStatus, - "Stopped with signal " + signal); + throw terminationException("Stopped with signal " + signal); } - public void syscallEvent (int pid) - { - throw new TerminationException (expectedStatus, - "Stopped with syscall event"); + public void syscallEvent (int pid) { + throw terminationException("Stopped with syscall event"); } - public void execEvent (int pid) - { - throw new TerminationException (expectedStatus, - "Stopped with exec event"); + public void execEvent (int pid) { + throw terminationException("Stopped with exec event"); } - public void exitEvent (int pid, boolean signal, - int value, boolean coreDumped) - { - throw new TerminationException (expectedStatus, - "Stopped with exit event"); + public void exitEvent(int pid, Signal signal, + int status, boolean coreDumped) { + throw terminationException("Stopped with exit event"); } - public void forkEvent (int pid, int offspring) - { - throw new TerminationException (expectedStatus, - "Stopped with fork event"); + public void forkEvent (int pid, int offspring) { + throw terminationException("Stopped with fork event"); } - public void cloneEvent (int pid, int offspring) - { - throw new TerminationException (expectedStatus, - "Stopped with clone event"); + public void cloneEvent (int pid, int offspring) { + throw terminationException("Stopped with clone event"); } } diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index 5463eaf..bdfbd7b 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,3 +1,12 @@ +2008-01-22 Andrew Cagney <cagney@redhat.com> + + * WaitBuilder.java (terminated(int,Signal,int,boolean)): Replace + terminated(int,boolean,int,boolean). + (exitEvent(int,Signal,int)): Replace exitEvent(int,boolean,int). + * cni/Wait.cxx (processStatus): Update. + * UnhandledWaitBuilder.java: Update. + * TestFork.java: Update. + 2008-01-21 Andrew Cagney <cagney@redhat.com> * WaitBuilder.java (stopped(int,Signal)): Replace stopped(int,int). diff --git a/frysk-sys/frysk/sys/TestFork.java b/frysk-sys/frysk/sys/TestFork.java index e908d35..308b785 100644 --- a/frysk-sys/frysk/sys/TestFork.java +++ b/frysk-sys/frysk/sys/TestFork.java @@ -86,16 +86,16 @@ public class TestFork // Capture the child's status; to see if it was correct. class ExitStatus extends UnhandledWaitBuilder { int pid; - boolean signal; - int value; - public void terminated(int pid, boolean signal, int value, + Signal signal; + int status; + public void terminated(int pid, Signal signal, int status, boolean coreDumped) { logger.log(Level.FINE, "exited with status {0,number,integer}\n", - new Integer(value)); + new Integer(status)); this.pid = pid; this.signal = signal; - this.value = value; + this.status = status; } public void unhandled(String reason) { fail(reason); @@ -112,7 +112,7 @@ public class TestFork getTimeoutMilliseconds()); // (a timeout will also fail with the below) assertEquals("pid", pid, exitStatus.pid); - assertEquals("signal", false, exitStatus.signal); - assertEquals("status", 0, exitStatus.value); + assertEquals("signal", null, exitStatus.signal); + assertEquals("status", 0, exitStatus.status); } } diff --git a/frysk-sys/frysk/sys/TestPipePair.java b/frysk-sys/frysk/sys/TestPipePair.java index 4151206..2c0f786 100644 --- a/frysk-sys/frysk/sys/TestPipePair.java +++ b/frysk-sys/frysk/sys/TestPipePair.java @@ -168,16 +168,16 @@ public class TestPipePair // Capture the child's output (look for class ExitStatus extends UnhandledWaitBuilder { int pid; - boolean signal; - int value; - public void terminated(int pid, boolean signal, int value, + Signal signal; + int status; + public void terminated(int pid, Signal signal, int status, boolean coreDumped) { logger.log(Level.FINE, "exited with status {0,number,integer}\n", - new Integer(value)); + new Integer(status)); this.pid = pid; this.signal = signal; - this.value = value; + this.status = status; } public void unhandled(String reason) { fail(reason); @@ -193,8 +193,8 @@ public class TestPipePair }, getTimeoutMilliseconds() * 10); // (a timeout will also fail with the below) - assertEquals("pid", pipe.pid.hashCode(), exitStatus.pid); - assertEquals("signal", false, exitStatus.signal); - assertEquals("status", 0, exitStatus.value); + assertEquals("pid", pipe.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 9e2ba5b..6254e7a 100644 --- a/frysk-sys/frysk/sys/TestPtrace.java +++ b/frysk-sys/frysk/sys/TestPtrace.java @@ -104,13 +104,12 @@ public class TestPtrace { fail (why); } - public void terminated (int pid, boolean signal, int value, - boolean coreDumped) - { - assertEquals ("terminated pid", id, pid); - assertEquals ("terminated signal", true, signal); - assertEquals ("terminated value", Signal.TERM, - Signal.valueOf(value)); + public void terminated(int pid, Signal signal, int status, + boolean coreDumped) { + assertEquals("terminated pid", id, 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 1fda592..ab51104 100644 --- a/frysk-sys/frysk/sys/TestWait.java +++ b/frysk-sys/frysk/sys/TestWait.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 @@ -150,45 +150,39 @@ public class TestWait /** * Class to capture termination information. */ - private static class WaitOnChild - extends UnhandledWaitBuilder hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-01-22 18:37 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=20080122183757.28105.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).