struct cblock cfree
[NCLIST
];
struct cblock
*cfreelist
;
register struct clist
*p
;
register struct cblock
*bp
;
p
->c_cf
= p
->c_cl
= NULL
;
bp
= (struct cblock
*)(p
->c_cf
-1);
bp
= (struct cblock
*) ((int)bp
& ~CROUND
);
} else if (((int)p
->c_cf
& CROUND
) == 0){
bp
= (struct cblock
*)(p
->c_cf
);
p
->c_cf
= bp
->c_next
->c_info
;
* return number of bytes moved.
register struct clist
*q
;
register struct cblock
*bp
;
q
->c_cf
= q
->c_cl
= NULL
;
bp
= (struct cblock
*)(q
->c_cf
-1);
bp
= (struct cblock
*)((int)bp
& ~CROUND
);
q
->c_cf
= q
->c_cl
= NULL
;
if (((int)q
->c_cf
& CROUND
) == 0) {
bp
= (struct cblock
*)(q
->c_cf
);
q
->c_cf
= bp
->c_next
->c_info
;
* Return count of contiguous characters
* in clist starting at q->c_cf.
* Stop counting if flag&character is non-null.
register struct clist
*q
;
cc
= ((int)q
->c_cf
+ CBSIZE
) & ~CROUND
;
cc
= (int)p
- (int)q
->c_cf
;
* Update clist to show that cc characters
* were removed. It is assumed that cc < CBSIZE.
register struct clist
*q
;
if (((int)q
->c_cf
& CROUND
) == 0) {
register struct cblock
*bp
;
bp
= (struct cblock
*)(q
->c_cf
) -1;
q
->c_cf
= bp
->c_next
->c_info
;
q
->c_cf
= q
->c_cl
= NULL
;
register struct cblock
*bp
;
q
->c_cf
= (char *)((int)q
->c_cf
& ~CROUND
);
bp
= (struct cblock
*)(q
->c_cf
);
q
->c_cf
= q
->c_cl
= NULL
;
register struct clist
*p
;
register struct cblock
*bp
;
if ((cp
= p
->c_cl
) == NULL
|| p
->c_cc
< 0 ) {
if ((bp
= cfreelist
) == NULL
) {
p
->c_cf
= cp
= bp
->c_info
;
} else if (((int)cp
& CROUND
) == 0) {
bp
= (struct cblock
*)cp
- 1;
if ((bp
->c_next
= cfreelist
) == NULL
) {
* return number of bytes not transfered.
register struct cblock
*bp
;
if ((cq
= q
->c_cl
) == NULL
|| q
->c_cc
< 0) {
if ((bp
= cfreelist
) == NULL
)
q
->c_cf
= cq
= bp
->c_info
;
if (((int)cq
& CROUND
) == 0) {
bp
= (struct cblock
*) cq
- 1;
if ((bp
->c_next
= cfreelist
) == NULL
)
* Initialize clist by freeing all character blocks, then count
* number of character devices. (Once-only routine)
register struct cblock
*cp
;
register struct cdevsw
*cdp
;
ccp
= (ccp
+CROUND
) & ~CROUND
;
for(cp
=(struct cblock
*)ccp
; cp
<= &cfree
[NCLIST
-1]; cp
++) {
for(cdp
= cdevsw
; cdp
->d_open
; cdp
++)
* integer (2-byte) get/put
register struct clist *p;
return(s | (getc(p)<<8));
register struct clist
*p
;