Home | History | Annotate | Download | only in dtv

Lines Matching refs:sb

52 dtv_scatter_buf_init(struct dtv_scatter_buf *sb)
54 sb->sb_pool = pool_cache_init(PAGE_SIZE, 0, 0, 0,
57 sb->sb_size = 0;
58 sb->sb_npages = 0;
59 sb->sb_page_ary = NULL;
63 dtv_scatter_buf_destroy(struct dtv_scatter_buf *sb)
66 dtv_scatter_buf_set_size(sb, 0);
67 pool_cache_destroy(sb->sb_pool);
68 sb->sb_pool = 0;
69 sb->sb_npages = 0;
70 sb->sb_page_ary = NULL;
75 dtv_scatter_buf_set_size(struct dtv_scatter_buf *sb, size_t sz)
83 if (sb->sb_npages == npages) {
87 oldnpages = sb->sb_npages;
88 old_ary = sb->sb_page_ary;
90 sb->sb_npages = npages;
92 sb->sb_page_ary =
95 sb->sb_page_ary = NULL;
101 sb->sb_page_ary[i] = old_ary[i];
104 sb->sb_page_ary[i] = pool_cache_get(sb->sb_pool, PR_WAITOK);
109 if (sb->sb_page_ary[i] == NULL) {
115 pool_cache_put(sb->sb_pool, old_ary[i]);
120 sb->sb_size = sb->sb_npages << PAGE_SHIFT;
127 dtv_scatter_buf_map(struct dtv_scatter_buf *sb, off_t off)
134 if (pg >= sb->sb_npages)
136 else if (!pmap_extract(pmap_kernel(), (vaddr_t)sb->sb_page_ary[pg], &pa))
145 dtv_scatter_io_init(struct dtv_scatter_buf *sb,
149 if ((off + len) > sb->sb_size) {
151 " len=%zu sb->sb_size=%zu\n",
152 __func__, off, len, sb->sb_size);
156 sio->sio_buf = sb;