From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6900 invoked by alias); 14 Feb 2008 22:31:38 -0000 Received: (qmail 6866 invoked by uid 367); 14 Feb 2008 22:31:38 -0000 Date: Thu, 14 Feb 2008 22:31:00 -0000 Message-ID: <20080214223138.6851.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Replace CommandLine.parsePids(TaskId[]) with .parsePids(Proc[]). X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: ea824c83ac5c61c806ad4fff8bd7fc304aab8b3a X-Git-Newrev: c05c28a8eda20f36704d128303028154ba0b417f Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q1/txt/msg00215.txt.bz2 The branch, master has been updated via c05c28a8eda20f36704d128303028154ba0b417f (commit) from ea824c83ac5c61c806ad4fff8bd7fc304aab8b3a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit c05c28a8eda20f36704d128303028154ba0b417f Author: Andrew Cagney Date: Thu Feb 14 17:25:52 2008 -0500 Replace CommandLine.parsePids(TaskId[]) with .parsePids(Proc[]). frysk-core/frysk/bindir/ChangeLog 2008-02-14 Andrew Cagney * fcore.java (parsePids(Proc[])): Replace parsePids(ProcId[]). * ftrace.java: Ditto. * fstack.java: Ditto. * fhpd.java: Ditto. * fexe.java: Ditto. * TestFtrace.java (testFtraceHandlesProcessNotFound(): Update error check. frysk-core/frysk/ftrace/ChangeLog 2008-02-14 Andrew Cagney * Ftrace.java (addTracePid(ProcId)): Delete. (tracedParents): Delete. (addProc(Proc)): Make public. frysk-core/frysk/util/ChangeLog 2008-02-14 Andrew Cagney * CommandlineParser.java (parsePids(Proc[])): Replace parsePids(ProcId[]). * Util.java: Update. * ProcStopUtil.java: Update. * FCatch.java: Update. * TestCommandlineParser.java: Update. * TestCoredumpAction.java: Ditto. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/bindir/ChangeLog | 8 +++ frysk-core/frysk/bindir/TestFtrace.java | 4 +- frysk-core/frysk/bindir/fcatch.java | 8 +--- frysk-core/frysk/bindir/fcore.java | 40 ++++++----------- frysk-core/frysk/bindir/fexe.java | 12 ++--- frysk-core/frysk/bindir/fhpd.java | 12 +++--- frysk-core/frysk/bindir/fstack.java | 28 +++++------- frysk-core/frysk/bindir/ftrace.java | 21 ++++----- frysk-core/frysk/ftrace/ChangeLog | 6 +++ frysk-core/frysk/ftrace/Ftrace.java | 51 +-------------------- frysk-core/frysk/util/ChangeLog | 10 ++++ frysk-core/frysk/util/CommandlineParser.java | 33 ++++++-------- frysk-core/frysk/util/FCatch.java | 26 ++--------- frysk-core/frysk/util/ProcStopUtil.java | 22 ++++------ frysk-core/frysk/util/TestCommandlineParser.java | 6 +- frysk-core/frysk/util/TestCoredumpAction.java | 5 +- frysk-core/frysk/util/TestFCatch.java | 28 ++---------- frysk-core/frysk/util/Util.java | 12 +++-- 18 files changed, 122 insertions(+), 210 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/bindir/ChangeLog b/frysk-core/frysk/bindir/ChangeLog index 1f83ca9..89f735a 100644 --- a/frysk-core/frysk/bindir/ChangeLog +++ b/frysk-core/frysk/bindir/ChangeLog @@ -1,5 +1,13 @@ 2008-02-14 Andrew Cagney + * fcore.java (parsePids(Proc[])): Replace parsePids(ProcId[]). + * ftrace.java: Ditto. + * fstack.java: Ditto. + * fhpd.java: Ditto. + * fexe.java: Ditto. + * TestFtrace.java (testFtraceHandlesProcessNotFound(): Update + error check. + * fhpd.java: Run the CLI in a sub-thread and the event-loop on the main thread. diff --git a/frysk-core/frysk/bindir/TestFtrace.java b/frysk-core/frysk/bindir/TestFtrace.java index 1692d7c..6c7321d 100644 --- a/frysk-core/frysk/bindir/TestFtrace.java +++ b/frysk-core/frysk/bindir/TestFtrace.java @@ -100,12 +100,12 @@ public class TestFtrace extends TestLib { e.expect("rt_sigsuspend"); } - public void testFtraceHandlesPrcoessNotFound() { + public void testFtraceHandlesProcessNotFound() { TearDownExpect e = new TearDownExpect(new String[] { Config.getBinFile("ftrace").getAbsolutePath(), "-sys=", "0" }); - e.expect("No process with ID 0 found"); + e.expect("Process 0 not found."); } } diff --git a/frysk-core/frysk/bindir/fcatch.java b/frysk-core/frysk/bindir/fcatch.java index 56c1b34..4e0d871 100644 --- a/frysk-core/frysk/bindir/fcatch.java +++ b/frysk-core/frysk/bindir/fcatch.java @@ -40,7 +40,7 @@ package frysk.bindir; import java.util.logging.Logger; - +import frysk.util.Util; import frysk.util.CommandlineParser; import frysk.util.FCatch; @@ -91,12 +91,8 @@ public class fcatch { public void parsed(String arg) throws OptionException { try { int pid = Integer.parseInt(arg); - // FIXME: we have no good way of giving the user an - // error message if the PID is not available. - //System.out.println("Option pid: " + pid); - catcher.addTracePid(pid); + catcher.addProc(Util.getProcFromPid(pid)); requestedPid = true; - if (argString == null) argString = new StringBuffer(pid); else diff --git a/frysk-core/frysk/bindir/fcore.java b/frysk-core/frysk/bindir/fcore.java index 3995094..0a41bff 100644 --- a/frysk-core/frysk/bindir/fcore.java +++ b/frysk-core/frysk/bindir/fcore.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 @@ -46,12 +46,9 @@ import frysk.event.Event; import frysk.proc.Manager; import frysk.proc.Proc; import frysk.proc.ProcBlockAction; -import frysk.proc.ProcId; import frysk.util.CommandlineParser; import frysk.util.CoredumpAction; -import frysk.util.Util; - import gnu.classpath.tools.getopt.Option; import gnu.classpath.tools.getopt.OptionException; @@ -90,18 +87,13 @@ public class fcore } } - public static void dumpPid(ProcId procId) - { - Proc coreProc = Util.getProcFromPid(procId); - if (coreProc != null) { - stacker = new CoredumpAction(coreProc, filename, - new AbandonCoreEvent(coreProc), + public static void dumpPid(Proc proc) { + stacker = new CoredumpAction(proc, filename, + new AbandonCoreEvent(proc), writeAllMaps); - - new ProcBlockAction(coreProc, stacker); + new ProcBlockAction(proc, stacker); Manager.eventLoop.run(); } - } /** * Entry function. Starts the fcore dump process. Belongs in bindir/fcore. But @@ -112,19 +104,15 @@ public class fcore public static void main (String[] args) { - // Parse command line. Check pid provided. - parser = new CommandlineParser("fcore") - { - - //@Override - public void parsePids (ProcId[] pids) - { - for (int i= 0; i< pids.length; i++) - dumpPid(pids[i]); - - System.exit(0); - } - }; + // Parse command line. Check pid provided. + parser = new CommandlineParser("fcore") { + //@Override + public void parsePids(Proc[] pids) { + for (int i= 0; i< pids.length; i++) + dumpPid(pids[i]); + System.exit(0); + } + }; addOptions(parser); diff --git a/frysk-core/frysk/bindir/fexe.java b/frysk-core/frysk/bindir/fexe.java index 10c544d..b6ee139 100644 --- a/frysk-core/frysk/bindir/fexe.java +++ b/frysk-core/frysk/bindir/fexe.java @@ -44,7 +44,6 @@ import frysk.sys.ProcessIdentifierFactory; import frysk.util.CommandlineParser; import frysk.util.Util; import frysk.proc.Proc; -import frysk.proc.ProcId; import frysk.sys.proc.Exe; import gnu.classpath.tools.getopt.Option; import java.io.File; @@ -74,14 +73,13 @@ public class fexe { } System.exit(0); } - public void parsePids (ProcId[] pids) { - for (int i= 0; i< pids.length; i++) { - ProcId id = pids[i]; - Proc proc = Util.getProcFromPid(id); + public void parsePids(Proc[] procs) { + for (int i= 0; i< procs.length; i++) { + Proc proc = procs[i]; ProcessIdentifier pid - = ProcessIdentifierFactory.create(id.hashCode()); + = ProcessIdentifierFactory.create(proc.getPid()); if (verbose) { - System.out.println(id.hashCode() + System.out.println(proc.getPid() + " " + proc.getExe() + " " diff --git a/frysk-core/frysk/bindir/fhpd.java b/frysk-core/frysk/bindir/fhpd.java index b32bfbb..f59240b 100644 --- a/frysk-core/frysk/bindir/fhpd.java +++ b/frysk-core/frysk/bindir/fhpd.java @@ -50,15 +50,15 @@ import jline.Completor; import jline.ConsoleReader; import frysk.util.CoreExePair; import frysk.proc.Manager; -import frysk.proc.ProcId; import frysk.util.CommandlineParser; import frysk.util.ObservingTerminal; import gnu.classpath.tools.getopt.Option; import gnu.classpath.tools.getopt.OptionException; import frysk.sys.FileDescriptor; +import frysk.proc.Proc; public class fhpd { - private static int pid; + private static Proc[] procs; private static File execFile; private static File core; private static File exeFile; @@ -86,8 +86,8 @@ public class fhpd { CommandLine() { // Construct a command to pass in as initialization try { - if (pid > 0) - line = "attach " + pid; + if (procs != null) + line = "attach " + procs[0].getPid(); else if (execFile != null) line = "load " + execFile.getCanonicalPath(); else if (core != null) { @@ -154,8 +154,8 @@ public class fhpd { } } //@Override - public void parsePids (ProcId[] pids) { - pid = pids[0].id; + public void parsePids(Proc[] procs) { + fhpd.procs = procs; } public void parseCores(CoreExePair[] corePairs) { diff --git a/frysk-core/frysk/bindir/fstack.java b/frysk-core/frysk/bindir/fstack.java index 8e4ac56..238c595 100644 --- a/frysk-core/frysk/bindir/fstack.java +++ b/frysk-core/frysk/bindir/fstack.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 @@ -49,7 +49,6 @@ import frysk.proc.Manager; import frysk.proc.Proc; import frysk.proc.ProcBlockAction; import frysk.proc.ProcCoreAction; -import frysk.proc.ProcId; import frysk.util.CommandlineParser; import frysk.util.CoreExePair; import frysk.util.StacktraceAction; @@ -146,13 +145,11 @@ public final class fstack Manager.eventLoop.run(); } - private static void stackPid (ProcId procId) - { - Proc proc = Util.getProcFromPid(procId); - stacker = new Stacker(printWriter, proc, new AbandonPrintEvent(proc), numberOfFrames, elfOnly,virtualFrames,printParameters,printScopes, fullpath); - new ProcBlockAction(proc, stacker); - Manager.eventLoop.run(); - } + private static void stackPid(Proc proc) { + stacker = new Stacker(printWriter, proc, new AbandonPrintEvent(proc), numberOfFrames, elfOnly,virtualFrames,printParameters,printScopes, fullpath); + new ProcBlockAction(proc, stacker); + Manager.eventLoop.run(); + } public static void main (String[] args) { @@ -166,14 +163,11 @@ public final class fstack stackCore(coreExePairs[i]); } - //@Override - public void parsePids (ProcId[] pids) - { - - for (int i = 0; i < pids.length; i++) - stackPid(pids[i]); - } - + //@Override + public void parsePids(Proc[] procs) { + for (int i = 0; i < procs.length; i++) + stackPid(procs[i]); + } }; parser.add(new Option("number-of-frames", 'n', "number of frames to print. Use -n 0 or" + diff --git a/frysk-core/frysk/bindir/ftrace.java b/frysk-core/frysk/bindir/ftrace.java index e61329e..a845b05 100644 --- a/frysk-core/frysk/bindir/ftrace.java +++ b/frysk-core/frysk/bindir/ftrace.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 @@ -40,7 +40,7 @@ package frysk.bindir; import inua.util.PrintWriter; - +import frysk.util.Util; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -49,6 +49,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import frysk.proc.Proc; import java.util.logging.*; import java.util.regex.*; @@ -57,8 +58,6 @@ import java.io.FileOutputStream; import frysk.isa.syscalls.SyscallTable; import frysk.isa.syscalls.Syscall; - -import frysk.proc.ProcId; import frysk.proc.Task; import frysk.util.CommandlineParser; @@ -551,11 +550,10 @@ class ftrace }); parser.add(new Option('p', "pid to trace", "PID") { - public void parsed(String arg) throws OptionException - { + public void parsed(String arg) throws OptionException { try { - int pid = Integer.parseInt(arg); - tracer.addTracePid(new ProcId(pid)); + Proc proc = Util.getProcFromPid(Integer.parseInt(arg)); + tracer.addProc(proc); requestedPid = true; } catch (NumberFormatException e) { OptionException oe = new OptionException("couldn't parse pid: " + arg); @@ -629,10 +627,9 @@ class ftrace } //@Override - public void parsePids (ProcId[] pids) - { - for (int i = 0; i < pids.length; ++i) - tracer.addTracePid(pids[i]); + public void parsePids(Proc[] procs) { + for (int i = 0; i < procs.length; ++i) + tracer.addProc(procs[i]); requestedPid = true; } }; diff --git a/frysk-core/frysk/ftrace/ChangeLog b/frysk-core/frysk/ftrace/ChangeLog index 785925b..d2f58c2 100644 --- a/frysk-core/frysk/ftrace/ChangeLog +++ b/frysk-core/frysk/ftrace/ChangeLog @@ -1,3 +1,9 @@ +2008-02-14 Andrew Cagney + + * Ftrace.java (addTracePid(ProcId)): Delete. + (tracedParents): Delete. + (addProc(Proc)): Make public. + 2008-02-13 Andrew Cagney * MemoryMapping.java: Update to match MapsBuilder. diff --git a/frysk-core/frysk/ftrace/Ftrace.java b/frysk-core/frysk/ftrace/Ftrace.java index ca8ce0f..f495a7b 100644 --- a/frysk-core/frysk/ftrace/Ftrace.java +++ b/frysk-core/frysk/ftrace/Ftrace.java @@ -41,10 +41,8 @@ package frysk.ftrace; import frysk.proc.Action; -import frysk.proc.FindProc; import frysk.proc.Manager; import frysk.proc.Proc; -import frysk.proc.ProcId; import frysk.proc.ProcObserver; import frysk.proc.ProcTasksObserver; import frysk.proc.Task; @@ -77,10 +75,6 @@ public class Ftrace // True if we're tracing mmaps/unmaps. boolean traceMmapUnmap = false; - // Set of ProcId objects we trace; if traceChildren is set, we also - // look for their children. - HashSet tracedParents = new HashSet(); - HashMap syscallCache = new HashMap(); // The number of processes we're tracing. @@ -166,43 +160,17 @@ public class Ftrace throw new AssertionError("FtraceController already assigned."); } - public void addTracePid (ProcId id) { - tracedParents.add(id); - } - public void setWriter (PrintWriter writer) { this.reporter = new Reporter(writer); } - private void init () - { + private void init() { if (reporter == null) reporter = new Reporter(new PrintWriter(System.out)); - functionObserver = new MyFunctionObserver(reporter, stackTraceSetProvider); - - // this observer should only be used to pick up a proc if we - // are tracing a process given a pid - // otherwise use forkobserver. - Manager.host.observableProcAddedXXX.addObserver(new Observer() - { - public void update (Observable observable, Object arg) - { - Proc proc = (Proc) arg; - ProcId id = proc.getId(); - if (tracedParents.contains(id)){ - // In case we're tracing a new child, add it. - //tracedParents.add(proc.getId()); XXX: why is this needed ? - // Weird API... unfortunately we can't fetch the - // Proc's main task here, as it will be null. Instead - // we have to request it and handle it in a callback. - addProc(proc); - } - } - }); } - private void addProc (Proc proc) { + public void addProc(Proc proc) { new ProcTasksObserver(proc, tasksObserver); } @@ -214,20 +182,7 @@ public class Ftrace public void trace () { init(); - for (Iterator it = tracedParents.iterator(); it.hasNext(); ){ - Manager.host.requestProc - (((ProcId)it.next()).hashCode(), - new FindProc() { - public void procFound(Proc proc) {} - public void procNotFound(int pid) { - System.err.println("No process with ID " - + pid + " found."); - Manager.eventLoop.requestStop(); - } - } - ); - Manager.eventLoop.run(); - } + Manager.eventLoop.run(); } private HashMap observationCounters = new HashMap(); diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog index 626b380..00da2d8 100644 --- a/frysk-core/frysk/util/ChangeLog +++ b/frysk-core/frysk/util/ChangeLog @@ -1,3 +1,13 @@ +2008-02-14 Andrew Cagney + + * CommandlineParser.java (parsePids(Proc[])): Replace + parsePids(ProcId[]). + * Util.java: Update. + * ProcStopUtil.java: Update. + * FCatch.java: Update. + * TestCommandlineParser.java: Update. + * TestCoredumpAction.java: Ditto. + 2008-02-13 Andrew Cagney * TestFCatch.java: Update to match frysk.sys.Signal. diff --git a/frysk-core/frysk/util/CommandlineParser.java b/frysk-core/frysk/util/CommandlineParser.java index 47329d3..d037a1d 100644 --- a/frysk-core/frysk/util/CommandlineParser.java +++ b/frysk-core/frysk/util/CommandlineParser.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 @@ -49,7 +49,7 @@ import gnu.classpath.tools.getopt.OptionException; import gnu.classpath.tools.getopt.Parser; import frysk.Config; import frysk.EventLogger; -import frysk.proc.ProcId; +import frysk.proc.Proc; /** * CommandlineParser extends the getopt {@link Parser} class with common options @@ -74,7 +74,7 @@ public class CommandlineParser { * * @param pids The array of pids passed on the command line. */ - public void parsePids(ProcId[] pids) { + public void parsePids(Proc[] pids) { System.err.println("Error: Pids not supported."); printHelp(); System.exit(1); @@ -106,17 +106,18 @@ public class CommandlineParser { hooks/post-receive -- frysk system monitor/debugger