Cheap website hosting service by Active-Venture.com
  

Domain Registration -
Domain registration and domain transfer  service from just
$5.95/year only

 

Domain Name Registration -
Cheap domain name registration by Cheap Domain Name Registrar.

 Back to Index

16.4 Asynchronous Events

If an asynchronous event callback has been set up then the callback function should be defined.

static void
ahc_async(void *callback_arg, u_int32_t code, struct cam_path *path, void *arg)
  • callback_arg - the value supplied when registering the callback

  • code - identifies the type of event

  • path - identifies the devices to which the event applies

  • arg - event-specific argument

Implementation for a single type of event, AC_LOST_DEVICE, looks like:

    struct xxx_softc *softc;
    struct cam_sim *sim;
    int targ;
    struct ccb_trans_settings neg;

    sim = (struct cam_sim *)callback_arg;
    softc = (struct xxx_softc *)cam_sim_softc(sim);
    switch (code) {
    case AC_LOST_DEVICE:
        targ = xpt_path_target_id(path);
        if(targ <= OUR_MAX_SUPPORTED_TARGET) {
            clean_negotiations(softc, targ);
            /* send indication to CAM */
            neg.bus_width = 8;
            neg.sync_period = neg.sync_offset = 0;
            neg.valid = (CCB_TRANS_BUS_WIDTH_VALID
                | CCB_TRANS_SYNC_RATE_VALID | CCB_TRANS_SYNC_OFFSET_VALID);
            xpt_async(AC_TRANSFER_NEG, path, &neg);
        }
        break;
    default:
        break;
    }

 

  

 

 

© 2002-2004 Active-Venture.com Website Hosting Service

 

Disclaimer: This documentation is provided only for the benefits of our website hosting customers.
For authoritative source of the documentation, please refer to http://www.freebsd.org