This is the mail archive of the frysk-cvs@sources.redhat.com mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[SCM] master: Delete Task.taskStateDetached.


The branch, master has been updated
       via  e9c42b96ada5c88bd7d1bf05c784f71e5a8dfa59 (commit)
       via  28c639989b7c972d29627e135f1ef4934bcb9a45 (commit)
      from  195dbd82a19661fb6839274d047178cae498747d (commit)

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

- Log -----------------------------------------------------------------
commit e9c42b96ada5c88bd7d1bf05c784f71e5a8dfa59
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue Jan 15 23:33:32 2008 -0500

    Delete Task.taskStateDetached.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-15  Andrew Cagney  <cagney@redhat.com>
    
    	* TestIsa.java (DetachedObserver): Delete.
    	(testIsa()): Use StatState.
    	(testAttachDetachAttachAgainDetachAgainAttachAgainAgain()): Ditto.
    	* Task.java (taskStateDetached): Delete.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-01-15  Andrew Cagney  <cagney@redhat.com>
    
    	* LinuxPtraceTaskState.java: Don't notify Task.taskStateDetached.
    	* LinuxPtraceTask.java (sendDetach(int)): Call clearIsa().
    
    frysk-core/frysk/testbed/ChangeLog
    2008-01-15  Andrew Cagney  <cagney@redhat.com>
    
    	* StatState.java (assertRunUntil(int)): Make public.

commit 28c639989b7c972d29627e135f1ef4934bcb9a45
Author: Andrew Cagney <cagney@redhat.com>
Date:   Tue Jan 15 23:08:27 2008 -0500

    Add frysk.testbed.StatState.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-15  Andrew Cagney  <cagney@redhat.com>
    
    	* TestTaskObserverDetach.java: Use frysk.testbed.StatState.
    
    frysk-core/frysk/testbed/ChangeLog
    2008-01-15  Andrew Cagney  <cagney@redhat.com>
    
    	* StatState.java: New.
    	* TestStatState.java: New.
    	* Offspring.java (assertIs(StatState)): New.
    	(assertRunUntil(StatState)): New.
    	* TestLib.java (assertStatState(int,char)): Delete.
    	* LegacyOffspring.java: Update.
    	* SlaveOffspring.java: Update.
    
    frysk-sys/frysk/rsl/ChangeLog
    2008-01-15  Andrew Cagney  <cagney@redhat.com>
    
    	* Log.java (print(char)): New.
    	(log(Object,String,int,String,char)): New.
    	(log(String,char)): New.
    	(log(String,char[])): New.
    
    frysk-sys/frysk/sys/proc/ChangeLog
    2008-01-15  Andrew Cagney  <cagney@redhat.com>
    
    	* Stat.java (Stat(int)): New.

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

Summary of changes:
 frysk-core/frysk/proc/ChangeLog                    |    7 ++
 frysk-core/frysk/proc/Task.java                    |   20 -----
 frysk-core/frysk/proc/TestIsa.java                 |   82 +++++--------------
 frysk-core/frysk/proc/TestTaskObserverDetach.java  |    3 +-
 frysk-core/frysk/proc/live/ChangeLog               |    3 +
 frysk-core/frysk/proc/live/LinuxPtraceTask.java    |    8 +-
 .../frysk/proc/live/LinuxPtraceTaskState.java      |    3 -
 frysk-core/frysk/testbed/ChangeLog                 |   12 +++
 frysk-core/frysk/testbed/LegacyOffspring.java      |    2 +-
 frysk-core/frysk/testbed/Offspring.java            |   15 ++++
 frysk-core/frysk/testbed/SlaveOffspring.java       |    2 +-
 frysk-core/frysk/testbed/TestLib.java              |   38 +---------
 frysk-sys/frysk/rsl/ChangeLog                      |    6 ++
 frysk-sys/frysk/rsl/Log.java                       |   54 ++++++++++++-
 frysk-sys/frysk/sys/proc/ChangeLog                 |    4 +
 frysk-sys/frysk/sys/proc/Stat.java                 |   17 +++--
 16 files changed, 140 insertions(+), 136 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index e7d07e1..d9269ea 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -1,5 +1,12 @@
 2008-01-15  Andrew Cagney  <cagney@redhat.com>
 
+	* TestIsa.java (DetachedObserver): Delete.
+	(testIsa()): Use StatState.
+	(testAttachDetachAttachAgainDetachAgainAttachAgainAgain()): Ditto.
+	* Task.java (taskStateDetached): Delete.
+
+	* TestTaskObserverDetach.java: Use frysk.testbed.StatState.
+
 	* Task.java (sendrecMemory()): Delete.
 	(getMemory()): Make abstract.	
 
diff --git a/frysk-core/frysk/proc/Task.java b/frysk-core/frysk/proc/Task.java
index f615992..710c8c0 100644
--- a/frysk-core/frysk/proc/Task.java
+++ b/frysk-core/frysk/proc/Task.java
@@ -48,7 +48,6 @@ import java.util.Set;
 import java.util.HashSet;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import java.util.Observer;
 import java.util.Observable;
 import frysk.isa.Register;
 import frysk.isa.ISA;
@@ -363,25 +362,6 @@ public abstract class Task {
     }
   
     /**
-     * The process has transitioned to the detached.
-     *
-     * XXX: Should be made private and instead accessor methods added.
-     * Should more formally define the observable and the event.
-     */
-    public static TaskStateObservable taskStateDetached = new TaskStateObservable ();
-  
-    static {
-	taskStateDetached.addObserver(new Observer() {
-		public void update (Observable o, Object arg) {
-		    if (arg instanceof Task) {
-			Task task = (Task) arg;
-			task.clearIsa();
-		    }
-		}
-	    });
-    }
- 
-    /**
      * Use a counter rather than a boolean because multiple caches may
      * depend on this count and no cache should be able to clear it.
      */
diff --git a/frysk-core/frysk/proc/TestIsa.java b/frysk-core/frysk/proc/TestIsa.java
index 406c7c3..171f92c 100644
--- a/frysk-core/frysk/proc/TestIsa.java
+++ b/frysk-core/frysk/proc/TestIsa.java
@@ -40,75 +40,39 @@
 package frysk.proc;
 
 import frysk.isa.ISA;
-import java.util.Observable;
 import frysk.testbed.TestLib;
 import frysk.testbed.TaskObserverBase;
 import frysk.testbed.ExecOffspring;
 import frysk.testbed.SlaveOffspring;
 import frysk.testbed.ExecCommand;
+import frysk.testbed.StatState;
 
 public class TestIsa
     extends TestLib
 {
 
-  class AttachedObserver
-      extends TaskObserverBase
-      implements TaskObserver.Attached
-  {
-    public Action updateAttached (Task task)
-    {
-	task.getISA();
-      
-      assertTrue("task isa initialized", task.hasIsa());
-      Manager.eventLoop.requestStop();
-      return Action.CONTINUE;
-    }
-  }
-
-  class DetachedObserver
-      implements java.util.Observer
-  {
-    Task task;
-
-    public DetachedObserver (Task t)
-    {
-      task = t;
-    }
-
-    public void update (Observable o, Object arg)
+    static class AttachedObserver
+	extends TaskObserverBase
+	implements TaskObserver.Attached
     {
-      if (arg instanceof Task)
-        {
-          Task t = (Task) arg;
-
-          if (t == task)
-            {
-              Manager.eventLoop.requestStop();
-            }
-        }
+	public Action updateAttached(Task task) {
+	    task.getISA();
+	    assertTrue("task isa initialized", task.hasIsa());
+	    Manager.eventLoop.requestStop();
+	    return Action.CONTINUE;
+	}
     }
 
-  }
-
-  public void testIsa ()
-  {
-
-    SlaveOffspring ackProc = SlaveOffspring.createChild();
-
-    final Task task = ackProc.findTaskUsingRefresh(true);
-
-    assertFalse("Task isa not initialized", task.hasIsa());    
-
-    TaskObserver.Attached attacher = new AttachedObserver();
-
-    Task.taskStateDetached.addObserver(new DetachedObserver(task));
-
-    task.requestAddAttachedObserver(attacher);
-    assertRunUntilStop("testIsa attach");
-    task.requestDeleteAttachedObserver(attacher);
-    assertRunUntilStop("testIsa detach");
-
-    assertFalse("Task isa flushed", task.hasIsa());
+  public void testIsa() {
+      SlaveOffspring ackProc = SlaveOffspring.createChild();
+      Task task = ackProc.findTaskUsingRefresh(true);
+      assertFalse("Task isa not initialized", task.hasIsa());    
+      TaskObserver.Attached attacher = new AttachedObserver();
+      task.requestAddAttachedObserver(attacher);
+      assertRunUntilStop("testIsa attach");
+      task.requestDeleteAttachedObserver(attacher);
+      StatState.SLEEPING.assertRunUntil(task.getTid());
+      assertFalse("Task isa flushed", task.hasIsa());
   }
 
   public void testIsaSingleton ()
@@ -234,10 +198,8 @@ public class TestIsa
 
     assertNotNull("Proc has an isa", proc.getMainTask().getISA());
 
-    Task.taskStateDetached.addObserver(new DetachedObserver(task));
-
     task.requestDeleteAttachedObserver(attacher);
-    assertRunUntilStop("First Detach");
+    StatState.SLEEPING.assertRunUntil(task.getTid());
 
     assertFalse("Task doesn't have isa", proc.getMainTask().hasIsa());
 
@@ -247,7 +209,7 @@ public class TestIsa
     assertTrue("Task has isa", proc.getMainTask().hasIsa());
 
     task.requestDeleteAttachedObserver(attacher);
-    assertRunUntilStop("Second detach");
+    StatState.SLEEPING.assertRunUntil(task.getTid());
 
     assertFalse("Task doesn't have isa", proc.getMainTask().hasIsa());
 
diff --git a/frysk-core/frysk/proc/TestTaskObserverDetach.java b/frysk-core/frysk/proc/TestTaskObserverDetach.java
index aab230c..496e914 100644
--- a/frysk-core/frysk/proc/TestTaskObserverDetach.java
+++ b/frysk-core/frysk/proc/TestTaskObserverDetach.java
@@ -39,6 +39,7 @@
 
 package frysk.proc;
 
+import frysk.testbed.StatState;
 import frysk.event.RequestStopEvent;
 import frysk.sys.Signal;
 import java.util.Observable;
@@ -119,7 +120,7 @@ public class TestTaskObserverDetach
 	    if (!eventIsSignal ())
 		assertRunUntilStop ("delivering signal");
 	    
-	    assertStatState(task.getTid(), 'T');
+	    StatState.TRACED_OR_STOPPED.assertIs(task.getTid());
 	    
 	    // Set up an ack handler to catch the process
 	    // acknowledging that it has completed the relevant task.
diff --git a/frysk-core/frysk/proc/live/ChangeLog b/frysk-core/frysk/proc/live/ChangeLog
index 3bdb23c..b8e3cab 100644
--- a/frysk-core/frysk/proc/live/ChangeLog
+++ b/frysk-core/frysk/proc/live/ChangeLog
@@ -1,5 +1,8 @@
 2008-01-15  Andrew Cagney  <cagney@redhat.com>
 
+	* LinuxPtraceTaskState.java: Don't notify Task.taskStateDetached.
+	* LinuxPtraceTask.java (sendDetach(int)): Call clearIsa().
+	
 	* LinuxPtraceTask.java (getMemory()): Replace sendrecMemory().
 
 2008-01-14  Rick Moseley  <rmoseley@redhat.com>
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTask.java b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
index 7e535b9..20f4953 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTask.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTask.java
@@ -360,14 +360,14 @@ public class LinuxPtraceTask extends LiveTask {
 	    }
     }
 
-    public void sendDetach (int sig)
-    {
+    public void sendDetach(int sig) {
 	logger.log(Level.FINE, "{0} sendDetach\n", this);
-	// Ignore problems trying to detach, most of the time the problem is the
-	// process has already left the cpu queue
+	clearIsa();
 	try {
 	    Ptrace.detach(getTid(), sig);
 	} catch (Exception e) {
+	    // Ignore problems trying to detach, most of the time the
+	    // problem is the process has already left the cpu queue
 	}
     }
 
diff --git a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
index f6242fd..dc58ffd 100644
--- a/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
+++ b/frysk-core/frysk/proc/live/LinuxPtraceTaskState.java
@@ -1267,9 +1267,6 @@ class LinuxPtraceTaskState extends State {
 		// task is detached.
 		task.sendDetach (0);
 		((LinuxPtraceProc)task.getProc()).performTaskDetachCompleted (task);
-		// FIXME: This static reference is totally bogus;
-		// should be stored in the dynamic LinuxPtraceHost.
-		frysk.proc.Task.taskStateDetached.notify(task);
 		return detached;
 	    }
 	    LinuxPtraceTaskState handleTerminatingEvent (LinuxPtraceTask task, boolean signal,
diff --git a/frysk-core/frysk/testbed/ChangeLog b/frysk-core/frysk/testbed/ChangeLog
index a4ab1c7..743820c 100644
--- a/frysk-core/frysk/testbed/ChangeLog
+++ b/frysk-core/frysk/testbed/ChangeLog
@@ -1,3 +1,15 @@
+2008-01-15  Andrew Cagney  <cagney@redhat.com>
+
+	* StatState.java (assertRunUntil(int)): Make public.	
+
+	* StatState.java: New.
+	* TestStatState.java: New.
+	* Offspring.java (assertIs(StatState)): New.
+	(assertRunUntil(StatState)): New.
+	* TestLib.java (assertStatState(int,char)): Delete.
+	* LegacyOffspring.java: Update.
+	* SlaveOffspring.java: Update.
+
 2008-01-07  Andrew Cagney  <cagney@redhat.com>
 
 	* Offspring.java: Update; use Host.requestProc.
diff --git a/frysk-core/frysk/testbed/LegacyOffspring.java b/frysk-core/frysk/testbed/LegacyOffspring.java
index 3fc8b41..0b9b1fa 100644
--- a/frysk-core/frysk/testbed/LegacyOffspring.java
+++ b/frysk-core/frysk/testbed/LegacyOffspring.java
@@ -231,7 +231,7 @@ public class LegacyOffspring
      */
     public void assertSendStop () {
 	signal(STOP_SIG);
-	TestLib.assertStatState(this.getPid(), 'T');
+	assertIs(StatState.TRACED_OR_STOPPED);
     }
 
     /**
diff --git a/frysk-core/frysk/testbed/Offspring.java b/frysk-core/frysk/testbed/Offspring.java
index 4a5f712..c734f32 100644
--- a/frysk-core/frysk/testbed/Offspring.java
+++ b/frysk-core/frysk/testbed/Offspring.java
@@ -121,4 +121,19 @@ public abstract class Offspring {
 	}
 	return null;
     }
+
+    /**
+     * The Offspring's main thread is in (or transitions to) the
+     * specified state.
+     */
+    public void assertIs(StatState state) {
+	state.assertIs(getPid());
+    }
+    /**
+     * Run the event-loop until the offspring's main thread is in the
+     * specified state.
+     */
+    public void assertRunUntil(StatState state) {
+	state.assertRunUntil(getPid());
+    }
 }
diff --git a/frysk-core/frysk/testbed/SlaveOffspring.java b/frysk-core/frysk/testbed/SlaveOffspring.java
index 20b5793..5b5304e 100644
--- a/frysk-core/frysk/testbed/SlaveOffspring.java
+++ b/frysk-core/frysk/testbed/SlaveOffspring.java
@@ -238,7 +238,7 @@ public class SlaveOffspring
      */
     public void assertSendStop () {
 	signal(STOP_SIG);
-	TestLib.assertStatState(this.getPid(), 'T');
+	assertIs(StatState.TRACED_OR_STOPPED);
     }
 
     /**
diff --git a/frysk-core/frysk/testbed/TestLib.java b/frysk-core/frysk/testbed/TestLib.java
index 21a9062..4d2b437 100644
--- a/frysk-core/frysk/testbed/TestLib.java
+++ b/frysk-core/frysk/testbed/TestLib.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
@@ -103,42 +103,6 @@ public class TestLib
 	assertRunUntilStop(getTimeoutSeconds (), reason);
     }
 
-  /**
-   * Asserts that the State of the given tid turns to the given state,
-   * 'R' running, 'S' sleeping (interruptible), 'D' waiting/disk
-   * (uninterruptible), 'Z' zombie, 'T' traced or stopped or 'W'
-   * paging, in the current timeout.
-   */
-  public static void assertStatState(int tid, char state)
-  {
-    long timeout = getTimeoutMilliseconds();
-    Stat stat = new Stat();
-    stat.refresh(tid);
-    while (timeout > 0)
-      {
-	if (stat.state == state)
-	  return;
-	
-	long startsleep = System.currentTimeMillis();
-	try
-	  {
-	    Thread.sleep(100);
-	  }
-	catch (InterruptedException ie)
-	  {
-	    /* ignore */
-	  }
-
-	long now = System.currentTimeMillis();
-	timeout = timeout - (now - startsleep);
-
-	stat.refresh();
-      }
-
-    TestCase.fail("Stat state for tid " + tid + " expected '"
-		  + state + "' but was '" + stat.state + "'");
-  }
-
     /**
      * Process all the pending events; no polling of external events
      * is performed.  XXX: Static to avoid gcc bugs.
diff --git a/frysk-sys/frysk/rsl/ChangeLog b/frysk-sys/frysk/rsl/ChangeLog
index 04766c1..1284dad 100644
--- a/frysk-sys/frysk/rsl/ChangeLog
+++ b/frysk-sys/frysk/rsl/ChangeLog
@@ -1,4 +1,10 @@
+2008-01-15  Andrew Cagney  <cagney@redhat.com>
 
+	* Log.java (print(char)): New.
+	(log(Object,String,int,String,char)): New.
+	(log(String,char)): New.
+	(log(String,char[])): New.
+	
 2008-01-07  Nurdin Premji <npremji@redhat.com>
 
 	* Log.java(log(String,String): Added.
diff --git a/frysk-sys/frysk/rsl/Log.java b/frysk-sys/frysk/rsl/Log.java
index f89711b..ebb7bd9 100644
--- a/frysk-sys/frysk/rsl/Log.java
+++ b/frysk-sys/frysk/rsl/Log.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
@@ -227,6 +227,26 @@ public final class Log {
     }
     
     /**
+     * Chars are printed in quotes.
+     */
+    private void print(char c) {
+	out.print(" '");
+	out.print(c);
+	out.print("'");
+    }
+    private void print(char[] a) {
+	out.print(" {");
+	for (int i = 0; i < a.length; i++) {
+	    if (i > 0)
+		out.print(',');
+	    out.print('\'');
+	    out.print(a[i]);
+	    out.print('\'');
+	}
+	out.print('}');
+    }
+
+    /**
      * Integers are printed in decimal.
      */
     private void print(int i) {
@@ -242,8 +262,9 @@ public final class Log {
 	}
 	out.print("]");
     }
+
     /**
-     * Longs are always printed in hex.
+     * Longs are printed in hex.
      */
     private void print(long l) {
 	out.print(" 0x");
@@ -267,7 +288,7 @@ public final class Log {
 	out.print(s);
     }
     /**
-     * Use poorly implemented reflection to dump Objectss.
+     * Use poorly implemented reflection to dump Objects.
      */
     private void print(Object o) {
 	out.print(" ");
@@ -304,6 +325,22 @@ public final class Log {
 	suffix();
     }
     
+    public void log(String p1, char p2) {
+	if (!logging)
+	    return;
+	prefix();
+	print(p1);
+	print(p2);
+	suffix();
+    }
+    public void log(String p1, char[] p2) {
+	if (!logging)
+	    return;
+	prefix();
+	print(p1);
+	print(p2);
+	suffix();
+    }
     public void log(String p1, String p2) {
 	if (!logging)
 	    return;
@@ -381,6 +418,17 @@ public final class Log {
 	suffix();
     }
 
+    public void log(Object self, String p1, int p2, String p3, char p4) {
+	if (!logging)
+	    return;
+	prefix(self);
+	print(p1);
+	print(p2);
+	print(p3);
+	print(p4);
+	suffix();
+    }
+
     public void log(Object self, String p1, Object p2, String p3, Object p4) {
 	if (!logging)
 	    return;
diff --git a/frysk-sys/frysk/sys/proc/ChangeLog b/frysk-sys/frysk/sys/proc/ChangeLog
index 2dd529b..309417d 100644
--- a/frysk-sys/frysk/sys/proc/ChangeLog
+++ b/frysk-sys/frysk/sys/proc/ChangeLog
@@ -1,3 +1,7 @@
+2008-01-15  Andrew Cagney  <cagney@redhat.com>
+
+	* Stat.java (Stat(int)): New.
+
 2007-07-26  Andrew Cagney  <cagney@redhat.com>
 
 	* cni/slurp.cxx (uslurp): Update; GC parameter to tryOpen removed.
diff --git a/frysk-sys/frysk/sys/proc/Stat.java b/frysk-sys/frysk/sys/proc/Stat.java


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]