| 2049 | }; |
| 2050 | |
| 2051 | static void |
| 2052 | keg_layout_one(uma_keg_t keg, u_int rsize, u_int slabsize, u_int fmt, |
| 2053 | struct keg_layout_result *kl) |
| 2054 | { |
| 2055 | u_int total; |
| 2056 | |
| 2057 | kl->format = fmt; |
| 2058 | kl->slabsize = slabsize; |
| 2059 | |
| 2060 | /* Handle INTERNAL as inline with an extra page. */ |
| 2061 | if ((fmt & UMA_ZFLAG_INTERNAL) != 0) { |
| 2062 | kl->format &= ~UMA_ZFLAG_INTERNAL; |
| 2063 | kl->slabsize += PAGE_SIZE; |
| 2064 | } |
| 2065 | |
| 2066 | kl->ipers = slab_ipers_hdr(keg->uk_size, rsize, kl->slabsize, |
| 2067 | (fmt & UMA_ZFLAG_OFFPAGE) == 0); |
| 2068 | |
| 2069 | /* Account for memory used by an offpage slab header. */ |
| 2070 | total = kl->slabsize; |
| 2071 | if ((fmt & UMA_ZFLAG_OFFPAGE) != 0) |
| 2072 | total += slabzone(kl->ipers)->uz_keg->uk_rsize; |
| 2073 | |
| 2074 | kl->eff = UMA_FRAC_FIXPT(kl->ipers * rsize, total); |
| 2075 | } |
| 2076 | |
| 2077 | /* |
| 2078 | * Determine the format of a uma keg. This determines where the slab header |
no test coverage detected