code:cpass - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki
- 从指定指定空间的指定地址读出字节
- 修改 u_base,u_count,u_offset,参看user
- 地址空间 由 u.u_segflg指明
- 指定地址 由 u.u_base提供
- c : 存放读出的字节
- 返回值
- 若出错,则返回-1
- 当u_count == 0 (读出任务完成),则返回-1
- 否则返回读出的字节
6534
6535 /*
6537 * write call at location u_base;
6538 * update u_base, u_count, and u_offset. Return -1
6539 * when u_count is exhausted. u_base is in the user?ˉs
6540 * address space unless u_segflg is set.
6541 */
6542 cpass()
6543 {
6544 register c;
6545
6546 if(u.u_count == 0)
6547 return(-1);
6548 if(u.u_segflg)
- 若u_count==0(已读完),则返回-1
6549 c = *u.u_base; else
6550 if((c=fubyte(u.u_base)) < 0) {
6551 u.u_error = EFAULT;
6552 return(-1);
6553 }
6554 u.u_count--;
6555 if(++u.u_offset[1] == 0)
6556 u.u_offset[0]++;
6557 u.u_base++;
6558 return(c&0377);
- 修改相应参数
- 参看user
6559 }
- 返回c的低八位
6560 /* -------------------------*/