Loading...
--- libmalloc/libmalloc-374.60.3/src/magazine_rack.c
+++ libmalloc/libmalloc-792.80.2/src/magazine_rack.c
@@ -77,9 +77,11 @@
_malloc_lock_init(&rack->region_lock);
_malloc_lock_init(&rack->magazines[DEPOT_MAGAZINE_INDEX].magazine_lock);
+ _malloc_lock_init(&rack->magazines[DEPOT_MAGAZINE_INDEX].magazine_alloc_lock);
for (int i=0; i < rack->num_magazines; i++) {
_malloc_lock_init(&rack->magazines[i].magazine_lock);
+ _malloc_lock_init(&rack->magazines[i].magazine_alloc_lock);
}
}
}
@@ -222,3 +224,30 @@
rack_region_unlock(rack);
return rv;
}
+
+
+unsigned int
+rack_get_thread_index(rack_t *rack)
+{
+ mag_index_t index;
+ if (os_likely(_os_cpu_number_override == -1)) {
+ index = _malloc_cpu_number();
+#if CONFIG_MAGAZINE_PER_CLUSTER
+ if (rack->num_magazines == ncpuclusters) {
+ index = _malloc_cpu_cluster_number();
+ }
+#endif // CONFIG_MAGAZINE_PER_CLUSTER
+ } else {
+ index = _os_cpu_number_override;
+#if CONFIG_MAGAZINE_PER_CLUSTER
+ if (rack->num_magazines == ncpuclusters) {
+ index = _malloc_get_cluster_from_cpu(_os_cpu_number_override);
+ }
+#endif // CONFIG_MAGAZINE_PER_CLUSTER
+ }
+#if CONFIG_SZONE_USES_HYPER_SHIFT
+ return index >> hyper_shift;
+#else // CONFIG_SZONE_USES_HYPER_SHIFT
+ return index;
+#endif // CONFIG_SZONE_USES_HYPER_SHIFT
+}