by adding the const specifier to the uint8* parameters of the
prototypes of the vesa_set_cursor_shape and vesa_set_cursor_bitmap
functions.
Thanks looncraz for pointing this out.
- When an image creation notification is received, the thread
that provoked it needs to be suspended until the debugger has
finished loading the image's debug information. Otherwise, if that
image had a breakpoint in it, it was possible that the thread would
execute past the code where the breakpoint should be before the
debugger had a chance to actually install it.
- Only update breakpoints when debug info loading has actually finished.
* Remove error text as giving SetCurrentContext
a NULL bitmap isn't a critical error.
* Ensure old front buffer is flushed on SetCurrentContext
* Small style fix
The ATA info block has the model, serial and firmware revision byte
swapped that we already converted and then printed out correctly. The
original values were however copied to the SCSI inquiry data so the
device names that end up in different places were incorrect. This
fixes#7926.
Also added a comment explaining that there's way too little space in
the SCSI inquiry block to fit in the full ATA data.
* Original patch by Morgul as part of #4235. This does not close the ticket,
however.
* Updated the patch to not show empty '()' in case the partition type
returned was NULL.
I made the following changes to the original patch:
* Add const to the cursor setting functions.
* Removed the legacy cursor copying code.
* Minor coding style cleanup.
The SCSI inquiry vendor and product information is concatenated into a
single string to form the device name. Multiple spaces are then
collapsed to make the string more readable. The space padding is quite
common as the fields are fixed size in the inquiry block.
- It can actually happen that an app crashes due to being at IP 0.
The short circuit was consequently preventing us from unwinding the
stack properly in such a case.
* This is still early, but I want to track the
development in tree.
* swpipe will support Gallium softpipe or llvmpipe
(llvm pipe will give improved software rendering
permance when llvm is included at os build time)
* Used Artur Wyszynski's original code as a
road map... however a *lot* has changed.
* Crashes at startup.. not in image yet
Since we have the same setup with a loaded and mapped boot archive, we
can reuse the MemoryDevice implemented in uboot. This gets the loader
to the stage where it loads and attempts to boot the kernel.
An archive (ramfs) to be loaded can be specified in the raspberry pi
config.txt with a certain base address. We can use this to put our
floppy boot archive into memory on startup.
During the start procedure we now map that archive so we can later
load the kernel from it.
Add more fields to arch framebuffer to hold the physical address and
size of the framebuffer. Then fill these in when mapping the
framebuffer to virtual memory.
These can be used for on-screen debug output with relatively little
effort, as they just need a plain framebuffer definition to work.
Some stubs are added to not clutter up the kernel sources with too
many ifdefs.
This implementation introduces the minimal changes necessary to support
the existing VMWareTypes API on x86-64. If a more expansive set of guest
additions are required, it may make sense to adopt a more general
approach akin to the one used here:
https://github.com/jcs/vmwh/blob/f177dd3cf/vmware.c#L49
Signed-off-by: Michael Lotz <mmlr@mlotz.ch>
Making the fields protected allows them to be set by arch framebuffer
implementations. The getters can be used to retrieve the configuration
from outside the implementation.
The stack pointer is set up so that it uses the space below our .text
section at 0x8000. The stack pointer actually points at one entry less
than the specified address, so it starts at 0x8000 - sizeof(uint32) and
grows downwards from there.
* Our usb_hid driver handles joysticks already, no need for another one
* Also add the emuxki driver to the Jamfile tree even if it's in unknown state and unused.
* applied patch provided with ticket, thanks!
* extended patch to implement offset clamping for all public methods
of BTextView and remove some checks from private methods to define
a clear baseline for sanity of offsets used in the code
It was possible to confuse TextWidget to start editing twice (clicking on the widget and during the wait,
pressing F2) and confusing the states of the TextWidget.
* use only a single static object (MutableLocaleRoster) instead of
two, which avoids any problems if the order of static object
destruction would destroy RosterData before MutableLocaleRoster
* rename BPrivate::RosterData to BPrivate::LocaleRosterData and move
it into a header and implementation file of its own
This should hopefully fix problems encountered with a clang-compiled
Locale Kit.
We used the hash of the language code as a key for identifying catalogs.
However, hash do collide, and in particular, "en" and "fi" have the same hash.
Identify catalog resources by name instead.
- If a thread was already in a stopped state, but we received
an update that indicated something more specific, it would be
ignored, i.e. changing
from simply being in a debugged state to specifying a debugger
call + message. We now check both state and reason before ignoring
the update. Fixes debug reports not receiving the debugger call
message properly when intercepting an actual crash as opposed to
an app running inside the debugger.
* Use be_control_look->DefaultLabelSpacing() instead of hard-coding 4px.
* Use pre-generated system colors.
* Indicate a pane is revertable by making the font bold instead of
blue. This makes the revertable setting orthogonal with the
selected setting (can be both bold and selected color).
* Raspberry Pi is broken now after
the other recent arm work... needs
more investigation.
* Comment out stage2 header as it
links to headers with c++ code.
Need to verify entry.s can call
c++ code (I think it's mangled to
the assembly or something)
* Fix naming of code entry to match
other arm code.
- CommandLineUserInterface is now a team listener. Consequently, when asked
to generate a debug report on startup without running the input loop,
it now waits for receipt of the debug report event to terminate.
- Style fixes.
- DebugReportGenerator is now its own BLooper that generates reports asynchronously
instead of in TeamDebugger's message loop.
- If a stack trace isn't yet available, DebugReportGenerator now waits for it to
be generated.
- Extended Team to add a listener event for report generation completing. DebugReportGenerator
now generates such an event when it has finished writing a report.
This is so that it does not get draw flush to the edge of the
list view and there is just a bit of padding between the left
edge and where the text starts. The 4 pixels matches other
places that override the DrawItem() method (like Tracker prefs).
Adjust the spacing of the time zone settings in Time prefs so that
switching between Local time and GMT time won't resize the window
when hiding and showing the current and preview times. This means
that the Time preferences window always stays a constant height
without any tricks needed to adjust it after the fact. Before this
change the Time preferences window would change height depending
on the setting, which while not terrible, was probably not
what the author intended.
As a side note I adjusted the window to use B_USE_DEFAULT_SPACING
instead of hardcoded 5px so that the window spacing will adjust to
font size changes.
- When debug_server is built to use the graphical debugger as its
crash handler, also present the option to save a report instead
of debugging the app. Doesn't work 100% correctly yet though since
the report generator needs to wait for stack traces to be generated
if they aren't yet ready.
- When invoked, starts up the CLI such that it bypasses waiting for
input and instead save a crash report of the running team, then exits.
Mainly intended to be used by debug_server.
It has no use, since we don't know its value and the list of colors
might be longer (for example, for ARM currently B_MAX_CPU_COUNT is
only 1). The modula operator later on makes sure we keep within the
bounds of the kColors array anyway.
- The Tools menu now contains an option to save a debug report for the currently
debugged team. For now this report contains the following:
A list of all loaded images, their base address and their size.
A list of all threads active in their team, and their state.
* For each thread that is in a debug or exception state,
a stack trace, and a register dump at the top frame will also be emitted.
Feedback on report format + included details welcome.
For now, when the option is requested, the report is saved to the desktop
with an auto-generated name based on the target team and the current
date/time.
* move template method implementations out of class body, as otherwise
gcc2 bails with internal compiler error - thanks to Christof Lutteroth
for reporting
Since generic cpuidle module is loaded by lowlevel cpuidle drivers which
are loaded dynamically during boot, we don't need drivers/cpuidle any
more
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
we prefer intel native cpuidle driver on newer intel platforms --
sandybridge or later. we'll fall back to acpi cpuidle driver for other
platforms.
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
After this change, low level cpuidle drivers load the generic cpuidle
module if they can support the underlying platform.
change the intel cpuidle driver accordingly, now it's loaded by acpi
bus manager during boot, although it doesn't depend on acpi
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Currently, it's only used to load generic cpuidle module. But in the
future, we will add some features such as stats reporting etc.
Signed-off-by: Yongcong Du <ycdu.vmcore@gmail.com>
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Currently, it only supports intel sandy bridge processors.
Signed-off-by: Yongcong Du <ycdu.vmcore@gmail.com>
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
This module will load the various lowlevel cpuidle modules' implementations
during initialiation. If it finds one available module, it will change
the global gCpuIdleFunc as its own better one.
When idle, cpuidle module will select the best cstate and enter it by
calling the lowlevel module's implementation.
Signed-off-by: Yongcong Du <ycdu.vmcore@gmail.com>
Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
* The HEADERS_DEPENDENCY isn't needed
for GLU as Mesa is a dependency and requires
GLU to build
* I actually didn't break the build,
we were however using the Mesa GLU headers
with the external GLU lib which could be bad
* Check if offset is actually an error code and attempt to compensate
At the very least don't use it as an offset (would be bad).
* Write to the output string directly instead of copying a temp string.
* Add a ToDo to check if day of week should go after time for locale
* Replace hardcoded 64 in GetCurrentDate().
... with day of week tacked on at the beginning.
This fixes#9143 by better allowing the Locale Kit to
format the time. It was localized before but now also
uses localized time separators.
There might be still a bug with day of week though,
depending on if day of week should go before or after
the time in your locale (It is hard coded to before).
* We felt that me adding this didn't really
properly communicate the spirit of the
email approval. You really can't just
'change' a license from MIT without author
approval... so this is superfluous.
This will get libroot.so to build, which should give us much more compilation
coverage for ARM now too. Will have to go through all the libroot code with
a tooth comb anyway once userland comes up...
(Will consider replacing the glibc mess with bsd for all non gcc2 platforms)
* A copy of the email approving this change is
in the LICENSE.txt file
* This clears up several concerns
* We now have permission to clean / update GLUT
code and redistrubute its binaries.
* We have to ensure all of Mark's work is *not*
GPL licensed as per his wishes.
* GCC 4.7 is more picky than GCC 4.6, so have to make changes accordingly
* Changes include addressing issues with scoping, redeclaration, etc.
Thanks Rene and Ingo for your input on these changes
Will sort this out properly when userland is coming up. Need to get
a basic libroot version working first, so I can build a proper HaikuImage
to boot from ;)
These are pretty generic 32bit target files, so just copy them over.
Once we get userland properly starting, we can review these to see
if they need any changes.
This adds a few generic implementations of basic arithmetic functions. These
would normally be implemented in assembly, but add them for easy bringup of
new architectures.
This enables new platforms to start with a minimal set of changes to libroot.
There is no ARM port for the glibc version we're using mostly, so I'm picking
up files from more recent glibc and will probably need to hack around in them,
as glibc seem to have cleaned up their arch support a lot these days.
This is some defensive coding that assumes that the AddTeamMenu(),
RemoveTeamMenu(), AddSeperatorItem(), and RemoveSeperatorItem()
methods might fail and tries to compensate. Although it is unlikely
to be the case that these methods could fail I am trying to prevent
the bug that caused #9151 to happen.
When iterator->current is NULL, hash_next() assumes we've reached the
end of a bucket (linked list) and moves to the next one. Wehn the first
element of a linked list was removed in hash_remove_current()
iterator->current was set to NULL, causing the next call to hash_next()
to skip over the rest of the list of that bucket.
To fix this we now decrement iterator->bucket by one, so the next call
to hash_next() correctly arrives at the new first element of the same
bucket. Doing it this way avoids having to search backwards through the
table to find the actual previous item.
This caused modules to be skipped in module_init_post_boot_device()
when normalizing module image paths so some of the module images ended
up non-normalized. This could then cause images to be loaded a second
time for modules that were part of an actually already loaded image.
This setup is present for the PCI module with the pci/x86 submodule
and would lead to a second copy of the PCI module image to be loaded
but without being initialized, eventually leading to #8684.
The affected module images were pretty much random, as it depended on
the order in which they were loaded from the file system, in this case
the boot floppy archive of the El-Torito boot part of ISO and anyboot
images. The r1alpha4 release images unfortunately had the module files
ordered in the archive just so that the PCI module image would be
skipped, allowing #8684 to happen on many systems with MSI support.
Since the block cache uses hash_remove_current() as well in some cases,
it is possible that transactions in its list could've been skipped.
Cursory testing didn't reveal this to be a usual case, and it is
possible that in the pattern it is used there, the bug wouldn't be
triggered at all. It's still possible that it caused rare misbehaviour
though.
Use B_GET_PARTITION_INFO and B_GET_GEOMETRY instead of libntfs' home-brewn
device size detection. This avoids KDL in AHCI module. By the way the mentioned
problem with seek a should be investigated separately - it looks like a bug in AHCI module.
* As of Mesa3D 9.0+, GLU is a seperate project
* Our in-tree GLUT builds with GLU-9.0 without
modification.
* We ignore the GLU libraries that Mesa-7.8.2 and
Mesa-8.1-devel provide and use the glu-9.0 ones
* This is kind of a limbo state, but works for now.
* Eventually we will be on Mesa 9.0 (which requires
the external GLU) and Mesa 7.8.2 (which works with
the newer external GLU) and will rip GLU out of the
7.8.2 OptionalBuildPackage.
* I don't *think* we are using the Mesa GLU headers...
we will know for sure when I pull'em out of the
OptionalBuildPackages :D
Since we're using multi-part uImage format, we can add the FDT as
a seperate "blob" in the uImage, if the used U-Boot version is not
"FDT enabled".
This is used for example for our Verdex target. Currently I've got
a local hack in the platform/u-boot/Jamfile, looking into pulling
in the FDT files and a proper Jam setup to do that properly...
This detects everything up to ARMv6 right now. Need to check more
recent ARM ARMs for ARMv7 detection.
The detected details get passed on to the kernel, which can use
the pre-detected info for selecting right pagetable format and such.
Copyright removal of Axel done after agreement with Axel @ BeGeistert
that for files that were copy/pasted from x86 arch and then fully
replaced the implementation, removal of original copyright holder is
allowed, since their actual code is gone ;)
... without scrolling.
This completes my about window treatment for all replicants. It is my
hope that BAboutWindow will be used by all apps that need an about
dialog instead of using a BAlert.
Pass the BHandler object that opened the about window to BAboutWindow.
When the window closes, send a kAboutWindowClosed message back to the
handler. This allows the handler to set the variable to NULL.
Implement the new about dialog constructor in all apps that use it.
Remove the old constructor. This now works reliably for all cases I
tested without crashing and does the right thing on close. The setup
and teardown is a bit more complicated than I wanted though.
Unfortunately this seems to be necessary when not using a BAlert.
Fetching the app icon does not work reliably yet. This is because for
replicants the app may not be running. I may have to pass the icon in
instead of grabbing it from the signature.
* Grabs the app icon and version from the resource file.
* Allow you to specify the copyright holder instead of hardcoding
"Haiku, Inc."
* Support multiple extra copyright fields.
* Modify BAlert to take a custom icon.
* Set the custom icon of the BAlert to the app icon.
* Also set the app version.
* Convert BAboutWindow to derive from BWindow
* Place a 128x128 icon and fill out a scrolling BTextView
with options such as authors, version history, copyright,
license, etc. Still needs some work but is coming along.
* Add the word Version to the version line, i8n'ed of course,
and tweak the info box and default sizes.
This makes Deskbar correctly calulate the scroll limits in the case
when scrollbars are attached but not due to an app being added or
removed for example because the icon sizes increased.
fExpando is added and removed from InlineScrollView only and it is
created and destroyed in BarView only. Before this there was a
case where it was removed in both InlineScrollView and BarView
causing a crash from the double remove
Otherwise when you switch from bottom mini mode to vertical expando mode
you'll get scroll arrows when you shouldn't because the bottom of the
window frame will be below the screen.
... rather than the current menu item widths. This means that
Deskbar will shrink the menu items until they are at their minimum
size before it activates the scroll arrows. Previous to this
change the scroll arrows were being turned on prematurely. Also
lower the minimum menu item width to the icon width + 50pixels which
is arbitrary but looks good to my eye.
* Split the Leaf menu and seperator into their own menubar.
* I got rid of a lot of special cases for horizontal in the
ExpandoMenuBar class because now the menubar contains the same
items as in vertical mode. However, it also means that the dreaded
<none> bug also affects horizontal mode.
* Make the application menubar resize itself even in horizontal mode.
This means that the view background shows through so I'm going to have
to fix this up.
* Calculate when to add the scroll arrows and how much to allow the user
to scroll by for horizontal. CheckItemSizes() got a big refactoring.
* Rework the InlineScrollView class a bit. It no longer requires you to
specify the begin and end limits on construction because it can
calculate them instead. It also no longer depends on the screen at all,
this means this class can be extened to be used more generally and in
more places.
InlineScrollView takes a BView instead of a BMenu as well, and it
no longer has flags to do drawing respond to frame changes since
this view does neither of those things.
... when rebuilding the application bar.
This fixes a Deskbar crash on resolution change because the lower
scrollbar is a child of fExpando so it must be removed and deleted
before fExpando is. So the tear down is remote scroll arrows
(if attached) then remote fExpando, then remove the scroll arrow
container view. The application bar is then rebuilt in reverse.
When you scroll, make the lower arrow scroll the same way to give
the illusion that it isn't moving at all.
So, now both arrows scroll on MouseDown, but, Deskbar crashes on
resolution change.
Also gave the Up Arrow and Down Arrow a scroll arrow. The up arrow works
but the down arrow doesn't because the sibling menu is stealing the
MouseDown event."
instead of trying to make it follow fExpando just make it a fixed
size on creation. It is invisible and extends to the bottom of the
screen. fExpando grows inside it, and the window follows fExpando.
When the window grows taller than the screenframe the arrows are
added. You can scroll with the mouse wheel, but I haven't yet gotten
scrolling to work from clicking. Deskbar still crashes when going
from Mini mode to vertical expando mode. I have no idea why.
Rename ScrollMenu.cpp to MenuScrollView.cpp
Half step towards making this class work as part of Deskbar without
extending any other classes. Scrolling works both with mouse and
scroll wheel. Redraws on scroll, need to make that work better.
Also need to move classes out of the Interface Kit and into Deskbar.
Modify the ScrollMenu class to use the layout kit by adding a constructor that doesn't take a view.
Get the BScrollMenu class to follow the size of the BMenu it is a parent of. Adjust the scrollers to appear in the right places. This is a WIP but it works in Deskbar, next step is to integrate this directly into BMenu with the scrollers as children of the menu instead of as children of the BScroller class.
Rebase changes on top of master
Deskbar scrolling works for the most part, just need to fix the
bottom arrow and clean up a bit.
Currently hardcoded to Verdex target. Code prepared to pick up configuration
details from FDT when implemented. Only enabled in FloppyImage for ARM.
This actually enables the kernel to read the content of the image file
passed using the "-pflash" parameter to QEMU....
Remove the dummies from the C code and implement them in assembly,
due to the label referencing issues with the fault handler.
This code is ripe for optimisation, my ARM assembly is pretty
basic ;)
Does work though, and gets us one step closer to a full arch.
As noted during BeGeistert and today again by kallisti5, there's a
Pentium reference in the ARM bootloader code.
Correct the message to something more appropriate....
Thanks to Rene for the suggestion ;)
This is to make sure all ARM platforms will benefit from planned work on this
MMU/CPU code. The less code duplicated, the better.
Compile-tested for all supported ARM platforms
The DOI (Digital Object Identifier) is a unique identifier
for (scientific and other...) publications.
While the doi: URI scheme was only a draft, it's not totally unlikely
that we ever hit such a URI, in this case we just redirect to the
official DOI website.
cf. http://tools.ietf.org/html/draft-paskin-doi-uri
* Read/Write up to 1024x1024 icon sizes.
* All build-in icon sizes available as pages in ShowImage.
* Support only 32-bit icon colors (rgb32 and rgba32) now.
This also implements the fault handler correctly now, and cleans up the
exception handling. Seems a lot more stable now, no unexpected panics or
faults happening anymore.
This will generate asm_offsets.h which makes our assembly code
easier to maintain by preventing hardcoded offsets for fields within structures.
(copied from X86 and removed the X86 specifics)