Lines Matching defs:sf
50 struct sync_file *sf;
52 sf = kmem_zalloc(sizeof(*sf), KM_SLEEP);
53 sf->file = fp;
55 mutex_init(&sf->sf_lock, MUTEX_DEFAULT, IPL_VM);
56 selinit(&sf->sf_selq);
57 sf->sf_polling = false;
58 sf->sf_signalled = false;
59 sf->sf_fence = dma_fence_get(fence);
64 fp->f_data = sf;
66 return sf;
72 struct sync_file *sf = fp->f_data;
74 if (sf->sf_polling)
75 dma_fence_remove_callback(sf->sf_fence, &sf->sf_fcb);
76 dma_fence_put(sf->sf_fence);
77 sf->sf_fence = NULL;
78 seldestroy(&sf->sf_selq);
79 mutex_destroy(&sf->sf_lock);
81 kmem_free(sf, sizeof(*sf));
89 struct sync_file *sf = container_of(fcb, struct sync_file, sf_fcb);
91 mutex_enter(&sf->sf_lock);
92 sf->sf_signalled = true;
93 selnotify(&sf->sf_selq, POLLIN, NOTE_SUBMIT);
94 mutex_exit(&sf->sf_lock);
100 struct sync_file *sf = fp->f_data;
107 mutex_enter(&sf->sf_lock);
108 if (sf->sf_signalled) {
110 } else if (sf->sf_polling) {
111 selrecord(curlwp, &sf->sf_selq);
113 sf->sf_polling = true;
114 mutex_exit(&sf->sf_lock);
115 ret = dma_fence_add_callback(sf->sf_fence, &sf->sf_fcb,
117 mutex_enter(&sf->sf_lock);
119 sf->sf_signalled = true;
120 selnotify(&sf->sf_selq, POLLIN, NOTE_SUBMIT);
123 selrecord(curlwp, &sf->sf_selq);
126 mutex_exit(&sf->sf_lock);
136 struct sync_file *sf = fp->f_data;
141 kn->kn_hook = sf;
142 mutex_enter(&sf->sf_lock);
143 klist_insert(&sf->sf_selq.sel_klist, kn);
144 mutex_exit(&sf->sf_lock);
154 struct sync_file *sf = kn->kn_hook;
156 mutex_enter(&sf->sf_lock);
157 klist_remove(&sf->sf_selq.sel_klist, kn);
158 mutex_exit(&sf->sf_lock);
164 struct sync_file *sf = kn->kn_hook;
168 KASSERT(mutex_owned(&sf->sf_lock));
170 mutex_enter(&sf->sf_lock);
172 if (sf->sf_signalled) {
175 } else if (sf->sf_polling) {
178 sf->sf_polling = true;
179 mutex_exit(&sf->sf_lock);
180 ret = dma_fence_add_callback(sf->sf_fence, &sf->sf_fcb,
182 mutex_enter(&sf->sf_lock);
184 sf->sf_signalled = true;
185 selnotify(&sf->sf_selq, POLLIN, NOTE_SUBMIT);
189 selrecord(curlwp, &sf->sf_selq);
195 KASSERT(mutex_owned(&sf->sf_lock));
197 mutex_exit(&sf->sf_lock);
213 struct sync_file *sf;
218 sf = fp->f_data;
219 fence = dma_fence_get(sf->sf_fence);