Commit Graph

67317 Commits

Author SHA1 Message Date
PawanYr
372d066f2f TeamMonitor: Group teams.
Programs like Iceweasel and Falkon/QTWebEngine spawn lots of processes
that clog up Team monitor. To reduce the clutter, group teams under the BApplication that spawned them.

Groups are collapsed by default, and the tree only goes one level deep.
If a BApp spawns other BApps with the same executable, they are grouped
under it.

Also, fix bug where opening Team monitor before be_roster has info for a
BApp (immediately after launch) can sometimes cause the 'Quit' button to
be incorrectly disabled.

Also, update BOutlineListView::RemoveItem documentation; neither the
BeBook nor the HaikuBook mentioned that these will both remove *and
delete* child items (BeBook mentions removing, HaikuBook mentions
neither), which cost me some time debugging . . .

(a previous version of this patch grouped solely by name)

Change-Id: I29c627fbc905da5b5dc7145589f8da21ae8ba6fe
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8770
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2025-01-10 03:53:34 +00:00
X512
44cc18e1c4 app_server: make AS_SET_DECORATOR use the same error handling as other setters
Change-Id: Ia094099caddf2e53b0a5af814516e182c4404227
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8816
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>
2025-01-10 03:40:22 +00:00
Alexander von Gluck
f1ea2e7ad4 radeon_hd: Ensure userspace accesses the AtomBIOS rom is R/W
* We should only need R/O in theory, but AtomBIOS has issues with R/O
  for some reason that needs investigated (#19348)
* For now, we keep it R/W to userspace so radeon_hd doesn't break after
  33c3179

Change-Id: Id50c8916690e6068c94fc496bbe89e80d7ba1bf8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8817
Reviewed-by: Alexander von Gluck <alex@terarocket.io>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2025-01-10 03:38:07 +00:00
Augustin Cavalier
9eae4e9bd4 kernel/vm & libroot/os: Move selection of B_RANDOMIZED to libroot.
This way, the syscall will just adhere to whatever's passed,
in case something has need of bypassing ASLR selectively.
This also enables randomization for clone_area, which wasn't
before, it appears.

Also put the ABI version checks behind an #ifdef.
2025-01-09 14:06:44 -05:00
Augustin Cavalier
16e17faf59 kernel/vm: Block teams from cloning read-only areas with write permissions.
Enforce this via protectionMax so they can't set it through
set_area_protection either.

Also adjust a few log messages for consistency.
2025-01-09 13:58:28 -05:00
Augustin Cavalier
603df32f9b kernel/team: Fix typo in common_get_team_usage_info.
Problem was introduced in 6a75e767e6.
2025-01-09 12:35:32 -05:00
Humdinger
70a0a1d51e Web+: don't pop DL window to the front
When you download a file, the Downloads window is opened to show
the progress etc. This is good, but once opened, it shouldn't
get activated (= pop to the front and getting focus) for each
new download. Often you've continued scrolling a webpage and when
the download finally starts, the DL window steals the focus...

Change-Id: Icdbd6bc5e2f0441eff650428834348f3fb508906
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8799
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Haiku-Format: Haiku-format Bot <no-reply+haikuformatbot@haiku-os.org>
2025-01-09 17:22:44 +00:00
Zardshard
84902f8854 Icon-O-Matic: Improve variable names
Change-Id: I71610f53ad4ee70396edfb597699471fc180c96e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8773
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
2025-01-09 11:42:51 +00:00
Augustin Cavalier
48273952cf packagefs: Clean up ZSTD rules in Jamfile.
* There's no such thing as zstdSources anymore, put the real
   file in here.

 * Move the zlib Includes up, so they match.

 * Slightly reorder the logic inside the "if" to better match
   the Support Kit Jamfile.

Fixes a missing dependency on the Zstd headers.
2025-01-08 23:39:39 -05:00
Alexander von Gluck
bba724134f riscv64/uart/sifive: If we get an invalid clock, skip setting baud
* Prevents us breaking a potentially working serial uart.

Change-Id: I57bed42cfa571d3d961ee07f380c96b62c7f34d6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8798
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2025-01-09 02:50:32 +00:00
Alexander von Gluck
1a6cfd7849 boot/efi/dtb: If we can't find a clock-frequency, set a failure condition
* If we don't find a clock frequency, it can be worked around later
  in a critcal code path for uart. Flag a failure or unknown with -1

Change-Id: I34d078da7471f559aafcf8926dc646aa9a7d4867
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8797
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Reviewed-by: Alexander von Gluck <alex@terarocket.io>
2025-01-09 02:50:32 +00:00
Alexander von Gluck
b2474d284f 3rdparty/cross-compiler: Various fixes and multi-host arch support
Change-Id: I57e8a0be75950c767d115131b838006036d4bc0e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8796
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2025-01-09 02:50:32 +00:00
Augustin Cavalier
8ecc31ca7b Errors.h: Add ESOCKTNOSUPPORT.
It's in POSIX.1-2024, see
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/errno.h.html

Fixes #19347.
2025-01-08 11:35:35 -05:00
Augustin Cavalier
2a6dd3744d kernel/block_cache: Clean up uses of errno.
Improves another case like the one fixed in the last commit, and
avoids referencing it multiple times in a row unnecessarily.
2025-01-08 01:19:21 -05:00
Augustin Cavalier
0d139d259e kernel/block_cache: Make sure we return an error if block reading fails.
In #19343 it appears that read_pos returned "No error" but 0 bytes read.
We need to return an error code in this case, lest whoever called us
think the block was read in correctly after all.
2025-01-08 01:14:44 -05:00
Augustin Cavalier
1c956c9bf4 bootloader packagefs: Drop fModifiedTime.
Nothing uses it at present. This saves 8 bytes per PackageNode on 32-bit
and 16 bytes on 64-bit (mostly just EFI). We allocate a PackageNode
for every file in haiku.hpkg, so this is a significant savings in
the small bootloader heap.
2025-01-07 17:34:44 -05:00
Augustin Cavalier
babcaa3c29 runtime_loader: Resize heap areas instead of creating new ones.
This is more efficient and works most of the time. Additionally,
we can potentially join with a previous free chunk in the allocator,
avoiding extra fragmentation on the heap.

app_server (on x86_64) only has 1 "rld heap" area after this change
with a size of 0x50000 (320KB), whereas previously it had around 7
with a total size of 0x80000 (512KB).
2025-01-07 17:30:29 -05:00
Augustin Cavalier
7137fc03b2 bootloader heap: Actually implement DEBUG_ALLOCATIONS.
The old define was really "check heap integrity", so it's split off.
In the userland test harness, this takes the total time spent in
the allocator from around 1ms to 14ms for all the allocations used
during a boot with "nightly" profile, so it seems acceptable to
enable it under KDEBUG.

Tested with both BIOS and EFI bootloaders, still works.
2025-01-07 17:30:28 -05:00
Augustin Cavalier
0f843fe15a tests/boot: Add boot_heap_replay_test.
This uses a recorded array of allocation operations and "replays" them.
The included .h with such an array is mostly for demonstration; the
real captures from bootloader logs are very large (half a MB or more)
and so not included here. A small node.js script that can generate these
from such logs is included.
2025-01-07 17:30:28 -05:00
Augustin Cavalier
9bf3184b3c kernel/util: Merge the bootloader and runtime_loader heap implementations.
They were mostly copies of one another, save for the glue code
and a few other things. Now they're mostly unified, and this allows
the test to be greatly simplified, too, since it can avoid including
any bootloader code at all.

The heap implementation itself should have no behavioral changes
from before. Those will come in future commits.
2025-01-07 17:30:24 -05:00
Augustin Cavalier
c55f4f2698 tests/boot: Make heap_test build again. 2025-01-07 12:33:15 -05:00
Augustin Cavalier
cb2aab8ca7 tests/boot: Cleanup heap_test a bit.
* Rename binary to boot_heap_test and source to heap_test,
   to better match other SimpleTests.
2025-01-07 12:20:04 -05:00
Augustin Cavalier
6a75e767e6 kernel/team: Convert Team linked-lists into DoublyLinkedLists.
They were hand-rolled singly-linked lists before. This adds 24 bytes
of size to the Team structure, but turns all the removal operations
in parent and process group into O(1) operations instead of O(N) ones.
Realistically, the Thread linked-lists should be converted as well,
but this is trickier due to interdependence on the Team structure.
2025-01-06 23:39:40 -05:00
Augustin Cavalier
cc9746dbc6 kernel/thread: Add a check for the current thread in Thread::Get.
This happens rather often, from thread_get_io_priority() and
rename_thread() in particular.
2025-01-06 23:39:40 -05:00
Augustin Cavalier
2b7da773ed app_server & libbe: Use server_read_only_memory for the colormap.
At present there's only ever one global one, so we don't bother using
an array for multiple screens (and we don't support multiple screens
yet anyway.)

This fixes a very old TODO, and avoids sending a ~32 KB port message
on every application startup.

Note that this breaks the app_server protocol ABI.
2025-01-06 23:39:39 -05:00
digitalbox98
3aa371a285 Icon-O-Matic: Add remove menu on Transformer
Change-Id: I0add19af4bb646215f2945a748eeaae3d875df17
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8762
Reviewed-by: Zardshard Zardshard <0azrune6@zard.anonaddy.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: humdinger humdinger <humdinger@mailbox.org>
Reviewed-by: nephele nephele <nep-git@packageloss.eu>
2025-01-06 18:48:52 +00:00
Humdinger
9eaffd12b0 Web+ bookmark bar: Minor GUI string changes
* Sentence casing
* Sort "Delete" in context menu to the bottom.
* Added BSeparator before "Delete" item to have this destructive
  action stand out.
* As bookmarks often have spaces, put their path/name in quotes.
* A bookmark path can be long, better start it in a new line.
* If the bookmark was successfully deleted, but removing it from
  the bookmark bar failed, we don't need to add the full path to
  the alert text, just use the name (= Leaf()).
* Fixed wording of error text when removing a bookmark from the bar.

Change-Id: Ie3cf32325bf77ca9fa5b60e3a49f02baae268090
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8771
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2025-01-06 16:04:32 +00:00
Jim906
46b22ab208 nfs4: Make buildable under userlandfs
* Adjust some nfs4 code depending on _KERNEL_MODE / USER.
* Add several functions needed by this driver to kernelland_emu.
* Fixes #15556.

Change-Id: I36c1727d9cff088aa93870806bfe69b46dbdd4e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8712
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2025-01-04 14:30:33 +00:00
Autocomitter
0fcac3a411 Update translations from Pootle 2025-01-04 08:09:34 +00:00
Augustin Cavalier
205d2be9e1 kernel/slab: Add block sizes up to 16384.
The size classes between 4096 and 8192 are very infrequently used
on both 32-bit and 64-bit; a total of 25 objects isn't uncommon
to see across all of them (while 4096 had 68 used objects and 8192
had 49.) We might as well consolidate these and add size classes up to
16384, to take some pressure off the raw allocator.

On x86_64, it seems that we wind up allocating a large number (> 1000) of DMABuffer objects that wind up in the class for 10240, so this
probably saves around 2 MB or so vs. using the raw allocator.
The other new classes have more minor usage (6, 5, and 14 respectively.)

During builds, there are a lot of process arguments (+ environs) that
add up to values between 8K and 16K, so this will benefit that too.

The block size classes seem to not have been changed since their
original introduction in hrev20896 (2007).

Change-Id: Ifff73ed97adf01739fad7f70a1129066925d4b4f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8763
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2025-01-03 22:09:48 +00:00
Augustin Cavalier
8272d53c70 kernel/fs: Use an object_cache for allocating FIFO ring_buffers.
Every shell execution creates and destroys a FIFO, it seems,
so it's good to avoid the raw allocator (and thus the kernel
VM translation map) here.

After this change, the only remaining use of the raw allocator
during a rebuild of HaikuDepot + the mime_db is the flatArgs
malloc(), and the change to increase the block sizes to 16K
will reduce that to a small number of calls.
2025-01-03 17:08:10 -05:00
Augustin Cavalier
936414d23d packagefs: Make sure the parent directory really exists in lookup().
If the package was uninstalled, then it may not.

Fixes #19327.
2025-01-03 15:46:47 -05:00
Augustin Cavalier
11be6ba960 kernel/cache: Add a TODO in VMVnodeCache about needing memory commitments. 2025-01-03 15:42:32 -05:00
Augustin Cavalier
8908bfaeee freebsd_network: Cleanups to device methods.
* Rename function pointers in struct device for consistency,
   and adjust all consumers. Use a switch() in the loop over methods.

 * De-indent some code where possible.

 * Remove an obsolete comment.
2025-01-03 15:41:52 -05:00
Christof Meerwald
def75fa413 libroot: Don't call pipe2 from pipe
Calling pipe2 from pipe is problematic in cases where a program
implements its own pipe2 emulation, see
https://discuss.haiku-os.org/t/emacs-not-starting/16125/13

Change-Id: I317946fd95b98671d382c09ccd6fff2600f9e75b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8768
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2025-01-03 20:20:14 +00:00
omesh-barhate
855fbbc3a6 WebPositive: Add context menu to bookmarkbar items
Allows to rename and delete bookmarks

Fixes #10963.

Change-Id: I21cbc34291f1f564c92ce2dcb4d76098823987bb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6082
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
2025-01-03 19:50:41 +00:00
Augustin Cavalier
b487eec70b freebsd_network: Skip add_child_device before probe().
This isn't the BSD behavior, but it saves a lot of time in allocating
large softcs (many larger than the block allocator can handle) as
well as method lookups.

Only one in-tree driver actually seems to try and use the softc
during probe: broadcom570x. We can just add a small patch for it
to skip that set when sc == NULL, as nothing in the method
dereferences it.

Tested with ipro1000, rtl81xx, realtekwifi (USB), all still work (and
of course all other drivers' probe() are called every boot, so
those at least don't have problems when the devices aren't present.)
2025-01-03 14:10:42 -05:00
Augustin Cavalier
c8cd20aeff freebsd_network: Resolve methods by ID instead of name.
The IDs were introduced for iflib support, but we can make use of them
in here as well.

Also expose the "resolve_method" function for internal use.

Shouldn't break anything; BSD drivers still seem to work.
2025-01-03 14:01:28 -05:00
Augustin Cavalier
12d6ecf0df kernel/fs: Allocate FD tables separately instead of in one malloc().
This way, we significantly increase the FD table sizes that can
be allocated without needing a "raw" allocation: previously
an FD table size of 512 would've been too large (on x86_64),
while now, tables of up to size 1024 will fit (so long as the
largest block allocator size is 8192, anyway.)
2025-01-03 12:40:13 -05:00
Augustin Cavalier
5911165316 kernel/fs: Consolidate allocation of FD tables.
Adjust vfs_resize_fd_table to support allocating tables when
none have been allocated before, and then just use it in
vfs_new_io_context rather than doing the same calculations
and allocations.

No behavioral change intended.
2025-01-03 12:28:25 -05:00
Augustin Cavalier
66f51cb3b9 kernel/team: Do not inherit anything from the kernel's IO context.
We already didn't inherit FDs, which meant that the only thing we
did meaningfully inherit was the table size. That meant that basically
no applications actually had a table size of the default 256, but all
were at the kernel's 4096 (except Tracker and anything started by it,
as Tracker resets it to 512), and also that basically all applications
had FD tables allocated with the raw allocator instead of the block
allocator, which isn't very efficient.

Since this reduces the default FD table size, some applications
might encounter problems. However, build systems and other such
tools should already increase this by default as needed, and it's
easy enough to patch in calls to setrlimit() if it turns out
some applications needed a higher default after all.

Also remove a redundant call to vfs_exec_io_context. Calling
vfs_new_io_context with the second argument set to "true"
already skips cloning CLOEXEC FDs.
2025-01-03 12:26:13 -05:00
Augustin Cavalier
9479a57c4e kernel/slab: Organize block-sizes array by size increment.
This way the patterns are clearer.
No functional change.
2025-01-02 23:22:38 -05:00
Augustin Cavalier
d4a1fc648b kernel/vm: Drop VMCacheRef::ref_count.
Nothing touches it at all.
2025-01-02 21:32:44 -05:00
Augustin Cavalier
0bd8ba1b9e kernel/vm: Convert sAvailableMemoryLock into an rw_spinlock.
In most cases, we just need a read spinlock and then atomics
when updating this value, significantly reducing lock contention.
But this also paves the way for the use of these methods in
page-related hot paths, e.g. for reserving memory as well as pages
when mapping page tables.
2025-01-02 16:01:33 -05:00
Augustin Cavalier
c05dec40eb kernel/vm: Allow reserving more memory than system RAM has.
Now that we don't wait the full timeout in most cases, this "optimization"
isn't really necessary; and it was also preventing reserving amounts
of memory that would require both RAM and swap, which is suboptimal
but there's not really much reason to prevent it.
2025-01-02 15:36:52 -05:00
Augustin Cavalier
74012f55ed kernel/vm: Fail reserving memory more rapidly based on a retry count.
Previously, we would run the low resource manager continously in
a loop until reaching the timeout. This used up a lot of CPU
needlessly, because if the manager fails to release the memory
we need in the first few runs, it's unlikely to do so later.

We could add another waiting mechanism here, but ultimately
it seems to make more sense to just fail early before reaching the
timeout at all, in this case.

Improves system responsiveness under high memory pressure.
2025-01-02 15:35:33 -05:00
Augustin Cavalier
f27c94e4d3 kernel/fs: Don't hold the hot-vnodes lock too long in free_unused_vnodes.
vnode_used also acquires it, and acquiring a read-lock recursively
is illegal and can lead to deadlocks. Holding it across a vnode
lock acquisition isn't a good idea either. We only need it to hold it
before acquiring the unused-vnodes lock, and we can actually skip
acquiring that a second time altogether.

Should fix a deadlock observed by PulkoMandy.
2025-01-02 12:28:45 -05:00
Augustin Cavalier
802fa4afae kernel/arch: Add missing handling for _flags == NULL in the PAE UnmapPage.
This was missed in 7651b97c0a.
2025-01-01 17:10:01 -05:00
Humdinger
8aec27565f Rename notification sound names
Having "Notification" at the beginning of the sound names makes
sure their entries in the Sounds preferences are always next to each
other.

Change-Id: Ia47431ecd4c5e8c346f1417a4d29a151c06217cf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8737
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
2024-12-31 07:37:02 +00:00
Augustin Cavalier
e6a4a197e2 PowerStatus: Quit if asked to install in Deskbar when already installed.
We don't want to open a window in this case.
2024-12-30 21:33:31 -05:00