Listing 4

/*

  fork_start() -- Start the forked routine

  This routine is used to call the forked routine. It
  passes the four bytes to the target routine and then
  resumes the previous task, which should always be the
  fork queue.                       */

void fork_start()
  {
  /* Call the routine, passing the long parameter and the
     address of the working TSS.            */

  (*current_routine)(current_param, &fdummy_tcb);

  /* Task switch back to the fork queue task. */
  resume_last();
  }