Loading...
--- libmalloc/libmalloc-409.81.2/src/nano_zone.h
+++ libmalloc/libmalloc-116.30.3/src/nano_zone.h
@@ -29,13 +29,17 @@
/********************* DEFINITIONS ************************/
+#define NANO_MAG_INDEX(nz) (_os_cpu_number() >> nz->hyper_shift)
+
#define MAX_RECORDER_BUFFER 256
/************* nanozone address field layout ******************/
#if defined(__x86_64)
-#define NANO_MAG_BITS 6
-#define NANO_BAND_BITS 17
+#define NANO_SIGNATURE_BITS 20
+#define NANOZONE_SIGNATURE 0x00006ULL // 0x00006nnnnnnnnnnn the address range devoted to us.
+#define NANO_MAG_BITS 5
+#define NANO_BAND_BITS 18
#define NANO_SLOT_BITS 4
#define NANO_OFFSET_BITS 17
@@ -48,7 +52,7 @@
#if defined(__BIG_ENDIAN__)
struct nano_blk_addr_s {
uint64_t
- nano_signature:NANOZONE_SIGNATURE_BITS, // the address range devoted to us.
+ nano_signature:NANO_SIGNATURE_BITS, // 0x00006nnnnnnnnnnn the address range devoted to us.
nano_mag_index:NANO_MAG_BITS, // the core that allocated this block
nano_band:NANO_BAND_BITS,
nano_slot:NANO_SLOT_BITS, // bucket of homogenous quanta-multiple blocks
@@ -62,7 +66,7 @@
nano_slot:NANO_SLOT_BITS, // bucket of homogenous quanta-multiple blocks
nano_band:NANO_BAND_BITS,
nano_mag_index:NANO_MAG_BITS, // the core that allocated this block
- nano_signature:NANOZONE_SIGNATURE_BITS; // the address range devoted to us.
+ nano_signature:NANO_SIGNATURE_BITS; // 0x00006nnnnnnnnnnn the address range devoted to us.
};
#endif
// clang-format on
@@ -72,13 +76,16 @@
struct nano_blk_addr_s fields;
} nano_blk_addr_t;
+#define NANO_MAX_SIZE 256 /* Buckets sized {16, 32, 48, 64, 80, 96, 112, ...} */
+#define SHIFT_NANO_QUANTUM 4
+#define NANO_REGIME_QUANTA_SIZE (1 << SHIFT_NANO_QUANTUM) // 16
+#define NANO_QUANTA_MASK 0xFULL // NANO_REGIME_QUANTA_SIZE - 1
+
#define SLOT_IN_BAND_SIZE (1 << NANO_OFFSET_BITS)
#define SLOT_KEY_LIMIT (1 << NANO_SLOT_BITS) /* Must track nano_slot width */
#define BAND_SIZE (1 << (NANO_SLOT_BITS + NANO_OFFSET_BITS)) /* == Number of bytes covered by a page table entry */
#define NANO_MAG_SIZE (1 << NANO_MAG_BITS)
#define NANO_SLOT_SIZE (1 << NANO_SLOT_BITS)
-
-#ifdef __INTERNAL_H
/****************************** zone itself ***********************************/
@@ -122,6 +129,10 @@
size_t core_mapped_size[NANO_MAG_SIZE];
unsigned debug_flags;
+ unsigned our_signature;
+ unsigned phys_ncpus;
+ unsigned logical_ncpus;
+ unsigned hyper_shift;
/* security cookie */
uintptr_t cookie;
@@ -135,8 +146,6 @@
#define NANOZONE_PAGED_SIZE ((sizeof(nanozone_t) + vm_page_size - 1) & ~ (vm_page_size - 1))
-#endif // __INTERNAL_H
-
#endif // CONFIG_NANOZONE
#endif // __NANO_ZONE_H