Lines Matching refs:buffer

49 	struct sclp_buffer *buffer;  in sclp_make_buffer()  local
57 buffer = ((struct sclp_buffer *) ((addr_t) sccb + PAGE_SIZE)) - 1; in sclp_make_buffer()
58 buffer->sccb = sccb; in sclp_make_buffer()
59 buffer->retry_count = 0; in sclp_make_buffer()
60 buffer->messages = 0; in sclp_make_buffer()
61 buffer->char_sum = 0; in sclp_make_buffer()
62 buffer->current_line = NULL; in sclp_make_buffer()
63 buffer->current_length = 0; in sclp_make_buffer()
64 buffer->columns = columns; in sclp_make_buffer()
65 buffer->htab = htab; in sclp_make_buffer()
71 return buffer; in sclp_make_buffer()
79 sclp_unmake_buffer(struct sclp_buffer *buffer) in sclp_unmake_buffer() argument
81 return buffer->sccb; in sclp_unmake_buffer()
89 sclp_initialize_mto(struct sclp_buffer *buffer, int max_len) in sclp_initialize_mto() argument
102 sccb = buffer->sccb; in sclp_initialize_mto()
127 buffer->current_msg = msg; in sclp_initialize_mto()
128 buffer->current_line = (char *) (mto + 1); in sclp_initialize_mto()
129 buffer->current_length = 0; in sclp_initialize_mto()
139 sclp_finalize_mto(struct sclp_buffer *buffer) in sclp_finalize_mto() argument
148 sccb = buffer->sccb; in sclp_finalize_mto()
149 msg = buffer->current_msg; in sclp_finalize_mto()
150 msg->header.length += buffer->current_length; in sclp_finalize_mto()
151 msg->mdb.header.length += buffer->current_length; in sclp_finalize_mto()
152 msg->mdb.mto.length += buffer->current_length; in sclp_finalize_mto()
160 buffer->messages++; in sclp_finalize_mto()
161 buffer->char_sum += buffer->current_length; in sclp_finalize_mto()
163 buffer->current_line = NULL; in sclp_finalize_mto()
164 buffer->current_length = 0; in sclp_finalize_mto()
165 buffer->current_msg = NULL; in sclp_finalize_mto()
176 sclp_write(struct sclp_buffer *buffer, const unsigned char *msg, int count) in sclp_write() argument
208 if (buffer->current_line == NULL) { in sclp_write()
209 rc = sclp_initialize_mto(buffer, 0); in sclp_write()
213 sclp_finalize_mto(buffer); in sclp_write()
217 if (buffer->current_line == NULL) { in sclp_write()
218 rc = sclp_initialize_mto(buffer, in sclp_write()
219 buffer->columns); in sclp_write()
223 buffer->current_msg->mdb.go.general_msg_flags |= in sclp_write()
228 if (buffer->current_line == NULL) { in sclp_write()
229 rc = sclp_initialize_mto(buffer, in sclp_write()
230 buffer->columns); in sclp_write()
236 if (buffer->current_length >= buffer->columns) in sclp_write()
239 *buffer->current_line++ = 0x40; in sclp_write()
240 buffer->current_length++; in sclp_write()
241 } while (buffer->current_length % buffer->htab); in sclp_write()
247 if (buffer->current_line != NULL) { in sclp_write()
248 spaces = buffer->current_length; in sclp_write()
249 sclp_finalize_mto(buffer); in sclp_write()
250 rc = sclp_initialize_mto(buffer, in sclp_write()
251 buffer->columns); in sclp_write()
254 memset(buffer->current_line, 0x40, spaces); in sclp_write()
255 buffer->current_line += spaces; in sclp_write()
256 buffer->current_length = spaces; in sclp_write()
259 rc = sclp_initialize_mto(buffer, in sclp_write()
260 buffer->columns); in sclp_write()
263 sclp_finalize_mto(buffer); in sclp_write()
270 if (buffer->current_line != NULL && in sclp_write()
271 buffer->current_length > 0) { in sclp_write()
272 buffer->current_length--; in sclp_write()
273 buffer->current_line--; in sclp_write()
278 if (buffer->current_line != NULL) in sclp_write()
279 sclp_finalize_mto(buffer); in sclp_write()
288 if (buffer->current_line == NULL) { in sclp_write()
289 rc = sclp_initialize_mto(buffer, in sclp_write()
290 buffer->columns); in sclp_write()
294 *buffer->current_line++ = sclp_ascebc(msg[i_msg]); in sclp_write()
295 buffer->current_length++; in sclp_write()
299 if (buffer->current_line != NULL && in sclp_write()
300 buffer->current_length >= buffer->columns) in sclp_write()
301 sclp_finalize_mto(buffer); in sclp_write()
312 sclp_buffer_space(struct sclp_buffer *buffer) in sclp_buffer_space() argument
317 sccb = buffer->sccb; in sclp_buffer_space()
319 if (buffer->current_line != NULL) in sclp_buffer_space()
320 count -= sizeof(struct msg_buf) + buffer->current_length; in sclp_buffer_space()
328 sclp_chars_in_buffer(struct sclp_buffer *buffer) in sclp_chars_in_buffer() argument
332 count = buffer->char_sum; in sclp_chars_in_buffer()
333 if (buffer->current_line != NULL) in sclp_chars_in_buffer()
334 count += buffer->current_length; in sclp_chars_in_buffer()
342 sclp_set_columns(struct sclp_buffer *buffer, unsigned short columns) in sclp_set_columns() argument
344 buffer->columns = columns; in sclp_set_columns()
345 if (buffer->current_line != NULL && in sclp_set_columns()
346 buffer->current_length > buffer->columns) in sclp_set_columns()
347 sclp_finalize_mto(buffer); in sclp_set_columns()
351 sclp_set_htab(struct sclp_buffer *buffer, unsigned short htab) in sclp_set_htab() argument
353 buffer->htab = htab; in sclp_set_htab()
384 struct sclp_buffer *buffer; in sclp_writedata_callback() local
387 buffer = (struct sclp_buffer *) data; in sclp_writedata_callback()
388 sccb = buffer->sccb; in sclp_writedata_callback()
391 if (buffer->callback != NULL) in sclp_writedata_callback()
392 buffer->callback(buffer, -EIO); in sclp_writedata_callback()
403 if (++buffer->retry_count > SCLP_BUFFER_MAX_RETRY) { in sclp_writedata_callback()
411 buffer->request.status = SCLP_REQ_FILLED; in sclp_writedata_callback()
421 if (++buffer->retry_count > SCLP_BUFFER_MAX_RETRY) { in sclp_writedata_callback()
427 buffer->request.status = SCLP_REQ_FILLED; in sclp_writedata_callback()
439 if (buffer->callback != NULL) in sclp_writedata_callback()
440 buffer->callback(buffer, rc); in sclp_writedata_callback()
449 sclp_emit_buffer(struct sclp_buffer *buffer, in sclp_emit_buffer() argument
453 if (buffer->current_line != NULL) in sclp_emit_buffer()
454 sclp_finalize_mto(buffer); in sclp_emit_buffer()
457 if (buffer->messages == 0) in sclp_emit_buffer()
460 buffer->request.command = SCLP_CMDW_WRITE_EVENT_DATA; in sclp_emit_buffer()
461 buffer->request.status = SCLP_REQ_FILLED; in sclp_emit_buffer()
462 buffer->request.callback = sclp_writedata_callback; in sclp_emit_buffer()
463 buffer->request.callback_data = buffer; in sclp_emit_buffer()
464 buffer->request.sccb = buffer->sccb; in sclp_emit_buffer()
465 buffer->callback = callback; in sclp_emit_buffer()
466 return sclp_add_request(&buffer->request); in sclp_emit_buffer()