Age | Commit message (Collapse) | Author |
|
ioctl can now perform a request for a specific route and change
the address of it's default gateway.
|
|
Also, the switch-case flow is simplified for IO access within a Generic
address strucuture's handling.
|
|
|
|
|
|
A new IP address or a new network mask can be specified in the command
line arguments of ifconfig to replace the old values of a given network
adapter. Additionally, more information is being printed for each adapter.
|
|
|
|
|
|
Also, we determine if ACPI reboot is supported by checking the FADT
flags' field.
|
|
|
|
|
|
|
|
|
|
For that, we have a new type of VMObject, called
ContiguousVMObject, that is responsible for allocating contiguous
physical pages.
|
|
This is similar to 28e1da344d1de4fb80ce9e9c8da9127fa8606dc7
and 4dd4dd2f3c067eca446d9513e814ae9aaa648882.
The crux is that wait verifies that the outvalue (siginfo* infop)
is writable *before* waiting, and writes to it *after* waiting.
In the meantime, a concurrent thread can make the output region
unwritable, e.g. by deallocating it.
|
|
This is similar to 28e1da344d1de4fb80ce9e9c8da9127fa8606dc7
and 4dd4dd2f3c067eca446d9513e814ae9aaa648882.
The crux is that select verifies that the filedescriptor sets
are writable *before* blocking, and writes to them *after* blocking.
In the meantime, a concurrent thread can make the output buffer
unwritable, e.g. by deallocating it.
|
|
This also makes it easier to automatically parse the dependency tree.
Thankfully, this is the only place where a change was necessary.
|
|
|
|
Use this instead of uintptr_t throughout the codebase. This makes it
possible to pass a FlatPtr to something that has u32 and u64 overloads.
|
|
We unlock/relock around blocking, but outside of that we now keep the
socket locked.
This fixes an intermittent ASSERT(m_can_read) failure.
|
|
|
|
|
|
Found with Cppcheck.
|
|
|
|
|
|
|
|
LogStream can handle VirtualAddress and PhysicalAddress directly.
|
|
We only use allocate_blocks() now. If you want a single block, you can
just call allocate_blocks() with a count of 1.
|
|
|
|
Also, during interrupt handlers' enumeration, we call all interrupts
handlers that are not UnhandledInterruptHandler.
|
|
Also, GenericInterruptHandler class requires to implement two new
methods.
|
|
|
|
This was causing some obvious-in-hindsight but hard to spot bugs where
we'd implicitly convert the bool to an integer type and carry on with
the number 1 instead of the actual value().
|
|
One can now set the kernel boot argument smp to on, and therefore, to
instruct the kernel to use the IOAPIC instead of the PIC.
|
|
We install a SpuriousInterruptHandler when calling APIC::enable(),
and we don't enable local interrupts for now.
|
|
Without this fix, a very fast IRQ can preempt the enable_irq() call,
leaving that IRQ being unhandled.
|
|
|
|
Also, InterruptDisabler were added to prevent critical function from
being interrupted. In addition, the interrupt numbers are abstracted
from IDT offsets, thus, allowing to create a better routing scheme
when using IOAPICs for interrupt redirection.
|
|
|
|
This was caught by running all crash tests with "crash -A".
Basically, non-readable pages need to not be mapped *at all* so that
a "page not present" exception is provoked on access.
Unfortunately x86 does not support write-only mappings, so this is
the best we can do.
Fixes #1336.
|
|
|
|
Now we call ACPI reboot method first if possible, and if ACPI reboot is
not available, we attempt to reboot via the keyboard controller.
|
|
This is a complete fix of clock_nanosleep, because the thread holds the
process lock again when returning from sleep()/sleep_until().
Therefore, no further concurrent invalidation can occur.
|
|
Now it actually defaults to "a < b" comparison, instead of forcing you
to provide a trivial less-than comparator. Also you can pass in any
collection type that has .begin() and .end() and we'll sort it for you.
|
|
|
|
|
|
Also, duplicate data in dbg() and klog() calls were removed.
In addition, leakage of virtual address to kernel log is prevented.
This is done by replacing kprintf() calls to dbg() calls with the
leaked data instead.
Also, other kprintf() calls were replaced with klog().
|
|
This change make the code a bit more readable. Also, kprintf() calls
are replaced with klog() calls.
|
|
Also, kprintf() calls were replaced with klog() calls.
|
|
|
|
This was only used by the mechanism for mapping executables into each
process's own address space. Now that we remap executables on demand
when needed for symbolication, this can go away.
|