Kernel: Make Thread::state_string() return StringView

This commit is contained in:
Andreas Kling 2021-08-05 20:48:14 +02:00
parent af46f2214c
commit 32a150f2b4
4 changed files with 23 additions and 23 deletions

View file

@ -89,7 +89,7 @@ private:
{
set_block_condition(fs.m_completion_blocker);
}
virtual const char* state_string() const override { return "Waiting"; }
virtual StringView state_string() const override { return "Waiting"sv; }
virtual Type blocker_type() const override { return Type::Plan9FS; }
virtual void not_blocking(bool) override;

View file

@ -21,7 +21,7 @@ class ARPTableBlocker : public Thread::Blocker {
public:
ARPTableBlocker(IPv4Address ip_addr, Optional<MACAddress>& addr);
virtual const char* state_string() const override { return "Routing (ARP)"; }
virtual StringView state_string() const override { return "Routing (ARP)"sv; }
virtual Type blocker_type() const override { return Type::Routing; }
virtual bool should_block() override { return m_should_block; }

View file

@ -480,25 +480,25 @@ auto Thread::sleep_until(clockid_t clock_id, const Time& deadline) -> BlockResul
return Thread::current()->block<Thread::SleepBlocker>({}, Thread::BlockTimeout(true, &deadline, nullptr, clock_id));
}
const char* Thread::state_string() const
StringView Thread::state_string() const
{
switch (state()) {
case Thread::Invalid:
return "Invalid";
return "Invalid"sv;
case Thread::Runnable:
return "Runnable";
return "Runnable"sv;
case Thread::Running:
return "Running";
return "Running"sv;
case Thread::Dying:
return "Dying";
return "Dying"sv;
case Thread::Dead:
return "Dead";
return "Dead"sv;
case Thread::Stopped:
return "Stopped";
return "Stopped"sv;
case Thread::Blocked: {
ScopedSpinLock block_lock(m_block_lock);
if (m_blocking_lock)
return "Mutex";
return "Mutex"sv;
if (m_blocker)
return m_blocker->state_string();
VERIFY_NOT_REACHED();

View file

@ -292,7 +292,7 @@ public:
Wait
};
virtual ~Blocker();
virtual const char* state_string() const = 0;
virtual StringView state_string() const = 0;
virtual bool should_block() { return true; }
virtual Type blocker_type() const = 0;
virtual const BlockTimeout& override_timeout(const BlockTimeout& timeout) { return timeout; }
@ -510,7 +510,7 @@ public:
public:
explicit JoinBlocker(Thread& joinee, KResult& try_join_result, void*& joinee_exit_value);
virtual Type blocker_type() const override { return Type::Join; }
virtual const char* state_string() const override { return "Joining"; }
virtual StringView state_string() const override { return "Joining"sv; }
virtual bool can_be_interrupted() const override { return false; }
virtual bool should_block() override { return !m_join_error && m_should_block; }
virtual void not_blocking(bool) override;
@ -531,7 +531,7 @@ public:
virtual ~QueueBlocker();
virtual Type blocker_type() const override { return Type::Queue; }
virtual const char* state_string() const override { return m_block_reason ? m_block_reason : "Queue"; }
virtual StringView state_string() const override { return m_block_reason.is_null() ? m_block_reason : "Queue"sv; }
virtual void not_blocking(bool) override { }
virtual bool should_block() override
@ -542,7 +542,7 @@ public:
bool unblock();
protected:
const char* const m_block_reason;
StringView m_block_reason;
bool m_should_block { true };
bool m_did_unblock { false };
};
@ -553,7 +553,7 @@ public:
virtual ~FutexBlocker();
virtual Type blocker_type() const override { return Type::Futex; }
virtual const char* state_string() const override { return "Futex"; }
virtual StringView state_string() const override { return "Futex"sv; }
virtual void not_blocking(bool) override { }
virtual bool should_block() override
@ -633,19 +633,19 @@ public:
class AcceptBlocker final : public FileDescriptionBlocker {
public:
explicit AcceptBlocker(FileDescription&, BlockFlags&);
virtual const char* state_string() const override { return "Accepting"; }
virtual StringView state_string() const override { return "Accepting"sv; }
};
class ConnectBlocker final : public FileDescriptionBlocker {
public:
explicit ConnectBlocker(FileDescription&, BlockFlags&);
virtual const char* state_string() const override { return "Connecting"; }
virtual StringView state_string() const override { return "Connecting"sv; }
};
class WriteBlocker final : public FileDescriptionBlocker {
public:
explicit WriteBlocker(FileDescription&, BlockFlags&);
virtual const char* state_string() const override { return "Writing"; }
virtual StringView state_string() const override { return "Writing"sv; }
virtual const BlockTimeout& override_timeout(const BlockTimeout&) override;
private:
@ -655,7 +655,7 @@ public:
class ReadBlocker final : public FileDescriptionBlocker {
public:
explicit ReadBlocker(FileDescription&, BlockFlags&);
virtual const char* state_string() const override { return "Reading"; }
virtual StringView state_string() const override { return "Reading"sv; }
virtual const BlockTimeout& override_timeout(const BlockTimeout&) override;
private:
@ -665,7 +665,7 @@ public:
class SleepBlocker final : public Blocker {
public:
explicit SleepBlocker(const BlockTimeout&, Time* = nullptr);
virtual const char* state_string() const override { return "Sleeping"; }
virtual StringView state_string() const override { return "Sleeping"sv; }
virtual Type blocker_type() const override { return Type::Sleep; }
virtual const BlockTimeout& override_timeout(const BlockTimeout&) override;
virtual void not_blocking(bool) override;
@ -694,7 +694,7 @@ public:
virtual bool unblock(bool, void*) override;
virtual void not_blocking(bool) override;
virtual void was_unblocked(bool) override;
virtual const char* state_string() const override { return "Selecting"; }
virtual StringView state_string() const override { return "Selecting"sv; }
private:
size_t collect_unblocked_flags();
@ -713,7 +713,7 @@ public:
};
WaitBlocker(int wait_options, idtype_t id_type, pid_t id, KResultOr<siginfo_t>& result);
virtual const char* state_string() const override { return "Waiting"; }
virtual StringView state_string() const override { return "Waiting"sv; }
virtual Type blocker_type() const override { return Type::Wait; }
virtual bool should_block() override { return m_should_block; }
virtual void not_blocking(bool) override;
@ -819,7 +819,7 @@ public:
ThreadRegisters const& regs() const { return m_regs; }
State state() const { return m_state; }
const char* state_string() const;
StringView state_string() const;
VirtualAddress thread_specific_data() const { return m_thread_specific_data; }
size_t thread_specific_region_size() const;