taglinefilesource code
hwgroup340drivers/block/blk.hvoid ide_end_request(byte uptodate, ide_hwgroup_t *hwgroup);
hwgroup344drivers/block/blk.hvoid ide_end_request(byte uptodate, ide_hwgroup_t *hwgroup) {
hwgroup345drivers/block/blk.hstruct request *req = hwgroup->rq;
hwgroup379drivers/block/blk.hhwgroup->rq = NULL;
hwgroup335drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
hwgroup337drivers/block/ide.cif (hwgroup->handler != NULL)
hwgroup340drivers/block/ide.chwgroup->handler       = handler;
hwgroup341drivers/block/ide.chwgroup->timer.expires = jiffies + WAIT_CMD;
hwgroup342drivers/block/ide.cadd_timer(&(hwgroup->timer));
hwgroup515drivers/block/ide.cide_hwgroup_t *hwgroup = hwif->hwgroup;
hwgroup517drivers/block/ide.chwgroup->reset_timeout = jiffies + WAIT_WORSTCASE; /* max waiting time */
hwgroup518drivers/block/ide.chwgroup->handler = &reset_ihandler;    /* dummy irq handler */
hwgroup519drivers/block/ide.chwgroup->timer.expires = jiffies + (HZ/20);  /* polling interval */
hwgroup520drivers/block/ide.cadd_timer(&(hwgroup->timer));
hwgroup532drivers/block/ide.cstatic int atapi_reset_handler (ide_hwgroup_t *hwgroup)
hwgroup534drivers/block/ide.cide_hwif_t *hwif = hwgroup->hwif;
hwgroup535drivers/block/ide.cide_drive_t *drive = hwgroup->drive;
hwgroup542drivers/block/ide.cif (jiffies < hwgroup->reset_timeout) {
hwgroup549drivers/block/ide.chwgroup->doing_atapi_reset = 0;
hwgroup550drivers/block/ide.chwgroup->handler = NULL;  /* allow new requests to be processed */
hwgroup551drivers/block/ide.chwgroup->reset_timeout = 0;  /* signal end of ide reset operation */
hwgroup565drivers/block/ide.cstatic int reset_handler (ide_hwgroup_t *hwgroup)
hwgroup567drivers/block/ide.cide_hwif_t *hwif = hwgroup->hwif;
hwgroup568drivers/block/ide.cide_drive_t *drive = hwgroup->drive;
hwgroup572drivers/block/ide.cif (hwgroup->doing_atapi_reset)
hwgroup573drivers/block/ide.creturn atapi_reset_handler(hwgroup);
hwgroup577drivers/block/ide.cif (jiffies < hwgroup->reset_timeout) {
hwgroup606drivers/block/ide.chwgroup->handler = NULL;  /* allow new requests to be processed */
hwgroup607drivers/block/ide.chwgroup->reset_timeout = 0;  /* signal end of ide reset operation */
hwgroup631drivers/block/ide.cide_hwgroup_t *hwgroup = HWGROUP(drive);
hwgroup639drivers/block/ide.cif (!hwgroup->doing_atapi_reset) {
hwgroup640drivers/block/ide.chwgroup->doing_atapi_reset = 1;
hwgroup646drivers/block/ide.chwgroup->reset_timeout = jiffies + WAIT_WORSTCASE;
hwgroup652drivers/block/ide.chwgroup->doing_atapi_reset = 0;
hwgroup686drivers/block/ide.chwgroup->reset_timeout = jiffies + WAIT_WORSTCASE;
hwgroup1286drivers/block/ide.c((ide_hwgroup_t *)hwif->hwgroup)->drive = drive;
hwgroup1318drivers/block/ide.cide_end_request(0, hwif->hwgroup);
hwgroup1336drivers/block/ide.cvoid ide_do_request (ide_hwgroup_t *hwgroup)
hwgroup1339drivers/block/ide.cif (hwgroup->handler != NULL) {
hwgroup1340drivers/block/ide.cprintk("%s: EEeekk!! handler not NULL in ide_do_request()\n", hwgroup->hwif->name);
hwgroup1344drivers/block/ide.cide_hwif_t *hwif = hwgroup->hwif;
hwgroup1346drivers/block/ide.cif ((rq = hwgroup->rq) == NULL) {
hwgroup1347drivers/block/ide.chwgroup->drive = NULL;  /* paranoia */
hwgroup1352drivers/block/ide.c} while ((hwif = hwif->next) != hwgroup->hwif);
hwgroup1357drivers/block/ide.cdo_request(hwgroup->hwif = hwif, hwgroup->rq = rq);
hwgroup1359drivers/block/ide.c} while (hwgroup->handler == NULL);
hwgroup1373drivers/block/ide.cstatic void do_hwgroup_request (ide_hwgroup_t *hwgroup)
hwgroup1375drivers/block/ide.cif (hwgroup->handler == NULL) {
hwgroup1376drivers/block/ide.cide_hwif_t *hgif = hwgroup->hwif;
hwgroup1381drivers/block/ide.cide_do_request (hwgroup);
hwgroup1390drivers/block/ide.cdo_hwgroup_request (ide_hwifs[0].hwgroup);
hwgroup1395drivers/block/ide.cdo_hwgroup_request (ide_hwifs[1].hwgroup);
hwgroup1400drivers/block/ide.cdo_hwgroup_request (ide_hwifs[2].hwgroup);
hwgroup1405drivers/block/ide.cdo_hwgroup_request (ide_hwifs[3].hwgroup);
hwgroup1410drivers/block/ide.cide_hwgroup_t *hwgroup = (ide_hwgroup_t *) data;
hwgroup1411drivers/block/ide.cide_drive_t   *drive   = hwgroup->drive;
hwgroup1417drivers/block/ide.cif (hwgroup->reset_timeout != 0) { /* ide reset in progress? */
hwgroup1418drivers/block/ide.cif (!reset_handler(hwgroup))
hwgroup1419drivers/block/ide.cdo_hwgroup_request (hwgroup);
hwgroup1420drivers/block/ide.c} else if (hwgroup->handler == NULL) {   /* not waiting for anything? */
hwgroup1424drivers/block/ide.chwgroup->handler = NULL;
hwgroup1425drivers/block/ide.cif (hwgroup->hwif->dmaproc) 
hwgroup1426drivers/block/ide.c(void) hwgroup->hwif->dmaproc (ide_dma_abort, drive);
hwgroup1428drivers/block/ide.cdo_hwgroup_request (hwgroup);
hwgroup1456drivers/block/ide.cstatic void unexpected_intr (int irq, ide_hwgroup_t *hwgroup)
hwgroup1460drivers/block/ide.cide_hwif_t *hwif = hwgroup->hwif;
hwgroup1465drivers/block/ide.cif (hwgroup->reset_timeout != 0) {
hwgroup1466drivers/block/ide.cif (!reset_handler(hwgroup))
hwgroup1467drivers/block/ide.cdo_hwgroup_request (hwgroup);
hwgroup1486drivers/block/ide.c} while ((hwif = hwif->next) != hwgroup->hwif);
hwgroup1494drivers/block/ide.cide_hwgroup_t  *hwgroup = irq_to_hwgroup[irq];
hwgroup1497drivers/block/ide.cif (irq == hwgroup->hwif->irq && (handler = hwgroup->handler) != NULL) {
hwgroup1498drivers/block/ide.cide_drive_t *drive = hwgroup->drive;
hwgroup1499drivers/block/ide.chwgroup->handler = NULL;
hwgroup1500drivers/block/ide.cdel_timer(&(hwgroup->timer));
hwgroup1505drivers/block/ide.cunexpected_intr(irq, hwgroup);
hwgroup2513drivers/block/ide.cide_hwgroup_t *hwgroup;
hwgroup2529drivers/block/ide.cif ((hwgroup = irq_to_hwgroup[hwif->irq]) == NULL) {
hwgroup2530drivers/block/ide.chwgroup = ide_alloc (sizeof(ide_hwgroup_t), 0);
hwgroup2531drivers/block/ide.cirq_to_hwgroup[hwif->irq] = hwgroup;
hwgroup2532drivers/block/ide.chwgroup->hwif    = hwif->next = hwif;
hwgroup2533drivers/block/ide.chwgroup->rq      = NULL;
hwgroup2534drivers/block/ide.chwgroup->handler = NULL;
hwgroup2535drivers/block/ide.chwgroup->drive   = NULL;
hwgroup2536drivers/block/ide.chwgroup->reset_timeout = 0;
hwgroup2538drivers/block/ide.chwgroup->doing_atapi_reset = 0;
hwgroup2540drivers/block/ide.cinit_timer(&hwgroup->timer);
hwgroup2541drivers/block/ide.chwgroup->timer.function = &timer_expiry;
hwgroup2542drivers/block/ide.chwgroup->timer.data = (unsigned long) hwgroup;
hwgroup2544drivers/block/ide.chwif->next = hwgroup->hwif->next;
hwgroup2545drivers/block/ide.chwgroup->hwif->next = hwif;
hwgroup2547drivers/block/ide.chwif->hwgroup = hwgroup;
hwgroup2553drivers/block/ide.cif (hwgroup->hwif != hwif) {
hwgroup2554drivers/block/ide.cchar *name = hwgroup->hwif->name;
hwgroup2555drivers/block/ide.cif (hwgroup->hwif->irq == hwif->irq)
hwgroup70drivers/block/ide.h#define HWGROUP(drive)    ((ide_hwgroup_t *)(HWIF(drive)->hwgroup))
hwgroup280drivers/block/ide.hvoid    *hwgroup;  /* actually (ide_hwgroup_t *) */