Example #1
0
static void
handle_request(int iscsi_fd, const struct iscsi_daemon_request *request, int timeout)
{
    struct connection *conn;

    log_set_peer_addr(request->idr_conf.isc_target_addr);
    if (request->idr_conf.isc_target[0] != '\0') {
        log_set_peer_name(request->idr_conf.isc_target);
        setproctitle("%s (%s)", request->idr_conf.isc_target_addr, request->idr_conf.isc_target);
    } else {
        setproctitle("%s", request->idr_conf.isc_target_addr);
    }

    conn = connection_new(request->idr_session_id, &request->idr_conf, iscsi_fd);
    set_timeout(timeout);
    capsicate(conn);
    login(conn);
    if (conn->conn_conf.isc_discovery != 0)
        discovery(conn);
    else
        handoff(conn);

    log_debugx("nothing more to do; exiting");
    exit (0);
}
Example #2
0
void Main ()
{
	int i, p, c, r;

	for (i = 0, p = Getpid (); i < NUMPROCS; i++, p = c) {
		Printf ("%d about to fork\n", Getpid ());
		if ((c = Fork ()) == 0) {
			Printf ("%d starting\n", Getpid ());
			handoff (p);
			Printf ("%d exiting\n", Getpid ());
			Exit ();
		}
		Printf ("%d just forked %d\n", Getpid (), c);
	}

	Printf ("%d yielding to %d\n", Getpid (), c);
	r = Yield (c);
	Printf ("%d resumed by %d, yielding to %d\n", Getpid (), r, c);
	Yield (c);
	Printf ("%d exiting\n", Getpid ());
}