Lines Matching refs:tag

63 		} tag;
145 struct obj *tag;
147 tag = obj_alloc(OBJ_TYPE_TAG);
148 if (tag == NULL)
155 ioc.u.tag.align = align;
156 ioc.u.tag.bndry = bndry;
157 ioc.u.tag.maxaddr = maxaddr;
158 ioc.u.tag.maxsz = maxsz;
159 ioc.u.tag.nsegs = nsegs;
160 ioc.u.tag.maxsegsz = maxsegsz;
161 ioc.u.tag.datarate = datarate;
162 ioc.u.tag.flags = flags;
164 obj_free(tag);
167 tag->refcnt = 1;
168 tag->fd = fd;
169 tag->parent = ptag;
170 tag->key = ioc.result;
171 tag->u.tag.align = ioc.u.tag.align;
172 tag->u.tag.bndry = ioc.u.tag.bndry;
173 tag->u.tag.maxaddr = ioc.u.tag.maxaddr;
174 tag->u.tag.maxsz = ioc.u.tag.maxsz;
175 tag->u.tag.maxsegsz = ioc.u.tag.maxsegsz;
176 tag->u.tag.nsegs = ioc.u.tag.nsegs;
177 tag->u.tag.datarate = ioc.u.tag.datarate;
178 return (tag);
186 struct obj *tag;
198 tag = bd_tag_new(NULL, fd, align, bndry, maxaddr, maxsz, nsegs,
200 if (tag == NULL) {
204 return (tag->oid);
211 struct obj *ptag, *tag;
217 tag = bd_tag_new(ptag, ptag->fd, align, bndry, maxaddr, maxsz, nsegs,
219 if (tag == NULL)
222 return (tag->oid);
229 struct obj *ptag, *tag;
231 tag = obj_lookup(tid, OBJ_TYPE_TAG);
232 if (tag == NULL)
234 if (tag->refcnt > 1)
239 ioc.key = tag->key;
240 if (ioctl(tag->fd, PROTO_IOC_BUSDMA, &ioc) == -1)
243 if (tag->parent != NULL)
244 tag->parent->refcnt--;
246 close(tag->fd);
247 obj_free(tag);
287 struct obj *md, *tag;
289 tag = obj_lookup(tid, OBJ_TYPE_TAG);
290 if (tag == NULL)
299 ioc.u.md.tag = tag->key;
301 if (ioctl(tag->fd, PROTO_IOC_BUSDMA, &ioc) == -1) {
307 md->fd = tag->fd;
308 md->parent = tag;
309 tag->refcnt++;
388 struct obj *md, *tag;
392 tag = obj_lookup(tid, OBJ_TYPE_TAG);
393 if (tag == NULL)
402 ioc.u.md.tag = tag->key;
404 if (ioctl(tag->fd, PROTO_IOC_BUSDMA, &ioc) == -1) {
410 md->fd = tag->fd;
411 md->parent = tag;
412 tag->refcnt++;
419 tag->u.tag.maxsz);
421 tag->u.tag.maxsz);
423 addr = (uintptr_t)mmap(NULL, tag->u.tag.maxsz, PROT_READ | PROT_WRITE,
427 error = bd_md_add_seg(md, BUSDMA_MD_VIRT, addr, tag->u.tag.maxsz);