Lines Matching full:segment

1620 static int32_t ocs_segment_remaining(ocs_textbuf_segment_t *segment);
1622 static void ocs_textbuf_segment_free(ocs_t *ocs, ocs_textbuf_segment_t *segment);
1652 ocs_textbuf_segment_t *segment = ocs_textbuf_get_segment(textbuf, idx); in ocs_textbuf_ext_get_buffer() local
1653 if (segment == NULL) { in ocs_textbuf_ext_get_buffer()
1656 return segment->buffer; in ocs_textbuf_ext_get_buffer()
1661 ocs_textbuf_segment_t *segment = ocs_textbuf_get_segment(textbuf, idx); in ocs_textbuf_ext_get_length() local
1662 if (segment == NULL) { in ocs_textbuf_ext_get_length()
1665 return segment->buffer_length; in ocs_textbuf_ext_get_length()
1670 ocs_textbuf_segment_t *segment = ocs_textbuf_get_segment(textbuf, idx); in ocs_textbuf_ext_get_written() local
1671 if (segment == NULL) { in ocs_textbuf_ext_get_written()
1674 return segment->buffer_written; in ocs_textbuf_ext_get_written()
1703 /* Add first segment */ in ocs_textbuf_alloc()
1710 ocs_textbuf_segment_t *segment = NULL; in ocs_textbuf_segment_alloc() local
1713 segment = ocs_malloc(textbuf->ocs, sizeof(*segment), OCS_M_ZERO | OCS_M_NOWAIT); in ocs_textbuf_segment_alloc()
1714 if (segment != NULL) { in ocs_textbuf_segment_alloc()
1715segment->buffer = ocs_malloc(textbuf->ocs, textbuf->allocation_length, OCS_M_ZERO | OCS_M_NOWAIT); in ocs_textbuf_segment_alloc()
1716 if (segment->buffer != NULL) { in ocs_textbuf_segment_alloc()
1717 segment->buffer_length = textbuf->allocation_length; in ocs_textbuf_segment_alloc()
1718 segment->buffer_written = 0; in ocs_textbuf_segment_alloc()
1719 ocs_list_add_tail(&textbuf->segment_list, segment); in ocs_textbuf_segment_alloc()
1728 ocs_textbuf_segment_free(textbuf->ocs, segment); in ocs_textbuf_segment_alloc()
1729 segment = NULL; in ocs_textbuf_segment_alloc()
1733 return segment; in ocs_textbuf_segment_alloc()
1737 ocs_textbuf_segment_free(ocs_t *ocs, ocs_textbuf_segment_t *segment) in ocs_textbuf_segment_free() argument
1739 if (segment) { in ocs_textbuf_segment_free()
1740 if (segment->buffer && !segment->user_allocated) { in ocs_textbuf_segment_free()
1741 ocs_free(ocs, segment->buffer, segment->buffer_length); in ocs_textbuf_segment_free()
1743 ocs_free(ocs, segment, sizeof(*segment)); in ocs_textbuf_segment_free()
1751 ocs_textbuf_segment_t *segment; in ocs_textbuf_get_segment() local
1755 ocs_list_foreach(&textbuf->segment_list, segment) { in ocs_textbuf_get_segment()
1757 return segment; in ocs_textbuf_get_segment()
1769 ocs_textbuf_segment_t *segment; in ocs_textbuf_init() local
1775 segment = ocs_malloc(ocs, sizeof(*segment), OCS_M_ZERO | OCS_M_NOWAIT); in ocs_textbuf_init()
1776 if (segment) { in ocs_textbuf_init()
1777 segment->buffer = buffer; in ocs_textbuf_init()
1778 segment->buffer_length = length; in ocs_textbuf_init()
1779 segment->buffer_written = 0; in ocs_textbuf_init()
1780 segment->user_allocated = 1; in ocs_textbuf_init()
1781 ocs_list_add_tail(&textbuf->segment_list, segment); in ocs_textbuf_init()
1791 ocs_textbuf_segment_t *segment; in ocs_textbuf_free() local
1795 ocs_list_foreach_safe(&textbuf->segment_list, segment, n) { in ocs_textbuf_free()
1796 ocs_list_remove(&textbuf->segment_list, segment); in ocs_textbuf_free()
1797 ocs_textbuf_segment_free(ocs, segment); in ocs_textbuf_free()
1821 ocs_textbuf_segment_t *segment; in ocs_textbuf_vprintf() local
1830 /* fetch last segment */ in ocs_textbuf_vprintf()
1831 segment = ocs_list_get_tail(&textbuf->segment_list); in ocs_textbuf_vprintf()
1833 avail = ocs_segment_remaining(segment); in ocs_textbuf_vprintf()
1835 if ((segment = ocs_textbuf_segment_alloc(textbuf)) == NULL) { in ocs_textbuf_vprintf()
1838 avail = ocs_segment_remaining(segment); in ocs_textbuf_vprintf()
1841 written = ocs_vsnprintf(segment->buffer + segment->buffer_written, avail, fmt, ap); in ocs_textbuf_vprintf()
1849 *(segment->buffer + segment->buffer_written) = 0; in ocs_textbuf_vprintf()
1851 /* Allocate a new segment */ in ocs_textbuf_vprintf()
1852 if ((segment = ocs_textbuf_segment_alloc(textbuf)) == NULL) { in ocs_textbuf_vprintf()
1853 ocs_log_err(textbuf->ocs, "alloc segment failed\n"); in ocs_textbuf_vprintf()
1856 avail = ocs_segment_remaining(segment); in ocs_textbuf_vprintf()
1859 written = ocs_vsnprintf(segment->buffer + segment->buffer_written, avail, fmt, save_ap); in ocs_textbuf_vprintf()
1862 segment->buffer_written += written; in ocs_textbuf_vprintf()
1871 ocs_textbuf_segment_t *segment; in ocs_textbuf_putc() local
1874 segment = ocs_list_get_tail(&textbuf->segment_list); in ocs_textbuf_putc()
1876 if (ocs_segment_remaining(segment)) { in ocs_textbuf_putc()
1877 *(segment->buffer + segment->buffer_written++) = c; in ocs_textbuf_putc()
1879 if (ocs_segment_remaining(segment) == 0) { in ocs_textbuf_putc()
1956 ocs_segment_remaining(ocs_textbuf_segment_t *segment) in ocs_segment_remaining() argument
1958 return segment->buffer_length - segment->buffer_written; in ocs_segment_remaining()
1965 ocs_textbuf_segment_t *segment; in ocs_textbuf_reset() local
1969 /* zero written on the first segment, free the rest */ in ocs_textbuf_reset()
1970 ocs_list_foreach_safe(&textbuf->segment_list, segment, n) { in ocs_textbuf_reset()
1972 segment->buffer_written = 0; in ocs_textbuf_reset()
1974 ocs_list_remove(&textbuf->segment_list, segment); in ocs_textbuf_reset()
1975 ocs_textbuf_segment_free(textbuf->ocs, segment); in ocs_textbuf_reset()