Lines Matching refs:segment

1630 static int32_t ocs_segment_remaining(ocs_textbuf_segment_t *segment);
1632 static void ocs_textbuf_segment_free(ocs_t *ocs, ocs_textbuf_segment_t *segment);
1662 ocs_textbuf_segment_t *segment = ocs_textbuf_get_segment(textbuf, idx);
1663 if (segment == NULL) {
1666 return segment->buffer;
1671 ocs_textbuf_segment_t *segment = ocs_textbuf_get_segment(textbuf, idx);
1672 if (segment == NULL) {
1675 return segment->buffer_length;
1680 ocs_textbuf_segment_t *segment = ocs_textbuf_get_segment(textbuf, idx);
1681 if (segment == NULL) {
1684 return segment->buffer_written;
1713 /* Add first segment */
1720 ocs_textbuf_segment_t *segment = NULL;
1723 segment = ocs_malloc(textbuf->ocs, sizeof(*segment), OCS_M_ZERO | OCS_M_NOWAIT);
1724 if (segment != NULL) {
1725 segment->buffer = ocs_malloc(textbuf->ocs, textbuf->allocation_length, OCS_M_ZERO | OCS_M_NOWAIT);
1726 if (segment->buffer != NULL) {
1727 segment->buffer_length = textbuf->allocation_length;
1728 segment->buffer_written = 0;
1729 ocs_list_add_tail(&textbuf->segment_list, segment);
1738 ocs_textbuf_segment_free(textbuf->ocs, segment);
1739 segment = NULL;
1743 return segment;
1747 ocs_textbuf_segment_free(ocs_t *ocs, ocs_textbuf_segment_t *segment)
1749 if (segment) {
1750 if (segment->buffer && !segment->user_allocated) {
1751 ocs_free(ocs, segment->buffer, segment->buffer_length);
1753 ocs_free(ocs, segment, sizeof(*segment));
1761 ocs_textbuf_segment_t *segment;
1765 ocs_list_foreach(&textbuf->segment_list, segment) {
1767 return segment;
1779 ocs_textbuf_segment_t *segment;
1785 segment = ocs_malloc(ocs, sizeof(*segment), OCS_M_ZERO | OCS_M_NOWAIT);
1786 if (segment) {
1787 segment->buffer = buffer;
1788 segment->buffer_length = length;
1789 segment->buffer_written = 0;
1790 segment->user_allocated = 1;
1791 ocs_list_add_tail(&textbuf->segment_list, segment);
1801 ocs_textbuf_segment_t *segment;
1805 ocs_list_foreach_safe(&textbuf->segment_list, segment, n) {
1806 ocs_list_remove(&textbuf->segment_list, segment);
1807 ocs_textbuf_segment_free(ocs, segment);
1831 ocs_textbuf_segment_t *segment;
1840 /* fetch last segment */
1841 segment = ocs_list_get_tail(&textbuf->segment_list);
1843 avail = ocs_segment_remaining(segment);
1845 if ((segment = ocs_textbuf_segment_alloc(textbuf)) == NULL) {
1848 avail = ocs_segment_remaining(segment);
1851 written = ocs_vsnprintf(segment->buffer + segment->buffer_written, avail, fmt, ap);
1861 *(segment->buffer + segment->buffer_written) = 0;
1863 /* Allocate a new segment */
1864 if ((segment = ocs_textbuf_segment_alloc(textbuf)) == NULL) {
1865 ocs_log_err(textbuf->ocs, "alloc segment failed\n");
1868 avail = ocs_segment_remaining(segment);
1871 written = ocs_vsnprintf(segment->buffer + segment->buffer_written, avail, fmt, save_ap);
1874 segment->buffer_written += written;
1883 ocs_textbuf_segment_t *segment;
1886 segment = ocs_list_get_tail(&textbuf->segment_list);
1888 if (ocs_segment_remaining(segment)) {
1889 *(segment->buffer + segment->buffer_written++) = c;
1891 if (ocs_segment_remaining(segment) == 0) {
1969 ocs_segment_remaining(ocs_textbuf_segment_t *segment)
1971 return segment->buffer_length - segment->buffer_written;
1978 ocs_textbuf_segment_t *segment;
1982 /* zero written on the first segment, free the rest */
1983 ocs_list_foreach_safe(&textbuf->segment_list, segment, n) {
1985 segment->buffer_written = 0;
1987 ocs_list_remove(&textbuf->segment_list, segment);
1988 ocs_textbuf_segment_free(textbuf->ocs, segment);