Lines Matching defs:sf
114 struct sf_buf *sf;
124 LIST_FOREACH(sf, hash_list, list_entry) {
125 if (sf->m == m) {
126 sf->ref_count++;
127 if (sf->ref_count == 1) {
128 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry);
133 sf_buf_shootdown(sf, flags);
138 while ((sf = TAILQ_FIRST(&sf_buf_freelist)) == NULL) {
153 TAILQ_REMOVE(&sf_buf_freelist, sf, free_entry);
154 if (sf->m != NULL)
155 LIST_REMOVE(sf, list_entry);
156 LIST_INSERT_HEAD(hash_list, sf, list_entry);
157 sf->ref_count = 1;
158 sf->m = m;
161 sf_buf_map(sf, flags);
164 return (sf);
174 sf_buf_free(struct sf_buf *sf)
181 sf->ref_count--;
182 if (sf->ref_count == 0) {
183 TAILQ_INSERT_TAIL(&sf_buf_freelist, sf, free_entry);
185 if (sf_buf_unmap(sf)) {
186 sf->m = NULL;
187 LIST_REMOVE(sf, list_entry);
196 sf_buf_ref(struct sf_buf *sf)
203 KASSERT(sf->ref_count > 0, ("%s: sf %p not allocated", __func__, sf));
204 sf->ref_count++;
216 struct sf_buf *sf;
220 LIST_FOREACH(sf, hash_list, list_entry) {
221 if (sf->m == m) {
222 cb(sf);