STATUS: 83%
0000 T _bmap not compatible
0274 T _passc compatible
0306 T _cpass compatible
03a2 T _nodev compatible
03ac T _nulldev compatible
03ae T _timeout compatible
This commit is contained in:
parent
b2c92fe441
commit
d6063103d6
|
|
@ -139,6 +139,37 @@ daddr_t bn;
|
||||||
return(nb);
|
return(nb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pass back c to the user at his location u_base;
|
||||||
|
* update u_base, u_count, and u_offset. Return -1
|
||||||
|
* on the last character of the user's read.
|
||||||
|
* u_base is in the user address space unless u_segflg is set.
|
||||||
|
*/
|
||||||
|
passc(c)
|
||||||
|
register char c;
|
||||||
|
{
|
||||||
|
if(u.u_segflg == 1) {
|
||||||
|
*u.u_base.l = c;
|
||||||
|
} else {
|
||||||
|
if(!u.u_segflg || u.u_segmented) {
|
||||||
|
if(subyte(u.u_base.l,c)) {
|
||||||
|
u.u_error = EFAULT;
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(suibyte(u.u_base.right,c)) {
|
||||||
|
u.u_error = EFAULT;
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
u.u_count--;
|
||||||
|
u.u_offset++;
|
||||||
|
u.u_base.l++;
|
||||||
|
return(u.u_count == 0? -1: 0);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Pick up and return the next character from the user's
|
* Pick up and return the next character from the user's
|
||||||
* write call at location u_base;
|
* write call at location u_base;
|
||||||
|
|
@ -148,20 +179,30 @@ daddr_t bn;
|
||||||
*/
|
*/
|
||||||
cpass()
|
cpass()
|
||||||
{
|
{
|
||||||
register c, id;
|
char c;
|
||||||
|
|
||||||
if(u.u_count == 0)
|
if(!u.u_count)
|
||||||
return(-1);
|
return(-1);
|
||||||
if((id = u.u_segflg) == 1)
|
|
||||||
c = *u.u_base;
|
if(u.u_segflg == 1) {
|
||||||
else
|
c = *u.u_base.l;
|
||||||
if((c = id==0?fubyte(u.u_base):fuibyte(u.u_base)) < 0) {
|
} else {
|
||||||
u.u_error = EFAULT;
|
if(!u.u_segflg || u.u_segmented) {
|
||||||
return(-1);
|
if(fubyte(u.u_base.l,&c)) {
|
||||||
}
|
u.u_error = EFAULT;
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if(fuibyte(u.u_base.right,&c)) {
|
||||||
|
u.u_error = EFAULT;
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
u.u_count--;
|
u.u_count--;
|
||||||
u.u_offset++;
|
u.u_offset++;
|
||||||
u.u_base++;
|
u.u_base.l++;
|
||||||
return(c&0377);
|
return(c&0377);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -182,30 +223,6 @@ nulldev()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Pass back c to the user at his location u_base;
|
|
||||||
* update u_base, u_count, and u_offset. Return -1
|
|
||||||
* on the last character of the user's read.
|
|
||||||
* u_base is in the user address space unless u_segflg is set.
|
|
||||||
*/
|
|
||||||
passc(c)
|
|
||||||
register c;
|
|
||||||
{
|
|
||||||
register id;
|
|
||||||
|
|
||||||
if((id = u.u_segflg) == 1)
|
|
||||||
*u.u_base = c;
|
|
||||||
else
|
|
||||||
if(id?suibyte(u.u_base, c):subyte(u.u_base, c) < 0) {
|
|
||||||
u.u_error = EFAULT;
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
u.u_count--;
|
|
||||||
u.u_offset++;
|
|
||||||
u.u_base++;
|
|
||||||
return(u.u_count == 0? -1: 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* timeout is called to arrange that fun(arg) is called in tim/HZ seconds.
|
* timeout is called to arrange that fun(arg) is called in tim/HZ seconds.
|
||||||
* An entry is sorted into the callout structure.
|
* An entry is sorted into the callout structure.
|
||||||
|
|
@ -222,7 +239,8 @@ caddr_t arg;
|
||||||
{
|
{
|
||||||
register struct callo *p1, *p2;
|
register struct callo *p1, *p2;
|
||||||
register int t;
|
register int t;
|
||||||
int s;
|
register int s;
|
||||||
|
long foo1,foo2;
|
||||||
|
|
||||||
t = tim;
|
t = tim;
|
||||||
p1 = &callout[0];
|
p1 = &callout[0];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue