Lines Matching refs:buffer

43 	struct sclp_buffer *buffer;  in sclp_make_buffer()  local
51 buffer = ((struct sclp_buffer *) ((addr_t) sccb + PAGE_SIZE)) - 1; in sclp_make_buffer()
52 buffer->sccb = sccb; in sclp_make_buffer()
53 buffer->retry_count = 0; in sclp_make_buffer()
54 buffer->messages = 0; in sclp_make_buffer()
55 buffer->char_sum = 0; in sclp_make_buffer()
56 buffer->current_line = NULL; in sclp_make_buffer()
57 buffer->current_length = 0; in sclp_make_buffer()
58 buffer->columns = columns; in sclp_make_buffer()
59 buffer->htab = htab; in sclp_make_buffer()
65 return buffer; in sclp_make_buffer()
73 sclp_unmake_buffer(struct sclp_buffer *buffer) in sclp_unmake_buffer() argument
75 return buffer->sccb; in sclp_unmake_buffer()
83 sclp_initialize_mto(struct sclp_buffer *buffer, int max_len) in sclp_initialize_mto() argument
96 sccb = buffer->sccb; in sclp_initialize_mto()
121 buffer->current_msg = msg; in sclp_initialize_mto()
122 buffer->current_line = (char *) (mto + 1); in sclp_initialize_mto()
123 buffer->current_length = 0; in sclp_initialize_mto()
133 sclp_finalize_mto(struct sclp_buffer *buffer) in sclp_finalize_mto() argument
142 sccb = buffer->sccb; in sclp_finalize_mto()
143 msg = buffer->current_msg; in sclp_finalize_mto()
144 msg->header.length += buffer->current_length; in sclp_finalize_mto()
145 msg->mdb.header.length += buffer->current_length; in sclp_finalize_mto()
146 msg->mdb.mto.length += buffer->current_length; in sclp_finalize_mto()
154 buffer->messages++; in sclp_finalize_mto()
155 buffer->char_sum += buffer->current_length; in sclp_finalize_mto()
157 buffer->current_line = NULL; in sclp_finalize_mto()
158 buffer->current_length = 0; in sclp_finalize_mto()
159 buffer->current_msg = NULL; in sclp_finalize_mto()
170 sclp_write(struct sclp_buffer *buffer, const unsigned char *msg, int count) in sclp_write() argument
202 if (buffer->current_line == NULL) { in sclp_write()
203 rc = sclp_initialize_mto(buffer, 0); in sclp_write()
207 sclp_finalize_mto(buffer); in sclp_write()
211 if (buffer->current_line == NULL) { in sclp_write()
212 rc = sclp_initialize_mto(buffer, in sclp_write()
213 buffer->columns); in sclp_write()
217 buffer->current_msg->mdb.go.general_msg_flags |= in sclp_write()
222 if (buffer->current_line == NULL) { in sclp_write()
223 rc = sclp_initialize_mto(buffer, in sclp_write()
224 buffer->columns); in sclp_write()
230 if (buffer->current_length >= buffer->columns) in sclp_write()
233 *buffer->current_line++ = 0x40; in sclp_write()
234 buffer->current_length++; in sclp_write()
235 } while (buffer->current_length % buffer->htab); in sclp_write()
241 if (buffer->current_line != NULL) { in sclp_write()
242 spaces = buffer->current_length; in sclp_write()
243 sclp_finalize_mto(buffer); in sclp_write()
244 rc = sclp_initialize_mto(buffer, in sclp_write()
245 buffer->columns); in sclp_write()
248 memset(buffer->current_line, 0x40, spaces); in sclp_write()
249 buffer->current_line += spaces; in sclp_write()
250 buffer->current_length = spaces; in sclp_write()
253 rc = sclp_initialize_mto(buffer, in sclp_write()
254 buffer->columns); in sclp_write()
257 sclp_finalize_mto(buffer); in sclp_write()
264 if (buffer->current_line != NULL && in sclp_write()
265 buffer->current_length > 0) { in sclp_write()
266 buffer->current_length--; in sclp_write()
267 buffer->current_line--; in sclp_write()
272 if (buffer->current_line != NULL) in sclp_write()
273 sclp_finalize_mto(buffer); in sclp_write()
282 if (buffer->current_line == NULL) { in sclp_write()
283 rc = sclp_initialize_mto(buffer, in sclp_write()
284 buffer->columns); in sclp_write()
288 *buffer->current_line++ = sclp_ascebc(msg[i_msg]); in sclp_write()
289 buffer->current_length++; in sclp_write()
293 if (buffer->current_line != NULL && in sclp_write()
294 buffer->current_length >= buffer->columns) in sclp_write()
295 sclp_finalize_mto(buffer); in sclp_write()
306 sclp_buffer_space(struct sclp_buffer *buffer) in sclp_buffer_space() argument
311 sccb = buffer->sccb; in sclp_buffer_space()
313 if (buffer->current_line != NULL) in sclp_buffer_space()
314 count -= sizeof(struct msg_buf) + buffer->current_length; in sclp_buffer_space()
322 sclp_chars_in_buffer(struct sclp_buffer *buffer) in sclp_chars_in_buffer() argument
326 count = buffer->char_sum; in sclp_chars_in_buffer()
327 if (buffer->current_line != NULL) in sclp_chars_in_buffer()
328 count += buffer->current_length; in sclp_chars_in_buffer()
360 struct sclp_buffer *buffer; in sclp_writedata_callback() local
363 buffer = (struct sclp_buffer *) data; in sclp_writedata_callback()
364 sccb = buffer->sccb; in sclp_writedata_callback()
367 if (buffer->callback != NULL) in sclp_writedata_callback()
368 buffer->callback(buffer, -EIO); in sclp_writedata_callback()
379 if (++buffer->retry_count > SCLP_BUFFER_MAX_RETRY) { in sclp_writedata_callback()
387 buffer->request.status = SCLP_REQ_FILLED; in sclp_writedata_callback()
397 if (++buffer->retry_count > SCLP_BUFFER_MAX_RETRY) { in sclp_writedata_callback()
403 buffer->request.status = SCLP_REQ_FILLED; in sclp_writedata_callback()
415 if (buffer->callback != NULL) in sclp_writedata_callback()
416 buffer->callback(buffer, rc); in sclp_writedata_callback()
425 sclp_emit_buffer(struct sclp_buffer *buffer, in sclp_emit_buffer() argument
429 if (buffer->current_line != NULL) in sclp_emit_buffer()
430 sclp_finalize_mto(buffer); in sclp_emit_buffer()
433 if (buffer->messages == 0) in sclp_emit_buffer()
436 buffer->request.command = SCLP_CMDW_WRITE_EVENT_DATA; in sclp_emit_buffer()
437 buffer->request.status = SCLP_REQ_FILLED; in sclp_emit_buffer()
438 buffer->request.callback = sclp_writedata_callback; in sclp_emit_buffer()
439 buffer->request.callback_data = buffer; in sclp_emit_buffer()
440 buffer->request.sccb = buffer->sccb; in sclp_emit_buffer()
441 buffer->callback = callback; in sclp_emit_buffer()
442 return sclp_add_request(&buffer->request); in sclp_emit_buffer()