mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-07-11 15:29:18 +00:00
QoL improvements
This commit is contained in:
@ -140,6 +140,8 @@ namespace CPU
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -508,7 +508,7 @@ namespace CrashHandler
|
||||
EHPrint("\e00FF000");
|
||||
if (i % 128 == 127)
|
||||
{
|
||||
short Percentage = (i * 100) / bm.Size;
|
||||
short Percentage = s_cst(short, (i * 100) / bm.Size);
|
||||
EHPrint("\n\eFAFAFA[%03ld%%] %08ld: ", Percentage, i);
|
||||
Display->SetBuffer(SBIdx);
|
||||
}
|
||||
@ -524,8 +524,8 @@ namespace CrashHandler
|
||||
uint64_t Reserved = KernelAllocator.GetReservedMemory();
|
||||
|
||||
EHPrint("\e22AA44Total: %ld bytes\n\eFF0000Used: %ld bytes\n\e00FF00Free: %ld bytes\n\eFF00FFReserved: %ld bytes\n", Total, Used, Free, Reserved);
|
||||
int Progress = (Used * 100) / Total;
|
||||
int ReservedProgress = (Reserved * 100) / Total;
|
||||
int Progress = s_cst(int, (Used * 100) / Total);
|
||||
int ReservedProgress = s_cst(int, (Reserved * 100) / Total);
|
||||
EHPrint("\e22AA44%3d%% \eCCCCCC[", Progress);
|
||||
for (int i = 0; i < Progress; i++)
|
||||
EHPrint("\eFF0000|");
|
||||
@ -695,7 +695,7 @@ namespace CrashHandler
|
||||
|
||||
if (unlikely(i % 0x1000 == 0))
|
||||
{
|
||||
int NewProgress = (i * 100) / ProgressLength;
|
||||
int NewProgress = (int)((i * 100) / ProgressLength);
|
||||
if (unlikely(NewProgress != Progress))
|
||||
{
|
||||
Progress = NewProgress;
|
||||
|
@ -126,6 +126,9 @@ namespace CrashHandler
|
||||
case KEY_D_RIGHT:
|
||||
case KEY_D_DOWN:
|
||||
ArrowInput(scanCode);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
int key = GetLetterFromScanCode(scanCode);
|
||||
@ -148,8 +151,8 @@ namespace CrashHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
append(UserInputBuffer, key);
|
||||
Display->Print(key, SBIdx);
|
||||
append(UserInputBuffer, s_cst(char, key));
|
||||
Display->Print((char)key, SBIdx);
|
||||
BackSpaceLimit++;
|
||||
}
|
||||
Display->SetBuffer(SBIdx); // Update as we type.
|
||||
|
@ -141,6 +141,13 @@ namespace CrashHandler
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -181,6 +188,13 @@ namespace CrashHandler
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -220,6 +234,13 @@ namespace CrashHandler
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -260,6 +281,13 @@ namespace CrashHandler
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" ? \n");
|
||||
EHPrint(" %ld\n", SelCode.Idx);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -235,9 +235,9 @@ namespace Driver
|
||||
if (!Handle.InterruptCallback)
|
||||
{
|
||||
#if defined(a64) || defined(a32)
|
||||
int IntNum = Frame->InterruptNumber - 32;
|
||||
uint64_t IntNum = Frame->InterruptNumber - 32;
|
||||
#elif defined(aa64)
|
||||
int IntNum = Frame->InterruptNumber;
|
||||
uint64_t IntNum = Frame->InterruptNumber;
|
||||
#endif
|
||||
warn("Interrupt callback for %ld is not set for driver %ld!", IntNum, Handle.DriverUID);
|
||||
return;
|
||||
|
@ -20,7 +20,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -75,7 +75,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -123,7 +123,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -172,7 +172,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -253,7 +253,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -302,7 +302,7 @@ namespace Driver
|
||||
debug("Searching for conflicting drivers...");
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -392,7 +392,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
|
@ -133,7 +133,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -181,7 +181,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -229,7 +229,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -306,7 +306,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -383,7 +383,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -431,7 +431,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
@ -479,7 +479,7 @@ namespace Driver
|
||||
|
||||
if (fexExtended->Driver.OverrideOnConflict)
|
||||
{
|
||||
std::vector<int> DriversToRemove = std::vector<int>();
|
||||
std::vector<uint64_t> DriversToRemove = std::vector<uint64_t>();
|
||||
foreach (auto Drv in Drivers)
|
||||
{
|
||||
FexExtended *fe = ((FexExtended *)((uintptr_t)Drv.Address + EXTENDED_SECTION_ADDRESS));
|
||||
|
@ -190,16 +190,16 @@ namespace Interrupts
|
||||
|
||||
Handler::~Handler()
|
||||
{
|
||||
debug("Unregistering interrupt handler for IRQ%d.", InterruptNumber);
|
||||
debug("Unregistering interrupt handler for IRQ%d.", this->InterruptNumber);
|
||||
for (size_t i = 0; i < RegisteredEvents.size(); i++)
|
||||
{
|
||||
if (RegisteredEvents[i].ID == InterruptNumber)
|
||||
if (RegisteredEvents[i].ID == this->InterruptNumber)
|
||||
{
|
||||
RegisteredEvents.remove(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
warn("Event %d not found.", InterruptNumber);
|
||||
warn("Event %d not found.", this->InterruptNumber);
|
||||
}
|
||||
|
||||
#if defined(a64)
|
||||
|
@ -22,9 +22,9 @@ namespace PCI
|
||||
{
|
||||
uint8_t Digit = (Value >> (4 - (i * 4))) & 0xF;
|
||||
if (Digit < 10)
|
||||
Buffer[i] = '0' + Digit;
|
||||
Buffer[i] = s_cst(char, '0' + Digit);
|
||||
else
|
||||
Buffer[i] = 'A' + (Digit - 10);
|
||||
Buffer[i] = s_cst(char, 'A' + (Digit - 10));
|
||||
}
|
||||
return Buffer;
|
||||
}
|
||||
@ -37,9 +37,9 @@ namespace PCI
|
||||
{
|
||||
uint8_t Digit = (Value >> (28 - (i * 4))) & 0xF;
|
||||
if (Digit < 10)
|
||||
Buffer[i] = '0' + Digit;
|
||||
Buffer[i] = s_cst(char, '0' + Digit);
|
||||
else
|
||||
Buffer[i] = 'A' + (Digit - 10);
|
||||
Buffer[i] = s_cst(char, 'A' + (Digit - 10));
|
||||
}
|
||||
return Buffer;
|
||||
}
|
||||
@ -555,6 +555,8 @@ namespace PCI
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
fixme("Unknown device %04x:%04x", VendorID, DeviceID);
|
||||
return u32ToHexString(DeviceID);
|
||||
@ -649,7 +651,10 @@ namespace PCI
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
case 0x03:
|
||||
@ -667,6 +672,8 @@ namespace PCI
|
||||
return "VGA Compatible Controller";
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -838,7 +845,7 @@ namespace PCI
|
||||
PCI::PCI()
|
||||
{
|
||||
#if defined(a64)
|
||||
int Entries = ((((ACPI::ACPI *)PowerManager->GetACPI())->MCFG->Header.Length) - sizeof(ACPI::ACPI::MCFGHeader)) / sizeof(DeviceConfig);
|
||||
int Entries = s_cst(int, ((((ACPI::ACPI *)PowerManager->GetACPI())->MCFG->Header.Length) - sizeof(ACPI::ACPI::MCFGHeader)) / sizeof(DeviceConfig));
|
||||
Memory::Virtual vma = Memory::Virtual(KernelPageTable);
|
||||
for (int t = 0; t < Entries; t++)
|
||||
{
|
||||
|
@ -46,6 +46,8 @@ namespace SymbolResolver
|
||||
debug("String table found, %d entries", ElfSections[i].sh_size);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (ElfSymbols != nullptr && strtab != nullptr)
|
||||
|
@ -64,7 +64,7 @@ namespace Time
|
||||
this->hpet = (void *)acpi->HPET->Address.Address;
|
||||
HPET *hpet = (HPET *)this->hpet;
|
||||
trace("%s timer is at address %016p", acpi->HPET->Header.OEMID, (void *)acpi->HPET->Address.Address);
|
||||
clk = hpet->GeneralCapabilities >> 32;
|
||||
clk = s_cst(uint32_t, hpet->GeneralCapabilities >> 32);
|
||||
mmoutq(&hpet->GeneralConfiguration, 0);
|
||||
mmoutq(&hpet->MainCounterValue, 0);
|
||||
mmoutq(&hpet->GeneralConfiguration, 1);
|
||||
|
@ -80,16 +80,16 @@ namespace UniversalAsynchronousReceiverTransmitter
|
||||
return;
|
||||
|
||||
// Initialize the serial port
|
||||
NoProfiler_outportb(Port + 1, 0x00); // Disable all interrupts
|
||||
NoProfiler_outportb(Port + 3, SERIAL_ENABLE_DLAB); // Enable DLAB (set baud rate divisor)
|
||||
NoProfiler_outportb(Port + 0, SERIAL_RATE_115200_LO); // Set divisor to 1 (lo byte) 115200 baud
|
||||
NoProfiler_outportb(Port + 1, SERIAL_RATE_115200_HI); // (hi byte)
|
||||
NoProfiler_outportb(Port + 3, 0x03); // 8 bits, no parity, one stop bit
|
||||
NoProfiler_outportb(Port + 2, 0xC7); // Enable FIFO, clear them, with 14-byte threshold
|
||||
NoProfiler_outportb(Port + 4, 0x0B); // IRQs enabled, RTS/DSR set
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 1), 0x00); // Disable all interrupts
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 3), SERIAL_ENABLE_DLAB); // Enable DLAB (set baud rate divisor)
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 0), SERIAL_RATE_115200_LO); // Set divisor to 1 (lo byte) 115200 baud
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 1), SERIAL_RATE_115200_HI); // (hi byte)
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 3), 0x03); // 8 bits, no parity, one stop bit
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 2), 0xC7); // Enable FIFO, clear them, with 14-byte threshold
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 4), 0x0B); // IRQs enabled, RTS/DSR set
|
||||
|
||||
// Check if the serial port is faulty.
|
||||
if (NoProfiler_inportb(Port + 0) != 0xAE)
|
||||
if (NoProfiler_inportb(s_cst(uint16_t, Port + 0)) != 0xAE)
|
||||
{
|
||||
static int once = 0;
|
||||
if (!once++)
|
||||
@ -99,7 +99,7 @@ namespace UniversalAsynchronousReceiverTransmitter
|
||||
}
|
||||
|
||||
// Set to normal operation mode.
|
||||
NoProfiler_outportb(Port + 4, 0x0F);
|
||||
NoProfiler_outportb(s_cst(uint16_t, Port + 4), 0x0F);
|
||||
serialports[PortNumber] = true;
|
||||
#endif
|
||||
}
|
||||
@ -109,7 +109,7 @@ namespace UniversalAsynchronousReceiverTransmitter
|
||||
SafeFunction NIF void UART::Write(uint8_t Char)
|
||||
{
|
||||
#if defined(a64) || defined(a32)
|
||||
while ((NoProfiler_inportb(Port + 5) & SERIAL_BUFFER_EMPTY) == 0)
|
||||
while ((NoProfiler_inportb(s_cst(uint16_t, Port + 5)) & SERIAL_BUFFER_EMPTY) == 0)
|
||||
;
|
||||
NoProfiler_outportb(Port, Char);
|
||||
#endif
|
||||
@ -121,7 +121,7 @@ namespace UniversalAsynchronousReceiverTransmitter
|
||||
SafeFunction NIF uint8_t UART::Read()
|
||||
{
|
||||
#if defined(a64) || defined(a32)
|
||||
while ((NoProfiler_inportb(Port + 5) & 1) == 0)
|
||||
while ((NoProfiler_inportb(s_cst(uint16_t, Port + 5)) & 1) == 0)
|
||||
;
|
||||
return NoProfiler_inportb(Port);
|
||||
#endif
|
||||
|
@ -116,14 +116,14 @@ namespace Video
|
||||
uint8_t g = (color >> 8) & 0xff;
|
||||
uint8_t b = (color >> 16) & 0xff;
|
||||
|
||||
r = (r * Value) / 100;
|
||||
g = (g * Value) / 100;
|
||||
b = (b * Value) / 100;
|
||||
r = s_cst(uint8_t, (r * Value) / 100);
|
||||
g = s_cst(uint8_t, (g * Value) / 100);
|
||||
b = s_cst(uint8_t, (b * Value) / 100);
|
||||
|
||||
pixel[y * this->Buffers[Index].Width + x] = (b << 16) | (g << 8) | r;
|
||||
}
|
||||
}
|
||||
this->Buffers[Index].Brightness = Value;
|
||||
this->Buffers[Index].Brightness = s_cst(char, Value);
|
||||
}
|
||||
|
||||
void Display::SetBufferCursor(int Index, uint32_t X, uint32_t Y)
|
||||
@ -198,7 +198,7 @@ namespace Video
|
||||
{
|
||||
uint32_t LineSize = this->Buffers[Index].Width * (this->framebuffer.BitsPerPixel / 8);
|
||||
uint32_t BytesToMove = LineSize * Lines * this->CurrentFont->GetInfo().Height;
|
||||
uint32_t BytesToClear = this->Buffers[Index].Size - BytesToMove;
|
||||
size_t BytesToClear = this->Buffers[Index].Size - BytesToMove;
|
||||
memmove(this->Buffers[Index].Buffer, (uint8_t *)this->Buffers[Index].Buffer + BytesToMove, BytesToClear);
|
||||
memset((uint8_t *)this->Buffers[Index].Buffer + BytesToClear, 0, BytesToMove);
|
||||
}
|
||||
@ -304,6 +304,8 @@ namespace Video
|
||||
this->Buffers[Index].CursorY += this->GetCurrentFont()->GetInfo().Height;
|
||||
return Char;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
uint32_t FontHeight = this->GetCurrentFont()->GetInfo().Height;
|
||||
@ -412,7 +414,7 @@ namespace Video
|
||||
this->ClearBuffer(0);
|
||||
this->SetBuffer(0);
|
||||
|
||||
for (size_t i = 0; i < sizeof(this->Buffers) / sizeof(this->Buffers[0]); i++)
|
||||
for (int i = 0; i < s_cst(int, sizeof(this->Buffers) / sizeof(this->Buffers[0])); i++)
|
||||
{
|
||||
if (this->Buffers[i].Checksum == 0xBBFFE515A117E)
|
||||
this->DeleteBuffer(i);
|
||||
|
Reference in New Issue
Block a user