package cute.concolic.pathconstraint; import java.io.Serializable; import java.io.PrintWriter; import java.util.LinkedList; /** * Author: Koushik Sen <ksen@cs.uiuc.edu> */ public class ScheduleConstraint implements Serializable, Constraint{ /** * */ private static final long serialVersionUID = -5535478144645041080L; private LinkedList postponed; private Integer currentThreadId; private int enabledThreadCount; private boolean isRace; public ScheduleConstraint() { postponed = new LinkedList(); isRace = false; } public void setThreadId(Integer thread) { this.currentThreadId = thread; } public LinkedList getPostponed(){ return new LinkedList(postponed); } public void setEnabledThreadCount(int i){ enabledThreadCount = i; } public boolean isBackTrackingRequired(){ return isRace && (postponed.size()<enabledThreadCount-1); } public boolean isBackTrackingPoint(){ return isRace || postponed.size()>0; } public void postponeCurrentThread(){ postponed.addLast(currentThreadId); isRace = false; } public void printConstraint(PrintWriter out) { out.print("postponed = " + postponed); out.print("\tthread = " + currentThreadId); out.println("\tisRace = " + isRace); } public void setRace(boolean race) { isRace = race; } public Integer getThreadId() { return currentThreadId; } public void setPostponed(LinkedList postponed) { this.postponed.clear(); this.postponed.addAll(postponed); } }