From 8623ddb156882fa5d7e6d6aa48d025a89ebda186 Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Wed, 13 May 2026 16:27:16 +0800 Subject: feat: add PID allocator implementation with bitmap-based allocation --- na/include/lume/pid.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 na/include/lume/pid.h (limited to 'na/include') diff --git a/na/include/lume/pid.h b/na/include/lume/pid.h new file mode 100644 index 0000000..8503750 --- /dev/null +++ b/na/include/lume/pid.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* Copyright (C) 2026 Richard Qin */ + +#pragma once + +/* + * PID Allocator — Bitmap-based O(1) block search + * Reference: docs/specs/task.md §3.2 + */ + +#include +#include + +inline constexpr int32 kMaxPid = 32768; + +class PidAllocator { +public: + void init(); + int32 alloc(); + void free(int32 pid); + +private: + static constexpr int32 kBitmapWords = kMaxPid / 64; + Spinlock lock_; + uint64 bitmap_[kBitmapWords]; + int32 next_hint_ = 2; +}; + +extern PidAllocator g_pid_alloc; -- cgit v1.2.3