Lines Matching defs:sf
119 struct sf_buf *sf;
131 LIST_FOREACH(sf, hash_list, list_entry) {
132 if (sf->m == m) {
133 sf->ref_count++;
134 if (sf->ref_count == 1) {
135 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry);
140 sf_buf_shootdown(sf, flags);
145 while ((sf = TAILQ_FIRST(&sf_buf_freelist)) == NULL) {
160 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry);
161 if (sf->m != NULL)
162 LIST_REMOVE(sf, list_entry);
163 LIST_INSERT_HEAD(hash_list, sf, list_entry);
164 sf->ref_count = 1;
165 sf->m = m;
168 sf_buf_map(sf, flags);
171 return (sf);
181 sf_buf_free(struct sf_buf *sf)
190 sf->ref_count--;
191 if (sf->ref_count == 0) {
192 TAILQ_INSERT_TAIL(&sf_buf_freelist, sf, free_entry);
194 if (sf_buf_unmap(sf)) {
195 sf->m = NULL;
196 LIST_REMOVE(sf, list_entry);
205 sf_buf_ref(struct sf_buf *sf)
214 KASSERT(sf->ref_count > 0, ("%s: sf %p not allocated", __func__, sf));
215 sf->ref_count++;
227 struct sf_buf *sf;
231 LIST_FOREACH(sf, hash_list, list_entry) {
232 if (sf->m == m) {
233 cb(sf);