Lines Matching refs:im
155 intrmap_set_grid(struct intrmap *im, unsigned int unit, unsigned int grid)
158 unsigned int *cpumap = im->im_cpumap;
159 const struct intrmap_cpus *ic = im->im_cpus;
162 KASSERTMSG(grid >= im->im_count, "invalid intrmap grid %u, count %u",
163 grid, im->im_count);
164 im->im_grid = grid;
167 for (i = 0; i < im->im_count; i++) {
179 struct intrmap *im;
189 im = malloc(sizeof(*im), M_DEVBUF, M_WAITOK | M_ZERO);
190 im->im_count = nintrs;
191 im->im_cpus = ic;
192 im->im_cpumap = mallocarray(nintrs, sizeof(*im->im_cpumap), M_DEVBUF,
210 intrmap_set_grid(im, unit, grid);
212 return (im);
216 intrmap_destroy(struct intrmap *im)
218 free(im->im_cpumap, M_DEVBUF, im->im_count * sizeof(*im->im_cpumap));
219 intrmap_cpus_put(im->im_cpus);
220 free(im, M_DEVBUF, sizeof(*im));
261 struct intrmap *subset_im, *im;
292 im = im0;
297 im = im1;
307 divisor = ic->ic_count / im->im_grid;
320 for (j = 0; j < im->im_count; j++) {
321 if (im->im_cpumap[j] == subset_im->im_cpumap[i])
324 KASSERTMSG(j < im->im_count,
332 intrmap_count(const struct intrmap *im)
334 return (im->im_count);
338 intrmap_cpu(const struct intrmap *im, unsigned int ring)
340 const struct intrmap_cpus *ic = im->im_cpus;
342 KASSERTMSG(ring < im->im_count, "invalid ring %u", ring);
343 icpu = im->im_cpumap[ring];
345 " (intrmap %p)", icpu, ring, im);