public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: Move Proc state into sub-classes.
@ 2008-01-02 20:37 cagney
  0 siblings, 0 replies; only message in thread
From: cagney @ 2008-01-02 20:37 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  e846581652b7eb203c8f0e2d798ea566b1542fbc (commit)
       via  3aea079116ef83f8ee4d87d88a68f5a58ad916ca (commit)
      from  beed29918b8c504f010faaa4f2535a19f55c420d (commit)

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

- Log -----------------------------------------------------------------
commit e846581652b7eb203c8f0e2d798ea566b1542fbc
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed Jan 2 15:35:57 2008 -0500

    Move Proc state into sub-classes.
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-02  Andrew Cagney  <cagney@redhat.com>
    
    	* ProcEvent.java: Make public.
    	* BreakpointAddresses.java (getCodeObservers(long)): Make public.
    	* Proc.java (oldState, newState): Delete.
    	(BreakpointAction): Delete.
    	(InstructionAction): Delete.
    	(SyscallAction): Delete.
    	(getStateFIXME()): Make abstract.
    	(handleAddObservation(TaskObservation)): Make abstract.
    	(oldState()): Delete.
    	(performDetach()): Make abstract.
    	(performRemoval()): Make abstract.
    	(performTaskAttachCompleted(Task)): Make abstract.
    	(performTaskDetachCompleted(Task)): Make abstract.
    	(performTaskDetachCompleted(Task,Task)): Make abstract.
    	(requestAddCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): Make abstract.
    	(requestAddInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): Make abstract.
    	(requestAddObserver(Task,TaskObservable,TaskObserver)): Make abstract.
    	(requestAddSyscallObserver(Task,TaskObservable,TaskObserver)): Make abstract.
    	(requestDeleteCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): Make abstract.
    	(requestDeleteInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): Make abstract.
    	(requestDeleteObserver(Task,TaskObservable,TaskObserver)): Make abstract.
    	(requestDeleteSyscallObserver(Task,TaskObservable,TaskObserver)): Make abstract.
    	(requestRefresh()): Make abstract.
    	(setStateFIXME(ProcState)): New.
    
    frysk-core/frysk/proc/dead/ChangeLog
    2008-01-02  Andrew Cagney  <cagney@redhat.com>
    
    	* DeadProc.java (getStateFIXME()): New.
    	(handleAddObservation(TaskObservation)): New.
    	(oldState()): New.
    	(performDetach()): New.
    	(performRemoval()): New.
    	(performTaskAttachCompleted(Task)): New.
    	(performTaskDetachCompleted(Task)): New.
    	(performTaskDetachCompleted(Task,Task)): New.
    	(requestAddCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): New.
    	(requestAddInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): New.
    	(requestAddObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestAddSyscallObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestDeleteCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): New.
    	(requestDeleteInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): New.
    	(requestDeleteObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestDeleteSyscallObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestRefresh()): New.
    	(setStateFIXME(ProcState)): New.
    
    frysk-core/frysk/proc/dummy/ChangeLog
    2008-01-02  Andrew Cagney  <cagney@redhat.com>
    
    	* DummyProc.java (getStateFIXME()): New.
    	(handleAddObservation(TaskObservation)): New.
    	(performDetach()): New.
    	(performRemoval()): New.
    	(performTaskAttachCompleted(Task)): New.
    	(performTaskDetachCompleted(Task)): New.
    	(performTaskDetachCompleted(Task,Task)): New.
    	(requestAddCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): New.
    	(requestAddInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): New.
    	(requestAddObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestAddSyscallObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestDeleteCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): New.
    	(requestDeleteInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): New.
    	(requestDeleteObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestDeleteSyscallObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestRefresh()): New.
    	(setStateFIXME(ProcState)): New.
    
    frysk-core/frysk/proc/live/ChangeLog
    2008-01-02  Andrew Cagney  <cagney@redhat.com>
    
    	* LiveProc.java (oldState, newState): New.
    	(BreakpointAction): New.
    	(InstructionAction): New.
    	(SyscallAction): New.
    	(getStateFIXME()): New.
    	(handleAddObservation(TaskObservation)): New.
    	(oldState()): New.
    	(performDetach()): New.
    	(performRemoval()): New.
    	(performTaskAttachCompleted(Task)): New.
    	(performTaskDetachCompleted(Task)): New.
    	(performTaskDetachCompleted(Task,Task)): New.
    	(requestAddCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): New.
    	(requestAddInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): New.
    	(requestAddObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestAddSyscallObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestDeleteCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): New.
    	(requestDeleteInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): New.
    	(requestDeleteObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestDeleteSyscallObserver(Task,TaskObservable,TaskObserver)): New.
    	(requestRefresh()): New.
    	(setStateFIXME(ProcState)): New.

commit 3aea079116ef83f8ee4d87d88a68f5a58ad916ca
Author: Andrew Cagney <cagney@redhat.com>
Date:   Wed Jan 2 14:12:49 2008 -0500

    Replace Proc.getState() with .getStateFIXME().
    
    frysk-core/frysk/proc/ChangeLog
    2008-01-02  Andrew Cagney  <cagney@redhat.com>
    
    	* Proc.java (getStateFIXME()): New.
    	(getState()): Delete.
    	(toString()): Update.
    	* TestRefresh.java: Update.

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

Summary of changes:
 frysk-core/frysk/proc/BreakpointAddresses.java |   38 +--
 frysk-core/frysk/proc/ChangeLog                |   30 ++
 frysk-core/frysk/proc/Proc.java                |  354 +++-----------------
 frysk-core/frysk/proc/ProcEvent.java           |    7 +-
 frysk-core/frysk/proc/TestRefresh.java         |    4 +-
 frysk-core/frysk/proc/dead/ChangeLog           |   19 +
 frysk-core/frysk/proc/dead/DeadProc.java       |  423 +++++++++++++++++++++++-
 frysk-core/frysk/proc/dummy/ChangeLog          |   18 +
 frysk-core/frysk/proc/dummy/DummyProc.java     |   68 ++++
 frysk-core/frysk/proc/live/ChangeLog           |   23 ++
 frysk-core/frysk/proc/live/LiveProc.java       |  423 +++++++++++++++++++++++-
 11 files changed, 1068 insertions(+), 339 deletions(-)

First 500 lines of diff:
diff --git a/frysk-core/frysk/proc/BreakpointAddresses.java b/frysk-core/frysk/proc/BreakpointAddresses.java
index 7d5842d..15553c9 100644
--- a/frysk-core/frysk/proc/BreakpointAddresses.java
+++ b/frysk-core/frysk/proc/BreakpointAddresses.java
@@ -1,6 +1,6 @@
 // This file is part of the program FRYSK.
 //
-// Copyright 2006, 2007 Red Hat Inc.
+// Copyright 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
@@ -141,25 +141,23 @@ public class BreakpointAddresses
       return false;
   }
 
-  /**
-   * Called by the Proc when it has trapped a breakpoint.  Returns a
-   * Collection of TaskObserver.Code observers interested in the given
-   * address or null when no Code observer was installed on this address.
-   */
-  Collection getCodeObservers(long address)
-  {
-    ArrayList observers;
-    Breakpoint breakpoint = Breakpoint.create(address, proc);
-    ArrayList list = (ArrayList) map.get(breakpoint);
-    if (list == null)
-      return null;
-    
-    // Return the cloned list of observers in case the Code observer
-    // wants to add or remove itself or a new observer to that same
-    // breakpoint.
-    observers = (ArrayList) list.clone();
-    return observers;
-  }
+    /**
+     * Called by the Proc when it has trapped a breakpoint.  Returns a
+     * Collection of TaskObserver.Code observers interested in the given
+     * address or null when no Code observer was installed on this address.
+     */
+    public Collection getCodeObservers(long address) {
+	ArrayList observers;
+	Breakpoint breakpoint = Breakpoint.create(address, proc);
+	ArrayList list = (ArrayList) map.get(breakpoint);
+	if (list == null)
+	    return null;
+	// Return the cloned list of observers in case the Code
+	// observer wants to add or remove itself or a new observer to
+	// that same breakpoint.
+	observers = (ArrayList) list.clone();
+	return observers;
+    }
 
   public Breakpoint getBreakpoint(long address)
   {
diff --git a/frysk-core/frysk/proc/ChangeLog b/frysk-core/frysk/proc/ChangeLog
index 42e0d46..fe16ce0 100644
--- a/frysk-core/frysk/proc/ChangeLog
+++ b/frysk-core/frysk/proc/ChangeLog
@@ -1,5 +1,35 @@
 2008-01-02  Andrew Cagney  <cagney@redhat.com>
 
+	* ProcEvent.java: Make public.
+	* BreakpointAddresses.java (getCodeObservers(long)): Make public.
+	* Proc.java (oldState, newState): Delete.
+	(BreakpointAction): Delete.
+	(InstructionAction): Delete.
+	(SyscallAction): Delete.
+	(getStateFIXME()): Make abstract.
+	(handleAddObservation(TaskObservation)): Make abstract.
+	(oldState()): Delete.
+	(performDetach()): Make abstract.
+	(performRemoval()): Make abstract.
+	(performTaskAttachCompleted(Task)): Make abstract.
+	(performTaskDetachCompleted(Task)): Make abstract.
+	(performTaskDetachCompleted(Task,Task)): Make abstract.
+	(requestAddCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): Make abstract.
+	(requestAddInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): Make abstract.
+	(requestAddObserver(Task,TaskObservable,TaskObserver)): Make abstract.
+	(requestAddSyscallObserver(Task,TaskObservable,TaskObserver)): Make abstract.
+	(requestDeleteCodeObserver(Task,TaskObservable,TaskObserver.Code,long)): Make abstract.
+	(requestDeleteInstructionObserver(Task,TaskObservable,TaskObserver.Instruction)): Make abstract.
+	(requestDeleteObserver(Task,TaskObservable,TaskObserver)): Make abstract.
+	(requestDeleteSyscallObserver(Task,TaskObservable,TaskObserver)): Make abstract.
+	(requestRefresh()): Make abstract.
+	(setStateFIXME(ProcState)): New.
+
+	* Proc.java (getStateFIXME()): New.
+	(getState()): Delete.
+	(toString()): Update.
+	* TestRefresh.java: Update.
+
 	* Proc.java: Make request methods public (for now).
 	* Task.java: Make TaskObservable-s public (for now).
 	(requestUnblock(TaskObserver)): Make abstract.
diff --git a/frysk-core/frysk/proc/Proc.java b/frysk-core/frysk/proc/Proc.java
index 2dda018..85ad4df 100644
--- a/frysk-core/frysk/proc/Proc.java
+++ b/frysk-core/frysk/proc/Proc.java
@@ -261,7 +261,7 @@ public abstract class Proc {
      */
     protected Proc(Host host, Proc parent, ProcId id) {
 	this(id, parent, host, null);
-	newState = getInitialState(false);
+	setStateFIXME(getInitialState(false));
 	logger.log(Level.FINEST, "{0} new - create unattached running proc\n", this);
     }
 
@@ -277,7 +277,7 @@ public abstract class Proc {
      */
     protected Proc(Task task, ProcId forkId) {
 	this(forkId, task.getProc(), task.getProc().getHost(), task);
-	newState = getInitialState(true);
+	setStateFIXME(getInitialState(true));
 	logger.log(Level.FINE, "{0} new - create attached running proc\n", this);
     }
 
@@ -285,38 +285,11 @@ public abstract class Proc {
     public abstract void sendRefresh();
 
     /**
-     * The current state of this Proc, during a state transition
-     * newState is null.
+     * Return the current state as a string.
      */
-    private ProcState oldState;
+    protected abstract String getStateFIXME();
+    protected abstract void setStateFIXME(ProcState state);
 
-    private ProcState newState;
-
-    /**
-     * Return the current state.
-     */
-    ProcState getState() {
-	if (newState != null)
-	    return newState;
-	else
-	    return oldState;
-    }
-
-    /**
-     * Return the current state while at the same time marking that
-     * the state is in flux. If a second attempt to change state
-     * occurs before the current state transition has completed,
-     * barf. XXX: Bit of a hack, but at least this prevents state
-     * transition code attempting a second recursive state transition.
-     */
-    private ProcState oldState() {
-	if (newState == null)
-	    throw new RuntimeException(this + " double state transition");
-	oldState = newState;
-	newState = null;
-	return oldState;
-    }
-  
     /**
      * killRequest handles killing off processes that either the
      * commandline or GUI have designated need to be removed from the
@@ -366,14 +339,7 @@ public abstract class Proc {
      * Request that the Proc's task list be refreshed using system
      * tables.
      */
-    public void requestRefresh() {
-	logger.log(Level.FINE, "{0} requestRefresh\n", this);
-	Manager.eventLoop.add(new ProcEvent() {
-		public void execute() {
-		    newState = oldState().handleRefresh(Proc.this);
-		}
-	    });
-    }
+    public abstract void requestRefresh();
 
     /**
      * (Internal) Tell the process that is no longer listed in the
@@ -381,14 +347,7 @@ public abstract class Proc {
      *
      * XXX: This should not be public.
      */
-    public void performRemoval() {
-	logger.log(Level.FINEST, "{0} performRemoval -- no longer in /proc\n", this);
-	Manager.eventLoop.add(new ProcEvent() {
-		public void execute() {
-		    newState = oldState().handleRemoval(Proc.this);
-		}
-	    });
-    }
+    public abstract void performRemoval();
 
     /**
      *(Internal) Tell the process that the corresponding task has
@@ -396,16 +355,7 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void performTaskAttachCompleted (final Task theTask) {
-	logger.log(Level.FINE, "{0} performTaskAttachCompleted\n", this);
-	Manager.eventLoop.add(new ProcEvent() {
-		Task task = theTask;
-
-		public void execute() {
-		    newState = oldState().handleTaskAttachCompleted(Proc.this, task);
-		}
-	    });
-    }
+    public abstract void performTaskAttachCompleted(Task theTask);
 
     /**
      * (Internal) Tell the process that the corresponding task has
@@ -413,41 +363,16 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void performTaskDetachCompleted(final Task theTask) {
-	logger.log(Level.FINE, "{0} performTaskDetachCompleted\n", this);
-	Manager.eventLoop.add(new ProcEvent() {
-		Task task = theTask;
-		public void execute() {
-		    newState = oldState().handleTaskDetachCompleted(Proc.this, task);
-		}
-	    });
-    }
+    public abstract void performTaskDetachCompleted(Task theTask);
 
     /**
      * (Internal) Tell the process that the corresponding task has
      * completed its detach.
      */
-    void performTaskDetachCompleted(final Task theTask, final Task theClone) {
-	logger.log(Level.FINE, "{0} performTaskDetachCompleted/clone\n", this);
-	Manager.eventLoop.add(new ProcEvent() {
-		Task task = theTask;
+    protected abstract void performTaskDetachCompleted(Task theTask,
+						       Task theClone);
 
-		Task clone = theClone;
-
-		public void execute() {
-		    newState = oldState().handleTaskDetachCompleted(Proc.this, task, clone);
-		}
-	    });
-    }
-
-    void performDetach() {
-	logger.log(Level.FINE, "{0} performDetach\n", this);
-	Manager.eventLoop.add(new ProcEvent() {
-		public void execute() {
-		    newState = oldState().handleDetach(Proc.this, true);
-		}
-	    });
-    }
+    protected abstract void performDetach();
 
     /**
      * The set of observations that currently apply to this task.
@@ -485,9 +410,7 @@ public abstract class Proc {
      * (internal) Tell the process to add the specified Observation,
      * attaching the process if necessary.
      */
-    void handleAddObservation(TaskObservation observation) {
-	newState = oldState().handleAddObservation(this, observation);
-    }
+    protected abstract void handleAddObservation(TaskObservation observation);
 
     /**
      * (Internal) Tell the process to add the specified Observation,
@@ -495,41 +418,9 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void requestAddObserver(Task task, TaskObservable observable,
-			    TaskObserver observer) {
-	logger.log(Level.FINE, "{0} requestAddObservation\n", this);
-	Manager.eventLoop.add(new TaskObservation(task, observable, observer, true) {
-		public void execute() {
-		    handleAddObservation(this);
-		}
-	    });
-    }
-
-    /**
-     * Class describing the action to take on the suspended Task
-     * before adding or deleting a Syscall observer.
-     */
-    final class SyscallAction implements Runnable {
-	private final Task task;
-
-	private final boolean addition;
-
-	SyscallAction(Task task, boolean addition) {
-	    this.task = task;
-	    this.addition = addition;
-	}
-
-	public void run() {
-	    int syscallobs = task.syscallObservers.numberOfObservers();
-	    if (addition) {
-		if (syscallobs == 0)
-		    task.startTracingSyscalls();
-	    } else {
-		if (syscallobs == 0)
-		    task.stopTracingSyscalls();
-	    }
-	}
-    }
+    public abstract void requestAddObserver(Task task,
+					    TaskObservable observable,
+					    TaskObserver observer);
 
     /**
      * (Internal) Tell the process to add the specified Observation,
@@ -538,21 +429,9 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void requestAddSyscallObserver(final Task task, TaskObservable observable,
-				   TaskObserver observer) {
-	logger.log(Level.FINE, "{0} requestAddSyscallObserver\n", this);
-	SyscallAction sa = new SyscallAction(task, true);
-	TaskObservation to = new TaskObservation(task, observable, observer, sa,
-						 true) {
-		public void execute() {
-		    handleAddObservation(this);
-		}
-		public boolean needsSuspendedAction() {
-		    return task.syscallObservers.numberOfObservers() == 0;
-		}
-	    };
-	Manager.eventLoop.add(to);
-    }
+    public abstract void requestAddSyscallObserver(final Task task,
+						   TaskObservable observable,
+						   TaskObserver observer);
 
     /**
      * (Internal) Tell the process to delete the specified
@@ -562,15 +441,9 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void requestDeleteObserver(Task task, TaskObservable observable,
-				      TaskObserver observer) {
-	Manager.eventLoop.add(new TaskObservation(task, observable,
-						  observer, false) {
-		public void execute() {
-		    newState = oldState().handleDeleteObservation(Proc.this, this);
-		}
-	    });
-    }
+    public abstract void requestDeleteObserver(Task task,
+					       TaskObservable observable,
+					       TaskObserver observer);
 
     /**
      * (Internal) Tell the process to delete the specified
@@ -578,63 +451,9 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void requestDeleteSyscallObserver(final Task task,
-				      TaskObservable observable,
-				      TaskObserver observer) {
-	logger.log(Level.FINE, "{0} requestDeleteSyscallObserver\n", this);
-	SyscallAction sa = new SyscallAction(task, false);
-	TaskObservation to = new TaskObservation(task, observable, observer, sa,
-						 false) {
-		public void execute() {
-		    newState = oldState().handleDeleteObservation(Proc.this, this);
-		}
-
-		public boolean needsSuspendedAction() {
-		    return task.syscallObservers.numberOfObservers() == 1;
-		}
-	    };
-	Manager.eventLoop.add(to);
-    }
-
-    /**
-     * Class describing the action to take on the suspended Task
-     * before adding or deleting a Code observer.
-     */
-    final class BreakpointAction implements Runnable {
-	private final TaskObserver.Code code;
-
-	private final Task task;
-
-	private final long address;
-
-	private final boolean addition;
-
-	BreakpointAction(TaskObserver.Code code, Task task, long address,
-			 boolean addition) {
-	    this.code = code;
-	    this.task = task;
-	    this.address = address;
-	    this.addition = addition;
-	}
-
-	public void run() {
-	    if (addition) {
-		boolean mustInstall = breakpoints.addBreakpoint(code, address);
-		if (mustInstall) {
-		    Breakpoint breakpoint;
-		    breakpoint = Breakpoint.create(address, Proc.this);
-		    breakpoint.install(task);
-		}
-	    } else {
-		boolean mustRemove = breakpoints.removeBreakpoint(code, address);
-		if (mustRemove) {
-		    Breakpoint breakpoint;
-		    breakpoint = Breakpoint.create(address, Proc.this);
-		    breakpoint.remove(task);
-		}
-	    }
-	}
-    }
+    public abstract void requestDeleteSyscallObserver(Task task,
+						      TaskObservable observable,
+						      TaskObserver observer);
 
     /**
      * (Internal) Tell the process to add the specified Code
@@ -644,22 +463,10 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void requestAddCodeObserver(Task task, TaskObservable observable,
-				TaskObserver.Code observer,
-				final long address) {
-	logger.log(Level.FINE, "{0} requestAddCodeObserver\n", this);
-	BreakpointAction bpa = new BreakpointAction(observer, task, address, true);
-	TaskObservation to;
-	to = new TaskObservation(task, observable, observer, bpa, true) {
-		public void execute() {
-		    handleAddObservation(this);
-		}
-		public boolean needsSuspendedAction() {
-		    return breakpoints.getCodeObservers(address) == null;
-		}
-	    };
-	Manager.eventLoop.add(to);
-    }
+    public abstract void requestAddCodeObserver(Task task,
+						TaskObservable observable,
+						TaskObserver.Code observer,
+						long address);
 
     /**
      * (Internal) Tell the process to delete the specified Code
@@ -667,45 +474,10 @@ public abstract class Proc {
      *
      * XXX: Should not be public.
      */
-    public void requestDeleteCodeObserver(Task task, TaskObservable observable,
-				   TaskObserver.Code observer,
-				   final long address)    {
-	logger.log(Level.FINE, "{0} requestDeleteCodeObserver\n", this);
-	BreakpointAction bpa = new BreakpointAction(observer, task, address, false);
-	TaskObservation to;
-	to = new TaskObservation(task, observable, observer, bpa, false) {
-		public void execute() {
-		    newState = oldState().handleDeleteObservation(Proc.this, this);
-		}
-
-		public boolean needsSuspendedAction() {
-		    return breakpoints.getCodeObservers(address).size() == 1;
-		}
-	    };
-
-	Manager.eventLoop.add(to);
-    }
-
-    /**
-     * Class describing the action to take on the suspended Task
-     * before adding or deleting an Instruction observer. No
-     * particular actions are needed, but we must make sure the Task
-     * is suspended.
-     */
-    final static class InstructionAction implements Runnable {
-	public void run()
-	{
-	    // There is nothing in particular we need to do. We just want
-	    // to make sure the Task is stopped so we can send it a step
-	    // instruction or, when deleted, start resuming the process
-	    // normally.
-
-	    // We do want an explicit updateExecuted() call, after adding
-	    // the observer, but while still suspended. This is done by
-	    // overriding the add() method in the TaskObservation
-	    // below. No such action is required on deletion.
-	}
-    }
+    public abstract void requestDeleteCodeObserver(Task task,
+						   TaskObservable observable,
+						   TaskObserver.Code observer,
+						   long address);
 
     /**
      * (Internal) Tell the process to add the specified Instruction
@@ -716,34 +488,9 @@ public abstract class Proc {


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


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

only message in thread, other threads:[~2008-01-02 20:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-02 20:37 [SCM] master: Move Proc state into sub-classes 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).