public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Replace CommandLine.parsePids(TaskId[]) with .parsePids(Proc[]). Date: Thu, 14 Feb 2008 22:31:00 -0000 [thread overview] Message-ID: <20080214223138.6851.qmail@sourceware.org> (raw) 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 <cagney@redhat.com> 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 <cagney@redhat.com> * 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 <cagney@redhat.com> * Ftrace.java (addTracePid(ProcId)): Delete. (tracedParents): Delete. (addProc(Proc)): Make public. frysk-core/frysk/util/ChangeLog 2008-02-14 Andrew Cagney <cagney@redhat.com> * 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 <cagney@redhat.com> + * 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 <cagney@redhat.com> + + * Ftrace.java (addTracePid(ProcId)): Delete. + (tracedParents): Delete. + (addProc(Proc)): Make public. + 2008-02-13 Andrew Cagney <cagney@redhat.com> * 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 <cagney@redhat.com> + + * 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 <cagney@redhat.com> * 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
reply other threads:[~2008-02-14 22:31 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=20080214223138.6851.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).