public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Implement dead refresh methods.
@ 2008-02-26 21:30 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-02-26 21:30 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  5bc808038eac8877ac2e663061335073eb0d19bc (commit)
       via  9d5ed80b57b33c7d24dab9c19ad708e3476e9c37 (commit)
      from  b9720029b5f6033a9b07693a5b9d019eee9aeb71 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 5bc808038eac8877ac2e663061335073eb0d19bc
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue Feb 26 16:30:00 2008 -0500

    Implement dead refresh methods.
    
    frysk-core/frysk/hpd/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* CoreCommand.java: Update to match LinuxCoreFactory.
    
    frysk-core/frysk/proc/dead/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* TestLinuxExe.java (testRequestProc()): New.
    	(testRequestProc()): New.
    	* DeadHost.java (getProc()): New; abstract.
    	(requestProc(int,FindProc)): Use.
    	(requestRefresh(Collection,HostRefreshBuilder)): Implement.
    	* LinuxExeHost.java: Update.
    	* LinuxCoreHost.java: Update.
    	* LinuxCoreFactory.java: Update.
    	* LinuxExeFactory.java: Update.

commit 9d5ed80b57b33c7d24dab9c19ad708e3476e9c37
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue Feb 26 16:11:37 2008 -0500

    frysk-core/frysk/proc/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* Host.java (getSoleProcFIXME()): Delete.
    
    frysk-core/frysk/util/ChangeLog
    2008-02-26  Andrew Cagney  <cagney@redhat.com>
    
    	* Util.java (getProcFromExeFile(Host)): Delete.

-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/hpd/ChangeLog                   |    2 +
 frysk-core/frysk/hpd/CoreCommand.java            |    7 ++--
 frysk-core/frysk/proc/ChangeLog                  |    2 +
 frysk-core/frysk/proc/Host.java                  |   16 --------
 frysk-core/frysk/proc/dead/ChangeLog             |   10 +++++
 frysk-core/frysk/proc/dead/DeadHost.java         |   41 +++++++++++++++-------
 frysk-core/frysk/proc/dead/LinuxCoreFactory.java |    8 ++--
 frysk-core/frysk/proc/dead/LinuxCoreHost.java    |    2 +-
 frysk-core/frysk/proc/dead/LinuxExeFactory.java  |    4 +-
 frysk-core/frysk/proc/dead/LinuxExeHost.java     |    2 +-
 frysk-core/frysk/proc/dead/TestLinuxExe.java     |   36 ++++++++++++++++++-
 frysk-core/frysk/util/ChangeLog                  |    2 +
 frysk-core/frysk/util/Util.java                  |   13 -------
 13 files changed, 90 insertions(+), 55 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index 4f2a902..6453b60 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -1,5 +1,7 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* CoreCommand.java: Update to match LinuxCoreFactory.
+
 	* LoadCommand.java: Update to match LinuxExeFactory.
 
 2008-02-25  Rick Moseley  <rmoseley@redhat.com>
diff --git a/frysk-core/frysk/hpd/CoreCommand.java b/frysk-core/frysk/hpd/CoreCommand.java
index f7dbfc0..d40653a 100644
--- a/frysk-core/frysk/hpd/CoreCommand.java
+++ b/frysk-core/frysk/hpd/CoreCommand.java
@@ -50,7 +50,7 @@ import frysk.dwfl.DwflCache;
 import frysk.proc.Task;
 import frysk.proc.dead.LinuxCoreFactory;
 import java.io.IOException;
-import frysk.proc.dead.LinuxCoreProc;
+import frysk.proc.Proc;
 
 public class CoreCommand extends ParameterizedCommand {
 
@@ -113,9 +113,8 @@ public class CoreCommand extends ParameterizedCommand {
 	}
 
 	// Build Core. Move any exceptions up to cli and print to user.
-	LinuxCoreProc coreProc
-	    = LinuxCoreFactory.createProc(coreFile, exeFile,
-					  options.loadMetaData);
+	Proc coreProc = LinuxCoreFactory.createProc(coreFile, exeFile,
+						    options.loadMetaData);
 
 	// All checks are done. Host is built. Now start reserving
 	// space in the sets.
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index cf89fb9..85b3c53 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -1,5 +1,7 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* Host.java (getSoleProcFIXME()): Delete.
+
 	* ProcBlockAction.java: Use LinuxCoreFactory.
 
 2008-02-20  Phil Muldoon  <pmuldoon@redhat.com>
diff --git a/frysk-core/frysk/proc/Host.java b/frysk-core/frysk/proc/Host.java
index 7aff0a1..2d32cc6 100644
--- a/frysk-core/frysk/proc/Host.java
+++ b/frysk-core/frysk/proc/Host.java
@@ -109,22 +109,6 @@ public abstract class Host implements Comparable {
 	logger.log(Level.FINE, "{0} getProc ProcId {1} \n", new Object[] {this, id}); 
 	return (Proc) procPool.get(id);
     }
-    /**
-     * Assuming that this host has only one proc; return it; this is
-     * used by the EXE and CORE targets
-     *
-     * FIXME: This should this be replaced by methods to "request a
-     * core" and "request a proc".
-     */
-    public Proc getSoleProcFIXME() {
-	switch (procPool.size()) {
-	case 1:
-	    return (Proc) procPool.values().iterator().next();
-	default:
-	    return null;
-	}
-    }
-
 
     /**
      * Find a specifc process from its Id.
diff --git a/frysk-core/frysk/proc/dead/ChangeLog b/frysk-core/frysk/proc/dead/ChangeLog
index 9f6b5ef..0498f3e 100644
--- a/frysk-core/frysk/proc/dead/ChangeLog
+++ b/frysk-core/frysk/proc/dead/ChangeLog
@@ -1,5 +1,15 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* TestLinuxExe.java (testRequestProc()): New.
+	(testRequestProc()): New.
+	* DeadHost.java (getProc()): New; abstract.
+	(requestProc(int,FindProc)): Use.
+	(requestRefresh(Collection,HostRefreshBuilder)): Implement.
+	* LinuxExeHost.java: Update.
+	* LinuxCoreHost.java: Update.
+	* LinuxCoreFactory.java: Update.
+	* LinuxExeFactory.java: Update.
+
 	* LinuxExeFactory.java (createProc(File,String[])): Replace
 	createProc(EventLoop,File,String[]).
 	(createProc(String[])): New.
diff --git a/frysk-core/frysk/proc/dead/DeadHost.java b/frysk-core/frysk/proc/dead/DeadHost.java
index 127a735..4dd789c 100644
--- a/frysk-core/frysk/proc/dead/DeadHost.java
+++ b/frysk-core/frysk/proc/dead/DeadHost.java
@@ -40,10 +40,10 @@
 package frysk.proc.dead;
 
 import frysk.proc.Host;
+import java.util.HashSet;
 import frysk.proc.TaskObserver.Attached;
 import frysk.proc.Proc;
 import frysk.proc.Manager;
-import frysk.proc.ProcId;
 import frysk.proc.FindProc;
 import frysk.proc.HostRefreshBuilder;
 import frysk.event.Event;
@@ -61,29 +61,44 @@ abstract class DeadHost extends Host {
 					  Attached attached) {
 	throw new RuntimeException("requestCreateAttachedProc");
     }
-    public void requestRefresh(Collection knownProcesses,
-			       HostRefreshBuilder builder) {
-	// Ignore for now; should call back with the known processes
-	// (all one of them) for this dead host
+    public void requestRefresh(final Collection theKnownProcesses,
+			       final HostRefreshBuilder theBuilder) {
+	Manager.eventLoop.add(new Event() {
+		private final Collection knownProcesses = theKnownProcesses;
+		private final HostRefreshBuilder builder = theBuilder;
+		public void execute() {
+		    Proc proc = getProc();
+		    if (knownProcesses.contains(proc)) {
+			builder.construct(new HashSet(), new HashSet());
+		    } else {
+			HashSet added = new HashSet();
+			added.add(proc);
+			builder.construct(added, new HashSet());
+		    }
+		}
+	    });
     }
 			       
     public Proc getSelf() {
 	throw new RuntimeException("getSelf");
     }
 
-    // FIXME: Should be able to just return the sole process (after
-    // validating that it is what was requested).
-    public void requestProc(final int theProcId, final FindProc theFinder) {
+    /**
+     * Return the sole process bound to the dead host.
+     */
+    abstract DeadProc getProc();
+
+    public void requestProc(final int thePid, final FindProc theFinder) {
 	Manager.eventLoop.add(new Event() {
 		// Avoid implicit variables; gcj bug.
-		private final int procId = theProcId;
+		private final int pid = thePid;
 		private final FindProc finder = theFinder;
 		public void execute() {
-		    Proc proc = getProc(new ProcId(procId));
-		    if (proc == null) {
-			finder.procNotFound(procId);
-		    } else {
+		    Proc proc = getProc();
+		    if (proc.getPid() == pid) {
 			finder.procFound(proc);
+		    } else {
+			finder.procNotFound(pid);
 		    }
 		}
 	    });
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreFactory.java b/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
index e291cf8..c663d6f 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreFactory.java
@@ -54,8 +54,8 @@ public class LinuxCoreFactory {
      *
      * All File paths <b>must</b> be canonical.
      */
-    public static LinuxCoreProc createProc(File coreFile, File exeFile,
-					   boolean extendedMetaData) {
+    public static DeadProc createProc(File coreFile, File exeFile,
+				      boolean extendedMetaData) {
 	LinuxCoreInfo core = new LinuxCoreInfo(coreFile, exeFile,
 					       extendedMetaData);
 	LinuxCoreHost host = new LinuxCoreHost(core);
@@ -66,7 +66,7 @@ public class LinuxCoreFactory {
      *
      * All File paths <b>must</b> be canonical.
      */
-    public static LinuxCoreProc createProc(File coreFile) {
+    public static DeadProc createProc(File coreFile) {
 	return createProc(coreFile, null, false);
     }
     /**
@@ -75,7 +75,7 @@ public class LinuxCoreFactory {
      *
      * All File paths <b>must</b> be canonical.
      */
-    public static LinuxCoreProc createProc(File coreFile, File exeFile) {
+    public static DeadProc createProc(File coreFile, File exeFile) {
 	return createProc(coreFile, exeFile, true);
     }
 }
diff --git a/frysk-core/frysk/proc/dead/LinuxCoreHost.java b/frysk-core/frysk/proc/dead/LinuxCoreHost.java
index 1807ec1..43749cb 100644
--- a/frysk-core/frysk/proc/dead/LinuxCoreHost.java
+++ b/frysk-core/frysk/proc/dead/LinuxCoreHost.java
@@ -54,7 +54,7 @@ public class LinuxCoreHost extends DeadHost {
 	proc = new LinuxCoreProc(this, info);
     }
 
-    LinuxCoreProc getProc() {
+    DeadProc getProc() {
 	return proc;
     }
     public String getName() {
diff --git a/frysk-core/frysk/proc/dead/LinuxExeFactory.java b/frysk-core/frysk/proc/dead/LinuxExeFactory.java
index 3165f4f..a5a1308 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeFactory.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeFactory.java
@@ -48,7 +48,7 @@ import lib.dwfl.ElfEHeader;
 import frysk.proc.MemoryMap;
 
 public class LinuxExeFactory {
-    public static LinuxExeProc createProc(final File exeFile,
+    public static DeadProc createProc(final File exeFile,
 					  String[] args) {
 	Elf exeElf = null;
 	try {
@@ -84,7 +84,7 @@ public class LinuxExeFactory {
 	}
     }
 
-    public static LinuxExeProc createProc(String[] args) {
+    public static DeadProc createProc(String[] args) {
 	return createProc(new File(args[0]), args);
     }
 }
diff --git a/frysk-core/frysk/proc/dead/LinuxExeHost.java b/frysk-core/frysk/proc/dead/LinuxExeHost.java
index a9932e0..94e7fd7 100644
--- a/frysk-core/frysk/proc/dead/LinuxExeHost.java
+++ b/frysk-core/frysk/proc/dead/LinuxExeHost.java
@@ -57,7 +57,7 @@ public class LinuxExeHost extends DeadHost {
 	return exeFile.getName();
     }
 
-    LinuxExeProc getProc() {
+    DeadProc getProc() {
 	return proc;
     }
 }
diff --git a/frysk-core/frysk/proc/dead/TestLinuxExe.java b/frysk-core/frysk/proc/dead/TestLinuxExe.java
index 8219926..fb3dda1 100644
--- a/frysk-core/frysk/proc/dead/TestLinuxExe.java
+++ b/frysk-core/frysk/proc/dead/TestLinuxExe.java
@@ -41,8 +41,12 @@ package frysk.proc.dead;
 
 import frysk.Config;
 import inua.eio.ByteBuffer;
-
+import java.util.HashSet;
+import frysk.proc.FindProc;
+import java.util.Collection;
+import frysk.proc.HostRefreshBuilder;
 import frysk.proc.Task;
+import frysk.proc.Manager;
 import frysk.proc.Proc;
 import frysk.testbed.TestLib;
 
@@ -69,4 +73,34 @@ public class TestLinuxExe extends TestLib {
 	assertEquals("Peek a byte at 0x080497dc", (byte) 0xFF, buffer.getUByte());
 	assertEquals("Peek a byte at 0x080497dd", (byte) 0xFF, buffer.getUByte());
     }
+
+    public void testRequestRefresh() {
+	final Proc proc
+	    = LinuxExeFactory.createProc(Config.getPkgDataFile("test-exe-x86"),
+					 new String[0]);
+	proc.getHost().requestRefresh(new HashSet(), new HostRefreshBuilder() {
+		public void construct(Collection added, Collection removed) {
+		    assertTrue("added contains proc", added.contains(proc));
+		    assertFalse("removed contains proc", removed.contains(proc));
+		    Manager.eventLoop.requestStop();
+		}
+	    });
+	assertRunUntilStop("find proc");
+    }
+
+    public void testRequestProc() {
+	final Proc proc
+	    = LinuxExeFactory.createProc(Config.getPkgDataFile("test-exe-x86"),
+					 new String[0]);
+	proc.getHost().requestProc(proc.getPid(), new FindProc() {
+		public void procFound(Proc found) {
+		    assertEquals("found proc", proc, found);
+		    Manager.eventLoop.requestStop();
+		}
+		public void procNotFound(int pid) {
+		    fail("proc not found");
+		}
+	    });
+	assertRunUntilStop("find proc");
+    }
 }
diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog
index 0e3552a..9b3d0c9 100644
--- a/frysk-core/frysk/util/ChangeLog
+++ b/frysk-core/frysk/util/ChangeLog
@@ -1,5 +1,7 @@
 2008-02-26  Andrew Cagney  <cagney@redhat.com>
 
+	* Util.java (getProcFromExeFile(Host)): Delete.
+
 	* CommandlineParser.java parseCommandFIXME(String[]): Replace
 	parseCommand(String[]).
 	(parseCommand(Proc)): New.
diff --git a/frysk-core/frysk/util/Util.java b/frysk-core/frysk/util/Util.java
index bcde440..0bcce53 100644
--- a/frysk-core/frysk/util/Util.java
+++ b/frysk-core/frysk/util/Util.java
@@ -41,7 +41,6 @@ package frysk.util;
 
 import gnu.classpath.tools.getopt.OptionException;
 import java.io.File;
-import frysk.proc.Host;
 import frysk.proc.FindProc;
 import frysk.proc.Manager;
 import frysk.proc.dead.LinuxCoreFactory;
@@ -102,16 +101,4 @@ public class Util
 	    throw new OptionException("Process " + pid + " not found");
 	return finder.proc;
     }
-  
-    /**
-     * Return the Proc associated with an executable File.
-     * @param exeHost the Host associated with the desired Proc.
-     * @return The Proc for the given executable File.
-     */
-    public static Proc getProcFromExeFile(Host exeHost) {
-	Proc proc = exeHost.getSoleProcFIXME();
-	if (proc == null)
-	    throw new RuntimeException("Cannot find a process in this executable.");
-	return proc;
-    }
 }


hooks/post-receive
--
frysk system monitor/debugger


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

only message in thread, other threads:[~2008-02-26 21:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-26 21:30 [SCM] master: Implement dead refresh methods 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).