Compare commits
No commits in common. "7c4b9218f20352b4a5eb3b2cafffa82d901c8321" and "991ae4383a36dfa76cdcdb7932b3f1091bb508eb" have entirely different histories.
7c4b9218f2
...
991ae4383a
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
#define DEBUG_SCHEDULER 0
|
#define DEBUG_SCHEDULER 0
|
||||||
#define SCHEDULER_ASSERT 1
|
#define SCHEDULER_ASSERT 1
|
||||||
#define SCHEDULER_LOAD_BALANCE 0
|
|
||||||
|
|
||||||
#if SCHEDULER_ASSERT == 0
|
#if SCHEDULER_ASSERT == 0
|
||||||
#undef ASSERT
|
#undef ASSERT
|
||||||
|
@ -296,9 +295,8 @@ namespace Kernel
|
||||||
{
|
{
|
||||||
ASSERT(Processor::get_interrupt_state() == InterruptState::Disabled);
|
ASSERT(Processor::get_interrupt_state() == InterruptState::Disabled);
|
||||||
|
|
||||||
if constexpr(SCHEDULER_LOAD_BALANCE)
|
if (Processor::is_smp_enabled())
|
||||||
if (Processor::is_smp_enabled())
|
do_load_balancing();
|
||||||
do_load_balancing();
|
|
||||||
|
|
||||||
{
|
{
|
||||||
const uint64_t current_ns = SystemTimer::get().ns_since_boot();
|
const uint64_t current_ns = SystemTimer::get().ns_since_boot();
|
||||||
|
@ -388,7 +386,6 @@ namespace Kernel
|
||||||
return least_loaded_id;
|
return least_loaded_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SCHEDULER_LOAD_BALANCE
|
|
||||||
void Scheduler::do_load_balancing()
|
void Scheduler::do_load_balancing()
|
||||||
{
|
{
|
||||||
ASSERT(Processor::get_interrupt_state() == InterruptState::Disabled);
|
ASSERT(Processor::get_interrupt_state() == InterruptState::Disabled);
|
||||||
|
@ -566,7 +563,6 @@ namespace Kernel
|
||||||
|
|
||||||
m_last_load_balance_ns += s_load_balance_interval_ns;
|
m_last_load_balance_ns += s_load_balance_interval_ns;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
BAN::ErrorOr<void> Scheduler::add_thread(Thread* thread)
|
BAN::ErrorOr<void> Scheduler::add_thread(Thread* thread)
|
||||||
{
|
{
|
||||||
|
|
|
@ -221,9 +221,8 @@ namespace Kernel
|
||||||
for (uint32_t row = 0; row < m_height; row++)
|
for (uint32_t row = 0; row < m_height; row++)
|
||||||
for (uint32_t col = 0; col < m_width; col++)
|
for (uint32_t col = 0; col < m_width; col++)
|
||||||
putchar_at(' ', col, row);
|
putchar_at(' ', col, row);
|
||||||
return reset_ansi();
|
|
||||||
}
|
}
|
||||||
if (m_ansi_state.nums[0] == 1)
|
else if (m_ansi_state.nums[0] == 1)
|
||||||
{
|
{
|
||||||
// Clear from cursor to the beginning of screen
|
// Clear from cursor to the beginning of screen
|
||||||
for (uint32_t row = 0; row < m_row; row++)
|
for (uint32_t row = 0; row < m_row; row++)
|
||||||
|
@ -231,27 +230,29 @@ namespace Kernel
|
||||||
putchar_at(' ', col, row);
|
putchar_at(' ', col, row);
|
||||||
for (uint32_t i = 0; i <= m_column; i++)
|
for (uint32_t i = 0; i <= m_column; i++)
|
||||||
putchar_at(' ', i, m_row);
|
putchar_at(' ', i, m_row);
|
||||||
return reset_ansi();
|
|
||||||
}
|
}
|
||||||
if (m_ansi_state.nums[0] == 2 || m_ansi_state.nums[0] == 3)
|
else if (m_ansi_state.nums[0] == 2 || m_ansi_state.nums[0] == 3)
|
||||||
{
|
{
|
||||||
// FIXME: if num == 3 clear scrollback buffer
|
// Clean entire screen
|
||||||
clear();
|
clear();
|
||||||
return reset_ansi();
|
|
||||||
}
|
}
|
||||||
reset_ansi();
|
else
|
||||||
dprintln("Unsupported ANSI CSI character J");
|
{
|
||||||
return;
|
dprintln("Unsupported ANSI CSI character J");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_ansi_state.nums[0] == 3)
|
||||||
|
{
|
||||||
|
// FIXME: Clear scroll backbuffer if/when added
|
||||||
|
}
|
||||||
|
return reset_ansi();
|
||||||
case 'K': // Erase in Line
|
case 'K': // Erase in Line
|
||||||
if (m_ansi_state.nums[0] == -1 || m_ansi_state.nums[0] == 0)
|
if (m_ansi_state.nums[0] == -1 || m_ansi_state.nums[0] == 0)
|
||||||
{
|
|
||||||
for (uint32_t i = m_column; i < m_width; i++)
|
for (uint32_t i = m_column; i < m_width; i++)
|
||||||
putchar_at(' ', i, m_row);
|
putchar_at(' ', i, m_row);
|
||||||
return reset_ansi();
|
else
|
||||||
}
|
dprintln("Unsupported ANSI CSI character K");
|
||||||
reset_ansi();
|
return reset_ansi();
|
||||||
dprintln("Unsupported ANSI CSI character K");
|
|
||||||
return;
|
|
||||||
case 'L': // Insert Line
|
case 'L': // Insert Line
|
||||||
if (m_ansi_state.nums[0] == -1)
|
if (m_ansi_state.nums[0] == -1)
|
||||||
m_ansi_state.nums[0] = 1;
|
m_ansi_state.nums[0] = 1;
|
||||||
|
@ -285,17 +286,14 @@ namespace Kernel
|
||||||
putchar_at(' ', x, m_height - y_off - 1);
|
putchar_at(' ', x, m_height - y_off - 1);
|
||||||
return reset_ansi();
|
return reset_ansi();
|
||||||
case 'S': // Scroll Up
|
case 'S': // Scroll Up
|
||||||
reset_ansi();
|
|
||||||
dprintln("Unsupported ANSI CSI character S");
|
dprintln("Unsupported ANSI CSI character S");
|
||||||
return;
|
return reset_ansi();
|
||||||
case 'T': // Scroll Down
|
case 'T': // Scroll Down
|
||||||
reset_ansi();
|
|
||||||
dprintln("Unsupported ANSI CSI character T");
|
dprintln("Unsupported ANSI CSI character T");
|
||||||
return;
|
return reset_ansi();
|
||||||
case 'f': // Horizontal Vertical Position
|
case 'f': // Horizontal Vertical Position
|
||||||
reset_ansi();
|
|
||||||
dprintln("Unsupported ANSI CSI character f");
|
dprintln("Unsupported ANSI CSI character f");
|
||||||
return;
|
return reset_ansi();
|
||||||
case 'm':
|
case 'm':
|
||||||
handle_ansi_csi_color();
|
handle_ansi_csi_color();
|
||||||
return reset_ansi();
|
return reset_ansi();
|
||||||
|
@ -333,28 +331,25 @@ namespace Kernel
|
||||||
m_row = BAN::Math::clamp<uint32_t>(m_ansi_state.nums[0], 1, m_height) - 1;
|
m_row = BAN::Math::clamp<uint32_t>(m_ansi_state.nums[0], 1, m_height) - 1;
|
||||||
return reset_ansi();
|
return reset_ansi();
|
||||||
case '?':
|
case '?':
|
||||||
if (m_ansi_state.index == 0 || m_ansi_state.nums[0] == -1)
|
if (m_ansi_state.index != 0 || m_ansi_state.nums[0] != -1)
|
||||||
{
|
{
|
||||||
m_ansi_state.question = true;
|
dprintln("invalid ANSI CSI ?");
|
||||||
return reset_ansi();
|
return reset_ansi();
|
||||||
}
|
}
|
||||||
reset_ansi();
|
m_ansi_state.question = true;
|
||||||
dprintln("invalid ANSI CSI ?");
|
|
||||||
return;
|
return;
|
||||||
case 'h':
|
case 'h':
|
||||||
case 'l':
|
case 'l':
|
||||||
if (m_ansi_state.question && m_ansi_state.nums[0] == 25)
|
if (!m_ansi_state.question || m_ansi_state.nums[0] != 25)
|
||||||
{
|
{
|
||||||
m_show_cursor = (ch == 'h');
|
dprintln("invalid ANSI CSI ?{}{}", m_ansi_state.nums[0], (char)ch);
|
||||||
return reset_ansi();
|
return reset_ansi();
|
||||||
}
|
}
|
||||||
reset_ansi();
|
m_show_cursor = (ch == 'h');
|
||||||
dprintln("invalid ANSI CSI ?{}{}", m_ansi_state.nums[0], (char)ch);
|
return reset_ansi();
|
||||||
return;
|
|
||||||
default:
|
default:
|
||||||
reset_ansi();
|
|
||||||
dprintln("Unsupported ANSI CSI character {}", ch);
|
dprintln("Unsupported ANSI CSI character {}", ch);
|
||||||
return;
|
return reset_ansi();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue