* Determine the number of scatter/gather list elements needed to * describe a kernel virtual address range. */
| 169 | * describe a kernel virtual address range. |
| 170 | */ |
| 171 | int |
| 172 | sglist_count(void *buf, size_t len) |
| 173 | { |
| 174 | vm_offset_t vaddr, vendaddr; |
| 175 | vm_paddr_t lastaddr, paddr; |
| 176 | int nsegs; |
| 177 | |
| 178 | if (len == 0) |
| 179 | return (0); |
| 180 | |
| 181 | vaddr = trunc_page((vm_offset_t)buf); |
| 182 | vendaddr = (vm_offset_t)buf + len; |
| 183 | nsegs = 1; |
| 184 | lastaddr = pmap_kextract(vaddr); |
| 185 | vaddr += PAGE_SIZE; |
| 186 | while (vaddr < vendaddr) { |
| 187 | paddr = pmap_kextract(vaddr); |
| 188 | if (lastaddr + PAGE_SIZE != paddr) |
| 189 | nsegs++; |
| 190 | lastaddr = paddr; |
| 191 | vaddr += PAGE_SIZE; |
| 192 | } |
| 193 | return (nsegs); |
| 194 | } |
| 195 | |
| 196 | /* |
| 197 | * Determine the number of scatter/gather list elements needed to |
no test coverage detected