Lines Matching refs:base
222 * @base: offset in first page where receive should start, in bytes
228 struct page **pages, unsigned int base, unsigned int len)
238 xdr->page_base = base;
260 * if a memory area starts at byte 'base' in page 'pages[i]',
261 * then its address is given as (i << PAGE_CACHE_SHIFT) + base
325 * if a memory area starts at byte 'base' in page 'pages[i]',
326 * then its address is given as (i << PAGE_SHIFT) + base
474 static void xdr_buf_iov_zero(const struct kvec *iov, unsigned int base,
477 if (base >= iov->iov_len)
479 if (len > iov->iov_len - base)
480 len = iov->iov_len - base;
481 memset(iov->iov_base + base, 0, len);
585 unsigned int base, unsigned int len,
589 unsigned int to = base + shift;
595 memmove(tail->iov_base + to, tail->iov_base + base, len);
599 unsigned int base, unsigned int len,
603 unsigned int to = base + shift;
607 if (base >= buf->page_len)
609 if (len > buf->page_len - base)
610 len = buf->page_len - base;
626 buf->page_base + base + pglen, talen);
628 buf->page_base + base, pglen);
632 unsigned int base, unsigned int len,
637 unsigned int to = base + shift;
641 if (base >= head->iov_len)
643 if (len > head->iov_len - base)
644 len = head->iov_len - base;
664 base += len;
667 memcpy(tail->iov_base + tato, head->iov_base + base, talen);
670 base -= pglen;
671 _copy_to_pages(buf->pages, buf->page_base + pgto, head->iov_base + base,
674 base -= len;
675 memmove(head->iov_base + to, head->iov_base + base, len);
679 unsigned int base, unsigned int len,
684 if (base >= tail->iov_len || !shift || !len)
686 xdr_buf_tail_copy_right(buf, base, len, shift);
690 unsigned int base, unsigned int len,
695 if (base >= buf->page_len) {
696 xdr_buf_tail_shift_right(buf, base - buf->page_len, len, shift);
699 if (base + len > buf->page_len)
700 xdr_buf_tail_shift_right(buf, 0, base + len - buf->page_len,
702 xdr_buf_pages_copy_right(buf, base, len, shift);
706 unsigned int base, unsigned int len,
713 if (base >= head->iov_len) {
714 xdr_buf_pages_shift_right(buf, head->iov_len - base, len,
718 if (base + len > head->iov_len)
719 xdr_buf_pages_shift_right(buf, 0, base + len - head->iov_len,
721 xdr_buf_head_copy_right(buf, base, len, shift);
724 static void xdr_buf_tail_copy_left(const struct xdr_buf *buf, unsigned int base,
729 if (base >= tail->iov_len)
731 if (len > tail->iov_len - base)
732 len = tail->iov_len - base;
734 if (shift > buf->page_len + base) {
737 head->iov_len + buf->page_len + base - shift;
740 if (WARN_ONCE(shift > head->iov_len + buf->page_len + base,
745 memcpy(head->iov_base + hdto, tail->iov_base + base, hdlen);
746 base += hdlen;
752 if (shift > base) {
753 unsigned int pgto = buf->page_len + base - shift;
759 tail->iov_base + base, pglen);
760 base += pglen;
765 memmove(tail->iov_base + base - shift, tail->iov_base + base, len);
769 unsigned int base, unsigned int len,
774 if (base >= buf->page_len)
776 if (len > buf->page_len - base)
777 len = buf->page_len - base;
779 if (shift > base) {
781 unsigned int hdto = head->iov_len + base - shift;
784 if (WARN_ONCE(shift > head->iov_len + base,
790 buf->page_base + base, hdlen);
791 base += hdlen;
796 pgto = base - shift;
798 buf->page_base + base, len);
802 unsigned int base, unsigned int len,
807 xdr_buf_tail_copy_left(buf, base, len, shift);
811 unsigned int base, unsigned int len,
816 if (base >= buf->page_len) {
817 xdr_buf_tail_shift_left(buf, base - buf->page_len, len, shift);
820 xdr_buf_pages_copy_left(buf, base, len, shift);
821 len += base;
828 unsigned int base, unsigned int len,
837 if (shift > base) {
838 bytes = (shift - base);
841 base += bytes;
845 if (base < head->iov_len) {
846 bytes = min_t(unsigned int, len, head->iov_len - base);
847 memmove(head->iov_base + (base - shift),
848 head->iov_base + base, bytes);
849 base += bytes;
852 xdr_buf_pages_shift_left(buf, base - head->iov_len, len, shift);
1283 * @base: starting offset of first data byte in @pages
1290 void xdr_write_pages(struct xdr_stream *xdr, struct page **pages, unsigned int base,
1297 buf->page_base = base;
1319 unsigned int base, unsigned int len)
1323 if (unlikely(base > len))
1324 base = len;
1325 xdr->p = (__be32*)(iov->iov_base + base);
1329 return len - base;
1333 unsigned int base, unsigned int len)
1337 xdr_stream_set_pos(xdr, base + buf->page_len + buf->head->iov_len);
1338 return xdr_set_iov(xdr, buf->tail, base, len);
1350 unsigned int base, unsigned int len)
1359 if (base >= maxlen)
1362 maxlen -= base;
1367 xdr_stream_page_set_pos(xdr, base);
1368 base += xdr->buf->page_base;
1370 pgnr = base >> PAGE_SHIFT;
1379 pgoff = base & ~PAGE_MASK;
1390 static void xdr_set_page(struct xdr_stream *xdr, unsigned int base,
1393 if (xdr_set_page_base(xdr, base, len) == 0) {
1394 base -= xdr->buf->page_len;
1395 xdr_set_tail_base(xdr, base, len);
1595 unsigned int base, end, pglen;
1601 base = (nwords << 2) - pglen;
1604 xdr_set_tail_base(xdr, base, end);
1624 size_t base = 0;
1627 base = buf->page_len - len;
1635 xdr_set_tail_base(xdr, base, remaining);
1676 * @base: beginning of range in bytes
1680 * length @len starting at offset @base.
1684 * Returns -1 if base or length are out of bounds.
1687 unsigned int base, unsigned int len)
1690 if (base < buf->head[0].iov_len) {
1691 subbuf->head[0].iov_base = buf->head[0].iov_base + base;
1693 buf->head[0].iov_len - base);
1695 base = 0;
1697 base -= buf->head[0].iov_len;
1702 if (base < buf->page_len) {
1703 subbuf->page_len = min(buf->page_len - base, len);
1704 base += buf->page_base;
1705 subbuf->page_base = base & ~PAGE_MASK;
1706 subbuf->pages = &buf->pages[base >> PAGE_SHIFT];
1708 base = 0;
1710 base -= buf->page_len;
1716 if (base < buf->tail[0].iov_len) {
1717 subbuf->tail[0].iov_base = buf->tail[0].iov_base + base;
1719 buf->tail[0].iov_len - base);
1721 base = 0;
1723 base -= buf->tail[0].iov_len;
1728 if (base || len)
1894 int read_bytes_from_xdr_buf(const struct xdr_buf *buf, unsigned int base,
1900 status = xdr_buf_subsegment(buf, &subbuf, base, len);
1926 int write_bytes_to_xdr_buf(const struct xdr_buf *buf, unsigned int base,
1932 status = xdr_buf_subsegment(buf, &subbuf, base, len);
1940 int xdr_decode_word(const struct xdr_buf *buf, unsigned int base, u32 *obj)
1945 status = read_bytes_from_xdr_buf(buf, base, &raw, sizeof(*obj));
1953 int xdr_encode_word(const struct xdr_buf *buf, unsigned int base, u32 obj)
1957 return write_bytes_to_xdr_buf(buf, base, &raw, sizeof(obj));
1962 static int xdr_xcode_array2(const struct xdr_buf *buf, unsigned int base,
1971 if (xdr_encode_word(buf, base, desc->array_len) != 0)
1974 if (xdr_decode_word(buf, base, &desc->array_len) != 0 ||
1976 (unsigned long) base + 4 + desc->array_len *
1980 base += 4;
1988 if (todo && base < buf->head->iov_len) {
1989 c = buf->head->iov_base + base;
1991 buf->head->iov_len - base);
2017 base = buf->head->iov_len; /* align to start of pages */
2021 base -= buf->head->iov_len;
2022 if (todo && base < buf->page_len) {
2025 avail_here = min(todo, buf->page_len - base);
2028 base += buf->page_base;
2029 ppages = buf->pages + (base >> PAGE_SHIFT);
2030 base &= ~PAGE_MASK;
2031 avail_page = min_t(unsigned int, PAGE_SIZE - base,
2033 c = kmap(*ppages) + base;
2117 base = buf->page_len; /* align to start of tail */
2121 base -= buf->page_len;
2123 c = buf->tail->iov_base + base;
2155 int xdr_decode_array2(const struct xdr_buf *buf, unsigned int base,
2158 if (base >= buf->len)
2161 return xdr_xcode_array2(buf, base, desc, 0);
2165 int xdr_encode_array2(const struct xdr_buf *buf, unsigned int base,
2168 if ((unsigned long) base + 4 + desc->array_len * desc->elem_size >
2172 return xdr_xcode_array2(buf, base, desc, 1);