亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aha152x.c

?? <Linux1.0核心游記>電子書+書后源碼+Linux1.0源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    return 0;  SETPORT( DMACNTRL1, 0 );          /* reset stack pointer */  for(i=0; i<16; i++)    SETPORT( STACK, i );  SETPORT( DMACNTRL1, 0 );          /* reset stack pointer */  for(i=0; i<16 && GETPORT(STACK)==i; i++)    ;  return(i==16);}int aha152x_detect(int hostno){  int                 i, j,  ok;  aha152x_config      conf;  struct sigaction    sa;  int                 interrupt_level;  #if defined(DEBUG_RACE)  enter_driver("detect");#endif    printk("aha152x: Probing: ");  if(setup_called)    {      printk("processing commandline: ");         if(setup_called!=4)        {          printk("\naha152x: %s\n", setup_str );          printk("aha152x: usage: aha152x=<PORTBASE>,<IRQ>,<SCSI ID>,<RECONNECT>\n");          panic("aha152x panics in line %d", __LINE__);        }      port_base       = setup_portbase;      interrupt_level = setup_irq;      this_host       = setup_scsiid;      can_disconnect  = setup_reconnect;      for( i=0; i<PORT_COUNT && (port_base != ports[i]); i++)        ;      if(i==PORT_COUNT)        {          printk("unknown portbase 0x%03x\n", port_base);          panic("aha152x panics in line %d", __LINE__);        }      if(!aha152x_porttest(port_base))        {          printk("portbase 0x%03x fails probe\n", port_base);          panic("aha152x panics in line %d", __LINE__);        }      i=0;      while(ints[i] && (interrupt_level!=ints[i]))        i++;      if(!ints[i])        {          printk("illegal IRQ %d\n", interrupt_level);          panic("aha152x panics in line %d", __LINE__);        }      if( (this_host < 0) || (this_host > 7) )        {          printk("illegal SCSI ID %d\n", this_host);          panic("aha152x panics in line %d", __LINE__);        }      if( (can_disconnect < 0) || (can_disconnect > 1) )        {          printk("reconnect %d should be 0 or 1\n", can_disconnect);          panic("aha152x panics in line %d", __LINE__);        }      printk("ok, ");    }  else    {#if !defined(SKIP_BIOSTEST)      printk("BIOS test: ");      ok=0;      for( i=0; i < ADDRESS_COUNT && !ok; i++)        for( j=0; (j < SIGNATURE_COUNT) && !ok; j++)          ok=!memcmp((void *) addresses[i]+signatures[j].sig_offset,                     (void *) signatures[j].signature,                     (int) signatures[j].sig_length);      if(!ok)        {#if defined(DEBUG_RACE)          leave_driver("(1) detect");#endif          printk("failed\n");          return 0;        }      printk("ok, ");#endif /* !SKIP_BIOSTEST */ #if !defined(PORTBASE)      printk("porttest: ");      for( i=0; i<PORT_COUNT && !aha152x_porttest(ports[i]); i++)        ;      if(i==PORT_COUNT)        {          printk("failed\n");#if defined(DEBUG_RACE)          leave_driver("(2) detect");#endif          return 0;        }      else        port_base=ports[i];      printk("ok, ");#else      port_base=PORTBASE;#endif /* !PORTBASE */#if defined(AUTOCONF)      conf.cf_port = (GETPORT(PORTA)<<8) + GETPORT(PORTB);      interrupt_level = ints[conf.cf_irq];      this_host       = conf.cf_id;      can_disconnect  = conf.cf_tardisc;      printk("auto configuration: ok, ");#endif /* AUTOCONF */#if defined(IRQ)      interrupt_level = IRQ; #endif#if defined(SCSI_ID)      this_host = SCSI_ID;#endif#if defined(RECONNECT)      can_disconnect=RECONNECT;#endif    }  printk("detection complete\n");   sa.sa_handler  = aha152x_intr;  sa.sa_flags    = SA_INTERRUPT;  sa.sa_mask     = 0;  sa.sa_restorer = NULL;    ok = irqaction( interrupt_level, &sa);    if(ok<0)    {      if(ok == -EINVAL)        {           printk("aha152x: bad IRQ %d.\n", interrupt_level);           printk("         Contact author.\n");        }      else        if( ok == -EBUSY)          printk( "aha152x: IRQ %d already in use. Configure another.\n",                  interrupt_level);        else          {            printk( "\naha152x: Unexpected error code on requesting IRQ %d.\n",                    interrupt_level);            printk("         Contact author.\n");          }      panic("aha152x: driver needs an IRQ.\n");    }  SETPORT( SCSIID, this_host << 4 );  scsi_hosts[hostno].this_id=this_host;    if(can_disconnect)    scsi_hosts[hostno].can_queue=AHA152X_MAXQUEUE;  /* RESET OUT */  SETBITS(SCSISEQ, SCSIRSTO );  do_pause(5);  CLRBITS(SCSISEQ, SCSIRSTO );  do_pause(10);  aha152x_reset(NULL);  printk("aha152x: vital data: PORTBASE=0x%03x, IRQ=%d, SCSI ID=%d, reconnect=%s, parity=enabled\n",         port_base, interrupt_level, this_host, can_disconnect ? "enabled" : "disabled" );  snarf_region(port_base, TEST-SCSISEQ);        /* Register */    /* not expecting any interrupts */  SETPORT(SIMODE0, 0);  SETPORT(SIMODE1, 0);#if defined(DEBUG_RACE)  leave_driver("(3) detect");#endif  SETBITS( DMACNTRL0, INTEN);  return 1;}/* *  return the name of the thing */const char *aha152x_info(void){#if defined(DEBUG_RACE)  enter_driver("info");  leave_driver("info");#else#if defined(DEBUG_INFO)  printk("\naha152x: info()\n");#endif#endif  return(aha152x_id);}/*  *  Queue a command and setup interrupts for a free bus. */int aha152x_queue( Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *)){#if defined(DEBUG_RACE)  enter_driver("queue");#else#if defined(DEBUG_QUEUE)  printk("aha152x: queue(), ");#endif#endif#if defined(DEBUG_QUEUE)  printk( "SCpnt (target = %d lun = %d cmnd = 0x%02x pieces = %d size = %u), ",          SCpnt->target,          SCpnt->lun,          *(unsigned char *)SCpnt->cmnd,          SCpnt->use_sg,          SCpnt->request_bufflen );  disp_ports();#endif  SCpnt->scsi_done =       done;  /* setup scratch area     SCp.ptr              : buffer pointer     SCp.this_residual    : buffer length     SCp.buffer           : next buffer     SCp.buffers_residual : left buffers in list     SCp.phase            : current state of the command */  SCpnt->SCp.phase = not_issued;  if (SCpnt->use_sg)    {      SCpnt->SCp.buffer           = (struct scatterlist *)SCpnt->request_buffer;      SCpnt->SCp.ptr              = SCpnt->SCp.buffer->address;      SCpnt->SCp.this_residual    = SCpnt->SCp.buffer->length;      SCpnt->SCp.buffers_residual = SCpnt->use_sg - 1;    }  else    {      SCpnt->SCp.ptr              = (char *)SCpnt->request_buffer;      SCpnt->SCp.this_residual    = SCpnt->request_bufflen;      SCpnt->SCp.buffer           = NULL;      SCpnt->SCp.buffers_residual = 0;    }            SCpnt->SCp.Status              = CHECK_CONDITION;  SCpnt->SCp.Message             = 0;  SCpnt->SCp.have_data_in        = 0;  SCpnt->SCp.sent_command        = 0;  /* Turn led on, when this is the first command. */  cli();  commands++;  if(commands==1)    SETPORT( PORTA, 1 );#if defined(DEBUG_QUEUES)  printk("i+ (%d), ", commands );#endif  append_SC( &issue_SC, SCpnt);    /* Enable bus free interrupt, when we aren't currently on the bus */  if(!current_SC)    {      SETPORT(SIMODE0, disconnected_SC ? ENSELDI : 0 );      SETPORT(SIMODE1, issue_SC ? ENBUSFREE : 0);    }  sti();  return 0;}/* *  We only support command in interrupt-driven fashion */int aha152x_command( Scsi_Cmnd *SCpnt ){  printk( "aha152x: interrupt driven driver; use aha152x_queue()\n" );  return -1;}/* *  Abort a queued command *  (commands that are on the bus can't be aborted easily) */int aha152x_abort( Scsi_Cmnd *SCpnt, int code ){  Scsi_Cmnd *ptr, *prev;  cli();#if defined(DEBUG_ABORT)  printk("aha152x: abort(), SCpnt=0x%08x, ", (unsigned long) SCpnt );#endif  show_queues();  /* look for command in issue queue */  for( ptr=issue_SC, prev=NULL;       ptr && ptr!=SCpnt;       prev=ptr, ptr=(Scsi_Cmnd *) ptr->host_scribble)    ;  if(ptr)    {      /* dequeue */      if(prev)        prev->host_scribble = ptr->host_scribble;      else        issue_SC = (Scsi_Cmnd *) ptr->host_scribble;      sti();      ptr->host_scribble = NULL;      ptr->result = (code ? code : DID_ABORT ) << 16;      ptr->done(ptr);      return 0;    }  /* Fail abortion, if we're on the bus */  if (current_SC)    {       sti();       return -1;    }  /* look for command in disconnected queue */  for( ptr=disconnected_SC, prev=NULL;       ptr && ptr!=SCpnt;       prev=ptr, ptr=(Scsi_Cmnd *) ptr->host_scribble)    ;  if(ptr && TESTLO(SSTAT1, BUSFREE) )    printk("bus busy but no current command, ");  if(ptr && TESTHI(SSTAT1, BUSFREE) )    {      /* dequeue */      if(prev)        prev->host_scribble = ptr->host_scribble;      else        issue_SC = (Scsi_Cmnd *) ptr->host_scribble;      /* set command current and initiate selection,         let the interrupt routine take care of the abortion */      current_SC     = ptr;      ptr->SCp.phase = in_selection|aborted;      SETPORT( SCSIID, (this_host << OID_) | current_SC->target );      /* enable interrupts for SELECTION OUT DONE and SELECTION TIME OUT */      SETPORT( SIMODE0, ENSELDO | (disconnected_SC ? ENSELDI : 0) );      SETPORT( SIMODE1, ENSELTIMO );      /* Enable SELECTION OUT sequence */      SETBITS(SCSISEQ, ENSELO | ENAUTOATNO );      SETBITS( DMACNTRL0, INTEN );      abort_result=0;      sti();      /* sleep until the abortion is complete */      sleep_on( &abortion_complete );      return abort_result;    }  else    printk("aha152x: bus busy but no current command\n");  /* command wasn't found */  sti();  return 0;}/* *  Restore default values to the AIC-6260 registers and reset the fifos */static void aha152x_reset_ports(void){  /* disable interrupts */  SETPORT(DMACNTRL0, RSTFIFO);  SETPORT(SCSISEQ, 0);  SETPORT(SXFRCTL1, 0);  SETPORT( SCSISIG, 0);  SETPORT(SCSIRATE, 0);  /* clear all interrupt conditions */  SETPORT(SSTAT0, 0x7f);  SETPORT(SSTAT1, 0xef);  SETPORT(SSTAT4, SYNCERR|FWERR|FRERR);  SETPORT(DMACNTRL0, 0);  SETPORT(DMACNTRL1, 0);  SETPORT(BRSTCNTRL, 0xf1);  /* clear SCSI fifo and transfer count */  SETPORT(SXFRCTL0, CH1|CLRCH1|CLRSTCNT);  SETPORT(SXFRCTL0, CH1);  /* enable interrupts */  SETPORT(SIMODE0, disconnected_SC ? ENSELDI : 0 );  SETPORT(SIMODE1, issue_SC ? ENBUSFREE : 0);}/* *  Reset registers, reset a hanging bus and *  kill active and disconnected commands */int aha152x_reset(Scsi_Cmnd * __unused){  Scsi_Cmnd *ptr;  aha152x_reset_ports();  /* Reset, if bus hangs */  if( TESTLO( SSTAT1, BUSFREE ) )    {       CLRBITS( DMACNTRL0, INTEN );#if defined( DEBUG_RESET )       printk("aha152x: reset(), bus not free: SCSI RESET OUT\n");#endif       show_queues();       if(current_SC)         {           current_SC->host_scribble = NULL;           current_SC->result = DID_RESET << 16;           current_SC->done(current_SC);           current_SC=NULL;         }       while(disconnected_SC)         {           ptr = disconnected_SC;           disconnected_SC = (Scsi_Cmnd *) ptr->host_scribble;           ptr->host_scribble = NULL;           ptr->result = DID_RESET << 16;           ptr->done(ptr);         }       /* RESET OUT */       SETPORT(SCSISEQ, SCSIRSTO);       do_pause(5);       SETPORT(SCSISEQ, 0);       do_pause(10);       SETPORT(SIMODE0, 0 );       SETPORT(SIMODE1, issue_SC ? ENBUSFREE : 0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品午夜在线| 国产69精品久久久久777| 99久精品国产| 国产精品国产三级国产三级人妇| 国产高清精品网站| 亚洲欧美在线高清| 色噜噜狠狠成人网p站| 亚洲另类在线视频| 一本大道久久a久久综合| 一区二区三区在线视频免费| 欧美无砖砖区免费| 日韩电影在线一区二区三区| 欧美成人三级电影在线| 久久99精品久久久久| 久久精品男人的天堂| 一本久久精品一区二区| 国产精品一区二区在线看| 国产精品护士白丝一区av| 精品国产免费视频| 成人一二三区视频| 亚洲国产中文字幕| 精品久久久久久久久久久院品网 | 1024国产精品| 久久久久久免费网| 欧美中文字幕一区二区三区亚洲 | 亚洲一区免费在线观看| 日韩久久久精品| 粉嫩13p一区二区三区| 麻豆精品蜜桃视频网站| 亚洲女人小视频在线观看| 日韩视频一区二区三区在线播放| 处破女av一区二区| 国产一区二区三区最好精华液| 亚洲欧美国产高清| 综合av第一页| 久久蜜臀精品av| 久久日韩精品一区二区五区| 色婷婷精品久久二区二区蜜臂av | 色屁屁一区二区| 欧美自拍偷拍一区| 在线免费观看日韩欧美| 色菇凉天天综合网| 在线免费av一区| 欧美日韩精品三区| 不卡的av在线| 韩日欧美一区二区三区| 亚洲6080在线| 中文字幕亚洲综合久久菠萝蜜| 欧美国产1区2区| 欧美一区二区视频免费观看| 成人白浆超碰人人人人| 99re视频精品| 在线视频欧美区| 欧美精品在线一区二区| 色婷婷久久久综合中文字幕| 91福利区一区二区三区| 欧美人xxxx| 精品国产网站在线观看| 2021中文字幕一区亚洲| 久久精品夜色噜噜亚洲a∨| 国产精品水嫩水嫩| 亚洲男人电影天堂| 午夜精品福利久久久| 一区二区成人在线观看| 午夜精品久久久久影视| 极品销魂美女一区二区三区| 国产成人鲁色资源国产91色综| av网站一区二区三区| 国产91在线观看| 色拍拍在线精品视频8848| 欧美丰满少妇xxxbbb| 久久奇米777| 亚洲色图制服丝袜| 日韩av在线免费观看不卡| 极品瑜伽女神91| 91在线观看高清| 91色.com| 欧美一区二区性放荡片| 国产精品美女久久久久久| 午夜精品久久久久久久| 国产真实乱子伦精品视频| 色综合天天综合狠狠| 99re这里都是精品| 日韩欧美亚洲一区二区| 中文字幕制服丝袜成人av| 午夜国产不卡在线观看视频| 国产一区三区三区| 欧美日韩一级片网站| 欧美色国产精品| 久久综合九色综合97婷婷| 亚洲一区二区三区四区不卡| 国产精品一二三区在线| 欧美系列亚洲系列| 国产亲近乱来精品视频| 国产精品成人午夜| 久久99精品久久久久久国产越南 | 国产91丝袜在线播放九色| 欧美日韩精品综合在线| 欧美激情一区三区| 老司机精品视频在线| 国产精品亚洲成人| 欧美精品国产精品| 亚洲黄色片在线观看| 国产成人啪午夜精品网站男同| 69久久夜色精品国产69蝌蚪网| 欧美一级专区免费大片| 成人免费在线视频观看| 国产精选一区二区三区| 91精品婷婷国产综合久久竹菊| 亚洲欧美日韩综合aⅴ视频| 国产综合一区二区| 91精品国产色综合久久不卡蜜臀| 亚洲三级电影网站| 成人免费观看av| 26uuu久久天堂性欧美| 日韩激情av在线| 国产99久久久精品| 欧美成人激情免费网| 日日夜夜精品视频免费| 欧美日韩一区二区三区视频| 亚洲麻豆国产自偷在线| 菠萝蜜视频在线观看一区| 国产日韩精品一区二区浪潮av| 韩国女主播成人在线观看| 欧美一区二区三区影视| 日韩高清国产一区在线| 91精品欧美久久久久久动漫 | 成人亚洲精品久久久久软件| 精品日韩av一区二区| 麻豆精品在线看| 欧美xingq一区二区| 毛片av一区二区| 日韩欧美在线影院| 蜜桃91丨九色丨蝌蚪91桃色| 91精品国模一区二区三区| 天天综合色天天综合| 欧美一区二区三区啪啪| 人人超碰91尤物精品国产| 波多野结衣视频一区| 国产精品国产精品国产专区不蜜 | 亚州成人在线电影| 欧美日韩的一区二区| 日韩高清不卡一区二区| 日韩午夜激情免费电影| 捆绑调教一区二区三区| 久久久99精品免费观看| 成人激情动漫在线观看| 中文字幕字幕中文在线中不卡视频| kk眼镜猥琐国模调教系列一区二区| 成人欧美一区二区三区白人| 色爱区综合激月婷婷| 亚洲bt欧美bt精品| 日韩免费看的电影| 国产99精品国产| 一区二区在线观看视频| 欧美日韩一级视频| 久久精品国产精品青草| 久久精品亚洲一区二区三区浴池 | 成人va在线观看| 一区二区三区四区中文字幕| 欧美日韩aaaaa| 国产在线观看一区二区| 国产精品电影一区二区三区| 欧美私模裸体表演在线观看| 日韩av电影天堂| 久久久久久综合| 色激情天天射综合网| 日韩电影免费在线观看网站| 久久蜜桃一区二区| 色婷婷精品大在线视频| 麻豆中文一区二区| 亚洲特黄一级片| 91麻豆精品国产91久久久久久久久| 国产精品乡下勾搭老头1| 亚洲欧美日韩国产一区二区三区 | 久久亚洲一级片| 色婷婷国产精品久久包臀| 麻豆精品一区二区| 亚洲欧美日韩精品久久久久| 日韩限制级电影在线观看| 99久久国产综合精品色伊| 日韩激情一区二区| 亚洲人妖av一区二区| 欧美一区二区三区免费大片| 成人一区二区视频| 日本不卡中文字幕| 亚洲欧洲国产专区| 日韩欧美在线影院| 91福利在线观看| 国产suv精品一区二区三区| 亚洲超碰97人人做人人爱| 国产精品色一区二区三区| 91精品国产aⅴ一区二区| 99精品黄色片免费大全| 久久成人免费网| 一区二区三区国产精华| 国产欧美精品一区二区三区四区| 欧美男男青年gay1069videost| 成人精品高清在线| 狠狠色丁香九九婷婷综合五月 |