From 82b7082fc5d0ea252c2a32c8d20538f36991a875 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Sun, 18 Oct 2020 20:48:09 -0700 Subject: [PATCH] [kernel] Make koid generation per-type Previously koids were a single global counter tagged with the type in the top bits. Now there are per-type counters that each increment separately. --- src/kernel/objects/kobject.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/kernel/objects/kobject.cpp b/src/kernel/objects/kobject.cpp index b401ccf..768ee18 100644 --- a/src/kernel/objects/kobject.cpp +++ b/src/kernel/objects/kobject.cpp @@ -5,7 +5,7 @@ #include "objects/thread.h" // TODO: per-cpu this? -static j6_koid_t next_koid; +static j6_koid_t next_koids [static_cast(kobject::type::max)] = { 0 }; kobject::kobject(type t, j6_signal_t signals) : m_koid(koid_generate(t)), @@ -22,7 +22,9 @@ kobject::~kobject() j6_koid_t kobject::koid_generate(type t) { - return (static_cast(t) << 48) | next_koid++; + kassert(t < type::max, "Object type out of bounds"); + uint64_t type_int = static_cast(t); + return (type_int << 48) | next_koids[type_int]++; } kobject::type