• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/compat/linuxkpi/common/include/linux/

Lines Matching refs:sg

63 	struct scatterlist *sg;
84 #define sg_is_chain(sg) ((sg)->page_link & SG_PAGE_LINK_CHAIN)
85 #define sg_is_last(sg) ((sg)->page_link & SG_PAGE_LINK_LAST)
86 #define sg_chain_ptr(sg) \
87 ((struct scatterlist *) ((sg)->page_link & ~SG_PAGE_LINK_MASK))
89 #define sg_dma_address(sg) (sg)->dma_address
90 #define sg_dma_len(sg) (sg)->length
94 (iter)->sg; _sg_iter_next(iter))
98 #define for_each_sg(sglist, sg, sgmax, iter) \
99 for (iter = 0, sg = (sglist); iter < (sgmax); iter++, sg = sg_next(sg))
105 sg_assign_page(struct scatterlist *sg, struct page *page)
107 unsigned long page_link = sg->page_link & SG_PAGE_LINK_MASK;
109 sg->page_link = page_link | (unsigned long)page;
113 sg_set_page(struct scatterlist *sg, struct page *page, unsigned int len,
116 sg_assign_page(sg, page);
117 sg->offset = offset;
118 sg->length = len;
122 sg_page(struct scatterlist *sg)
124 return ((struct page *)((sg)->page_link & ~SG_PAGE_LINK_MASK));
128 sg_set_buf(struct scatterlist *sg, const void *buf, unsigned int buflen)
130 sg_set_page(sg, virt_to_page(buf), buflen,
135 sg_next(struct scatterlist *sg)
137 if (sg_is_last(sg))
139 sg++;
140 if (sg_is_chain(sg))
141 sg = sg_chain_ptr(sg);
142 return (sg);
146 sg_phys(struct scatterlist *sg)
148 return (VM_PAGE_TO_PHYS(sg_page(sg)) + sg->offset);
152 sg_virt(struct scatterlist *sg)
155 return ((void *)((unsigned long)page_address(sg_page(sg)) + sg->offset));
162 struct scatterlist *sg = &prv[prv_nents - 1];
164 sg->offset = 0;
165 sg->length = 0;
166 sg->page_link = ((unsigned long)sgl |
171 sg_mark_end(struct scatterlist *sg)
173 sg->page_link |= SG_PAGE_LINK_LAST;
174 sg->page_link &= ~SG_PAGE_LINK_CHAIN;
178 sg_init_table(struct scatterlist *sg, unsigned int nents)
180 bzero(sg, sizeof(*sg) * nents);
181 sg_mark_end(&sg[nents - 1]);
194 sg_kfree(struct scatterlist *sg, unsigned int nents)
197 free_page((unsigned long)sg);
199 kfree(sg);
247 struct scatterlist *sg, *prv;
269 sg = first_chunk;
272 sg = alloc_fn(alloc_size, gfp_mask);
274 if (unlikely(!sg)) {
280 sg_init_table(sg, alloc_size);
284 sg_chain(prv, max_ents, sg);
286 table->sgl = sg;
289 sg_mark_end(&sg[sg_size - 1]);
291 prv = sg;
369 sg_nents(struct scatterlist *sg)
373 for (nents = 0; sg; sg = sg_next(sg))
386 piter->sg = sglist;
393 struct scatterlist *sg;
396 sg = iter->sg;
397 pgcount = (sg->offset + sg->length + PAGE_SIZE - 1) >> PAGE_SHIFT;
402 sg = sg_next(sg);
404 if (sg == NULL || iter->maxents == 0)
406 pgcount = (sg->offset + sg->length + PAGE_SIZE - 1) >> PAGE_SHIFT;
408 iter->sg = sg;
412 sg_page_count(struct scatterlist *sg)
414 return (PAGE_ALIGN(sg->offset + sg->length) >> PAGE_SHIFT);
416 #define sg_dma_page_count(sg) \
417 sg_page_count(sg)
426 if (piter->sg == NULL)
433 pgcount = sg_page_count(piter->sg);
437 piter->sg = sg_next(piter->sg);
440 if (piter->sg == NULL)
453 iter->sg = sgl;
458 iter->sg = NULL;
474 __dma_address = __spi->sg->dma_address + \
482 return (nth_page(sg_page(piter->sg), piter->sg_pgoffset));
504 if (piter.sg->length <= skip) {
505 skip -= piter.sg->length;
510 KASSERT(((piter.sg->length - skip) != 0 && (buflen != 0)),
511 ("%s: sg len %u - skip %ju || buflen %zu is 0\n",
512 __func__, piter.sg->length, (uintmax_t)skip, buflen));
513 len = min(piter.sg->length - skip, buflen);