Basically the architecture specific code is now responsible to
init and make use of the platform specific code, now. The reason
being that we have only one kernel per platform and thus cannot
decide at compile time, which platform to use (if any).
The PPC implementation features an abstract base class PPCPlatform
(implemented for all supported platforms) through which platform
support is provided.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15824 a95241bf-73f2-0310-859d-f6bbb57e9c96
Might reveal other problems in this area, that are worth looking into.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15823 a95241bf-73f2-0310-859d-f6bbb57e9c96
need MiniTerminal, it's no longer included in the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15822 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Improved error message in case the initial shell couldn't be executed.
* Disabled setting the colors via arguments, mostly because it just did quit
the app in case there were any arguments and no /etc/rgb.txt file. This
allows Terminal to be used by the debug_server instead of MiniTerminal.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15820 a95241bf-73f2-0310-859d-f6bbb57e9c96
bus, and time base frequency) in the PPC boot loader, and propagate
them to the kernel via kernel_args.
* Now we use the correct time base frequency for timer calculations.
* Implemented PPC specific system info stuff. Added a few PPC CPU
types to <OS.h>.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15817 a95241bf-73f2-0310-859d-f6bbb57e9c96
on workspace 1 just because the system booted in that workspace? :-)
Now modal windows are opened on the current workspace.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15813 a95241bf-73f2-0310-859d-f6bbb57e9c96
though (ideally when launched).
* B_MODAL_APP_WINDOW_FEEL windows are now visible on the initial app workspace
in case it has no other window visible. This fixes the missing BAlerts in
the debug_server or just the "alert" command. Thanks to Stephan for pointing
this out.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15811 a95241bf-73f2-0310-859d-f6bbb57e9c96
a mix of the liblayout look (I hope Marcus doesn't mind)
and BMenuFields. I will have to clean up after myself one
day and calculate the tab rects properly instead of drawing
far out of the right side of tabs and adding a weird offset
to the label rendering and other places...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15801 a95241bf-73f2-0310-859d-f6bbb57e9c96
-> fixes some clipping problems (because of
hinting, the text was displayed at a rounded
position anyways, but the clipping calculation
was screwed up)
* take the drawing_mode and low color from the
current state for drawing line arrays
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15800 a95241bf-73f2-0310-859d-f6bbb57e9c96
BONE or DANO, and I'm pretty sure it won't work in Zeta!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15784 a95241bf-73f2-0310-859d-f6bbb57e9c96
remapping stuff into separate functions and made them available to
others.
* Remap the exception handler space in arch_int_init_post_vm() into the
kernel address space (same issue as with the page table).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15783 a95241bf-73f2-0310-859d-f6bbb57e9c96
According to the spec we need to set it before taking over the MMU,
but we can't call it before arch_mmu_init(), since we need the OF
to allocate the page table. So we do it after we have allocated
the new page table.
* Added PPC specific kernel_args: The virtual address ranges we want
to keep in the kernel. We fill that in with the translations we
find when initializing the MMU stuff. We remove the memory the
boot loader occupies from those. Besides the stack for the boot
loader only the OF stuff remains.
* arch_mmu_allocate() now starts to search at KERNEL_BASE for a free
virtual address when no particular address is requested. This saves
us further trouble in the kernel, since those allocations would
need to be remapped otherwise.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15780 a95241bf-73f2-0310-859d-f6bbb57e9c96
brick wall collisions. Along the way I found a few defines that no longer
exist in Haiku - changed B_BEOS_VERSION_DANO to use Haiku versions (anyone
rebuilding under Dano might want to undo it). By the way, the BeOS version
number define system might be worth using, since it's a numerical compare
rather than #if defined(V1) || defined (V2) || defined (V3) and so on.
What sort of errors? Besides needing libzeta.so for some things, the
networking compatibility compile doesn't work (libbind and all that).
Some examples among many:
In file included from /boot/home/Haiku/src/kits/mail/numailkit.cpp:14:
/boot/develop/headers/be/support/Autolock.h:3: using directive `BAutolock' introduced ambiguous type `BAutolock'
In file included from /boot/home/Haiku/src/kits/network/compat/libnet/netdebug.c:6:
/boot/home/Haiku/headers/private/net/netdebug.h:32: syntax error before `void'
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15775 a95241bf-73f2-0310-859d-f6bbb57e9c96
the fact that I couldn't find ptesync in an otherwise more complete
documentation I downloaded yesterday made me suspicious.
* arch_cpu_global_TLB_invalidate() uses tlbia now. The instruction is
optional, but so is tlbie (how I understood it is that both exist,
when the architecture implementation has a TLB). And the former loop
looked just scary.
* Implemented arch_cpu_user_TLB_invalidate(). It does just the same as
arch_cpu_global_TLB_invalidate().
* Some changes with respect to synchronization required on page table
and segment register updates.
* Some more minor renaming. Pulled a new function
remove_page_table_entry() out of unmap_tmap().
* In arch_vm_translation_map_init_post_area() we do now remap the page
table into the kernel address space, if it was without before. The
page table might actually be a good application for BAT, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15773 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Renamed occurrences of ASID/asid to VSID/vsid where appropriate.
* vm_translation_map_arch_info::vsid_base is now the first usable
VSID and doesn't need to be shifted anymore.
* Changed the VSID base shift from 4 to 3, since we need only 8 VSIDs
per team.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15772 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Fixed several off-by-one comparisons with num_pages.
* vm_alloc_virtual_from_kernel_args() now makes sure the allocated
region lies within the kernel address space (or is at least
>= KERNEL_BASE).
* Simplified one or two patches.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15771 a95241bf-73f2-0310-859d-f6bbb57e9c96
fill_page_table_entry() by a ptesync(). Mapping the kernel heap
took about 2 minutes here before.
* Added missing shift of the asid_base in ppc_translation_map_change_asid().
* Commented out the BAT stuff in arch_vm_translation_map_init_post_area().
Besides that I think it won't work that way, it made the page table
unaccessible; though I'm not sure why.
* Added a bit of documentation to the beginning of the file. Should give
enough information to understand what happens here without further
detailed knowledge about the architecture.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15769 a95241bf-73f2-0310-859d-f6bbb57e9c96
BeMail uses 2, Terminal (under Dano) 4, and Tracker as well as pe 3 - so 3 seems
to be a good compromise.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15763 a95241bf-73f2-0310-859d-f6bbb57e9c96
* added another optimized bitmap drawing routine
for B_OP_ALPHA and BGR[A]32 bitmaps. When actual
blending takes place, it is more than 1.7 times
faster than R5, and about the same speed when
the bitmap is fully opaque.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15761 a95241bf-73f2-0310-859d-f6bbb57e9c96
arch_mmu_allocate() to set the "cache inhibited" flag. One negative
effect was that for such memory the lwarx instruction (used by the
atomic_*() functions) does "... cause the system data storage error
handle to be invoked...", as the architecture specification puts it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15759 a95241bf-73f2-0310-859d-f6bbb57e9c96
with quite good results I might add. Drawing B_RGB32
bitmaps is more than 1.2 times faster than on R5, while
B_CMAP8 bitmaps are slightly slower. The optimization
is only for B_OP_COPY and unscaled bitmaps
(B_RGB32 and B_CMAP8). Drawing only parts of the bitmap
is supported. Adding optimization for scaled bitmaps
should be beneficial, since the generic version is 2 two
4 times slower. I think it gets even worse for partial
bitmaps.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15758 a95241bf-73f2-0310-859d-f6bbb57e9c96
{HAIKU,HOST,TARGET}_KERNEL_PIC_{CC,LINK}FLAGS which define the
compiler/linker flags specifying the kind of position independence
the kernel shall have. For x86 we had and still have -fno-pic, but the
PPC kernel has -fPIE (position independent executable) now, as we
need to relocate it.
* The boot loader relocates the kernel now. Mostly copied the relocation
code from the kernel ELF loader. Almost completely rewrote the PPC
specific relocation code, though. It's more correct and more complete now
(some things are still missing though).
* Added boot platform awareness to the kernel. Moved the generic
Open Firmware code (openfirmware.c/h) from the boot loader to the kernel.
* The kernel PPC serial debug output is sent to the console for the time
being.
* The PPC boot loader counts the CPUs now and allocates the kernel stacks
(made OF device iteration a bit more flexible on the way -- the search
can be restricted to subtree). Furthermore we really enter the kernel...
(Yay! :-) ... and crash in the first dprintf() (in the atomic_set()
called by acquire_spinlock()). kprintf() works, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15756 a95241bf-73f2-0310-859d-f6bbb57e9c96
probably increase the values we got from BScrollBar::GetSteps(), though, as
it's a bit slow.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15755 a95241bf-73f2-0310-859d-f6bbb57e9c96
with the "EventMask" test app the last time:
* The focus view didn't get any mouse messages anymore if there was a permanent
B_POINTER_EVENTS view.
* B_KEYBOARD_EVENTS now works again.
* B_MOUSE_WHEEL_CHANGED messages no do arrive their targets without prior
keyboard input.
* Added TODO item that other focus messages don't go through to the app without
keyboard input (fix only works for B_MOUSE_WHEEL_CHANGED).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15754 a95241bf-73f2-0310-859d-f6bbb57e9c96
wider, so that they completely fill up the space they have (making them nicely
aligned to the surrounding border).
* the placement controls now accept up to 5 bytes (for things like "-1000").
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15751 a95241bf-73f2-0310-859d-f6bbb57e9c96
as cached_block::data - which led to a crash as block_cache::FreeBlock() tried to
free both later.
Since neither cached_block::parent_data nor cached_block::original are supposed
to be != NULL in block_cache::FreeBlock(), they are no longer freed, but the system
panics if one of them is not NULL.
This should fix bug #77.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15749 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The left and right box should now always look aligned horizontally
(at least under Haiku).
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15748 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Less flickering when drawing the label: the area of the label is now
clipped, so there is no need to fill the background again.
* Consumed the last reserved member for the bounding box of the label.
* More or less rewrote the header.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15747 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Better error reporting when writing the attributes.
* Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15744 a95241bf-73f2-0310-859d-f6bbb57e9c96
preferences app writes its info with this type (instead of B_MESSAGE_TYPE as
Be's does).
It's now possible to set the background image for Tracker under Haiku.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15742 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Now always returns B_BAD_DATA in case of attributes with the wrong size.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15741 a95241bf-73f2-0310-859d-f6bbb57e9c96
attribute is longer than B_MIME_TYPE_LENGTH.
* NodeInfo::GetType() now null terminates the attribute; you cannot expect
that strings in attributes are null terminated (it already wrote the null
byte to B_MIME_TYPE_LENGTH - 1 for safety, but why not do it right?).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15740 a95241bf-73f2-0310-859d-f6bbb57e9c96
when receiving a HELLO request. Thus it doesn't need to be restarted
when the image had been rebuilt. That was a bit annoying...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15735 a95241bf-73f2-0310-859d-f6bbb57e9c96
panel window (and thus the text is no longer cut off under Haiku).
Instead of only writing "JPEG Image" for JPEG images, and nothing for
all other image types, the MIME types short description is now displayed
(or the MIME type itself if no such description exists).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15733 a95241bf-73f2-0310-859d-f6bbb57e9c96
reported from our build tools under Linux. As it seems Linux does not
translate dirent::d_ino for mount points (BeOS and Haiku do), which
caused us not to find a mount point entry in its parent directory.
Thanks to Vampyre for the hint.
Fixes bugs #73 and #76.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15726 a95241bf-73f2-0310-859d-f6bbb57e9c96
it could crashed the server.
* ViewLayer now deletes the view bitmap on destruction, if any.
* BitmapManager::Delete() now also accepts NULL bitmaps.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15723 a95241bf-73f2-0310-859d-f6bbb57e9c96
or even the resizing mode isn't done yet, though. See TODOs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15720 a95241bf-73f2-0310-859d-f6bbb57e9c96
as only the BitmapManager class is allowed to call them.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15718 a95241bf-73f2-0310-859d-f6bbb57e9c96
* if file panels shouldn't be quit, we no longer call QuitRequested() for
them and stop quitting windows (which left normal windows open, because
file panels always return "false" in QuitRequested())
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15715 a95241bf-73f2-0310-859d-f6bbb57e9c96
and ResizeBy()
* WindowLayer::SetSizeLimits() needs to be called with the
AllWindows lock held
* I was observing weird behaviour with "unclickable" windows
that I might have fixed by explicitly excluding invisible
windows from Desktop::WindowAt(), there might be something
wrong with the "current" window list though, Axel would know
* finally found the problem with "delayed background clearing"
* enabled delayed background clearing and removed unnecessary
code. It should be more efficient, since it clears larger
areas at once, and it solves the problem of views unable to
draw into regions that are pending for another update - among
other things, updates in resizing windows are more fluent,
especially for B_FULL_UPDATE_ON_RESIZE views. "Cut off" scroll
bars should no longer appear when the view being scrolled takes
too long to redraw.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15714 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Moved ImageFilePanel code to its own file, so that it can be reused easily.
* Moved BGWindow stuff into Backgrounds.cpp.
* Cleanup to match our style guide better.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15712 a95241bf-73f2-0310-859d-f6bbb57e9c96
I wouldn't be surprised, if more wrappers are still missing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15709 a95241bf-73f2-0310-859d-f6bbb57e9c96
specifying whether only the exact supplied address is acceptable. If
false, the address is considered a hint only. It will be picked, if
available, otherwise a greater address is tried to be acquired, and
as last resort any address. This feature is only implemented for PPC.
It is needed since the preferred kernel text base address 0x80000000
might not be available (and actually isn't on my Mac mini).
* Fixed a bug in the PPC memory management code:
is_{virtual,physical}_allocated() were checking whether the given
range was completely contained by an existing range instead of
checking for intersection. As a consequence we could (and did) allocate
a range intersecting with already allocated ranges. The kernel segment
thus overwrote OF memory for instance.
* The ELF loader makes sure that it got both text and data segment of
the image to be loaded.
The PPC boot loader successfully loads kernel and modules now. Next
comes the hard part, I'm afraid.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15708 a95241bf-73f2-0310-859d-f6bbb57e9c96
platform_allocation_region(). Since the callback stuff doesn't seem to
work, the Open Firmware didn't ask us to allocate memory in turn, and
thus we didn't know about the range that had been mapped and reused it
later.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15699 a95241bf-73f2-0310-859d-f6bbb57e9c96
into a new frame_buffer_support.h
* added blend32 routine for blending a certain color with
a scanline in the frame buffer
* added "solid" versions of B_OP_ALPHA drawing with
B_ALPHA_OVERLAY alha function (blending on top of
a non-transparent background such as the frame buffer)
* implemented an optimized shortcut for alpha blended
FillRect() in Painter
* used the "packed" version of scanlines for shapes with
an outline thicker than 4 pixels (and filled shapes anyways),
this improves drawing speed when there are a few anti-aliased
pixels at the beginning of a scanline, then a solid fill and
some anti-aliased pixels at the end of the scanline. Such as
large letters.
To summarize: The alpha blending in Painter seems to be about
1.45 times faster than on BeOS R5 which benefits drawing large
shapes. For example, drawing a large alpha blended rounded rect
is 1.28 times faster on the Haiku app_server. On the other hand,
B_OP_COPY is quite tough to beat. It is currently 10 times faster
on R5. But a great deal seems to be caused by the Painter
rasterization algorithm itself, since commenting out the actual
drawing doesn't gain any speed.
The other useful experience I collected was that reading and
writing and over the PCI bus in the same loop really hurts
performance. It is actually faster (like 1.8 times!!) to allocate
a second buffer, read from frame buffer into that, doing the
blending at the same time, then writing the buffer back to the
screen.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15698 a95241bf-73f2-0310-859d-f6bbb57e9c96
and thus, it could be used again which led to a crash.
Changed the free ranges list from a singly linked list to a doubly linked
list so that not all free ranges have to be searched for the one to be
freed anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15696 a95241bf-73f2-0310-859d-f6bbb57e9c96
the modified bit set were written back (that's the case when they weren't put into
the modified pages queue yet), they were enqueued into the active queue twice, messing
up the page lists with various effects - this little thing took me busy for the last
few days :-/
* Improved the "page" debugger command: it now prints out much more info, and also lets
you lookup pages via physical address.
* The dump commands are now using kprintf() instead of dprintf().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15692 a95241bf-73f2-0310-859d-f6bbb57e9c96
IP, and UDP, as well as a home brewn UDP based protocol, "remote disk",
which provides random access to a single remote file/device. The Open
Firmware flavored boot loader automatically initializes the net stack,
searches for a remote disk, and tries to boot from it, if the boot
device is a network device (e.g. when loading the boot loader via
TFTP).
This is quite nice for developing with a two-machine setup, since one
doesn't even need to install Haiku on the test machine anymore, but can
serve it directly from the development machine. When the networking
support in the kernel is working, this method could even be used to
fully boot, not just for loading kernel and initial modules.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15689 a95241bf-73f2-0310-859d-f6bbb57e9c96
argument value of 0 should only free the old allocation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15688 a95241bf-73f2-0310-859d-f6bbb57e9c96
* bfs_inode must be packed, otherwise the structure is larger due to
different alignment requirements.
* The off_t array returned by bfs_inode::Values() is in on-disk
endianess. This was ignored in some places. Hope I squashed all
occurences.
Those fixes should probably be back-ported to the kernel add-on, too.
Will do that when I get to that point in the kernel, unless someone
beats me to it.
The PPC boot loader does at least find the kernel on a BFS volume now.
Haven't dared to let it be loaded yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15686 a95241bf-73f2-0310-859d-f6bbb57e9c96
arch_cpu_user_TLB_invalidate(). Empty at the moment; will have a look at
that later. The PPC kernel builds again, now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15685 a95241bf-73f2-0310-859d-f6bbb57e9c96
of_call_method() which is actually an implementation of the
"call-method" client function.
* of_interpret() announced one less return value than actually needed.
Seemed to work anyway, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15683 a95241bf-73f2-0310-859d-f6bbb57e9c96
also added a few comments explaining what's going on. Japanese not updated?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15667 a95241bf-73f2-0310-859d-f6bbb57e9c96
support unsbrk(), and that is actually called quite often in Hoard, resulting
in out of memory quite fast.
We don't shrink the heap (yet), but at least we can reuse the memory that
was freed by Hoard (it doesn't just remove bytes from the end, it will also
free up smaller parts in the middle).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15655 a95241bf-73f2-0310-859d-f6bbb57e9c96
Must be further investigated (if the locks are created later or not...)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15643 a95241bf-73f2-0310-859d-f6bbb57e9c96
but it would have worked - and crashed soon after).
Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15642 a95241bf-73f2-0310-859d-f6bbb57e9c96
vm_cache_ref starts with a reference count of 1. When acquiring a vm_cache,
you no longer need to worry if that should go through the vm_store, or not;
as it now always does.
* map_backing_store() no longer needs to play with the vm_cache_ref
references.
* that simplified some code.
* vfs_get_vnode_cache() now grabs a reference to the cache, if successful.
* better balanced vnode ownership on vnode_store creation (vnode_store
released the vnode before if its creation failed).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15641 a95241bf-73f2-0310-859d-f6bbb57e9c96
to B_OS_NAME_LENGTH bytes, instead of 64. Also, it will now only consider
the leaf name for the area.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15640 a95241bf-73f2-0310-859d-f6bbb57e9c96
this saves 4 bytes per page. To compensate the loss of bytes, the offset is now
stored in page size units, that's enough to address 2^44 or 16 TB (which is now
the maximal supported file size!).
* Renamed vm_page::ppn to physical_page_number.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15637 a95241bf-73f2-0310-859d-f6bbb57e9c96
them apart (this even saves a pointer from vm_virtual_map to its address space)
* aspace -> address_space
* vm_create_address_space() did not check if creating the semaphore succeeded
* Removed team::kaspace - was not really needed (introduced a new vm_kernel_address_space()
function that doesn't grab a reference to the address space)
* Removed vm_address_space::name - it was just a copy of the team name, anyway,
and there is always only one address space per team
* Removed aspace_id - the address space is now using the team_id
* Some cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15609 a95241bf-73f2-0310-859d-f6bbb57e9c96
NEXT: port the FreeBSD netstack
I need volunteers for this huge task. And I don't have much time left for coding, anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15608 a95241bf-73f2-0310-859d-f6bbb57e9c96
Just noticed that VI did not like my copy-pasted commit log. It should be: we _need_ better pthread/mutex support. Here is the important part, again:
Cleaned up native part of libbind.so a little bit more. Though, the ugly hack remains. We need better pthread/mutex support. Added TODO that we also should move sysctl() into the kernel and libroot.so.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15606 a95241bf-73f2-0310-859d-f6bbb57e9c96
Committed libnetwork.so. I actually wanted to port BSD's libc/net resolver, but that one uses too many unsupported functions, so I basically merged libbind.so and libsocket.so into one library.
Moved the libbind.so sources to libnetwork/dns.
Cleaned up native part of libbind.so a little bit more. Though, the ugly hack remains. We nbetter pthread/mutex support. Added TODO that we also shousctl() into the kernel and libroot.so.
Improved DEVNOTES a little bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15605 a95241bf-73f2-0310-859d-f6bbb57e9c96
written the page, we now do it before, so that it cannot lose any changed data
anymore; it doesn't matter if the page is written to while writing it back, the
worst thing that can happen is that we write the same page twice. Also, we don't
rely on the PAGE_MODIFIED bit anymore, we now check all mappings of that page
to find all modified pages, no matter how far the (currently disabled) page
daemon had come.
Also, destroying an area will now result in writing back changed pages - this
is only really important for memory mapped files, though, and should probably
be avoided for other vm_store types.
Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15597 a95241bf-73f2-0310-859d-f6bbb57e9c96
menu. The menu basically works, but has a couple of problems. The
harmless ones are graphical: we get cursor artifacts when the colors
are changed, and the item selection doesn't quite look as it should.
More serious is the lack of Home/End, Page Up/Down keys. All I read from
the console is a '\0' byte when such a key is pressed. The cursor keys
work fortunately. I mapped the functionality of Page Up/Down
additionally to the Left/Right cursor keys. So the menu should be usable
at least. I guess, I'll leave it in that state; Axel wants a graphical
menu anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15589 a95241bf-73f2-0310-859d-f6bbb57e9c96
Moved some headers around and cleaned them up.
Fixed threading code in libbind.so. Don't know why I hadn't noticed this before. Now it is reliable, but uses an even uglier hack.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15585 a95241bf-73f2-0310-859d-f6bbb57e9c96
mappings yet, that's a good way to test this functionality.
* Turns out the directory of the mappings must be known already - they
should be added automatically, but I've added them manually for now
(which is okay for the default system directory).
* Having more than one style with the same family in the mappings didn't
work as planned - it now does.
* On my current system, time spend in the font manager constructor went
down from 1.5 secs to around 12000 usecs (and I have only a moderate
number of fonts installed, or so I thought - looks like the mappings
were a good idea :-)) - and that directly cuts down the boot time.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15580 a95241bf-73f2-0310-859d-f6bbb57e9c96
fixed displayed names for some models
added untested support for CardBus models Indigo*, thanks to Patrick Lafarguette for his great help on this feature
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15571 a95241bf-73f2-0310-859d-f6bbb57e9c96
all CPU specific implementations as much as possible.
AMD and Intel are now separated again, even though they are currently
equivalent besides the CPU vendor detection.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15567 a95241bf-73f2-0310-859d-f6bbb57e9c96
service depends on it, it doesn't make any sense to call it that early in the
game.
* The VFS now has a low memory handler for vnodes as well. If there is enough
memory left, it won't free any vnodes anymore.
* Potential crashing bug fix: some functions did not check if the FD passed
in belonged to the right type; they just assumed it had a valid vnode, but
it could have had a mount structure associated as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15566 a95241bf-73f2-0310-859d-f6bbb57e9c96
* the link were not initialized in cached_block, as its constructor were never called
(was using malloc/free instead of new/delete).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15564 a95241bf-73f2-0310-859d-f6bbb57e9c96
When memory gets low, the blocks on that list are also freed - but right now,
that only happens when a block is put back (not directly on demand, ie. via
a low memory handler).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15552 a95241bf-73f2-0310-859d-f6bbb57e9c96
memory status.
Added new B_NO_LOW_MEMORY constant for the usual case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15551 a95241bf-73f2-0310-859d-f6bbb57e9c96
kernel TLBs from being flushed on context switch.
* new arch_cpu_user_TLB_invalidate() that now does what arch_cpu_global_TLB_invalidate()
did before.
* arch_cpu_global_TLB_invalidate() will now flush all TLBs, even those from the
kernel.
* some cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15535 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The boot loader now checks the CPU for the cpuid and rdtsc features, which we
currently both rely on.
* Removed old and no longer used stage2_priv.h header
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15534 a95241bf-73f2-0310-859d-f6bbb57e9c96
has not yet been tested, though - I'll do this after this commit):
* Removed the arch_memory_type stuff from vm_area; since there are only 8 memory
ranges on x86, it's simply overkill. The MTRR code now remembers the area ID
and finds the MTRR that way (it could also iterate over the existing MTRRs).
* Introduced some post_modules() init functions.
* If the other x86 CPUs out there don't differ a lot, MTRR functionality might
be put back into the kernel.
* x86_write_msr() was broken, it wrote the 64 bit number with the 32 bit words
switched - it took me some time (and lots of #GPs) to figure that one out.
* Removed the macro read_ebp() and introduced a function x86_read_ebp()
(it's not really a time critical call).
* Followed the Intel docs on how to change MTRRs (symmetrically on all CPUs
with caches turned off).
* Asking for memory types will automatically change the requested length to
a power of two - note that BeOS seems to behave in the same, although that's
not really very clean.
* fixed MTRRs are ignored for now - we should make sure at least, though,
that they are identical on all CPUs (or turn them off, even though I'd
prefer the BIOS stuff to be uncacheable, which we don't enforce yet, though).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15528 a95241bf-73f2-0310-859d-f6bbb57e9c96
called before module_init(). Maybe it's even better to drop into the kernel
debugger.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15524 a95241bf-73f2-0310-859d-f6bbb57e9c96
Contains (emtpy) modules for Intel/AMD/VIA models.
Might be separated later, though, depending on how large they will get.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15522 a95241bf-73f2-0310-859d-f6bbb57e9c96
the debugger - killing them only very rarely works out anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15516 a95241bf-73f2-0310-859d-f6bbb57e9c96
the AS_REDRAW message.
The AS_REDRAW message is now only used as a notifier - it's arrival is not
critical anymore, IOW it's simply dropped when the queue is full.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15511 a95241bf-73f2-0310-859d-f6bbb57e9c96
is no longer visible in the Deskbar.
Changed registrar.rdef to match the same application flags, and added a comment
that those flags are actually ignored. Cleaned it up a bit, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15508 a95241bf-73f2-0310-859d-f6bbb57e9c96
"tracker always first" was selected, and the first app that was launched was not
Tracker.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15507 a95241bf-73f2-0310-859d-f6bbb57e9c96
It also fixed a bug in the old code - the handshake semaphores were created
acquirable, causing the BDirectWindow::DirectDaemonFunc() to call DirectConnected()
with an uninitialized buffer and way too early - this probably didn't show up
before since it called it before the BDirectWindow constructor ran through,
so that DirectConnected() would still point to the BDirectWindow version, and
not to the implemented one of its subclass...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15505 a95241bf-73f2-0310-859d-f6bbb57e9c96
app_server...
If you like to use it, define USE_DIRECT_WINDOW_TEST_MODE in the haiku_app_server
Jamfile.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15504 a95241bf-73f2-0310-859d-f6bbb57e9c96