19.html
来自「linux 0.11中文版 有注释」· HTML 代码 · 共 60 行
HTML
60 行
<html>
<head>
<title>CURRENT</title>
<meta name='robots' content='noindex,nofollow'>
<meta name='generator' content='GLOBAL-5.4.1'>
</head>
<body text='#191970' bgcolor='#f5f5dc' vlink='gray'>
<pre>
<a href='../S/54.html#L117'>CURRENT</a> 117 kernel/blk_drv/blk.h #define CURRENT_DEV DEVICE_NR(CURRENT->dev) // CURRENT_DEV 为CURRENT 的设备号。
<a href='../S/54.html#L138'>CURRENT</a> 138 kernel/blk_drv/blk.h DEVICE_OFF (CURRENT->dev); // 关闭设备。
<a href='../S/54.html#L139'>CURRENT</a> 139 kernel/blk_drv/blk.h if (CURRENT->bh)
<a href='../S/54.html#L141'>CURRENT</a> 141 kernel/blk_drv/blk.h CURRENT->bh->b_uptodate = uptodate; // 置更新标志。
<a href='../S/54.html#L142'>CURRENT</a> 142 kernel/blk_drv/blk.h unlock_buffer (CURRENT->bh); // 解锁缓冲区。
<a href='../S/54.html#L147'>CURRENT</a> 147 kernel/blk_drv/blk.h printk ("dev %04x, block %d\n\r", CURRENT->dev, CURRENT->bh->b_blocknr);
<a href='../S/54.html#L149'>CURRENT</a> 149 kernel/blk_drv/blk.h wake_up (&CURRENT->waiting); // 唤醒等待该请求项的进程。
<a href='../S/54.html#L151'>CURRENT</a> 151 kernel/blk_drv/blk.h CURRENT->dev = -1; // 释放该请求项。
<a href='../S/54.html#L152'>CURRENT</a> 152 kernel/blk_drv/blk.h CURRENT = CURRENT->next; // 从请求链表中删除该请求项。
<a href='../S/54.html#L158'>CURRENT</a> 158 kernel/blk_drv/blk.h if (!CURRENT) \ // 如果当前请求结构指针为null 则返回。
<a href='../S/54.html#L160'>CURRENT</a> 160 kernel/blk_drv/blk.h if (MAJOR (CURRENT->dev) != MAJOR_NR)
<a href='../S/54.html#L163'>CURRENT</a> 163 kernel/blk_drv/blk.h if (CURRENT->bh)
<a href='../S/54.html#L165'>CURRENT</a> 165 kernel/blk_drv/blk.h if (!CURRENT->bh->b_lock)
<a href='../S/55.html#L255'>CURRENT</a> 255 kernel/blk_drv/floppy.c long addr = (long) CURRENT->buffer; // 当前请求项缓冲区所处内存中位置(地址)。
<a href='../S/55.html#L264'>CURRENT</a> 264 kernel/blk_drv/floppy.c copy_buffer (CURRENT->buffer, tmp_floppy_area);
<a href='../S/55.html#L355'>CURRENT</a> 355 kernel/blk_drv/floppy.c CURRENT->errors++; // 当前请求项出错次数增1。
<a href='../S/55.html#L357'>CURRENT</a> 357 kernel/blk_drv/floppy.c if (CURRENT->errors > MAX_ERRORS)
<a href='../S/55.html#L364'>CURRENT</a> 364 kernel/blk_drv/floppy.c if (CURRENT->errors > MAX_ERRORS / 2)
<a href='../S/55.html#L403'>CURRENT</a> 403 kernel/blk_drv/floppy.c if (command == FD_READ && (unsigned long) (CURRENT->buffer) >= 0x100000)
<a href='../S/55.html#L404'>CURRENT</a> 404 kernel/blk_drv/floppy.c copy_buffer (tmp_floppy_area, CURRENT->buffer);
<a href='../S/55.html#L650'>CURRENT</a> 650 kernel/blk_drv/floppy.c floppy = (MINOR (CURRENT->dev) >> 2) + floppy_type;
<a href='../S/55.html#L658'>CURRENT</a> 658 kernel/blk_drv/floppy.c block = CURRENT->sector; // 取当前软盘请求项中起始扇区号??block。
<a href='../S/55.html#L674'>CURRENT</a> 674 kernel/blk_drv/floppy.c if (CURRENT->cmd == READ) // 如果请求项中是读操作,则置软盘读命令码。
<a href='../S/55.html#L676'>CURRENT</a> 676 kernel/blk_drv/floppy.c else if (CURRENT->cmd == WRITE) // 如果请求项中是写操作,则置软盘写命令码。
<a href='../S/56.html#L328'>CURRENT</a> 328 kernel/blk_drv/hd.c if (++CURRENT->errors >= MAX_ERRORS) // 如果读扇区时的出错次数大于或等于7 次时,
<a href='../S/56.html#L331'>CURRENT</a> 331 kernel/blk_drv/hd.c if (CURRENT->errors > MAX_ERRORS / 2) // 如果读一扇区时的出错次数已经大于3 次,
<a href='../S/56.html#L344'>CURRENT</a> 344 kernel/blk_drv/hd.c port_read (HD_DATA, CURRENT->buffer, 256); // 将数据从数据寄存器口读到请求结构缓冲区。
<a href='../S/56.html#L345'>CURRENT</a> 345 kernel/blk_drv/hd.c CURRENT->errors = 0; // 清出错次数。
<a href='../S/56.html#L346'>CURRENT</a> 346 kernel/blk_drv/hd.c CURRENT->buffer += 512; // 调整缓冲区指针,指向新的空区。
<a href='../S/56.html#L347'>CURRENT</a> 347 kernel/blk_drv/hd.c CURRENT->sector++; // 起始扇区号加1,
<a href='../S/56.html#L348'>CURRENT</a> 348 kernel/blk_drv/hd.c if (--CURRENT->nr_sectors)
<a href='../S/56.html#L368'>CURRENT</a> 368 kernel/blk_drv/hd.c if (--CURRENT->nr_sectors)
<a href='../S/56.html#L370'>CURRENT</a> 370 kernel/blk_drv/hd.c CURRENT->sector++; // 当前请求起始扇区号+1,
<a href='../S/56.html#L371'>CURRENT</a> 371 kernel/blk_drv/hd.c CURRENT->buffer += 512; // 调整请求缓冲区指针,
<a href='../S/56.html#L373'>CURRENT</a> 373 kernel/blk_drv/hd.c port_write (HD_DATA, CURRENT->buffer, 256); // 再向数据寄存器端口写256 字节。
<a href='../S/56.html#L399'>CURRENT</a> 399 kernel/blk_drv/hd.c dev = MINOR (CURRENT->dev); // CURRENT 定义为(blk_dev[MAJOR_NR].current_request)。
<a href='../S/56.html#L400'>CURRENT</a> 400 kernel/blk_drv/hd.c block = CURRENT->sector; // 请求的起始扇区。
<a href='../S/56.html#L420'>CURRENT</a> 420 kernel/blk_drv/hd.c nsect = CURRENT->nr_sectors; // 欲读/写的扇区数。
<a href='../S/56.html#L439'>CURRENT</a> 439 kernel/blk_drv/hd.c if (CURRENT->cmd == WRITE)
<a href='../S/56.html#L451'>CURRENT</a> 451 kernel/blk_drv/hd.c port_write (HD_DATA, CURRENT->buffer, 256);
<a href='../S/56.html#L454'>CURRENT</a> 454 kernel/blk_drv/hd.c else if (CURRENT->cmd == READ)
<a href='../S/59.html#L45'>CURRENT</a> 45 kernel/blk_drv/ramdisk.c addr = rd_start + (CURRENT->sector << 9);
<a href='../S/59.html#L46'>CURRENT</a> 46 kernel/blk_drv/ramdisk.c len = CURRENT->nr_sectors << 9;
<a href='../S/59.html#L49'>CURRENT</a> 49 kernel/blk_drv/ramdisk.c if ((MINOR (CURRENT->dev) != 1) || (addr + len > rd_start + rd_length))
<a href='../S/59.html#L55'>CURRENT</a> 55 kernel/blk_drv/ramdisk.c if (CURRENT->cmd == WRITE)
<a href='../S/59.html#L57'>CURRENT</a> 57 kernel/blk_drv/ramdisk.c (void) memcpy (addr, CURRENT->buffer, len);
<a href='../S/59.html#L60'>CURRENT</a> 60 kernel/blk_drv/ramdisk.c else if (CURRENT->cmd == READ)
<a href='../S/59.html#L62'>CURRENT</a> 62 kernel/blk_drv/ramdisk.c (void) memcpy (CURRENT->buffer, addr, len);
</pre>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?