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: link
Be 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).