public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Replace CommandLine.parsePids(TaskId[]) with .parsePids(Proc[]).
@ 2008-02-14 22:31 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-02-14 22:31 UTC (permalink / raw)
  To: frysk-cvs

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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-02-14 22:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-14 22:31 [SCM] master: Replace CommandLine.parsePids(TaskId[]) with .parsePids(Proc[]) cagney

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).