Improve size class header
Mainly fixing typos. The only non-trivial change is in the computation for SC_NPSIZES, though the result wouldn't be any different when SC_NGROUP = 4 as is always the case at the moment.
This commit is contained in:
parent
702d76dbd0
commit
ae124b8684
@ -18,7 +18,7 @@
|
|||||||
* each one covers allocations for base / SC_NGROUP possible allocation sizes.
|
* each one covers allocations for base / SC_NGROUP possible allocation sizes.
|
||||||
* We call that value (base / SC_NGROUP) the delta of the group. Each size class
|
* We call that value (base / SC_NGROUP) the delta of the group. Each size class
|
||||||
* is delta larger than the one before it (including the initial size class in a
|
* is delta larger than the one before it (including the initial size class in a
|
||||||
* group, which is delta large than 2**base, the largest size class in the
|
* group, which is delta larger than base, the largest size class in the
|
||||||
* previous group).
|
* previous group).
|
||||||
* To make the math all work out nicely, we require that SC_NGROUP is a power of
|
* To make the math all work out nicely, we require that SC_NGROUP is a power of
|
||||||
* two, and define it in terms of SC_LG_NGROUP. We'll often talk in terms of
|
* two, and define it in terms of SC_LG_NGROUP. We'll often talk in terms of
|
||||||
@ -53,10 +53,11 @@
|
|||||||
* classes; one per power of two, up until we hit the quantum size. There are
|
* classes; one per power of two, up until we hit the quantum size. There are
|
||||||
* therefore LG_QUANTUM - SC_LG_TINY_MIN such size classes.
|
* therefore LG_QUANTUM - SC_LG_TINY_MIN such size classes.
|
||||||
*
|
*
|
||||||
* Next, we have a size class of size LG_QUANTUM. This can't be the start of a
|
* Next, we have a size class of size (1 << LG_QUANTUM). This can't be the
|
||||||
* group in the sense we described above (covering a power of two range) since,
|
* start of a group in the sense we described above (covering a power of two
|
||||||
* if we divided into it to pick a value of delta, we'd get a delta smaller than
|
* range) since, if we divided into it to pick a value of delta, we'd get a
|
||||||
* (1 << LG_QUANTUM) for sizes >= (1 << LG_QUANTUM), which is against the rules.
|
* delta smaller than (1 << LG_QUANTUM) for sizes >= (1 << LG_QUANTUM), which
|
||||||
|
* is against the rules.
|
||||||
*
|
*
|
||||||
* The first base we can divide by SC_NGROUP while still being at least
|
* The first base we can divide by SC_NGROUP while still being at least
|
||||||
* (1 << LG_QUANTUM) is SC_NGROUP * (1 << LG_QUANTUM). We can get there by
|
* (1 << LG_QUANTUM) is SC_NGROUP * (1 << LG_QUANTUM). We can get there by
|
||||||
@ -206,8 +207,20 @@
|
|||||||
- SC_NPSEUDO \
|
- SC_NPSEUDO \
|
||||||
/* And the tiny group. */ \
|
/* And the tiny group. */ \
|
||||||
- SC_NTINY \
|
- SC_NTINY \
|
||||||
/* Groups where ndelta*delta is not a multiple of the page size. */ \
|
/* Sizes where ndelta*delta is not a multiple of the page size. */ \
|
||||||
- (2 * (SC_NGROUP)))
|
- (SC_LG_NGROUP * SC_NGROUP))
|
||||||
|
/*
|
||||||
|
* Note that the last line is computed as the sum of the second column in the
|
||||||
|
* following table:
|
||||||
|
* lg(base) | count of sizes to exclude
|
||||||
|
* ------------------------------|-----------------------------
|
||||||
|
* LG_PAGE - 1 | SC_NGROUP - 1
|
||||||
|
* LG_PAGE | SC_NGROUP - 1
|
||||||
|
* LG_PAGE + 1 | SC_NGROUP - 2
|
||||||
|
* LG_PAGE + 2 | SC_NGROUP - 4
|
||||||
|
* ... | ...
|
||||||
|
* LG_PAGE + (SC_LG_NGROUP - 1) | SC_NGROUP - (SC_NGROUP / 2)
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We declare a size class is binnable if size < page size * group. Or, in other
|
* We declare a size class is binnable if size < page size * group. Or, in other
|
||||||
|
Loading…
Reference in New Issue
Block a user