在help中资源管理器一节中讲到处理_IO_READ 消息时,样本例子中有以下代码:
nleft = ocb->attr->nbytes - ocb->offset;
nbytes = min (msg->i.nbytes, nleft);
if (nbytes > 0) {
/* set up the return data IOV */
SETIOV (ctp->iov, buffer + ocb->offset, nbytes);
/* set up the number of bytes (returned by client’s read()) */
_IO_SET_READ_NBYTES (ctp, nbytes);
……
其中nleft的意思应该是计算设备中还有多少字节。但是后面的ocb->offset偏移量具体应该是什么值呢?
ocb->attr->nbytes 应该是attr.nbytes的值吧?那样的话应该是 14 吧?程序运行起来后打印出的nleft的值为13.那么这个13是怎么计算出来的呢?
谢谢!