	   /* test program for process package, using resources */

import sim.*;

class user extends process {
/*		      simulation system global variables
*/
  static resource disk;

  int on, off;

user(String n, int on_, int off_) 
{
    super(n);
    on = on_;
    off = off_;
}

public void print() {
  System.out.println("User " + name + " (on="+on+", off="+off+")");
}

void body() {
  while (scheduler.clock < 50)
    { scheduler.hold(off);

      System.out.println("task " + name + " requests at time "
	+ scheduler.clock);
      disk.request();
      System.out.println("  task " + name + " granted request at time " +
	+ scheduler.clock);

      scheduler.hold(on);

      System.out.println("    task " + name + " releases at time " 
	+ scheduler.clock);
      disk.release();
    };
  terminate();
}

public static void main(String av[])
{ disk = new resource("Disk");
  scheduler.activate(new user("u1", 2, 3));
  scheduler.activate(new user("u2", 3, 2));
  scheduler.activate(new user("u3", 4, 1));

  scheduler.run_simulation();
}

}

