X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/1c79356b52d46aa6b508fb032f5ae709b1f2897b..c18c124eaa464aaaa5549e99e5a70fc9cbb50944:/bsd/kern/tty_subr.c diff --git a/bsd/kern/tty_subr.c b/bsd/kern/tty_subr.c index f35c1ba79..89bc09fe0 100644 --- a/bsd/kern/tty_subr.c +++ b/bsd/kern/tty_subr.c @@ -1,23 +1,29 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved. * - * @APPLE_LICENSE_HEADER_START@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ * - * The contents of this file constitute Original Code as defined in and - * are subject to the Apple Public Source License Version 1.1 (the - * "License"). You may not use this file except in compliance with the - * License. Please obtain a copy of the License at - * http://www.apple.com/publicsource and read it before using this file. + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. The rights granted to you under the License + * may not be used to create, or enable the creation or redistribution of, + * unlawful or unlicensed copies of an Apple operating system, or to + * circumvent, violate, or enable the circumvention or violation of, any + * terms of an Apple operating system software license agreement. * - * This Original Code and all software distributed under the License are - * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the - * License for the specific language governing rights and limitations - * under the License. + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. * - * @APPLE_LICENSE_HEADER_END@ + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ */ /* Copyright (c) 1997 Apple Computer, Inc. All Rights Reserved */ /* @@ -48,7 +54,6 @@ * */ -#ifdef NeXT /* * We use the NetBSD based clist system, it is much more efficient than the * old style clist stuff used by free bsd. @@ -56,12 +61,10 @@ #include #include -#include #include #include #include -#include /* * At compile time, choose: @@ -89,7 +92,7 @@ * Initialize clists. */ void -cinit() +cinit(void) { } @@ -98,21 +101,17 @@ cinit() * of the specified length, with/without quoting support. */ int -clalloc(clp, size, quot) - struct clist *clp; - int size; - int quot; +clalloc(struct clist *clp, int size, int quot) { - - MALLOC(clp->c_cs, u_char *, size, M_TTYS, M_WAITOK); + MALLOC_ZONE(clp->c_cs, u_char *, size, M_TTYS, M_WAITOK); if (!clp->c_cs) return (-1); bzero(clp->c_cs, size); if(quot) { - MALLOC(clp->c_cq, u_char *, QMEM(size), M_TTYS, M_WAITOK); + MALLOC_ZONE(clp->c_cq, u_char *, QMEM(size), M_TTYS, M_WAITOK); if (!clp->c_cq) { - FREE(clp->c_cs, M_TTYS); + FREE_ZONE(clp->c_cs, size, M_TTYS); return (-1); } bzero(clp->c_cs, QMEM(size)); @@ -127,13 +126,12 @@ clalloc(clp, size, quot) } void -clfree(clp) - struct clist *clp; +clfree(struct clist *clp) { if(clp->c_cs) - FREE(clp->c_cs, M_TTYS); + FREE_ZONE(clp->c_cs, clp->c_cn, M_TTYS); if(clp->c_cq) - FREE(clp->c_cq, M_TTYS); + FREE_ZONE(clp->c_cq, QMEM(clp->c_cn), M_TTYS); clp->c_cs = clp->c_cq = (u_char *)0; } @@ -142,13 +140,10 @@ clfree(clp) * Get a character from a clist. */ int -getc(clp) - struct clist *clp; +getc(struct clist *clp) { - register int c = -1; - int s; + int c = -1; - s = spltty(); if (clp->c_cc == 0) goto out; @@ -167,7 +162,6 @@ getc(clp) if (--clp->c_cc == 0) clp->c_cf = clp->c_cl = (u_char *)0; out: - splx(s); return c; } @@ -176,16 +170,11 @@ out: * Return number of bytes moved. */ int -q_to_b(clp, cp, count) - struct clist *clp; - u_char *cp; - int count; +q_to_b(struct clist *clp, u_char *cp, int count) { - register int cc; + int cc; u_char *p = cp; - int s; - s = spltty(); /* optimize this while loop */ while (count > 0 && clp->c_cc > 0) { cc = clp->c_cl - clp->c_cf; @@ -203,7 +192,6 @@ q_to_b(clp, cp, count) } if (clp->c_cc == 0) clp->c_cf = clp->c_cl = (u_char *)0; - splx(s); return p - cp; } @@ -212,16 +200,12 @@ q_to_b(clp, cp, count) * Stop counting if flag&character is non-null. */ int -ndqb(clp, flag) - struct clist *clp; - int flag; +ndqb(struct clist *clp, int flag) { int count = 0; register int i; register int cc; - int s; - s = spltty(); if ((cc = clp->c_cc) == 0) goto out; @@ -248,7 +232,6 @@ ndqb(clp, flag) } } out: - splx(s); return count; } @@ -256,18 +239,14 @@ out: * Flush count bytes from clist. */ void -ndflush(clp, count) - struct clist *clp; - int count; +ndflush(struct clist *clp, int count) { - register int cc; - int s; + int cc; - s = spltty(); if (count == clp->c_cc) { clp->c_cc = 0; clp->c_cf = clp->c_cl = (u_char *)0; - goto out; + return; } /* optimize this while loop */ while (count > 0 && clp->c_cc > 0) { @@ -284,22 +263,16 @@ ndflush(clp, count) } if (clp->c_cc == 0) clp->c_cf = clp->c_cl = (u_char *)0; -out: - splx(s); } /* * Put a character into the output queue. */ int -putc(c, clp) - int c; - struct clist *clp; +putc(int c, struct clist *clp) { register int i; - int s; - s = spltty(); if (clp->c_cc == 0) { if (!clp->c_cs) { #if DIAGNOSTIC @@ -307,7 +280,6 @@ putc(c, clp) #endif if(clalloc(clp, 1024, 1)) { out: - splx(s); return -1; } } @@ -334,7 +306,6 @@ out: clp->c_cl++; if (clp->c_cl == clp->c_ce) clp->c_cl = clp->c_cs; - splx(s); return 0; } @@ -346,10 +317,7 @@ out: * clrbit(cp, off + len); */ void -clrbits(cp, off, len) - u_char *cp; - int off; - int len; +clrbits(u_char *cp, int off, int len) { int sby, sbi, eby, ebi; register int i; @@ -372,7 +340,9 @@ clrbits(cp, off, len) cp[sby++] &= mask; mask = (1<c_cc == 0) { if (!clp->c_cs) { @@ -436,7 +401,6 @@ b_to_q(cp, count, clp) clp->c_cl = clp->c_cs; } out: - splx(s); return count; } @@ -451,12 +415,8 @@ static int cc; * masked. */ u_char * -nextc(clp, cp, c) - struct clist *clp; - register u_char *cp; - int *c; +nextc(struct clist *clp, u_char *cp, int *c) { - if (clp->c_cf == cp) { /* * First time initialization. @@ -493,11 +453,9 @@ nextc(clp, cp, c) * *c is set to the NEXT character */ u_char * -firstc(clp, c) - struct clist *clp; - int *c; +firstc(struct clist *clp, int *c) { - register u_char *cp; + u_char *cp; cc = clp->c_cc; if (cc == 0) @@ -520,13 +478,10 @@ firstc(clp, c) * Remove the last character in the clist and return it. */ int -unputc(clp) - struct clist *clp; +unputc(struct clist *clp) { unsigned int c = -1; - int s; - s = spltty(); if (clp->c_cc == 0) goto out; @@ -549,7 +504,6 @@ unputc(clp) if (clp->c_cc == 0) clp->c_cf = clp->c_cl = (u_char *)0; out: - splx(s); return c; } @@ -557,13 +511,10 @@ out: * Put the chars in the from queue on the end of the to queue. */ void -catq(from, to) - struct clist *from, *to; +catq(struct clist *from, struct clist *to) { int c; while ((c = getc(from)) != -1) putc(c, to); } - -#endif /* NeXT */