private static void RegisterChild(jpvmTaskId client, jpvmBuffer req) {
		int regNum = -1;

		// Child process reporting in. Notify the remote client that
		// requested this local task creation.

		try {
			regNum    = req.upkint();
		}
		catch (jpvmException jpe) {
			perror("bad RegisterChild invocation");
			return;
		}

		if(regNum<0 || regNum>=maxCreateOrders) {
			perror("RegisterChild, child registration number " +
				regNum + "out of bounds");
			return;
		}

 		jpvmCreateWorkOrder order = createOrders[regNum];
		if(order==null) {
			perror("RegisterChild, child registration number " +
				regNum + "not expected");
			return;
		}
		if(!order.outstanding) {
			perror("RegisterChild, child registration number " +
				regNum + "unexpected");
			return;
		}
		order.outstanding = false;

		// Return the blessed event to the requester
		try {
		    	jpvmBuffer buf = new jpvmBuffer();
		    	buf.pack(1);
		    	buf.pack(client);
			buf.pack(order.order);
			jpvm.pvm_send(buf,order.client,
				jpvmDaemonMessageTag.jpvmdCreatedTask);
		}
		catch (jpvmException jpe) {
		    perror("RegisterChild, \""+jpe+"\" sending to client " +
			order.client.toString());
		}
	}