aboutsummaryrefslogtreecommitdiff
path: root/zh_CN.GB2312/books
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2006-06-03 15:10:24 +0000
committerXin LI <delphij@FreeBSD.org>2006-06-03 15:10:24 +0000
commitf85dc878cd7da5bfe06a79577f67fad98f23db80 (patch)
treee04915ed68d3ba45959b6f0d7b4b2d0c2f88e965 /zh_CN.GB2312/books
parentbc82cefb7d05ce0f7a3609ad447db6c46f879c2a (diff)
Notes
Diffstat (limited to 'zh_CN.GB2312/books')
-rw-r--r--zh_CN.GB2312/books/arch-handbook/driverbasics/chapter.sgml25
1 files changed, 12 insertions, 13 deletions
diff --git a/zh_CN.GB2312/books/arch-handbook/driverbasics/chapter.sgml b/zh_CN.GB2312/books/arch-handbook/driverbasics/chapter.sgml
index 299382ca32..15d27e76d6 100644
--- a/zh_CN.GB2312/books/arch-handbook/driverbasics/chapter.sgml
+++ b/zh_CN.GB2312/books/arch-handbook/driverbasics/chapter.sgml
@@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Simplified Chinese Project
- Original Revision: 1.34
+ Original Revision: 1.36
$FreeBSD$
-->
@@ -240,14 +240,13 @@ static struct cdevsw echo_cdevsw = {
-1
};
-struct s_echo {
+typedef struct s_echo {
char msg[BUFFERSIZE];
int len;
} t_echo;
/* 变量 */
static dev_t sdev;
-static int len;
static int count;
static t_echo *echomsg;
@@ -337,13 +336,13 @@ echo_write(dev_t dev, struct uio *uio, int ioflag)
{
int err = 0;
- /* 将字符串从用户空间的内存拷贝到内核空间 */
+ /* 将字符串从用户空间的内存复制到内核空间 */
err = copyin(uio-&gt;uio_iov-&gt;iov_base, echomsg-&gt;msg,
- MIN(uio-&gt;uio_iov-&gt;iov_len,BUFFERSIZE - 1));
+ MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1));
/* 现在需要以null结束字符串,并记录长度 */
- *(echomsg-&gt;msg + MIN(uio-&gt;uio_iov-&gt;iov_len,BUFFERSIZE - 1)) = 0;
- echomsg-&gt;len = MIN(uio-&gt;uio_iov-&gt;iov_len,BUFFERSIZE);
+ *(echomsg-&gt;msg + MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1)) = 0;
+ echomsg-&gt;len = MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE);
if (err != 0) {
uprintf("Write failed: bad address!\n");
@@ -474,9 +473,9 @@ echo_read(struct cdev *dev, struct uio *uio, int ioflag)
* 这个读操作有多大?
* 等于用户请求的大小,或者等于剩余数据的大小。
*/
- amt = MIN(uio-&gt;uio_resid, (echomsg-&gt;len - uio-&gt;uio_offset &gt; 0) ?
+ amt = MIN(uio-&gt;uio_resid, (echomsg-&gt;len - uio-&gt;uio_offset &gt; 0) ?
echomsg-&gt;len - uio-&gt;uio_offset : 0);
- if ((err = uiomove(echomsg-&gt;msg + uio-&gt;uio_offset,amt,uio)) != 0) {
+ if ((err = uiomove(echomsg-&gt;msg + uio-&gt;uio_offset, amt, uio)) != 0) {
uprintf("uiomove failed!\n");
}
return(err);
@@ -491,13 +490,13 @@ echo_write(struct cdev *dev, struct uio *uio, int ioflag)
{
int err = 0;
- /* 将字符串从用户空间的内存拷贝到内核空间 */
+ /* 将字符串从用户空间的内存复制到内核空间 */
err = copyin(uio-&gt;uio_iov-&gt;iov_base, echomsg-&gt;msg,
- MIN(uio-&gt;uio_iov-&gt;iov_len,BUFFERSIZE));
+ MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1));
/* 现在需要以null结束字符串,并记录长度 */
- *(echomsg-&gt;msg + MIN(uio-&gt;uio_iov-&gt;iov_len,BUFFERSIZE)) = 0;
- echomsg-&gt;len = MIN(uio-&gt;uio_iov-&gt;iov_len,BUFFERSIZE);
+ *(echomsg-&gt;msg + MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE - 1)) = 0;
+ echomsg-&gt;len = MIN(uio-&gt;uio_iov-&gt;iov_len, BUFFERSIZE);
if (err != 0) {
uprintf("Write failed: bad address!\n");