Lines Matching defs:clp
71 clalloc(struct clist *clp, int size, int quot)
74 clp->c_cs = kmem_zalloc(size, KM_SLEEP);
76 clp->c_cq = kmem_zalloc(QMEM(size), KM_SLEEP);
78 clp->c_cq = NULL;
80 clp->c_cf = clp->c_cl = NULL;
81 clp->c_ce = clp->c_cs + size;
82 clp->c_cn = size;
83 clp->c_cc = 0;
89 clfree(struct clist *clp)
91 if (clp->c_cs)
92 kmem_free(clp->c_cs, clp->c_cn);
93 if (clp->c_cq)
94 kmem_free(clp->c_cq, QMEM(clp->c_cn));
95 clp->c_cs = clp->c_cq = NULL;
102 getc(struct clist *clp)
108 if (clp->c_cc == 0)
111 c = *clp->c_cf & 0xff;
112 if (clp->c_cq) {
114 if (isset(clp->c_cq, clp->c_cf - clp->c_cs) )
117 if (*(clp->c_cf - clp->c_cs + clp->c_cq))
121 *clp->c_cf = 0; /* wipe out to avoid information disclosure */
122 if (++clp->c_cf == clp->c_ce)
123 clp->c_cf = clp->c_cs;
124 if (--clp->c_cc == 0)
125 clp->c_cf = clp->c_cl = (u_char *)0;
136 q_to_b(struct clist *clp, u_char *cp, int count)
144 while (count > 0 && clp->c_cc > 0) {
145 cc = clp->c_cl - clp->c_cf;
146 if (clp->c_cf >= clp->c_cl)
147 cc = clp->c_ce - clp->c_cf;
150 memcpy(p, clp->c_cf, cc);
153 clp->c_cc -= cc;
154 clp->c_cf += cc;
155 if (clp->c_cf == clp->c_ce)
156 clp->c_cf = clp->c_cs;
158 if (clp->c_cc == 0)
159 clp->c_cf = clp->c_cl = (u_char *)0;
169 ndqb(struct clist *clp, int flag)
177 if ((cc = clp->c_cc) == 0)
181 count = clp->c_cl - clp->c_cf;
183 count = clp->c_ce - clp->c_cf;
187 i = clp->c_cf - clp->c_cs;
189 while (cc-- > 0 && !(clp->c_cs[i++] & (flag & ~TTY_QUOTE) ||
190 isset(clp->c_cq, i))) {
192 if (i == clp->c_cn)
196 while (cc-- > 0 && !(clp->c_cs[i++] & flag)) {
198 if (i == clp->c_cn)
211 ndflush(struct clist *clp, int count)
217 if (count == clp->c_cc) {
218 clp->c_cc = 0;
219 clp->c_cf = clp->c_cl = (u_char *)0;
223 while (count > 0 && clp->c_cc > 0) {
224 cc = clp->c_cl - clp->c_cf;
225 if (clp->c_cf >= clp->c_cl)
226 cc = clp->c_ce - clp->c_cf;
230 clp->c_cc -= cc;
231 clp->c_cf += cc;
232 if (clp->c_cf == clp->c_ce)
233 clp->c_cf = clp->c_cs;
235 if (clp->c_cc == 0)
236 clp->c_cf = clp->c_cl = (u_char *)0;
245 putc(int c, struct clist *clp)
251 if (clp->c_cc == clp->c_cn)
254 if (clp->c_cc == 0) {
255 if (!clp->c_cs) {
259 if (clalloc(clp, clp->c_cn, 1)) {
265 clp->c_cf = clp->c_cl = clp->c_cs;
268 *clp->c_cl = c & 0xff;
269 i = clp->c_cl - clp->c_cs;
270 if (clp->c_cq) {
273 setbit(clp->c_cq, i);
275 clrbit(clp->c_cq, i);
277 q = clp->c_cq + i;
281 clp->c_cc++;
282 clp->c_cl++;
283 if (clp->c_cl == clp->c_ce)
284 clp->c_cl = clp->c_cs;
330 b_to_q(const u_char *cp, int count, struct clist *clp)
340 if (clp->c_cc == clp->c_cn)
343 if (clp->c_cc == 0) {
344 if (!clp->c_cs) {
348 if (clalloc(clp, clp->c_cn, 1))
351 clp->c_cf = clp->c_cl = clp->c_cs;
355 while (count > 0 && clp->c_cc < clp->c_cn) {
356 cc = clp->c_ce - clp->c_cl;
357 if (clp->c_cf > clp->c_cl)
358 cc = clp->c_cf - clp->c_cl;
361 memcpy(clp->c_cl, p, cc);
362 if (clp->c_cq) {
364 clrbits(clp->c_cq, clp->c_cl - clp->c_cs, cc);
366 memset(clp->c_cl - clp->c_cs + clp->c_cq, 0, cc);
371 clp->c_cc += cc;
372 clp->c_cl += cc;
373 if (clp->c_cl == clp->c_ce)
374 clp->c_cl = clp->c_cs;
392 nextc(struct clist *clp, u_char *cp, int *c)
395 if (clp->c_cf == cp) {
399 tty_global_cc = clp->c_cc;
405 if (++cp == clp->c_ce)
406 cp = clp->c_cs;
408 if (clp->c_cq) {
410 if (isset(clp->c_cq, cp - clp->c_cs))
413 if (*(clp->c_cf - clp->c_cs + clp->c_cq))
431 firstc(struct clist *clp, int *c)
435 tty_global_cc = clp->c_cc;
438 cp = clp->c_cf;
440 if (clp->c_cq) {
442 if (isset(clp->c_cq, cp - clp->c_cs))
445 if (*(cp - clp->c_cs + clp->c_cq))
449 return clp->c_cf;
456 unputc(struct clist *clp)
462 if (clp->c_cc == 0)
465 if (clp->c_cl == clp->c_cs)
466 clp->c_cl = clp->c_ce - 1;
468 --clp->c_cl;
469 clp->c_cc--;
471 c = *clp->c_cl & 0xff;
472 if (clp->c_cq) {
474 if (isset(clp->c_cq, clp->c_cl - clp->c_cs))
477 if (*(clp->c_cf - clp->c_cs + clp->c_cq))
481 if (clp->c_cc == 0)
482 clp->c_cf = clp->c_cl = (u_char *)0;