master
more x86_64 stuff: -most of the mmu code is implemented -fix up the bad swap_stacks_and_call -fix up the tss stuff -fix the interrupt glue (needs iretq)
checkin of some work in progress on the usb stack
Pretty major change where all 'addr's went to addr_t. I dont know what I was thinking when I made the addr typedef.
Added another new publish function to devfs that publishes an indexed directory (note that they share the same namespace as indexed files). This will help normalize the more complex uses of numbered directories in the devfs.
To proov that I'm still busy coding for NewOS (and to stay in sync) I submitted the current state of the IDE drivers. They aren't loaded on boot time (enable the last ifdef in modules.c to do so) and they are *not* working yet. *Don't* activate them unless you want your IDE devices get blown up! Also, don't try to fix bugs or whatever as I'll ignore them - just leave it as is!
On x86 use the bswap instruction for ntohl and htonl
tcp/cbuf optimization:
rearchitected the kernel console stuff to bypass the vfs layer entirely, though it still is initialized far too late to print a lot of the kernel bootup stuff as it happens.
get rid of the info. union in the cpu_ent structure
add new bits to the compiler.h file add NO_RETURN attribute to panic, which fixes something in the x86_64 stuff point sys/cdefs.h to newos/compiler.h
A whole slew of little changes that were made while hacking a usb stack:
Massive reorganization of kernel addons:
-Changed most of the header guard strings to be a little more verbose -Added include/arch/cpu.h which contains PAGE_SIZE and BIG/LITTLE endian macros
Get the system booting on sh4 (Dreamcast) again. Doesn't completely load user space yet, but it's almost there.
Remap all of the io interrupt handlers to base 0 instead of base 0x20 on x86. This lets some drivers be more portable across architectures, since they dont have to add 0x20 to the int_set_io_interrupt_handler() call.
added a new header file to encapsulate compiler-specific stuff. added new likely() && unlikely() macros. changed ASSERT to assume evaluating to true is unlikely
massive ppc checkin. not quite finshed yet, but threading and vm stuff is up and running
move a couple of little things around make use of the __attribute__((align(x))) gcc extension
mutex change:
Modularize the console driver. The vt100 support stuff continues to live in /dev/console (now sourced from kernel/dev/console/console.c), but it now loads hardware specific modules dynamically. NOTE: This code breaks fb_console support. Between Travis and myself, we should get a dumb framebuffer console module up Real Soon Now (tm).
Completed module support. Added simple ISA bus manager for testing. Current test loads this module, outputs something to port e9, closes it and scans all bus_manager modules.
new syscall mechanism:
bunch of work on tcp:
big change to incorporate process groups and sessions:
Fix an old massive problem with the timers. It turns out that the code that tests the speed of the apic clock de-configures cpu 0's local apic so that the local apic timer doesn't run on that node. This was covered up by the fact that the isa timer was left running on that node so cpu 0 would still get timer interrupts occasionally. In the past this didn't matter so much because it didn't matter how often each cpu got the timer interrupts, as long as they ocurred at a reasonable rate. The new time-keeping mechanism does require they come in at a fixed rate on cpu 0, however.
Read the RTC clock on PCs at bootup so we can tell what time it really is.
a few vfs level changes:
some vm to accomodate needing to have a region search spot be different from the larger address space, specifically the 64bit kernel address space.