scheduler modes adapted to take into account the thread affinity mask.
when no cpu in the affinity mask is enabled, the mask is ignored.
Change-Id: I577737441ab073941a4c5e06f94f7825cffdc2c4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7674
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
When HaikuDepot is opened to view a specific HPKG file,
then show the name of the package in the window title.
Closes issue #18909.
Change-Id: Ib8095ef818dd3dc62b06cbc217f2056f36c8ac46
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7721
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
This way, by the time we send a notification, the arguments
are already set even if the main thread has not yet started.
Fixes #12703.
Change-Id: Ib93b4b16bffa8cb943cf6389f0f72dce89f9749b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7702
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Add a field to `debug_[team/thread]_deleted` to report the exit status
on the corresponding events.
This is useful for debuggers like GDB expecting a return value when one
of their inferiors quit.
Also add a `usage` field to `debug_team_deleted` since this is another
potentially useful piece of information exposed by the `waitpid` family
of syscalls.
Change-Id: Ieff7c31f56b1b9f8f709725d19050273b21f2504
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7736
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
The email on the program listing has never been used.
This change removes this. Closes issue #18274.
Change-Id: I45c679059b334d25c892bfbb6010e0821a84ac38
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7720
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
The physical memory ranges will actually be used again
later on during post-modules VM setup. The allocated ranges
are what we really want to prevent access to, anyway.
Fixes #18907.
block_alloc and friends are now declared as static, so we got
GCC errors about unused functions when USE_SLAB_ALLOCATOR_FOR_MALLOC
was 0. So, instead, just don't initialize the block allocator
at all.
This was the change that triggered the prior commits: if the
block allocator is completely disabled, the first object
allocated through an object_cache is inside VMAddressSpace
initialization, which happens during the interim period
mentioned in previous commits.
Haiku now can be built and booted all the way to the desktop
with the kernel guarded heap enabled (and without the guarded
heap substituting for the object cache.)
Change-Id: If2f08a741826799127ecfd263d6c82ed4263eaab
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7701
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
See inline comment: if we don't, we'll try to allocate pages
during the post-page-init but pre-area-init period, which
isn't possible (and after the previous commit will properly fail.)
Change-Id: If8392417e05912c8cfc417222abab3b39cb15bf1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7700
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Otherwise, vm_allocate_early_physical_page could try to use them to
allocate more physical pages, which isn't legal as page state
management is now the responsibility of the vm_page system.
Discovered while working on re-activating the guarded heap.
In that case, at least, the illegally allocated pages were caught
by the memory manager trying to convert them into areas,
but they weren't marked WIRED and so tripped asserts.
Change-Id: I39af70bf8a652511bb65fe2154bba16d4ba5c924
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7699
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
This has been broken since January 2014, from a change made during
the scheduler refactor (527da4ca8a).
How nobody seems to have figured this out since then, I have no idea,
especially since the 32-bit initialization routine had the
critical function (x86_get_double_fault_stack) commented out entirely.
Even if it wasn't commented out (and it wasn't for 64-bit), it wouldn't
have worked, because the double-fault stacks were not allocated
until "post-VM", while the TSS is set up during "preboot" (basically
just after kernel entry.)
We now take care of this by allocating the virtual address for
the stacks immediately, and then creating an area for it
in the "post-VM" stage. This means that any double-faults
which occur before the post-VM stage will just triple-fault,
but seeing as all double-faults have been triple-faults
for the past decade, that's probably fine. (In order to get a
double-fault stack that early, we would probably need to
have the bootloader allocate it for us.)
This must be working, because it changes #18692
from a triple-fault (instant reboot) into a double-fault KDL.
On some rare memory-corruption KDLs, I have seen pages with
"0" for all fields including page_num. So now we compute the
expected page number from the page's offset into sPages
and print an additional line if it doesn't match what's in the
page structure.
This way, FIONBIO and O_NONBLOCK will no longer get out of sync,
and additionally, FIONBIO can be used to change non-blocking
status of regular (non-socket) FDs, too (which some applications
seem to take advantage of, to avoid needing to fetch the open_mode
before calling fcntl.)
Change-Id: Id894fe76c79ac373c0121a003d68180a3d9b6560
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7697
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Some systems (e.g. NTFS through WSL1) support arbitrarily-large
extended attributes, but do not preserve case on attribute names
(or disallow more characters than the existing manglers took
care of.)
So, this adds a mode in which attribute names are encoded as
hexadecimal. At present it must be manually enabled; in the future
it may be possible to modify ./configure to activate it
automatically.
Change-Id: If20e4cb1cf4153cccc918ce6d51761426055290c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7698
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
* Make the consumer-count int32 atomic, avoiding the need for
all get/put operations to go through a global lock.
* Disable the code that unloads the stack interface when there
are no consumers. Otherwise, we wind up repeatedly loading/
unloading the stack interface during the boot process (e.g.
while sockets are being created and destroyed during net_server
startup.)
In the future, if we want to really unload it, we can add some
interaction with low_resource_monitor or something like that.
Reduces register_domain call count during boot from 31 to 7
(it appears the stack was loaded and unloaded 5 times, before
it stayed loaded the 6th.)
Otherwise, modules that depend on each other will be repeatedly
loaded and unloaded. This reduces the number of register_domain()
calls on a standard boot (of @minimum, at least) from 43 to 31.
Remove the `ByteOrder.h` and `SupportDefs.h` Haiku-specific headers
from `bsd/endian.h` on GCC >= 4 and replace them with compiler builtins.
This prevents some unwanted symbols like `type_code` causing name
clashes in ported applications.
Change-Id: Id88791ea5954c260f4e7f5e82a564f3ae6bafe69
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7642
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Font size have no direct relation with actual text line height and is a
choose of a font designer. Ascend + descent formula should be used to
calculate actual text line height.
`BRect` `right` and `bottom` coordinates are inclusive so it means for
example `BRect(0, 0, 15, 15)` width is 16 pixels.
`BRect::Width`/`Height` methods returns `right - left` and
`bottom - top` accordingly so actual size in pixels bigger by one. There
is some confusion that string width and rect width have a difference by one.
Change-Id: If29f8a2e6804a90e63dd2d92580160160229392f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7668
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Fix fPosition and fTerm not being initialized when expr is NULL
at line 1162.
Pointed out by GCC14.
Change-Id: If883ac0cc32e3418d0e3b49b42012efd861d65f4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7641
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
before trying to write to the frame buffer.
* QEMU can now be started without a standard vga output (-vga none).
Change-Id: Id46cd4d70ce16e2156e0b0668fb88f09112067a0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7667
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Fill the buffer also for NUL character.
Give the buffers at least the minimum needed: 4 characters for each of
at most 4 bytes and an extra one for the ending NULL.
Fixes: #18651
Change-Id: I1ca931ad5673baaca3fb08ebfe189dca7093c80e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7666
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
This tells the compiler that this function takes a format string as a
parameter, and returns a "similar" string with the same formatting
operations. This allows the format string to "propagate" to prinf-file
functions (including BString::SetToFormat) and the format string to be
actually checked with the arguments passed to that function.
Without this, all translated strings were not checked to match with
their arguments.
Change-Id: I5c3c5cbfe7dfede9a6f45cad47a7524f9138fac0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7663
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Previously these were not checked by the compiler due to a missing
function attribute.
Unfortunately, for the translation macros to work, the translated string
must be identical in all architectures (otherwise, we would need
different translations and different catalogs for each). This means the
B_PRI* macros can't be used, and instead the parameters must be in one
of the types handled directly by printf. Change the variables types
directly where it was easily possible, and otherwise, use a cast.
Change-Id: Ib77a7e378b7c508f6e7a015bbe3cbb4c2c096bfa
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7665
Reviewed-by: waddlesplash <waddlesplash@gmail.com>