Commit Graph
100 Commits
Author SHA1 Message Date
waddlesplash 4316066974 Revert "btrfs: partially implemented btrfs_write_stat"
This reverts commit f16979003a.

Reason for revert: Broke the build.

Change-Id: I60ed4a4c4532810c32c6c5029a21ba8d31f92aa9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3055
Reviewed-by: waddlesplash <[email protected]>
2020-07-22 02:26:14 +00:00
Augustin Cavalier 913f009e94 XHCI: Add a few comments and remove the documentation file.
The documentation file (which PulkoMandy only merged today) was created
over a year ago from a short conversation I had with him, and by now
a lot of its information is already outdated or has been merged into
comments in the driver already (specifically, the notes at the end about
error messages no longer apply as there are different ones, and the
bugs causing those errors have since been fixed.)

A few of the statements in it were not noted in the driver, though,
so I have added those as comments.
2020-07-19 15:44:58 -04:00
Augustin Cavalier 7d1a9d7874 atheroswifi: Enable 802.11n and "AR5416 interrupt mitigation."
FreeBSD apparently enables these options by default.

This should enable support for 802.11n (i.e. HT mode) on Atheros
chips that support it, of which there are quite a few.
2020-07-08 21:30:20 -04:00
Augustin Cavalier 4639c4e898 headers: Add exp10 declarations to gnu/math.h.
These are GNU extensions so they need to be behind _GNU_SOURCE.

Fixes #16371.
2020-07-07 20:48:58 -04:00
Augustin Cavalier 21e213d3b0 CodyCam: Use "%s" instead of printf'ing a buffer directly.
Fixes #16375.
2020-07-07 20:44:08 -04:00
Augustin Cavalier e6c710f4bb Tracker: Set a minimum size on the count view...
...when it is paired with a horizontal scrollbar. This has the
added benefit of restoring the previous horizontal scrollbar size,
it having been lost in the prior refactor due to the "container views"
removing 2 pixels for the borders (previously, there was a different
sizing system for the count view that provided it.)

Fixes #16368 item 1.
2020-07-06 23:40:55 -04:00
Augustin Cavalier c0a15174a6 Tracker: Restore prior text-rect bounds in the count view.
The one-pixel offset greatly improved the text alignment under HiDPI,
but degraded it on non-HiDPI. I guess one pixel really does make
that much of a difference; so this will have to be revisted.
2020-07-06 22:34:13 -04:00
Augustin Cavalier 94cc40b15e Tracker: Add a minimum font size for the count view.
Based on the logic from the title view.
2020-07-06 22:23:36 -04:00
Augustin Cavalier df2e6c7a52 Tracker: Force the horizontal scrollbar to always be the preferred size.
See inline comment. Should fix second part of #16368.
2020-07-06 22:18:28 -04:00
Augustin Cavalier f82f94ef79 Tracker: Remove partial support for custom fonts in PoseView.
BFont is by default bitmap-spaced, so we do not need to make
a new font just to add bitmap spacing. The rest of the code
assumes in places that we have the same general characteristics
as be_plain_font anyway, so having these bits of code does
not make a lot of sense.

Also correct the list element height computation to now just use
be_plain_font directly, which will work even when this is the first
PoseView created (i.e. before the font height has been read.)
2020-07-06 22:09:02 -04:00
Augustin Cavalier 76fcfb697e Tracker: Remove extra space between pose controls and buttons.
Now that the scrollbar is part of the pose area, we no longer
have to include its height in the spacing of the pose view
from the buttons and the bottom of the window.

Mentioned by X512 in #16368.
2020-07-06 21:52:47 -04:00
Augustin Cavalier 8539dfdac2 BScrollBar: Use the minimum as the preferred size in the alternate axis.
This was the behavior before the commit yesterday that unified the
two methods of computing the preferred size. It seems some applications
expect this to be callable without a window lock, so this works when
the other method does not.

Fixes #16372.
2020-07-06 21:40:51 -04:00
Augustin Cavalier c70ec71d0c freebsd_network: Move ticks/seconds conversions to sys/time.h and
rename.

They now match the names they have in FreeBSD.
No functional change intended.
2020-07-05 21:16:32 -04:00
Augustin Cavalier 17af7f6298 idualwifi7260: Re-enable multiframe RX.
It no longer causes KDLs; probably the fix for the use-after-frees
on 9xxx devices also fixed whatever caused this problem.
2020-07-05 21:10:32 -04:00
Augustin Cavalier 549e16ed2e Tracker: Remove scroll bar width from the right margin in file panels.
No longer needed, the layout will take care of this now.
2020-07-05 21:07:30 -04:00
Augustin Cavalier 749fbae043 Tracker: Fix PoseView list item height computation.
This gets list item margins on HiDPI much closer to their standard-
DPI counterparts.

Fixes #16178.
2020-07-05 21:02:24 -04:00
Augustin Cavalier ec25a0451d Tracker: Eliminate the fixed count-view size altogether.
This moves the scroll bars and the count view into the layout
inside FilePanels, so more shim views for compatibility are now made.

Fixes #13179.
2020-07-05 19:44:19 -04:00
Augustin Cavalier 58f263a2c5 Tracker: Remove usage of hard-coded count view size in ContainerWindow.
This makes the count view width, height, and font size properly
proportional in the container window. BFilePanel is not yet
fixed however.
2020-07-05 19:14:52 -04:00
Augustin Cavalier bdfb3cd7cd BScrollBar: Report a more correct maximum size.
This way, BScrollBar will now be scaled appropriately when used
within layouts, as it is in e.g. Tracker.
2020-07-05 19:07:44 -04:00
Augustin Cavalier b29bb4bec5 BScrollBar: Apply font scaling to preferred sizes.
As BScrollView has already been adjusted to use this, most applications
will now have properly scaled scrollbars on HiDPI systems.

All unadjusted controls and applications will still be able to use
the hard-coded constants as before, but these should eventually
be deprecated altogether and then removed.
2020-07-05 18:37:48 -04:00
Augustin Cavalier b022a5e224 BScrollView: Ask the BScrollBars what their preferred sizes are.
This replaces the use of the hard-coded scroll bar size constants
and instead asks the scrollbars for their preferred sizes directly.

Right now, this is a giant no-op since BScrollBar just returns
the same hard-coded size when asked. The next commit will, however,
change that.
2020-07-05 18:37:48 -04:00
Augustin Cavalier 9481a1ec39 BScrollBar: Unify PreferredSize computations.
Reduces code duplication. This should not significantly affect
actually computed sizes.
2020-07-05 18:37:48 -04:00
Augustin Cavalier 9fe3529f3e BScrollBar: Remove DISABLE_ON_WINDOW_DEACTIVATION constant.
It was always enabled, and disabling it would break ABI.
If we want to make it disable-able, it needs to be a setting,
but I don't really see a reason for that.
2020-07-05 18:37:48 -04:00
Augustin Cavalier e9815ed8b6 BScrollBar: Move SCROLL_BAR_{...}_KNOB_SIZE constants into the source.
They were not used anywhere else in the tree anyway. Resolves a TODO.
2020-07-05 18:37:48 -04:00
Augustin Cavalier 981f67b9c8 BAlert: Add cast to appease GCC2. 2020-07-04 19:35:20 -04:00
Augustin Cavalier 9a0cae9d28 BButton: Use BControlLook for label spacing instead of a constant.
This gets button proportions under HiDPI much closer to the ones
under a default font size. Still not quite there yet, though.
2020-07-04 18:43:30 -04:00
Augustin Cavalier 2d68cd06c7 HaikuControlLook: Scale frame insets.
This is a pretty simple change, but has a noticeable effect
on insets throughout the system under HiDPI.
2020-07-04 18:42:45 -04:00
Augustin Cavalier cf7c2ea69d BMenu: Make margins/padding more HiDPI-aware.
This greatly improves the appearance of menus under font-scaled systems.
The computations are written such that the margins should be unchanged
under a 12pt font size.
2020-07-04 18:19:26 -04:00
Augustin Cavalier 99e4ca5fc7 BAlert: Use factional scaling for icons.
The behavior of not making the icons smaller than their default
pixel size is (for now) kept, but when making them larger,
fractional scaling is now used.

This makes alerts look much better on my system, which has a font
size of 18 (i.e. 150% normal, so 32px -> 48px.)
2020-07-04 17:57:06 -04:00
Augustin Cavalier 8da1468de6 arpa/nameser.h: Fix build on GCC8.
ssize_t comes from sys/types.h.
2020-07-03 15:30:00 -04:00
Augustin Cavalier 4a230cfc6c SPARC: Remove ancient BSD arch headers.
None of these were used; they were all imported with the original
root Haiku commit, and they are totally unrelated to PulkoMandy's
new SPARC work. Plus, they were also under a BSD Advertising Clause
license.
2020-07-03 15:13:24 -04:00
Augustin Cavalier 657f041aee fnmatch: Replace BSD implementation with musl one.
The BSD implementation was under the Advertising Clause,
so we might as well take the opportunity to replace the
implementation entirely with musl's.

Header also rewritten to be a Haiku one; the constants
are left unchanged of course.
2020-07-03 15:09:33 -04:00
Augustin Cavalier 6996e5b271 headers: More removal of the BSD Advertising Clause.
Taken from FreeBSD; some minor cleanup elsewhere.

udp.h rewritten entirely as it contained no copyrightable
material and bears little resemblance to BSD's.
2020-07-03 15:00:37 -04:00
Augustin Cavalier ebffd73fc5 arpa/nameser.h: Cleanup.
* Remove functions not even FreeBSD defines.
 * Remove dependency on unnecessary headers.
 * Update copyright headers to match FreeBSD's; includes
   removal of the advertising clause.
 * Move some private structs to netresolv port_before.

Unfortunately, it seems musl implements very little of this file,
so we may wind up sticking with netresolv for its implementation.
2020-07-03 14:27:17 -04:00
waddlesplash 66f0993a1b Revert "BMenu: fix memory leak in scripting"
This reverts commit fb44a1cd72.

Reason for revert: may cause UAFs

Change-Id: I315ce4fc5cd1706ca07e7062fc0461b7fff7c831
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2980
Reviewed-by: waddlesplash <[email protected]>
2020-07-03 03:02:12 +00:00
Augustin Cavalier 1eabd14811 Network: Update DNSSettingsView after previous API deprecation.
Create a res_state on the stack and initialize it instead of using
the private API.
2020-07-02 19:35:07 -04:00
Augustin Cavalier 1a3518cf75 Add missing includes after previous commit. 2020-07-02 19:34:54 -04:00
Augustin Cavalier 2ed1a36d4b resolv.h & netdb.h: Clean up and simplify.
* Remove all functions and a number of constants that neither
   glibc nor musl define or support (and even FreeBSD does not
   declare a good number of these anymore.)
 * Redeclare the primary flags in terms of (1 << X) instead
   of raw 0x... for readability (the constants at the end
   do NOT match up to their definitions in glibc, musl, and BSDs!)
 * Remove usage of unneeded headers, and __BEGIN/END_DECLS.
 * Replace non-Haiku license headers with the ones from FreeBSD,
   which notably contain a removal of the advertising clause.

ABIs remain unchanged, but a small set of applications that
use these esoteric APIs may not compile anymore (are there
any remaining?)
2020-07-02 19:33:51 -04:00
Augustin Cavalier d91d9fe552 netresolv: Use a copy of resolv.h internally.
The next commits will remove libbind-isms from the public resolv.h,
which netresolv still uses, so it will need its own copy to continue
building.
2020-07-02 18:52:38 -04:00
Augustin Cavalier 22a5213517 padblocker: Remove unneeded SetSubDirSupportedPlatforms... 2020-07-02 18:52:01 -04:00
Augustin Cavalier cbf71a819f libnetwork: Replace some basic inet_* functions with the musl versions.
This beings the replacement of the libbind/netresolv-based implementation
with musl's equivalent. The code is less well commented in some places,
but it is well-designed and well-maintained, and the licensing situation
is much cleaner than the multi-BSD-licensed libbind-derivative code,
as well as being actively maintained (supposedly NetBSD has taken over
libbind/netresolv, but have not posted any portable code since 2013.)

The eventual goal is to replace the entirety of NetResolv with code
from musl, which will be an involved process as ABI compatibility
will be a problem. These functions at least are extremely
straightforward to replace.

Change-Id: Icfefaa90cbf56b012e4e42360be5b0f0c16d73bf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2943
Reviewed-by: Alex von Gluck IV <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: Axel Dörfler <[email protected]>
2020-06-22 16:02:31 +00:00
Augustin Cavalier 17dab0d52b inet.h: Remove "cidr" functions.
These are not in the standard and are not declared by glibc at all.
The symbols remain for any applications that are still using them,
for now.\

Change-Id: Ie6b4a6b5ec3231c304e05ce9cb38c67d9ee51ad7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2942
Reviewed-by: waddlesplash <[email protected]>
2020-06-22 16:02:31 +00:00
Augustin Cavalier 176d0e1041 app_server: Make use of BReferenceable in AlphaMask.
Extracted from https://review.haiku-os.org/c/haiku/+/2695
with a few minor tweaks.

May help with #16246, but I could only reproduce it intermittently.
2020-06-20 20:02:35 -04:00
Augustin Cavalier 67ace0bfab app_server: Use RecursiveLocker in AlphaMask instead of BLocker.
This avoids creaing a semaphore where it is not needed, especially
as most of these locks are never used from another thread (in the
reports in #16246, there are thousands of semaphores from this
with only a small handful having a "last acquirer" != 0.)
2020-06-20 19:46:22 -04:00
Augustin Cavalier b344d252e9 kernel/file_cache: Move write_zeros_... call out of else.
Style only, no functional change. Requested by axeld.
2020-06-20 17:21:56 -04:00
Augustin Cavalier be1cc9c890 kernel/vm: Make the page_scrubber wait on a condition.
On an idle system with 1GB RAM and the 100ms timeout, it takes multiple
minutes for all the pages in the system to get cleared after boot, but once
they do, the page scrubber will then remain idle for seconds to even
minutes at a time, so this is clearly worth it.

The "free pages condition" was unused before this commit, so I have
repurposed it (and unpublished it.)

Change-Id: I7034677a1e51c97c2baf11b772db3a31c0e1adfa
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1699
Reviewed-by: waddlesplash <[email protected]>
2020-06-20 21:18:57 +00:00
Augustin Cavalier 0786d50332 DMAResource: Validate that alignment <= block_size.
The code here cannot handle the case where alignment > block_size,
so anything calling Init() with these parameters is invalid.

Fixes #15902 (nvme_disk was long since adjusted, so this is a defense
against code being written in the future.)
2020-06-20 15:39:10 -04:00
Augustin Cavalier 5f9ca54d1a BHttpResult: Include errno.h. 2020-06-20 14:41:44 -04:00
Augustin Cavalier a32381ee57 BFS: Fix typo in prior commit. 2020-06-20 14:22:31 -04:00
waddlesplash 2d69e313a8 Revert "app_server: fix transformations in BPicture"
This reverts commit b8e5671d53.

Reason for revert: Broke all builds.

Change-Id: Ie7c5b4a3c877894a1dc49a9de7a19f79e7eb2ab7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2897
Reviewed-by: waddlesplash <[email protected]>
2020-06-10 01:19:59 +00:00
waddlesplash 9ab0dec545 Revert "PackageKit: HPKR BMessage Format Fix"
This reverts commit 82f985c036.

Reason for revert: Broke the build with this message:
/packages/groff-1.22.3-1-x86_64.hpkg: Scheme missing.

Change-Id: I9dea4986238cedfdc33c84739e69a331add09cdf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2896
Reviewed-by: waddlesplash <[email protected]>
2020-06-10 00:20:21 +00:00
Augustin Cavalier c4bc688304 HaikuPorts: Sync build-packages again.
Change-Id: I595af8dda23baad924a053ffa685ddddb83de11d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2884
Reviewed-by: waddlesplash <[email protected]>
(cherry picked from commit 4c383d13a8d6fd5b98c8a5c3f40508ec9684f8cb)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2885
2020-06-06 01:41:18 +00:00
Augustin Cavalier 734c1e0491 HaikuPorts: Update build-package set.
This pulls in the final translations for applications for R1/beta2,
and also the new HaikuWebKit.

Change-Id: I2bfb8933dcf35239f6962f8bee2dea507dec6fd5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2869
Reviewed-by: waddlesplash <[email protected]>
2020-06-03 04:11:40 +00:00
Augustin Cavalier e6bc6d8072 Revert "Add gmp and mpfr to the regular image package set."
This reverts commit ef78f1eda0.

The new package sets do not require this.

Change-Id: I009a242f16c44510940645e0b71baaf757eca44b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2868
Reviewed-by: waddlesplash <[email protected]>
2020-06-03 04:11:40 +00:00
Augustin Cavalier cf5cb76ffa build: Add BufferIO stub header. 2020-06-02 00:03:18 -04:00
Augustin Cavalier a68e59dd1d freebsd_network: Fix destruction of ref-counted ext_bufs.
The check as to whether or not the buf should be freed was wrong,
leading to incorrect frees.

Fixes double-free KDLs under the idualwifi driver that occur
on boot extremely frequently.

Change-Id: Ia411a6f5c31dd30764705cd87840797f862b4020
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2862
Reviewed-by: waddlesplash <[email protected]>
2020-06-02 03:13:59 +00:00
Augustin Cavalier 50c7fbacb7 kernel/file_cache: Fix writing zeros in the cache_io case.
Should fix #16039 again.

Change-Id: I00c6566764a20e6ec5e8c99b0ebb2e304a5191ee
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2855
Reviewed-by: waddlesplash <[email protected]>
2020-05-31 21:52:10 +00:00
Augustin Cavalier 0d7d1fccff libroot: Implement the general case of posix_spawn using load_image.
The goal here is to avoid potentially expensive fork()ing.

The time for a fork() is (for a process with no real heap usage
and thus few areas) 300-400us on my system. load_image() takes
3000us (3ms) or so, but this of course includes exec() time.

Overall, for compiling HaikuDepot (with a tweaked jam to use
posix_spawn on Haiku, not just on Linux) there is a slight
decrease in time:

before:
real 1m21.727s
user 1m2.131s
sys  0m43.029s

after:
real 1m19.472s
user 1m1.752s
sys  0m41.740s

Which is probably within the realm of "noise", so more benchmarks
are needed. Likely if we tweak our jam usage to not need as many
shells when running commands, this would be a much more noticeable
change.

Change-Id: I217f2476b1ed9aa18322b3c2bc8986571d89549a
2020-05-30 01:19:48 -04:00
Augustin Cavalier 7d72ed0184 configure: Use /bin/dash as JAMSHELL if available.
On platforms (such as Haiku) where dash is available or can be installed
but is not the default /bin/sh, this can provide a significant improvement
to compile times vs. /bin/bash or other more complex shells.

At least under Haiku, this is around a ~10% "real" time gain for builds.

This also allows one to specify a JAMSHELL by passing that environ
to ./configure.
2020-05-29 23:11:47 -04:00
Augustin Cavalier 6c53279f5b Locale preferences: Set a default for filesystem/application translation.
Change-Id: I5a7219a3380a8a2f72fe43b84ea0e85cc5454033
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2813
Reviewed-by: waddlesplash <[email protected]>
2020-05-25 22:37:24 +00:00
Augustin Cavalier f51ea162ef Locale: Enable folder/application translation by default.
Should fix #16076.

Change-Id: Ibf109453c11a83e840774c079c7878cc10f2dad4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2811
Reviewed-by: waddlesplash <[email protected]>
2020-05-25 22:26:25 +00:00
Augustin Cavalier b0e768ac9c first_boot: Remove unused 'Locale settings'.
Change-Id: Iaf81d8741066c5da6d202c0baf3e95f7eb88caf4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2810
Reviewed-by: waddlesplash <[email protected]>
2020-05-25 22:26:25 +00:00
Augustin Cavalier 60d011e07f HaikuDepot: GCC2 fix.
Change-Id: Idef303343a009df8ec858f5a2a596b6292366d57
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2806
Reviewed-by: waddlesplash <[email protected]>
2020-05-25 02:18:26 +00:00
Augustin Cavalier f0a8640b45 app_server: Add locking to the Decorator class.
This class can potentially be accessed by multiple "tabs" (windows)
at once, so it must be read/write locked to account for that.

Fixes #16027.

Change-Id: I9cc741874caed4997497b03c8893bc2acb0e6fe7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2779
Reviewed-by: waddlesplash <[email protected]>
2020-05-23 17:59:20 +00:00
Augustin Cavalier 550e8532f8 nvme_disk: Perform the new lba_count computation only once.
As suggested by korli. No functional change.
2020-05-21 00:40:52 -04:00
Augustin Cavalier 8ba0b5eb9b kernel/file_cache: Properly size I/O request vectors when writing zeros.
Should fix #16039.

Change-Id: Ifc5c79354979aaa7b27b09acc6d6450e21146e76
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2727
Reviewed-by: waddlesplash <[email protected]>
2020-05-21 01:41:41 +00:00
Augustin Cavalier 4d0ad37aba nvme_disk: Avoid doing I/O larger than the maximum size, if possible.
libnvme can break up transfers that are too large, but to do so,
it allocates one nvme_request struct (of which it has a large,
but finite, pool) per segment. Since we are already iterating
over "vecs", we might as well cut off transfers after they
would otherwise go over the limit.

Individual IOVs that are too large are left alone, though;
libnvme can still handle this. But at least we no longer try
to do all I/O in one go.

Tested in a similar manner to the previous commit.
2020-05-19 00:33:06 -04:00
Augustin Cavalier 8eb950cd64 nvme_disk: Fix ior_reset_sgl.
The "offset" parameter was not actually an IOV offset, but actually
a byte offset across all IOVs... whoops. Somehow, this went unnoticed
as most controllers have large enough maximum transfer sizes
that we would in practice not hit the limit (even with bs=1M
dd tests!)

KapiX's controller, as seen in #16049, however, has a maximum
transfer size of 64 pages; much smaller than these other controllers,
so it did trigger this behavior and exposed the bug.

Tested by adding an artificial limit of 2 blocks as the max
transfer size (which makes things pretty slow, as you might
expect.)
2020-05-19 00:30:59 -04:00
Augustin Cavalier 16a59954e7 nvme_disk: Error check after do_nvme_io_request.
Fixes partial transfers being reported as larger than they actually were.
2020-05-19 00:28:18 -04:00
Augustin Cavalier 4d2de4ea40 HaikuDepot: Fix GCC2 build. 2020-05-18 22:37:23 -04:00
Augustin Cavalier cb53bf1e28 nvme_disk: Fix nvme_qpair_submit_queued_requests.
I added this function to make the queued requests logic more robust,
but I failed to notice that since it is called from nvme_qpair_submit_request,
it would just result in a deadlock of any qpair that had requests
queued.

May help with some of the "qpair lockup" tickets.

Change-Id: I5ff63b509ae8812356d0d33f019027d3159b6685
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2735
Reviewed-by: waddlesplash <[email protected]>
2020-05-18 00:23:23 +00:00
Augustin Cavalier f37d2d10a0 idualwifi7260: C89 fixes.
Change-Id: I8138f4ed4877b3f7e8eb54ad0bc64a60278e8b61
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2734
Reviewed-by: waddlesplash <[email protected]>
2020-05-17 23:38:30 +00:00
Augustin Cavalier ba5694b017 idualwifi7260: Port changes from newer FreeBSD.
This adds support for the 9xxx series of devices.

Change-Id: I43385e91b91201732397b79c38bd9bb4f3a18f1b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2733
Reviewed-by: waddlesplash <[email protected]>
2020-05-17 23:34:32 +00:00
Augustin Cavalier a3a192c1cb acpi: Use mutex_trylock() for ACPI_DO_NOT_WAIT.
We do not need to go through all the overhead of mutex_lock_with_timeout()
if there is in fact no timeout.

Change-Id: I7891ae9138a7d45be934ac53412b82546d52b901
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2730
Reviewed-by: waddlesplash <[email protected]>
2020-05-17 19:34:02 +00:00
Augustin Cavalier 97310aa7fc Deskbar: Fix build after last commit.
Change-Id: Ice721e56b9ff8bbdd01dde65933d6fa0c750823a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2728
Reviewed-by: waddlesplash <[email protected]>
2020-05-17 18:42:41 +00:00
Augustin Cavalier 8ea697ab38 HaikuDepot: Move TextDocumentTest to "tests". 2020-05-17 12:36:08 -04:00
Augustin Cavalier 150edea615 HaikuDepot: Remove usage of ICU build feature.
Not needed after the last commit.
2020-05-17 12:30:21 -04:00
Augustin Cavalier e54b2d7cf2 kernel/lock: Fix build under non-KDEBUG.
I forgot to change MUTEX_INITIALIZER following removal of the
unused field.

Change-Id: I011c023ae00bb4576c8bcecf83546892fef3a77e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2719
Reviewed-by: waddlesplash <[email protected]>
2020-05-17 03:36:04 +00:00
Augustin Cavalier fd161d7bf2 kernel/locks: Remove ignore_unlock_count and fix races in lock timeout.
As far as I can tell, there is no reason to ignore unlocks, ever;
if no threads are waiting, then mutex_unlock() will act appropriately.
So all we need to do is increment the lock's count here,
as we are relinquishing our request for locking.

On the other hand, if we did not find our structure in the lock,
that means we own the lock; so to return with an error from here
without changing the count would result in a deadlock, as the lock
would then be ours, despite our error code implying otherwise.

Additionally, take care of part of the case where we have woken up
by mutex_destroy(), by setting thread to NULL and checking for it
in that case. There is still a race here, however.

May fix #16044, as it appears there is a case where ACPICA
calls this with a timeout of 0 (we should make this be
a mutex_trylock, anyway.)

Change-Id: I98215df218514c70ac1922bc3a6f10e01087e44b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2716
Reviewed-by: waddlesplash <[email protected]>
2020-05-17 00:22:15 +00:00
Augustin Cavalier 9585fabd61 BColumnListView: Consider current, not preferred, column width for overall preferred with.
Otherwise, the entire list will be scanned for row widths, which
is extremely slow with thousands of items, and may not be what
the user wants anyway, if they have set specific column sizes
which are larger/smaller than that.

Helps with #16012 and #15889 considerably.
2020-05-12 21:57:37 -04:00
Augustin Cavalier 95e5e933ab Pulse: Fix build. 2020-05-11 23:20:45 -04:00
Augustin Cavalier 9cfe144326 BCardLayout: Do not recompute size limits on visible item switch.
The size limits are already the minimum/maximum for all views,
not just the current one, so we do not need to recompute them
when the layout is invalidated due to an item switch.

Fixes #14675, and other performance issues on switching tabs
in layouted BTabViews, among other things.

Change-Id: I55bfe4ddb8c8a79c634634cfc27113205a790c42
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2677
Reviewed-by: Andrew Lindesay <[email protected]>
2020-05-11 00:41:52 +00:00
Augustin Cavalier 81f3f1485d HaikuDepot: Remove unused layout.
Change-Id: I37e06db6337cc3dcb1c1de56295a9ba3f211d630
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2676
Reviewed-by: waddlesplash <[email protected]>
2020-05-11 00:41:52 +00:00
Augustin Cavalier 0b5d48563d fs_shell: Prevent inclusion of BSD headers; fix DeviceOpener. 2020-05-10 12:44:46 -04:00
Augustin Cavalier 9304fbae8a uchar.h: Remove duplicate definition of mbrtoc32. 2020-05-09 16:15:55 -04:00
Augustin Cavalier cac30e4190 kernel_debug_config: Move global VMCache option to KDEBUG_LEVEL_2.
It does have a performance impact (as it serializes all VMCache
creations), and it is not that useful, so move it to KDEBUG_LEVEL_2
so that the beta releases (on KDEBUG_LEVEL_1) are not affected
by it.

(The nightlies are on KDEBUG_LEVEL_2, so this will not affect
them.)

Change-Id: Iab35d58f9d210651e3fd9027b75ea27a7a6928e5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2612
Reviewed-by: waddlesplash <[email protected]>
2020-05-09 03:43:20 +00:00
Augustin Cavalier a20a26e264 Versioning: Add BETA_2 and PRE_BETA_3 constants.
* PRE_BETA_3 is now the default in master.
2020-05-08 23:30:15 -04:00
Augustin Cavalier cf9bfa4bb0 SoftwareUpdater: Default to "full-sync" instead of "update".
Fixes #15899.
2020-05-08 23:06:30 -04:00
Augustin Cavalier 27ecd4761c build: More miscellaneous fixes for MSYS.
Remove the .exe hack, as it is not needed.
2020-05-03 19:31:22 -04:00
Augustin Cavalier 7a617f59fd configure & build: Add basic support for building with MSYS.
Also remove the MINGW support, as it was far too incomplete.

This *should* work under case-sensitive NTFS, but instead,
it seems #14963 occurs. So perhaps there is a GCC bug
related to case-sensitive vs. case-insensitivity after all.
2020-05-03 13:24:26 -04:00
waddlesplash 4835a173bd Revert "net_socket: getpeername now only works on connected socket"
This reverts commit 04fac889f7.

Reason for revert: Breaks Qt, the behavior is incorrect it seems.

Change-Id: I09d35c214c899d0c06d7780b13db795fb2a3393a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2538
Reviewed-by: waddlesplash <[email protected]>
2020-04-29 13:50:20 +00:00
Augustin Cavalier 18e9c8885f nvme_disk: Use DMAResource for bouncing.
This is a "best of both worlds" approach: if nvme_disk
determines the I/O can be done with no bouncing at all,
it will do so; otherwise, the I/O is done by the _bounce
method that uses DMAResource.

Thanks to mmlr for helping investigate some of the DMAResource
crashes and other oddities.

Fixes #15818 and #15123.
2020-04-27 23:37:01 -04:00
Augustin Cavalier 1b3ccbc50b nvme_disk: Overhaul to use physical-buffer-based I/O.
This fixes the virtual/physical mixup problems that plagued
the driver until now.

This is rather inefficent, though, as it does its own page-based
bouncing instead of using DMAResource. That will come in the
next commit.
2020-04-27 22:49:51 -04:00
Augustin Cavalier c1c239fefb kernel: Add mechanism in IOBuffer & IORequest to clamp the last iovec.
This is needed by CreateSubRequest, which creates a sub-request
using some subset of the passed IO vectors. In the case that the
last vector will not be fully used, we need to clamp its size
in the sub-request to the remaining length.

do_iterative_fd_io, used by vfs_read_pages (which is in turn
used by the file cache) used this to split up requests
into their constituent block-run requests. So, previously,
the invalid IO requests created by this could, under one possible
interpretation, overwrite valid file data and cause disk corruption.

It is slightly unfortunate that generic_size_t has no unsigned
equivalent, so we are left with 0 as the magic number here,
instead of -1. However, the passed "length" remains unchanged,
so any callers that pass the wrong value for lastVecSize
will be trapped by the assert added in the previous commit

Fixes #15912 (the assert added in the previous commit),
and potentially disk corruption caused by this.
2020-04-27 22:30:50 -04:00
Augustin Cavalier d939cacf6b kernel: Add assert in IOBuffer::SetVecs() that the passed length is the actual length.
These are, at present, triggered on rare invocations of vfs_read_pages.

See #15912.
2020-04-27 22:30:50 -04:00
Augustin Cavalier d26bbf4c90 build: Remove perl from the Development set.
This caused the nightly builds to fail, because perl is apparently
a dependency of something in the base set already.
2020-04-23 21:26:43 -04:00
Augustin Cavalier 5332b1ce28 freebsd_network: Remove bogus KASSERT.
As pointed out by halamix, root_size is set to > 0 during
radix_bitmap creation, and never changed after that. So
this is a bogus check.

Fixes #14941.
2020-04-23 01:05:33 -04:00
Augustin Cavalier ccb11fb4f2 libnvme_haiku: Name mutexes after the function they are allocated in. 2020-04-23 01:02:36 -04:00
Augustin Cavalier 9f703d301c libnvme: Unset ctrlr on teardown.
This way we do not attempt to tear down more than once,
which triggers an assert in mutex destruction.
2020-04-23 01:02:17 -04:00
Augustin Cavalier 9a3a70f437 libnvme: Add better asserts in SGL-to-PRP request conversion.
Taken from upstream (SPDK).
2020-04-23 01:01:47 -04:00