#include "/sys/nsys/param.h"
#include "/sys/nsys/inode.h"
#include "/sys/nsys/user.h"
#include "/sys/nsys/buf.h"
#include "/sys/nsys/conf.h"
if((ip
->i_mode
&IFMT
) == IFCHR
) {
(*cdevsw
[ip
->i_addr
[0].d_major
].d_read
)(ip
->i_addr
[0]);
bn
= ldiv(u
.u_offset
[0], u
.u_offset
[1], 512);
on
= lrem(u
.u_offset
[0], u
.u_offset
[1], 512);
n
= min(512-on
, u
.u_count
);
if((ip
->i_mode
&IFMT
) != IFBLK
) {
dn
= dpcmp(ip
->i_size0
, ip
->i_size1
,
u
.u_offset
[0], u
.u_offset
[1]);
if ((bn
= bmap(ip
, bn
)) == 0)
if(u
.u_segflg
==0 && (n
&1)==0 && (on
&1)==0 && (u
.u_base
&1)==0) {
if(copyout(cp
, u
.u_base
, n
))
if(u
.u_error
==0 && u
.u_count
!=0)
if((ip
->i_mode
&IFMT
) == IFCHR
) {
(*cdevsw
[ip
->i_addr
[0].d_major
].d_write
)(ip
->i_addr
[0]);
bn
= ldiv(u
.u_offset
[0], u
.u_offset
[1], 512);
on
= lrem(u
.u_offset
[0], u
.u_offset
[1], 512);
n
= min(512-on
, u
.u_count
);
if((ip
->i_mode
&IFMT
) != IFBLK
) {
if ((bn
= bmap(ip
, bn
)) == 0)
bp
= getblk(dn
, bn
); else
if(u
.u_segflg
==0 && (n
&1)==0 && (on
&1)==0 && (u
.u_base
&1)==0) {
if(copyin(u
.u_base
, cp
, n
))
if(lrem(u
.u_offset
[0], u
.u_offset
[1], 512) == 0)
if(dpcmp(ip
->i_size0
, ip
->i_size1
,
u
.u_offset
[0], u
.u_offset
[1]) < 0 &&
(ip
->i_mode
&(IFBLK
&IFCHR
)) == 0) {
ip
->i_size0
= u
.u_offset
[0];
ip
->i_size1
= u
.u_offset
[1];
if(u
.u_error
==0 && u
.u_count
!=0)