whole_func_string: function runRichards() {
    var scheduler = new Scheduler();
    scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);
  
    var queue = new Packet(null, ID_WORKER, KIND_WORK);
    queue = new Packet(queue,  ID_WORKER, KIND_WORK);
    scheduler.addWorkerTask(ID_WORKER, 1000, queue);
  
    queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);
    scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);
  
    queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);
    scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);
  
    scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);
  
    scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);
  
    scheduler.schedule();
  
    if (scheduler.queueCount != EXPECTED_QUEUE_COUNT ||
        scheduler.holdCount != EXPECTED_HOLD_COUNT) {
      var msg =
          "Error during execution: queueCount = " + scheduler.queueCount +
          ", holdCount = " + scheduler.holdCount + ".";
      throw new Error(msg);
    }
  }
func_code_string: function runRichards() {
    var scheduler = new Scheduler();
    scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);
  
    var queue = new Packet(null, ID_WORKER, KIND_WORK);
    queue = new Packet(queue,  ID_WORKER, KIND_WORK);
    scheduler.addWorkerTask(ID_WORKER, 1000, queue);
  
    queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_A, KIND_DEVICE);
    scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);
  
    queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);
    queue = new Packet(queue,  ID_DEVICE_B, KIND_DEVICE);
    scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);
  
    scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);
  
    scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);
  
    scheduler.schedule();
  
    if (scheduler.queueCount != EXPECTED_QUEUE_COUNT ||
        scheduler.holdCount != EXPECTED_HOLD_COUNT) {
      var msg =
          "Error during execution: queueCount = " + scheduler.queueCount +
          ", holdCount = " + scheduler.holdCount + ".";
      throw new Error(msg);
    }
  }
func_documentation_string: The Richards benchmark simulates the task dispatcher of an
  operating system.