Some SMT implementations (e.g. recent AMD microarchitectures) have
separate L1d cache for each SMT thread (which AMD decides to call "cores").
This means that we shouldn't move threads to another logical processor too
often even if it belongs to the same core. We aren't very strict about
this as it would complicate load balancing, but we try to reduce unnecessary
migrations.
atomic_{get, set}64() are problematic on architectures without 64 bit
compare and swap.
Also, using sequential lock instead of atomic access ensures that
any reads from cpu_ent::active_time won't require any writes to shared
memory.
As weak aliases are not supported on OS X, this caused problems when
building Haiku on OS X, as this file is also used for the host tools.
Signed-off-by: Axel Dörfler <axeld@pinc-software.de>
The client code is not supposed to change the topology info.
It would be also nice if cpu_topology_node::children was an array of
pointers to const but that would require several const_casts in the
topology tree generation code so it's probably not worth it.
When BWindow receives a message in screen coordinates and the
message has a target view, as it does when the message comes from
App Server, convert the coordinates to view coordinates before
passing the message along.
Revert the portion of hrev46532 where BView converts screen
coordinates and converts them since that happens in
BWindow::_SanatizeMessage() now.
Apparently, reading from dr3 is slower than reading from memory
with cache hit.
Also, depending on hypervisor configuration, accessing dr3 may cause
a VM exit (and, at least on kvm, it does), what makes it much slower
than a memory access even when there is a cache miss.
- debug_server now supports user configuration of both the general default
action to be taken on crashes, and per-app overrides. These are stored
config/settings/system/debug_server/settings. In the absence of the file,
behavior defaults to prompting the user for an action as before.
The file takes on a driver_settings style format as follows:
---
default_action user
executable_actions {
app1 log
/path/app2* debug
}
---
Valid values for an action are:
- user = prompt user for action.
- kill = silently terminate the crashing team.
- debug = attach the debugger to the crashing team. in the debugger.
- log / report = save a crash report and terminate the team.
If no default_action is specified, "user" is assumed.
The executable_actions subsection contains individual overrides of the
default. These take the form above, where the individual lines can be
only a team name, or a path, with wildcards.
Implements first part of #10301.