Commit Graph

62939 Commits

Author SHA1 Message Date
Augustin Cavalier
80519e78aa bootloader: Clarify comment in text_console.h.
The following colors are "foreground colors only" not "foreground colors,
only if".
2021-09-17 15:36:57 -04:00
Augustin Cavalier
5e2d0005c1 libroot: Fix previous commit. 2021-09-17 15:35:51 -04:00
Augustin Cavalier
ffbe2ad946 libroot: Reinstate tdestroy.
It was removed in hrev55422 as we never had declared it in any headers.
But it seems some software came to depend on it anyway. Reinstate it,
and add a declaration for it, behind _GNU_SOURCE.
2021-09-17 15:34:10 -04:00
Augustin Cavalier
aa04f48dcf Remove some unused headers. 2021-09-17 15:29:00 -04:00
Augustin Cavalier
5ee918678e USB: Track object busy-ness and wait for an unbusy state before teardown.
This reverts and replaces hrev53141, hrev53200~1, and hrev53888.

Two years ago (in hrev53141), I added checks to validate that Devices
were not in the process of being torn down before using them, to fix
a race condition KDL. Further logic was added in hrev53200~1 and in
hrev53888 for Pipes.

Well, upon closer inspection following the reports of #16794 et al.,
it appears upon closer inspection there were still two more race
conditions lurking in there: the first between Get and InitCheck, and
the second between InitCheck and use.

To resolve both of these, a new atomic "busy" flag is added to objects,
which is incremented before unlocking the objects array, and then
waited on before actually proceeding with teardown.

The older checks about initialization status are now superfluous
and are removed in favor of an earlier PutUSBID() invocation in Device.

While #16794 was fixed by hrev55429, some of those or related KDLs
might have been caused by these races. This also re-resolves #15115,
along with #14949 and #15710.

Change-Id: Ifcae84945a81123af5ef4683a6e33dc1eec5b23c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4421
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-17 18:25:00 +00:00
Augustin Cavalier
b3683d8aee XHCI: Get rid of the PortSlots array and use ControllerCookie in FreeDevice.
This array was introduced by korli in hrev44089~1 (2012). It "mapped"
ports to slots using a device's HubPort, and then used this value in
FreeDevice() to locate the xhci_device struct in question.

Well, when there are non-root hubs in use, the HubPort values can
of course collide, leading us to tear down the wrong device in many
circumstances. This appears to have been the true cause of #16794,
and probably also #16878 and #17266, and maybe even some others.
2021-09-17 13:33:02 -04:00
Augustin Cavalier
31caaec069 kernel: Print <DROP> at the beginning and not the end of dropped regions.
This way there is a better indication of where the drop occurred.
2021-09-16 15:05:48 -04:00
Augustin Cavalier
7cde125283 kernel: Write parts of truncated messages to the log.
In case any one message (or, more likely, importing the bootloader's
syslog buffer) is too large for our buffer, do not discard it, but
keep as much as we can, and print <TRUNC> at the beginning of it,
to distinguish from <DROP>. (Documentation already notes <TRUNC> as
a possible thing to find in the syslog.)
2021-09-16 15:04:54 -04:00
Augustin Cavalier
7fd1fb8745 kernel: Correct bootloader syslog buffer handoff logic.
If keep_debug_output_buffer is true, then we reused the syslog buffer
the bootloader allocated (and which has just been re-mapped above),
so we do not need to write the buffer in again (and moreover doing so
is incorrect, as it contains a raw ring_buffer header, and will be
larger than the buffer.)

This fixes "<DROP>" appearing at the beginning of all syslogs (or at least,
ones that began with handoffs from the bootloader) spuriously when
the whole buffer was really present anyway.
2021-09-16 15:02:05 -04:00
Augustin Cavalier
ad56cbbb6e USB: Add asserts under KDEBUG that IDs being put have no remaining children.
Change-Id: I100828d2724d65ab0841e1262c7db7e144b56aab
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4441
2021-09-16 13:17:34 -04:00
Augustin Cavalier
838251124c USB: Rework Device deinitialization and destruction.
* Destroy interfaces and endpoints before deleting the default pipe,
   as all of these may actually use the default pipe at any time
   while they are alive.

 * Remove the default pipe and then ourselves from the stack before
   deleting the default pipe, as it also may be used at any time.

May help with some of the open tickets about USB stack KDLs.
2021-09-16 13:17:34 -04:00
Franck LeCodeur
1fb138bf94 ext2: Fix build warnings, enable Werror
This fix is for ticket #9460 to enable -Werror for ext2.

- Unused functions are removed.

- The ASSERT macro was redefining a different ASSERT macro from the included files. Now it gets undefined first.

- One comparison side was cast to ptrdiff_t because X86_gcc2 complained about signed/unsigned comparison

Change-Id: Ib0caade2f83de34c04acc0fc6aa5ed50712daec4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4453
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-16 06:52:00 +00:00
Augustin Cavalier
4d21f567e7 XHCI: Fix up 3a71862e99.
Now the logic is actually identical.
2021-09-15 19:20:25 -04:00
Augustin Cavalier
1da090bc56 XHCI: Add assert that the context is really page-aligned if needed.
_OffsetContextAddr assumes it will be in order to do some rather
annoying pointer arithmetic, but that was never actually asserted.
2021-09-15 19:02:50 -04:00
Augustin Cavalier
2296578c93 XHCI: Put speeds in order.
No functional change.
2021-09-15 19:01:57 -04:00
Augustin Cavalier
decd5b8ff5 USB: Clarify that BusManagers do not really have usb_ids.
Instead their IDs are indexes into the stack, and are used primarily
for TRACE*() printing, so move the getter function into a "protected"
block and rename the variable appropriately.
2021-09-15 19:01:39 -04:00
Augustin Cavalier
3a71862e99 XHCI: Rework port route computation code.
The new code should be functionally identical to the old,
but it uses fewer variables and should be significantly easier
to understand than the old.
2021-09-15 19:00:38 -04:00
Augustin Cavalier
f20f55692d XHCI: The root hub address is always 1.
AllocateAddress() is the pre-USB3 way of doing things;
as we never use it anywhere else and it is specific to
each BusManager, we always just got 1, which is what
the root hub will always be anyway.

Additionally, clarify the logic in _InsertEndpointForPipe
that is special-casing the root hub.

No functional change intended.
2021-09-15 18:58:46 -04:00
Augustin Cavalier
05709fe3f7 headers: Fix B_CURRENT_IMAGE_SYMBOL for GCC2.
Apparently GCC2 does not like &__func__, so just drop the &.
Fixes #17253.
2021-09-15 11:38:20 -04:00
Augustin Cavalier
abe937985d libroot: Replace glibc search implementation with musl's.
glibc's hsearch and tree functions are old and rather slow.
While these APIs do not appear to be used very often, these
changes can make a big difference: in one benchmark I was sent,
this change is nearly a 10x speedup or more in some cases.
2021-09-15 10:52:02 -04:00
Augustin Cavalier
64e742def3 media: Declare wildcard fields const.
This is a source compatibility break from BeOS, but should not
be an ABI one (I checked, the symbols are identical.)

Also use "= {}" in the definitions of the fields. We use this
in plenty of places in the kernel, so it should be OK for GCC2.

Change-Id: Ibe05b2236d46024d7b4563ae16e1cc7140fed965
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4434
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-14 20:43:29 +00:00
Jérôme Duval
40793c1ef6 RAWTranslator: switch to libraw as backend when available
tested with .cr2 and .dng single pictures.

Change-Id: I9a4802300fd2afe14c085ca18faa8a1e20c52bfd
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4452
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-14 08:06:41 +00:00
Rudolf Cornelissen
f2a79670ae intel_extreme: Fixed virtualscreen setup, ticket #17261 2021-09-14 02:04:02 +00:00
Coldfirex
9a76b18fb6 Libnetapi: Fix wformat-security
Change-Id: I0898cd18e7721eee26ccbe557c385f4e61c3025f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4448
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-13 19:39:11 +00:00
Lt-Henry
a731585f88 HID: Fix usage page following hrev55413.
Modifications made on hrev55413 removed UsageID from array Items,
but also (bug here) broke UsagePage, needed by KeyboardHandler
in order to recognize items as Keyboard ones.

Fixes #17263.

Change-Id: I4b73c69240f31d3c8c2aacf6bab0d270f2053387
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4458
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-13 18:13:32 +00:00
Panagiotis Vasilopoulos
c1740f4f53 Drivers: Fix -Wformat-security
Follow-up for Alan Shearer's change. Useful when the buffer contains the
character "%".

Change-Id: Ia6771a2d71306ca97e7c03f0e986ad3cfe100684
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4459
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-13 09:24:14 +00:00
Jérôme Duval
cc6736afae StreamBuffer: fix Position() for read streams
the file position corresponds to the end of the buffer.

Change-Id: Ib67dcfe1f43d959777c2f6dbf84181f25a022a7c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4447
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-13 05:53:22 +00:00
Coldfirex
5b2fc19fa0 PC_Serial and USB_Serial: Fix -Wformat-security
Change-Id: Ia150eaf0e639c03b3d1f267d9ee582ff82bf0d21
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4442
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-11 16:59:47 +00:00
Lt-Henry
366e9a62e9 hid: Fixed report parsing bug. Support for keyboards using bitmap reports
* I've added support to multiple min-max ranges to array reports too.
* All possible usages are stored in an array (Vector<uint32>). Perhaps, this can be squashed into an array of ranges.
* Usage array is stored in HIDReport class, so there is only one copy of it.
* HIDReportItem no longer has UsageMinimum()/UsageMaximum() as this no longer works. Instead, a Usage() member has been introduces.
* HIDReportItems of type variable, have a Usage ID assigned to them. HIDReportItems of type array have a zero usage ID as it has no sense.
* Having a variable typed HIDReportItem to store a range of usages ID doesn't seem a good idea to me because Data() method would have to return the values of all usages... or perhaps ask for a specific usage value with something like Data(0x03). This will require changes in hid stack and overcomplicate things.
* A bitmap keyboard is a worst-case scenario: Near a hundred of usages (uint32) are stored and the same quantity of HIDReportItems are created (this is already happening on Haiku). It doesn't seem a resource drama to me.
* Keyboard Handler has room for improvement, but I would like to left that for another patch series.

Change-Id: I556fa0aebfda831ef5334be5ae3a37f099ffa35d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4403
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-11 11:12:38 +00:00
Jessica Hamilton
8f362bfdfc haiku_devel: use relative symlinks to libraries in haiku package.
* This helps with creating a sysroot, otherwise extracted package
  links refer to /system, which is outside of the sysroot.
* Should have no functional impact on Haiku, as these are already
  symlinks

Change-Id: I29f719dc2c0839dd090e7f33eea0b8f98e0d6355
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4218
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-09-11 11:12:10 +00:00
Autocomitter
b40866e65f Update translations from Pootle 2021-09-11 08:50:45 +00:00
Augustin Cavalier
60fee365f5 kernel/vm: Allow locking kernel space if allocating page_protections for userspace.
Some applications may request per-page protections for an especially
large area (e.g. multiple GB), which leads to allocating a rather
large page protections area (e.g. 512KB), which we cannot allocate
without locking the kernel space to get new slabs.

We only need to avoid locking the kernel space if the area in question
is in the kernel space, as in that case, kernel space will already be
read-locked by the current thread.

Fixes #16898.

Change-Id: If52413a594da66edfc2821811d959085a2c3c78e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4436
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-10 18:49:33 +00:00
Augustin Cavalier
2f001d82b6 kernel/slab: Add missing support for CACHE_DONT_LOCK_KERNEL_SPACE.
This codepath is only hit for especially large malloc'd areas that
do not fit into an object cache, which is a rather rare case to
have in tandem with DONT_LOCK_KERNEL_SPACE, but we need to be
prepared for it in this code anyways.

Probably this codepath would previously have caused a hang due to
attempted double lock of the kernel addres space. Unfortunately
it appears our rw_locks do not actually detect that at present,
so likely I should investigate that next...

Change-Id: I3c9059d3e3939271beeeff221ebc921bc07ddf00
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4438
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-10 18:49:33 +00:00
Niels Sascha Reedijk
530f89aa6d BString: rewrite cleanup methods
This removes the use of the destructor in the move assignment operator, as it
may rely on undefined behaviour from the compiler. Additionally, some duplicate
logic to dereference and free a shared string has been unified under
_ReleasePrivateData().

Change-Id: Ie9f51d598c734f83cd0fba49b651315c6e9c8aac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4440
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-10 05:34:06 +00:00
Coldfirex
6da19c9e40 tiffinfo: remove unneeded iostream.h
Compiling previously showed "fatal error: iostream.h: No such file or directory".  64bit didnt like simply removing the .h, though 32bit didnt complain.

Change-Id: I1d76f8007b662e5bf2006faf60f5bb3406bab18b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4443
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-10 04:51:57 +00:00
Coldfirex
198e5ee21c LoginApp: Fix -Wformat-security
Change-Id: I59786b57cee40b9fcb3e83da74b5c61dd7a5c550
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4437
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-09 22:25:48 +00:00
Gerasim Troeglazov
c377d66126 Cortex: use vector icons
Change-Id: I49f6bdf93366221330ca29281e3465d9b7452402
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4405
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2021-09-09 22:22:14 +00:00
Gerasim Troeglazov
b24faa52b4 VideoWindow consumer: buffer initialization shoud be done after format acceped.
Video generated by DemoVideoProducer is now displayed correctly

Change-Id: Idaed170a355ae7ed0b50c143a5c6c33da1393551
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4401
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-09 22:19:31 +00:00
Augustin Cavalier
17f42bc1d9 XHCI: Check earlier on that the endpoint is actually valid.
This may catch the "division by zero" KDLs earlier.
Related to #14943, #16794, and #16878.
2021-09-09 18:02:37 -04:00
Augustin Cavalier
0945c7e4e6 demangle/GCC3+: Improve/fix behavior of ClonedNode.
Most of the ClonedNode methods just forward calls as appropriate to
fNode or fClonedNode, but missed that fNode is itself always an ObjectNode.
Now we store that, and forward on the two relevant ObjectNode calls.

This fixes kernel stack trace function demangling where the symbols
contained clones (e.g. "[clone .localalias]", etc.). Before this commit,
such symbols would just appear as "()" and no more.

The "[clone...]" block will in such cases appear after the function name
and not after all the function parameters, as the two are returned
separately and there is no way to indicate how they should be printed
in the kernel's API usage of these functions.

ClonedNode was only introduced a few months ago in hrev55147,
so this has not been broken for too long.
2021-09-09 16:23:12 -04:00
Augustin Cavalier
5433e7e27d MultiAudioNode: Print a message when rejecting buffers.
This file just uses fprintf(stderr, ). Probably it should be
converted to use macros...

This allows for easy debugging of silence by restarting the media addon
server in a terminal. Eventually we should fix #17245.
2021-09-09 16:08:00 -04:00
Augustin Cavalier
37ea891aad Enable -fvisibility=hidden on static libraries by default.
Only on non-GCC2 for now, as GCC2 does not have -fvisibility.

An opt-out is left as a possibility, and is unfortunately necessary
for libshared and libicon, as these two are used even in WebKit instead
of linking to the .a. However, libcolumnlistview, libagg, and a whole
bunch of others are now no longer exported, so this is already a major
improvement on what symbols we were leaking.

This may provide performance differences for consumers of these APIs,
as GCC and the linker are now free to merge and directly use functions
that previously could have been semantically interposed. AGG usage in
app_server, especially, may benefit.

We can also now remove the addition from libnetservices, so do that.
2021-09-08 17:32:47 -04:00
Augustin Cavalier
03980b1fb0 build: Make LinkAgainst recursive for static libraries.
That is, it will now pull in NEEDLIBS and LINKLIBS set by LinkAgainst
from static libraries also built by Jam. This allows specifying what
libraries other static libraries need only once (in most cases;
occasionally things are not evaluated in a sane order and then
this does not quite work.)

Use this for libnetservices.a, which needs libshared.a, so that
dependencies on it do not have to be declared within most in-tree
consumers of libnetservices (e.g. Package Kit, http_streamer, etc.)
2021-09-08 15:03:06 -04:00
Augustin Cavalier
0c69dde91f Jamfiles: Add missing link against libshared to two apps.
They still built succesfully because currently we leak a lot of libshared
symbols into libbe (or even libroot!). That will change in upcoming commits.
2021-09-08 14:57:33 -04:00
Augustin Cavalier
90f9eb2190 NetworkStatus: Remove TARGET_PLATFORM_HAIKU_COMPATIBLE test.
We no longer build things for BeOS.
2021-09-08 13:40:21 -04:00
Niels Sascha Reedijk
0b86520c4d BString: add support for move semantics with C++11 and up.
This implements the "rule of 5" for this type. While the copy operation for
BString was already using shallow copies of the underlying data, this change
further optimizes moving the data from one object to another.

While it is not the intention to implement move semantics to all types in the
legacy Haiku/Be kits, data types like BString are good candidates, because move
operations are often useful when working with data within an application.

In this implementation, the internal data of the string object will be set to
NULL, thus leaving an empty string.

Change-Id: I16bf9424f9b17f622b0b57659b80628e18760288
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4428
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>
2021-09-08 07:07:36 +00:00
Augustin Cavalier
3cf06bfc6b libnetservices: Set -fvisibility=hidden (on non-legacy GCC.)
Otherwise, the symbols will be re-exported into whatever shared
libraries the static library is linked into, and potentially conflict
with other applications that also linked against some other version
of the same library and symbols.

Fixes #17134, or at least the crash portion. I couldn't get any
audio or video to play here, they seemed to just cause WebKit to
stutter and hang a lot when trying to load pages with them. Maybe
that's expected behavior, though?
2021-09-07 19:32:37 -04:00
Augustin Cavalier
5c7bfa02d0 mixer: Remove "Haiku" from the displayed name and info.
We are no longer running these addons on BeOS.

Change-Id: I4baa562bfdfaab56a92689c29d068ec59b2ee9d0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4433
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
2021-09-07 20:46:19 +00:00
Augustin Cavalier
f91a86c46f Cortex: Bounds checks in AudioFilterNode::processBuffer.
Processing more than framesRemaining leads to buffer overruns.
2021-09-07 16:18:22 -04:00
Augustin Cavalier
dc912367ae Cortex: SpecializeTo() once more before creating the operation.
If the incoming node is still pretty generic, we have to specialize
the input format to the output format in order to not be left with
wildcards.

Additionally, ensure that the frame sizes match up. MultiAudioNode
silently rejects buffers that are not sized precisely as it wants
them, so we need to attempt to have equivalent frame counts
on either end.
2021-09-07 16:17:31 -04:00