Lines Matching +full:dc +full:- +full:to +full:- +full:dc
1 /*-
2 * SPDX-License-Identifier: BSD-4-Clause
21 * may be used to endorse or promote products derived from this software
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49 dcons_ischar(struct dcons_softc *dc) in dcons_ischar() argument
54 ch = &dc->i; in dcons_ischar()
56 ptr = ntohl(*ch->ptr); in dcons_ischar()
59 if (gen == ch->gen && pos == ch->pos) in dcons_ischar()
62 next_gen = DCONS_NEXT_GEN(ch->gen); in dcons_ischar()
64 if ((gen != ch->gen && gen != next_gen) in dcons_ischar()
65 || (gen == ch->gen && pos < ch->pos)) { in dcons_ischar()
68 ch->gen = gen; in dcons_ischar()
69 ch->pos = pos; in dcons_ischar()
77 dcons_checkc(struct dcons_softc *dc) in dcons_checkc() argument
83 ch = &dc->i; in dcons_checkc()
85 ptr = ntohl(*ch->ptr); in dcons_checkc()
88 if (gen == ch->gen && pos == ch->pos) in dcons_checkc()
89 return (-1); in dcons_checkc()
91 next_gen = DCONS_NEXT_GEN(ch->gen); in dcons_checkc()
93 if ((gen != ch->gen && gen != next_gen) in dcons_checkc()
94 || (gen == ch->gen && pos < ch->pos)) { in dcons_checkc()
97 ch->gen = gen; in dcons_checkc()
98 ch->pos = pos; in dcons_checkc()
99 return (-1); in dcons_checkc()
102 c = ch->buf[ch->pos]; in dcons_checkc()
103 ch->pos ++; in dcons_checkc()
104 if (ch->pos >= ch->size) { in dcons_checkc()
105 ch->gen = next_gen; in dcons_checkc()
106 ch->pos = 0; in dcons_checkc()
113 dcons_putc(struct dcons_softc *dc, int c) in dcons_putc() argument
117 ch = &dc->o; in dcons_putc()
119 ch->buf[ch->pos] = c; in dcons_putc()
120 ch->pos ++; in dcons_putc()
121 if (ch->pos >= ch->size) { in dcons_putc()
122 ch->gen = DCONS_NEXT_GEN(ch->gen); in dcons_putc()
123 ch->pos = 0; in dcons_putc()
125 *ch->ptr = DCONS_MAKE_PTR(ch); in dcons_putc()
133 struct dcons_softc *dc; in dcons_init_port() local
135 dc = &sc[port]; in dcons_init_port()
139 dc->o.size = osize; in dcons_init_port()
140 dc->i.size = size - osize; in dcons_init_port()
141 dc->o.buf = (char *)buf + offset; in dcons_init_port()
142 dc->i.buf = dc->o.buf + osize; in dcons_init_port()
143 dc->o.gen = dc->i.gen = 0; in dcons_init_port()
144 dc->o.pos = dc->i.pos = 0; in dcons_init_port()
145 dc->o.ptr = &buf->optr[port]; in dcons_init_port()
146 dc->i.ptr = &buf->iptr[port]; in dcons_init_port()
147 dc->brk_state = STATE0; in dcons_init_port()
148 buf->osize[port] = htonl(osize); in dcons_init_port()
149 buf->isize[port] = htonl(size - osize); in dcons_init_port()
150 buf->ooffset[port] = htonl(offset); in dcons_init_port()
151 buf->ioffset[port] = htonl(offset + osize); in dcons_init_port()
152 buf->optr[port] = DCONS_MAKE_PTR(&dc->o); in dcons_init_port()
153 buf->iptr[port] = DCONS_MAKE_PTR(&dc->i); in dcons_init_port()
162 struct dcons_softc *dc; in dcons_load_buffer() local
164 if (buf->version != htonl(DCONS_VERSION)) in dcons_load_buffer()
165 return (-1); in dcons_load_buffer()
169 dc = &sc[port]; in dcons_load_buffer()
170 dc->o.size = ntohl(buf->osize[port]); in dcons_load_buffer()
171 dc->i.size = ntohl(buf->isize[port]); in dcons_load_buffer()
172 dc->o.buf = (char *)buf + ntohl(buf->ooffset[port]); in dcons_load_buffer()
173 dc->i.buf = (char *)buf + ntohl(buf->ioffset[port]); in dcons_load_buffer()
174 dc->o.gen = ntohl(buf->optr[port]) >> DCONS_GEN_SHIFT; in dcons_load_buffer()
175 dc->i.gen = ntohl(buf->iptr[port]) >> DCONS_GEN_SHIFT; in dcons_load_buffer()
176 dc->o.pos = ntohl(buf->optr[port]) & DCONS_POS_MASK; in dcons_load_buffer()
177 dc->i.pos = ntohl(buf->iptr[port]) & DCONS_POS_MASK; in dcons_load_buffer()
178 dc->o.ptr = &buf->optr[port]; in dcons_load_buffer()
179 dc->i.ptr = &buf->iptr[port]; in dcons_load_buffer()
180 dc->brk_state = STATE0; in dcons_load_buffer()
182 s += dc->o.size + dc->i.size; in dcons_load_buffer()
187 return (-1); in dcons_load_buffer()
189 buf->magic = ntohl(DCONS_MAGIC); in dcons_load_buffer()
200 size0 = (size - offset); in dcons_init()
205 dcons_init_port(1, offset, size0 - size1, buf, sc); in dcons_init()
206 buf->version = htonl(DCONS_VERSION); in dcons_init()
207 buf->magic = ntohl(DCONS_MAGIC); in dcons_init()