Commit Graph

49387 Commits

Author SHA1 Message Date
Augustin Cavalier
4cc829dc65 freebsd11_network: Synchronize fbsd_uipc_mbuf with FreeBSD 11.
Includes changes to the mbuf struct to more closely mirror FreeBSD 11.
Tested with the idualwifi7260 driver.
2018-07-06 10:58:45 -04:00
Augustin Cavalier
5af0299e37 freebsd11_network: Implement m_ext reference-counting and M_NOFREE.
Some FreeBSD developers report that this is required for HT mode, which
might explain why it's so broken on Haiku. I was also told the iwm driver
requires it for multi-frame RX, but as per the previous commit it still
KDLs even with it.

This commit also includes a refactor of the mbuf header implementation,
which now more closely mirrors FreeBSD's.
2018-07-06 10:32:45 -04:00
Augustin Cavalier
1431b61885 idualwifi7260: Properly enable the SINGLE_FRAME flag.
I did this correctly in the original commit, but then inverted the logic
in my C89 fixes commit by mistake ... whoops.

It seems to cause double-frees even with mbuf refcounting (though they do
occur later on), so leave it fully disabled for now.
2018-07-06 10:30:52 -04:00
Augustin Cavalier
ac06bf48c4 freebsd11_network: Combine Unit.cpp and unit.c into unit.cpp.
There's a number of these "C++ wrappers for C code" wrappers in the
freebsd_network compat layer, and there don't seem to be very many
good reasons to use them. We can just as well declare these C++ functions
with C linkage so they can be used from C code directly. So, time to
start cleaning this up.
2018-07-05 22:22:38 -04:00
Augustin Cavalier
49da1d2e3b crypt: Use int8 instead of int. 2018-07-05 22:04:35 -04:00
Augustin Cavalier
61e7a6b1f9 3com: Sync with FreeBSD 11.1.
No functional changes to the actual driver, it seems.
2018-07-05 17:13:11 -04:00
Andrew Lindesay
3b17d8dd7f HaikuDepot / PackageKit: Repositories 'Identifier' URL
Repositories are identified with a 'url' in the
remote 'repo.info' file.  There is also a
'base url' which is the URL locally with which
the system is able to access the repository
data on.  There is some confusion between these
two terms in the source.  This change aims to
separate the two out and consistently name them.
The settings for the repository locally also was
not storing these values and that has been fixed.
Debug info about the repositories also did not
display the two urls consistently and will now
also do so.  Finally, HaikuDepot now correlates
locally configured repositories with the data in
HaikuDepotServer using the identifier URL; this
makes the use of mirrors with HaikuDepot possible.

Fixes #13888
Change-Id: I66dfe589b05c24e1ab123a6945352e0f24b60bf1
2018-07-05 20:06:54 +00:00
Augustin Cavalier
a00c8c4491 freebsd11_network: Add another missing NULL check to taskqueue_free.
Also add missing \ns to the new printfs.
2018-07-05 15:46:02 -04:00
Murai Takashi
c7eabc40dc JPEGTranslator: Replace strncpy() with strlcpy()
Replace strncpy() with strlcpy(), since destination size equals
maximum number of characters to copy.
Pointed by gcc8 [-Werror=stringop-truncation].

Change-Id: I3e2a98802ddb379890aefaf8c3f0efb1cd347188
2018-07-05 13:12:56 +00:00
John Scipione
e2d19ae5b7 BListView: do not modify selection on MouseUp if drag & drop
bug seems to have been introduced only recently in hrev52062
2018-07-04 21:55:35 -07:00
Augustin Cavalier
4e5f9d9753 idualwifi7260: C89 fixes to appease GCC2. 2018-07-04 21:50:14 -04:00
Augustin Cavalier
e89c61736e drivers/network/wlan: Import idualwifi7260 from FreeBSD 11.2.
The lowest model number supported by this driver is "3160", but that's just
Intel's insanity: the 7260 was released the quarter before it. So following
our naming convention strictly, "7260" is the correct name for this driver.

The firmware situation for this one is also a little different. Unlike past
instances where Intel has released mostly nonsubstantial firmware updates,
allowing us to just copy a recent-ish version from the iwlwifi archives,
the firmware is more closely tied to the driver in this series. As a result,
some of this firmware is not even used by Linux yet (they're a few versions
behind it seems), so the firmware packages included here come from FreeBSD.

One major hardware feature - RX of multiple frames at a time - is disabled
in this commit, as it depends on mbuf reference-counting, according to the
FreeBSD developers I asked, which we do not implement yet. I'll hopefully
get to looking at that in the next few weeks.

And with that, I finally have WiFi on my primary laptop, my original reason
for setting out on this quest last year. This commit was pushed through it,
even :)
2018-07-04 20:46:32 -04:00
Augustin Cavalier
999fe6b3ea freebsd11_network: Additions for idualwifi7260. 2018-07-04 20:46:31 -04:00
Augustin Cavalier
02463a2c73 freebsd11_network: Handle NULL gracefully instead of faulting.
FreeBSD does not have these checks, but drivers seem to expect that they
can call these functions with NULL and not crash.

Fixes a number of boot-failure tickets (and makes it possible for me at least
to test drivers without rebooting from KDL every failure), though of course the
drivers themselves will still not work.
2018-07-04 20:46:31 -04:00
John Scipione
6fdf2dd2b3 Tracker: center text horizontally again
We alwasys draw text at the bottom of the calculated TextWidget
rect, that's why it needed to be centered to get the desired
placement. However, there is two places
2018-07-04 16:35:06 -07:00
John Scipione
6b9353b4a3 Tracker: Revert to previous CalcRectCommon bottom calc
... in list mode. Fixes #12997

This bug was introduced in hrev50528 along with new 32x32 icon size
in list mode. I'm not sure what I was thinking on this particular
line but reverting it seems to fix the problem and logically the
original code makes sense.
2018-07-04 14:08:38 -07:00
Andrew Lindesay
cd417b96c9 HaikuDepot: Trace Logging of RPC Payloads
Changes the trace logging so that JSON-RPC payloads
are included in the log stream.  Also fixes a
memory-leak in the JSON-RPC client.

Change-Id: Ic19c64869acc525232a60ac2fd814a71bfdafdc8
2018-07-04 13:27:42 +00:00
John Scipione
1dd1976fba Deskbar: update time width based on Deskbar orientation.
Fixes #8641

To fix this bug first I had to fix a long-standing todo:
TODO: SetOrientation never gets called, fix that when in vertical mode,
we want to limit the width so that it can't overlap the bevels in the
parent view.

I made TBarView a friend class of TReplicantTray and called
fReplicantTray->fTime->SetOrientation() when switching between
horizontal and vertical mode. I could have added a setter method
instead but I didn't feel like it was worth it.

SetOrientation calls ResizedToPreferred which calls GetPreferredSize,
which resizes the text width, then it calls CalculateTextPlacement
which places the time string correctly.

Removed GetCurrentTime invocation from GetPreferredSize since that
happens in Update already. Was added in
573f748c5f originally.

Also need to call SetOrientation in TReplicantTray::AttachedToWindow
just after creating the TTime object in order for it to resize the
time view correctly on startup in horizontal mode. It needs to know
that it is horizontal so that it will expand to fit longer than
default time string.
2018-07-04 12:31:23 +00:00
David Murphy
f5face4114 BListView: Fix drag n' drop in multi-select mode
Move list selection logic into MouseUp instead of MouseDown
Change-Id: I4e7c7f6636dabce130578777b5e1203d6695499a
Fixes #9190
2018-07-04 00:47:01 +00:00
Augustin Cavalier
382d022473 libroot: Use 'int' not 'char' in crypt code.
It seems 'char' is unsigned on ARM, so GCC errors on the -1s in here.
2018-07-03 19:08:33 -04:00
Augustin Cavalier
42080aceac DHCPClient: Tweaks to logging.
* "timeout" is in usecs, so / 1000 and say "msecs" not "secs"
 *  Debug-log messages that are not for us received while waiting for
    a message that is for us. Hopefully this will not flood the syslog
    (DHCP renegotiation is, after all, rare), and it might help diagnose
    some of the DHCP failures.
2018-07-03 16:14:22 -04:00
Augustin Cavalier
a7abbdae77 iprowifi4965: Add some more firmwares to the image.
Not sure why these were left out. Probably helps with #12407.
2018-07-03 15:40:54 -04:00
waddlesplash
980d7f22f9 package_infos: Update lib versions. 2018-07-03 00:12:51 -04:00
Augustin Cavalier
d1c51097eb Upgrade FFmpeg to 4.0.1 across the board (including GCC2.)
This was accomplished by adding some pretty nasty hacks to the FFmpeg recipe
so that we can compile it for the GCC2 ABI using GCC7. This works because
GCC's C ABI has not changed between GCC2 and GCC7.

As a consequence of this, pretty much all the longstanding issues of the
ancient-and-still-miscompiled FFmpeg 0.10 are now completely gone.

Fixes #5080, #8461, #12696, #12436, #13981 #13410, #13337.
Closes (possibly fixed earlier) #8605, #8511, #6984.
Probably fixes (couldn't test) #13989, #11974.
2018-07-02 22:21:27 -04:00
Augustin Cavalier
c6992970cd freebsd11_network: Fix alignment check and print more information on failure.
We don't care what the virtual address is aligned to, only what the physical
one is. This now matches what FreeBSD does here.
2018-07-02 22:16:11 -04:00
Augustin Cavalier
c9af3dafd5 freebsd11_network: INTR_FAST is no more.
I didn't figure out exactly when, but the docs from FreeBSD 8 reference it
as being not just deprecated, but already removed; and indeed no drivers
we have from either FreeBSD 9 or 11 use it. The intr_wrapper system is
used in its place.
2018-07-02 18:26:07 -04:00
Augustin Cavalier
1cbcf3e06b via_rhine: Sync with FreeBSD 11.1.
Untested, but the changes are minimal, and the FreeBSD 9 driver worked on
an old tower that I wasn't bothered to boot up just to test this. The new
driver uses an interrupt filter to boot, so we don't even need that glue
anymore.

Also make the build system logic closer to the other FreeBSD drivers.
2018-07-02 18:26:07 -04:00
Murai Takashi
12ed45b60f Media kit: Suppress -Werror=class-memaccess
* Add media_format::Clear(), media_format::Unflatten().
* Replace memset() with media_format::Clear()
* Replace memcpy() with media_format::Unflatten()

Fix #14156

Change-Id: I38ebc2de4915b954a15b6f4f6b40d016506910e5
2018-07-02 21:14:30 +00:00
Jérôme Duval
9e9fc9f1a3 ntfs: only prints a trace in case fs_mount failed. 2018-07-01 15:10:50 +02:00
Jérôme Duval
5bd8cf13c5 intel_extreme: use user_memcpy to write to user mapped memory.
* now boot successfully to desktop with SMAP enabled on intel_extreme.
* enforced 80 chars/line on two occasions.
2018-07-01 14:23:48 +02:00
Augustin Cavalier
aa033e3412 MediaConverter: Fix some "Looper must be locked" assert failure crashes.
Not sure how these cases were never hit before, but I ran into them
when testing MediaConverter...
2018-06-30 22:34:11 -04:00
Augustin Cavalier
9396b53f89 freebsd11_wlan: Add ieee80211_realign.
It is technically "used", but only in blocks that evaluate to false via
preprocessor macros, and so it was usually optimized out completely.
This is not the case for the debug build however, so the lack of it
broke that.
2018-06-30 22:20:32 -04:00
Augustin Cavalier
9269dd58fa freebsd11_network: Use B_PAGE_SIZE not PAGE_SIZE in param.h.
freebsd11_network has PAGE_SIZE defined, but not all of its users do;
so for their sake we should use B_PAGE_SIZE.
2018-06-30 22:19:31 -04:00
Augustin Cavalier
bd60686144 tracker_new_templates: It's not 2015 anymore. 2018-06-30 20:08:14 -04:00
Augustin Cavalier
6a138e1704 freebsd11_network: Enable previously-disabled uses of counter(9).
Tested and verified this doesn't break anything.
2018-06-30 12:39:19 -04:00
Augustin Cavalier
7a41fb9137 freebsd11_network: Implement counter(9) using atomics.
See inline comment.
2018-06-30 12:38:44 -04:00
Augustin Cavalier
dc26a66554 drivers/wlan: Remove ralink2860; unused since 2013.
korli patched the "ralinkwifi" driver to support 2860 in
af5a895fa4, and removed this one
from the image at the same time.
2018-06-30 11:42:34 -04:00
Augustin Cavalier
e4bc0a9658 AboutSystem: ACPICA is "Component Architecture" not "Common Architecture".
That's what I get for committing with my brain off...
2018-06-30 11:41:51 -04:00
Jérôme Duval
4f5ed463b5 kernel: vfs: common_fcntl() now uses memcpy() for kernel calls.
instead of user_memcpy().

* fix #14204: the NTFS filesystem kernel addon uses the fcntl system call to
lock the underlying device. The user_memcpy replacement in the x86 compat
branch adds range checks for the user pointer, which exposes such problems.
2018-06-30 15:46:52 +02:00
Augustin Cavalier
65df4b51f5 freebsd11_network: Discard __FBSDID() macros instead of declaring them.
Nothing uses them, and they just generate a ton of "unused global" warnings.
2018-06-29 23:15:51 -04:00
Augustin Cavalier
595605d86f freebsd11_network: Properly handle M_NOWAIT in _kernel_malloc.
I'm not sure what the comment was about; HEAP_DONT_WAIT_FOR_MALLOC
predates the FreeBSD compatibility layer.

Potentially fixes some timing issues.
2018-06-29 23:11:14 -04:00
Augustin Cavalier
da166fc646 iprowifi4965: Add the missing IWN_SDID_6035_5 subdevice.
This goes with the "IWN_DID_6035_2" (0x088F) device ID. We had added the device
ID in the FreeBSD 9 version of the driver, which didn't properly handle the
device but somehow still managed to use it.

Thanks to miqlas for reporting and then confirming this fix.
2018-06-29 22:09:06 -04:00
waddlesplash
6baca0c4f4 iprowifi3945: Fix GCC4+ build. 2018-06-28 18:42:58 -04:00
Augustin Cavalier
3cc8e19a4e freebsd11_network: Fix the build at KDEBUG_LEVEL < 1.
Thanks to Humdinger for reporting!
2018-06-28 17:32:54 -04:00
Augustin Cavalier
83a6125d7e iprowifi4965: Fix for the Intel Centrino 6235.
The first change (universally disable ICT mode on Haiku) was my fault for
not properly carrying forward from the FreeBSD 9 driver, but the second change
(remove flag from _base_params) is indeed a bug in FreeBSD 11.

This device ID was not present in the FreeBSD 9 driver; we added it ourselves,
and somehow it "just worked." FreeBSD 11 tries to properly configure this device,
which nearly works, but somehow they also wound up with this flag in the base
parameters, which even the comment suspected was wrong.

Thanks to Humdinger for diligently trying all the strange code changes
I suggested to him over IRC. :)
2018-06-28 17:32:53 -04:00
Augustin Cavalier
9552ec8248 iprowifi3945: Sync with FreeBSD 11.1.
Tested and verified as working by cocobean. (The previous driver KDLed
on their hardware.)
2018-06-28 17:32:53 -04:00
Augustin Cavalier
dcf58b2783 freebsd11_network: Add mtx_sleep.
It is identical to msleep(), which is now "deprecated" in favor of it,
according to the FreeBSD manpages.
2018-06-28 17:32:53 -04:00
Jérôme Duval
d20630d0bc hda: remove a few ids from the quirks snoop list for intel.
should fix #14231. misread from the alsa quirk list.
2018-06-28 16:49:29 +02:00
waddlesplash
b93a8f398b Backgrounds: Fix GCC 4+ build. 2018-06-28 09:28:24 -04:00
Augustin Cavalier
97f9cb046c freebsd11 / iprowifi4965: GCC2 fixes. 2018-06-27 20:26:53 -04:00
Augustin Cavalier
8b4aff3eac freebsd11_network: Enable INVARIANTS at KDEBUG_LEVEL_2.
They were already enabled for the net80211 code (and thus all the Wi-Fi drivers)
unconditionally; now we enable them conditionally based on KDEBUG_LEVEL_2
for the freebsd11_network core code also.

Includes fixes to the build, since there were some issues with INVARIANTS otherwise.
2018-06-27 20:14:36 -04:00
Augustin Cavalier
a549026d25 freebsd11_network: Actually set numBytes instead of silently truncating it.
If numBytes was greater than MCLBYTES (presently 1 << 11 = 2048), then the data beyond
MCLBYTES would be silently discarded instead of being written. Now, we store the
result of the min_c in numBytes, so the caller knows how much was written.

I turn on the printf that's commented out here and found that in practice this
seems to never happen (it's larger than the ethernet limit), so it seems unlikely
to fix any "transmission mysteriously failed" bugs.

Also backported this to the FreeBSD 9 layer.
2018-06-27 20:14:36 -04:00
Augustin Cavalier
688153aaec iprowifi4965: Sync with FreeBSD 11.1.
Tested and verified as working on my Lenovo ThinkPad T61.
2018-06-27 20:14:36 -04:00
Augustin Cavalier
af8988cdb6 freebsd11_wlan: Adapt net80211 code for Haiku's usage.
Changes mostly ported from the FreeBSD 9 code, but some of it is new.
Hopefully in the future, this diff can be reused almost wholesale,
instead of having to re-create it as was done in past upgrades.
2018-06-27 20:14:36 -04:00
Augustin Cavalier
ace07f7051 freebsd11_wlan: Adapt _haiku module for FreeBSD 11.
Mostly just additions of new primitives and hook functions that are
relatively straightforward and mostly copied from FreeBSD. The one
notable set of changes is the ones relating to gDevices, as the hacks
we used previously to hide the base device are now no longer needed
(as the previous commit noted.)
2018-06-27 20:14:35 -04:00
Augustin Cavalier
2ed3d6d1b5 freebsd11_network: Remove IFT_IEEE80211 logic.
Previous versions of FreeBSD created a base ifp of type IFT_IEEE80211
in addition to the ifp created for each VAP. We ignored these, so that
the devices we displayed (/dev/.../0, etc.) were numbered properly.

FreeBSD 11 no longer does this and instead uses an ieee80211com as its base
type, so this logic is not needed.
2018-06-27 20:14:35 -04:00
Augustin Cavalier
83fee6c8b6 freebsd11_network: Even more changes for freebsd11_wlan.
The net80211 code now fully compiles with -Werror=implicit-function-declaration,
however, it is not yet fully patched for Haiku usage.
2018-06-27 20:14:35 -04:00
Humdinger
cbadcae1d0 Small string changes in HaikuDepot GUI
* Don't translate internally used names in BMenuBars.
* Use presentable strings for the title of BAlerts.
* Make the wording a bit less technical.
  Should the HaikuServer URL be part of the update/remove rating alert?

Change-Id: I0a984082eadbc5834ac6b8b2b1955e66098d1c8a
2018-06-27 22:54:40 +00:00
Augustin Cavalier
69d3ef8233 AboutSystem: kPublicDomain is not presently used, #if 0 it out.
Fixes the build (sure, GCC, a static unused global constant is worth
throwing a warning over.)
2018-06-26 18:34:39 -04:00
Augustin Cavalier
5807f2981b AboutSystem: Copyright cleanups.
* netcat is now provided via a package and is not required by the
   'haiku' package
 * Display the full name of ACPICA and update copyright year
 * Update copyrights for libpng.
2018-06-26 18:20:14 -04:00
Augustin Cavalier
5ec8aa426a AboutSystem: Combine Intel Wi-Fi firmware credits.
The first two have the same license and are also now covered by
intellinuxwireless.org. The second two also share a license among
themselves, and also with following (not-yet-imported) firmware,
e.g. from idualwifi3160.
2018-06-26 17:50:56 -04:00
Augustin Cavalier
a7999984fc Remove last references to tcpdump.
It hasn't been in the Haiku repository or provided by the Haiku package
for over a year.
2018-06-26 17:39:06 -04:00
Niels Sascha Reedijk
f98e331cf5 Small spelling fixes. Reported by mazbrili through Pootle. Thanks! 2018-06-26 21:26:45 +02:00
David Murphy
3d86db178e Backgrounds preflet limited to 10 recent folders
Added recent folder limit as class member but
defaulted the value to 10.
Stopped using index to keep track of selected
path and folder menu item. Instead use BMessage to send
clicked folder path to the folder bg image loader.

Change-Id: I6b1809ff782db839ef43eb7169a7f6e77fb4ec70
Fixes #5026
2018-06-26 00:56:51 +00:00
Augustin Cavalier
abb59d7351 intel_extreme: Fix instances of user memory creation and access.
You still cannot boot to desktop under SMAP on intel_extreme, however,
as the agp_gart bus has not been patched properly. Doing so breaks the
intel_extreme accelerant, so more investigation is needed.
2018-06-24 23:52:09 -04:00
Augustin Cavalier
14ec6c8b23 intel_extreme: Remove some non-Haiku cases from device_ioctl. 2018-06-24 23:52:09 -04:00
Augustin Cavalier
79dba05004 HaikuDepot: Fix a -Wuninitialized in server client code.
If result is not a success, then we use hasData without initializing it.
2018-06-21 22:06:27 -04:00
Augustin Cavalier
4215eb6003 Debugger: Fix some broken comparisons.
* Missing parentheses in integer comparison inversion
 * !=, not ! at the beginning of expression

Spotted by Clang.
2018-06-21 22:05:27 -04:00
Augustin Cavalier
582afd9a7f interface & app_server: Fix missing parentheses near ternary operators.
+ has greater operator precendence than ?, so we need parentheses when
using both in expressions. Both of these look like actual bugs.

Spotted by Clang.
2018-06-21 22:04:31 -04:00
Augustin Cavalier
b9491db99c ACPI: Remove useless if-test. 2018-06-21 22:02:46 -04:00
Augustin Cavalier
f4b42b518a drivers: Deduplify joystick_driver.h.
Now there is only the one copy in headers/private/device.
2018-06-21 18:46:30 -04:00
Augustin Cavalier
9b83a2a043 BJoystick: Fix fJoystickInfo initialization.
joystick_info contains BLists which initialize themselves upon new(),
and Clang warned (correctly) that using memset() overwites that, as well as
RTTI and other data that they contain. So instead, only memset the first
part of the struct, and then manually initialize the other members.

Fixes #14217.
2018-06-21 17:52:39 -04:00
Augustin Cavalier
09c7b1526f freebsd11_network: Fix MLEN/MHLEN macros after mbufq changes.
In 02cb8503d2, I added the m_next and
m_nextpkt structures to mbuf, as per FreeBSD's mbufq system that
FreeBSD 11.1's net80211 code uses. What I didn't realize (and
korli and PulkoMandy who reviewed my code didn't notice either)
is that the data fields in mbuf are sometimes dealt with through
these LEN macros, which were now incorrect after such changes.

This caused an out-of-bounds memory write for data above a certain
size that was attempting to be written into an mbuf that under the
old sizing would have been fine, but under this new sizing was invalid,
and this manifested itself as a KDL under the guarded_heap (#14207).
It possibly also manifested itself as a stack-smash with the new net80211
code (uncommitted on a local machine, and the reason I tried using
the guarded heap in the first place.)

Now we use FreeBSD 11's macros, which use offsetof instead of raw
integer math. This means that we can't specify the struct size in mbuf
as these structs are computed from mbuf's definition, and thus have
to rely on the allocator giving mbuf the correct size (as FreeBSD
does also.)
2018-06-20 21:26:21 -04:00
Augustin Cavalier
2a3a847f82 HPGSTranslator: Remove from the tree.
Not included in the build and not referenced anywhere else. Now lives at
HaikuArchives.
2018-06-19 23:43:53 -04:00
Augustin Cavalier
571def7114 WebPositive: Store default bookmarks in git instead of downloading them.
No functional change. Ideally we would create these via ResAttr like we do
the mail-providers, but these have attributes on their directories and not
just the files, so that will be slightly trickier, so for now just keep them
in their zip format.
2018-06-19 23:11:58 -04:00
Augustin Cavalier
9b326aa287 mail: Store mode flags by-value, not by-reference.
They are passed into the constructor by-value, and Clang warns that
we are taking the reference of a temporary.
2018-06-18 23:20:18 -04:00
Augustin Cavalier
a309b7c3a1 bin: Clang warning fixes.
* Functions that call exit() should return void
 * char* -> const char*
 * main returns int, not bool.
2018-06-18 23:18:34 -04:00
Augustin Cavalier
9b29611fb8 ACPI: Set handle to NULL.
There is a (probably non-viable) case where it might not get initialized
by the function and then potentially used, so set it to NULL to silence
Clang.
2018-06-18 23:17:38 -04:00
Augustin Cavalier
9216fc0178 More class/struct mixup fixes.
Spotted by Clang.
2018-06-18 23:16:50 -04:00
Augustin Cavalier
9ac3062734 kernel: Small fixes for Clang. 2018-06-18 19:32:13 -04:00
Jessica Hamilton
7f7f3618dd webpositive: force download window on screen.
* When Download window is initially shown, it is correctly
  fully onscreen; however, adding a download resizes the
  window such that it becomes partially offscreen. Now,
  when the frame is resized, reposition the window onscreen
  again.

Fixes #12704
2018-06-17 17:00:47 +00:00
Augustin Cavalier
4a459f066d :kernel: Fix stack alignment in syscall entry on x86_64.
The user iframe and associated data that the syscall entry pushes to the
stack directly were causing the stack to be mis-aligned by 8 bytes. Since
we re-aligned %rsp afterwards, for most usecases this wasn't a problem.
However, since we stored the pre-realinged %rsp in %rbp (as we need it to
access the iframe data), this also meant that anything which depended on
%rbp being 16-byte-aligned would run into serious problems.

As it turned out, GCC 7 assumed that %rbp was indeed 16-byte-aligned, and
so optimized certain accesses to use SSE instructions that depended on this
alignment. Since inside any callstack begining with a syscall this was not
the case, a "General Protection Exception" resulted (see #14160 for an example)
at the first usage of such an instruction. I wasn't really sure what was going
on when it first came up, and so "fixed" it by disabling the GCC optimization
that used such instructions. Replacing the -fdisable... with -mstackrealign thus
also "fixes" the problem, as I discovered earlier today, as it forces GCC to
realign the stack in function prologues.

So instead of rounding %rsp down to the nearest aligned address after the
pushes are complete, we offset %rsp by the amount the pushes are not,
thus fixing both %rsp and %rbp in syscall handling routines. This of course
depends on syscall_rsp being already aligned, which it is.

Thanks to PulkoMandy and js for the advice and guidance (and PulkoMandy
for the ASCII art), as this is essentially my first time working with
kernel assembly.
2018-06-16 17:24:33 -04:00
Jessica Hamilton
77c8afb47f libroot_build: don't define system_time() on Haiku host.
* On x86_64, this was causing an infinite loop between
  libroot & libroot_build in the host unzip tool.
2018-06-16 10:08:56 +00:00
Jessica Hamilton
d284524815 libroot_build: replace void* with addr_t for hidden functions.
* Using attribute visibility hidden doesn't get applied if a
  function returns a non-class pointer type, so the functions
  weren't being hidden for gcc4+ builds, resulting in stack
  overflows. Using addr_t, which should be the same size as
  void* works around this restriction.
2018-06-16 10:08:56 +00:00
Alexander von Gluck IV
64d4515abf kernel: Only apply rtl-stv1 hack to x86 & x86_64
Change-Id: I971f7bf3bb95ee466a59ab777c2f6fc56fbcbd43
2018-06-15 13:43:13 +00:00
Augustin Cavalier
4f7b9506fd Revert the rest of the COMPAT_MODE changes (back to hrev52003.)
This reverts commit 458e758f37.
This reverts commit ce5eb94a82.
This reverts commit aac8d4c317.
This reverts commit c70cba914a.
This reverts commit 2ffbe7aaca
This reverts commit c6e120e2d2.
2018-06-15 00:20:56 -04:00
Augustin Cavalier
513403d420 Revert team and thread changes for COMPAT_MODE (hrev52010 & hrev52011).
This reverts commit c558f9c8fe.
This reverts commit 44f24718b1.
This reverts commit a69cb33030.
This reverts commit 951182620e.

There have been multiple reports that these changes break mounting NTFS partitions
(on all systems, see #14204), and shutting down (on certain systems, see #12405.)
Until they can be fixed, they are being backed out.
2018-06-14 22:25:06 -04:00
Rene Gollent
211cb77acf Debugger: don't auto-download packages non-interactively.
- When in non-interactive mode, i.e. saving a crash report, don't
  allow the image debug info loader to automatically grab missing but
  available info packages. Otherwise we potentially download very large
  packages with the user being entirely unaware, i.e. the 200MB debug
  information package now present by default for gcc7's libgcc. This
  should eventually be made a configurable preference though.
2018-06-14 16:51:32 -04:00
Jérôme Duval
c558f9c8fe kernel/x86_64: stacktrace for threads in compatibility mode.
* add compat_stack_frame struct.
* user symbols are't yet looked up in compatibility mode.

Change-Id: I94b45f25564c246bb174f9491f4abc4aa8676549
2018-06-12 17:56:55 +02:00
Jérôme Duval
44f24718b1 kernel/x86_64: add compatibility source files to the build.
* add x86 versions of fnsave frstor.
* add missing declaration for elf32_resolve_symbol().

How-to build a x86_64/x86 bootstrap build:
mkdir generated_bootstrap; cd generated_bootstrap
../configure --bootstrap /dir/to/haikuporter/haikuporter /dir/to/haikuports.cross \
  /dir/to/haikuports --build-cross-tools x86_64 /dir/to/buildtools --build-cross-tools x86 -j8 --use-gcc-pipe
jam -q -sHAIKU_PORTER_EXTRA_OPTIONS="-j8 --sourceforge-mirror=freefr --no-source-packages" @bootstrap-raw

Change-Id: I6eae3653c42a53683ae307107fae595c4b8ebcfb
2018-06-12 17:56:55 +02:00
Jérôme Duval
a69cb33030 kernel/x86_64: setup a new thread in compatibility mode.
* define compat_thread_info, compat_rlim_t, compat_rlimit and
compat_thread_creation_attributes to be used when applicable in compatibility
mode.
* handle 32-bit types in _user_spawn_thread(), _user_get_thread_info(),
_user_get_next_thread_info(), _user_getrlimit(), _user_setrlimit(),
other syscalls are compatible as is.
* init TLS for compatibility mode threads.

Change-Id: I483ba95e6198ddac9d240671bcb56fcd2ad831d2
2018-06-12 17:56:55 +02:00
Jérôme Duval
951182620e kernel/x86_64: setup a new team in compatibility mode.
* in load_image_internal(), elf32_load_user_image checks whether the binary
format requires the compatibility mode.
* we then set up the flag THREAD_FLAGS_COMPAT_MODE and the address space size.
* the compatibility mode runtime_loader is hardcoded with x86/runtime_loader.
* if needed, the 64-bit flat_args structure is converted in-place to its 32-bit
layout.
* a 32-bit flat_args isn't handled yet (a 32-bit team execs a 64-bit binary).

Change-Id: Ia6a066bde8d1774d85de29b48dc500e27ae9668f
2018-06-12 17:56:55 +02:00
Jérôme Duval
458e758f37 kernel/x86_64: compatibility syscalls for vm.cpp.
* define compat_area_info to be used when applicable in
compatibility mode.
* handle 32-bit types in _user_reserve_address_range(), _user_get_area_info(),
_user_get_next_area_info(), _user_transfer_area(), _user_clone_area(),
_user_create_area(), _user_map_file(), other syscalls are compatible as is.
* _get_next_area_info() doesn't work well with a 32-bit address cookie (address
could be in 64-bit range). Instead use _compat_get_next_area_info() which uses
the area id as cookie, though the areas are not ordered by address any more.

Change-Id: Ic7519ca8824aa2d534b0f03ea75a1bf6ae321535
2018-06-12 17:56:55 +02:00
Jérôme Duval
ce5eb94a82 kernel/x86_64: compatibility syscall for system_info.cpp.
* define compat_system_info to be used in _user_get_system_info() in
compatibility mode.

Change-Id: Ib917d41a3a87155aee9cb536fd09e7231b232bc8
2018-06-12 17:56:55 +02:00
Jérôme Duval
aac8d4c317 kernel/x86_64: compatibility syscalls for signal.cpp.
* handle 32-bit types in _user_send_signal(), _user_sigaction(), _user_sigwait(),
_user_set_signal_stack(), _user_restore_signal_frame(), other syscalls are
compatible as is.

Change-Id: I4c8dc47bfa80f36e363d444d2a5a7be6c621606d
2018-06-12 17:56:55 +02:00
Jérôme Duval
c70cba914a kernel/x86_64: compatibility syscalls for image.cpp.
* define compat_image_info, compat_extended_image_info
to be used for respective 32-bit types of syscalls in compatibility mode.
* handle 32-bit types in _user_register_image, _user_get_image_info,
_user_get_next_image_info, other syscalls are compatible as is.

Change-Id: Ibbd33e6796208dfa70d869e36bf745bc3e18d330
2018-06-12 15:55:55 +00:00
Jérôme Duval
2ffbe7aaca kernel/x86_64: compatibility syscalls for vfs.cpp.
* define compat_flock, compat_timespec, compat_stat, compat_attr_info,
compat_fs_info, compat_fd_info to be used for respective 32-bit types
of syscalls in compatibility mode.
* handle 32-bit types in common_fcntl(), _user_read_stat(), _user_stat_attr(),
_user_read_index_stat, _user_read_fs_info, _user_write_fs_info,
_user_get_next_fd_info, other syscalls are compatible as is.

Change-Id: I5b372169fe142f67b81fd6c27e0627d5119ba687
2018-06-12 15:55:43 +00:00
Jérôme Duval
c6e120e2d2 kernel/x86_64: add setup_compat_signal_frame.
* add compatibility signal types.

Change-Id: I665020234be0ba2ccbb33bdbc338c11a214ab6e8
2018-06-12 15:55:18 +00:00
Alexander von Gluck IV
87628f17eb intel_extreme: Add additional more recent PCH devices
Change-Id: Ib9f7dc187300c9f746bca9fd7f721c1954f5be44
2018-06-11 20:34:14 -05:00
Augustin Cavalier
3ad0683efb intel_extreme: Map VBIOS for kernel only.
korli's first suggested change from #14190. Gets past the first KDL,
but not all the way to desktop.
2018-06-11 20:20:34 -04:00
Augustin Cavalier
d22143c84e freebsd11_wlan: Change paths and add new files to Jamfile. 2018-06-11 19:49:46 -04:00
Augustin Cavalier
3c410aba97 freebsd11_wlan: Copy Haiku-specific files from FreeBSD 9 directory.
Again, unmodified.
2018-06-11 19:47:52 -04:00
Augustin Cavalier
293a2cae7a Import FreeBSD 11.1 net80211 core.
Completely unmodified and not wired into anything. Since my Haiku-specific
changes will go through Gerrit, it makes sense to import this first, so that
the diffs are readable.
2018-06-11 19:45:39 -04:00
Augustin Cavalier
8085ed3fec UserTimer: Zero-initialize sigevents.
CID 1234670 and friends. Probably harmless, though.
2018-06-11 18:57:00 -04:00
Augustin Cavalier
a287df1c5b efi: Fix bad mode changes from previous commit. 2018-06-11 17:40:38 -04:00
Jessica Hamilton
86b12d85c7 efi: move various init before call to main().
* With the previous commit, we can now move functions that require
  calling mmu_map_physical_memory to where they should have been
  originally. This also allows the SMP safe mode menu entries to
  be properly generated, now that smp_init is called prior to
  main().

Change-Id: I05ddca5273b11cb4846021664c1ea2cf8ba723b7
2018-06-11 15:17:40 +12:00
Jessica Hamilton
b2d0b3699e efi: redo mmu_map_physical_address to not require allocations.
* mmu_map_physical_address will get called prior to calling main()
  which leaves us without a heap, malloc, and new. Instead, use
  the kernel args physical allocated range array, and then
  convert to our allocated memory region type on-demand.

Change-Id: I265fd165ef7143681e8e40c3686fda1a583c20dc
2018-06-11 15:17:39 +12:00
Augustin Cavalier
8845ad353d bootloader: Update copyright years.
We've definitely changed the bootloader a good amount since 2014.
2018-06-09 22:25:33 -04:00
Augustin Cavalier
98a4ebbe3c efi: Actually add items to safemode menu.
The call to smp_... is not working since it relies on gKernelArgs being
fully initialized, which it isn't at this stage in the EFI loader. Jessica
says that in order to have that happen, the heap would also need to be
initialized early, which it also is not.

At least you can now force a safe videomode, which is enough for me to
be able to test video drivers.
2018-06-09 22:21:21 -04:00
Andrew Lindesay
a9edb9bffa HaikuDepot: Multiple improvements for user-ratings
* Display of the user-ratings listing improved
* When a user-rating is created / edited, the pkg is updated
* Creation date of the user-rating is unpacked shown
* Ability to create a user-rating with a comment, but no numerical rating
* Stars display show grey if no numerical rating present
* Improvements to error reporting when problem arise
* Parsing of the 'revision' field of the version working
* Removed debug logging for the text engine
* Other minor tweaks

Change-Id: I99f881ab1426641ef4177eec2d3bcacc7cb74e95
2018-06-09 17:07:03 +00:00
Augustin Cavalier
466255e324 freebsd11_network: Add definition missing from previous commit. 2018-06-08 21:29:04 +00:00
Augustin Cavalier
800e9d6652 freebsd11_network: More changes for freebsd11_wlan. 2018-06-08 21:03:04 +00:00
Augustin Cavalier
e1c961d028 network: Update comments in Jamfile with respect to ethernet driver upgrades. 2018-06-07 23:26:44 -04:00
Augustin Cavalier
9ac8151269 ipro1000: Delete the old BeOS driver.
"Where we're going, we don't need BeOS drivers..."
2018-06-07 23:09:03 -04:00
Augustin Cavalier
52d1e93353 Revert "intel_extreme: Broadwell is really Gen7(.5), not 8."
This reverts commit 4f059c1fc5.

From discussion on the mailing list, it seems I was correct the first time
and Broadwell is Gen8. The confusion comes from the SER5/SOC distinction,
which is not in the Linux driver, and I still don't know which one it really
belongs in.
2018-06-05 21:07:59 -04:00
Augustin Cavalier
02cb8503d2 freebsd11_network: Changes and additions for freebsd11_wlan.
There is still a lot to be done, though.
2018-06-05 18:48:02 -04:00
Adrien Destugues
1407e6d7b1 Complete implementation of printer serial transport
- Allow to configure the baudrate (it is set by the printer settings,
  but the transport didn't care)
- Implement reading from the serial port (some printers will need us to
  poll the status and the like, as there is usually no hardware flow
  control)

Change-Id: I70ba2566595d5dfa5eda3d518614db6514cb2398
2018-06-05 21:44:14 +00:00
Augustin Cavalier
4f059c1fc5 intel_extreme: Broadwell is really Gen7(.5), not 8. 2018-06-05 17:27:45 +00:00
Jérôme Duval
bdd7dae89c kernel/x86_64: add a compatibility syscalls table.
* install syscall handlers in compatibility mode.
* copy the syscall entry in the compatibility commpage, ATM only for Intel
SYSENTER.
* copy the thread exit handler in the compatibility commpage.

Change-Id: Ic350799938815194377d8a4560cb106fe7366cc6
2018-06-05 17:13:08 +00:00
Jérôme Duval
0d1e94a465 mount_server: restore automount notification.
Fix #14149.
2018-06-04 22:58:47 +02:00
Jérôme Duval
8088f452ff efi: fix loader build. 2018-06-03 18:14:32 +02:00
Jérôme Duval
379d232693 net80211: fix ieee80211_node_dectestref().
* sync with FreeBSD.
* implement atomic_cmpset_int() with atomic_test_and_set().
2018-05-31 19:19:50 +00:00
Jérôme Duval
499712a9ec device_manager: IORequest: use user_memcpy() to access a user buffer.
* should fix #14164, but the case can't be reproduced easily it seems.

Change-Id: I636db93cc1efe2784b2530dced6a900fbfe3dce8
2018-05-31 11:55:18 +00:00
Augustin Cavalier
92875838d6 WebPositive: Remove now-uneeded -std=, disable Wformat-truncation.
Same case as last commit.
2018-05-28 20:46:44 -04:00
Augustin Cavalier
1011a95a7c Icon-O-Matic: Remove some dead code.
This caused -Wformat-overflow (but only if -ftree-vrp was enabled,
which at present we disable it universally.)
2018-05-28 20:45:48 -04:00
Jérôme Duval
9e75e900da kernel: use non-deprecated signatures for new/delete operators.
add posix_memalign(), needed for c++17.
2018-05-28 20:49:15 +02:00
Jérôme Duval
b3e749b0c1 kernel,libroot,boot: remove c++11 and gnu++11 flags.
* c++14 is the default with current GCC
* remove pragmas for x86intrin.h
2018-05-28 18:54:22 +02:00
Jérôme Duval
8e4aa13350 console: use user_memcpy to read the user buffer. 2018-05-26 15:52:37 +02:00
Jérôme Duval
57aac99526 nforce: sync with FreeBSD 11.1. 2018-05-26 13:52:40 +02:00
Jérôme Duval
2df44799a5 rdc: sync with FreeBSD 11.1. 2018-05-26 13:52:40 +02:00
Augustin Cavalier
053cc0d4fe ape_reader: Properly fix the build under GCC 7.
Since we cannot '#define wchar_t char' anymore, we need to properly
fix the source code to work with char instead.
2018-05-23 18:59:32 -04:00
Adrien Destugues
ca4d9e0f9f ape_reader: build fix.
We support wchar_t now, so don't try to avoid it.
2018-05-23 22:57:25 +02:00
Jérôme Duval
177f5facbf kernel drivers: have timer hooks return B_HANDLED_INTERRUPT.
* 0 means B_UNHANDLED_INTERRUPT.
* uses int32 as return type.
2018-05-23 18:41:35 +02:00
waddlesplash
b87a52803f tests: Fix the build under GCC 7. 2018-05-22 20:43:06 -04:00
waddlesplash
77d1e4fd44 kernel: TARGET_PACKAGING_ARCH not HAIKU_ARCH for present compiler arch.
HAIKU_ARCH is CPU architecture. Sorry for the noise...
2018-05-22 20:41:52 -04:00
waddlesplash
3d5f8b7ccf protocols/unix: Fix build after previous commit. 2018-05-22 19:46:20 -04:00
Adrien Destugues
8bca37d604 vfs: Bind flock locks to file descriptors
* File locks created by flock should only apply for the file descriptor
  that was used to lock the file. Another fd on the same file should then
  be denied access (calling flock should fail).
* fcntl based locks, however, are in a separate namespace and are global
  to a team.
* This issue was found when running webkitpy test suite, and should close
  ticket #13795.
* Don't use session or team as comparison in release_advisory_lock(), as
  that information might not be available anymore (e.g. when called from
  Team::~Team()). This fixes #14121.

Change-Id: I9efb96cfcefe7e72b0060220c635a665e7e643cc
Co-authored-by: Axel Dörfler <axeld@pinc-software.de>
2018-05-22 20:29:21 +00:00
Jérôme Duval
fc48586b9b kernel/libroot: use compiler built-in for rdtsc().
* spares two MOV instructions.
* the warning is fixed upstream:
2bbcec1f88
2018-05-22 17:48:02 +02:00
Augustin Cavalier
3acaf25e8f kernel: Disable rtl-stv1 optimization on GCC 7.
See inline comment and accompanying ticket.
2018-05-21 20:52:11 -04:00
Augustin Cavalier
c5a6b06396 add-ons/print: Disable probably-bogus warnings on GCC 7. 2018-05-21 20:51:23 -04:00
Augustin Cavalier
66e852769e VSTHost: Fix the build on GCC 7.
rename round -> vstround.
2018-05-21 17:57:50 -04:00
Jérôme Duval
8ac3d98578 x86_64: use the compiler built-in for cpuid. 2018-05-21 15:28:55 +02:00
Jérôme Duval
ba6f86b896 syskonnect: sync with FreeBSD 11.1. 2018-05-21 14:39:32 +02:00
Murai Takashi
5d75f4346e Media preference: Replace strncpy with strlcpy
Replace strncpy() with strlcpy() since destination size equals
maximum number of characters to copy.

Change-Id: I7d540c60c9915324c2271abaee8b7134bf0c3814
2018-05-21 06:59:30 +00:00
Augustin Cavalier
eabd8bf74b fuse: Fix build under gcc6+
* GCC6+ will warn when you truncate potentally "too much data"
  Volume name 255. fName is 32.
* We don't think we care enough to enlarge fName?

Change-Id: I6f453ee62c856481605594b2ae5ff9ab41244bd1
2018-05-20 17:47:12 -05:00
Augustin Cavalier
59a59d1ac7 Appearance: Another BString::SetToFormat instead of sprintf. 2018-05-20 18:18:13 -04:00
Augustin Cavalier
fe3a28958a Appearance: Use BString::SetToFormat instead of sprintf to create hex color.
Fixes a GCC7 Werror about (potential) format overflow.
2018-05-20 17:35:53 -04:00
Alexander von Gluck IV
172c944a5b kernel/kernel_cpp: Change nothrow_t syntax for gcc6+
* Fix for explicit constructor change.
  https://github.com/gcc-mirror/gcc/commit/a3f25f0f

Change-Id: I330ad9c3bff1d7f3e0284f3dcda86e17d974c57d
2018-05-20 15:44:32 -05:00
Murai Takashi
54d72f0643 Fix calling abs(unsigned)
Casting the substraction result to int
since call of overloaded 'abs(uint)' is ambiguous.

Change-Id: I24b4919f8a487d275f537391132cae635aaa030e
2018-05-20 20:29:16 +00:00
Jérôme Duval
013af6f0eb build: define architectureObject as local variable. 2018-05-20 13:19:39 +02:00
Alexander von Gluck IV
95daec1061 u-boot: Generate boot.scr for mmc
* This gives us a solid automatic entry point to u-boot
* A uEnv.txt specifies the fdt file name
* This should work on any modern u-boot for most architectures
* Non-mmc targets will likely need some work

Change-Id: I9a00316a213a15e85d3f2e18574d64920d9bdb76
2018-05-19 20:04:50 -05:00
waddlesplash
39f5d71fe4 iconv: Fix the build on GCC6+.
Patch from http://git.savannah.gnu.org/gitweb/?p=libiconv.git;a=commit;h=b29089d8b43abc8fba073da7e6dccaeba56b2b70
to fix an "undefined reference" error to that function (https://savannah.gnu.org/bugs/?47953).
2018-05-19 20:35:33 -04:00
Jérôme Duval
36d628673c hda: sync snoop quirk pci ids list based on alsa. 2018-05-19 13:34:52 +02:00
Jérôme Duval
b54ad7b4f4 freebsd11_network: add missing bus_get_dma_tag method for marvell_yukon. 2018-05-19 12:58:28 +02:00
Jérôme Duval
95ed3b4432 kernel/x86_64: add signal handler compat code.
* x86_64_signal_handler_compat is a dump of x86 x86_signal_frame_function().
* the x86 compiler should be used to produce this code, which ends up in the
commpage.

Change-Id: I03da02c376f67ff83dbaba9bcb144da726463996
2018-05-18 15:19:41 +00:00
Sergei Reznikov
f42d4b5cc4 CodyCam: center error messages 2018-05-18 15:12:13 +03:00
Jérôme Duval
db9b70ee54 kernel: add a compatibility commpage on x86_64.
* x86 uses a commpage with 32-bit addresses, incompatible with the one used for
x86_64. For this reason, a compatibility commpage is needed to support a 32-bit
userland on x86_64.
* define ADDRESS_TYPE as a macro for addr_t (default) or uint32 (for the 32-bit
commpage).
* team_create_thread_start_internal() will use clone_commpage_area() with
KERNEL_USER_DATA_BASE or clone_commpage_compat_area() with
KERNEL_USER32_DATA_BASE, to setup the correct commpage.
* real_time_clock (in compatibility mode) also updates the compatibility
commpage with real time data.

Change-Id: I61605077ce0beabab4439ef54edd1eae26f26fd2
2018-05-18 05:11:07 +00:00
Jérôme Duval
cd6365c7ce style fixes 2018-05-17 22:23:36 +02:00
Jérôme Duval
9e095e1ef8 marvell_yukon: sync with FreeBSD 11.1.
* add imin() to libkern.h.
2018-05-17 21:34:11 +02:00
Adrien Destugues
79cb8f02d9 PS/2 synaptics: minimal clickpad support
Handled as a 1-button mouse. We didn't really support this since the old
Macintosh ADB mouses, so let's see if that code aged well!

Change-Id: Ibed2423023e821ae4ce608f0ddbc5ac32bfbd8f7
2018-05-17 06:18:19 +00:00
Adrien Destugues
258b7d4a8b ps2_synaptics: support Lenovo use of extra buttons
On some Thinkpads, the extra buttons are used for the trackpoint, so
they should be reported as "main" buttons, not extended ones. An
(undocumented) information query was added to the firmware to report
when this is the case, however it is not advertised as supported by the
firmware itself by the usual mechanism.

What we do is (just as the Linux driver) detect that the tocuhpad has a
PS/2 passthrough (likely used to daisy-chain a trackpoint on the same
PS/2 port) and also advertises extra buttons (an unlikely case, it is
already uncommon to even get a middle button these days...) and assume
that the information query is available then.

When the query is available and reports the quirk, the extended buttons
are reported as 0, 1, 2 (left, right, middle), instead of extra buttons
the userland would have no idea what to do with.

Change-Id: Iad5a9e140b6e49c298dcc901f4e331a4a847d7b2
2018-05-17 06:18:19 +00:00
Murai Takashi
b08627f310 Fix catching polymorphic type by value
Replace catching polymorphic type std::bad_alloc 'by value'
with 'by reference'.
Pointed by gcc8
2018-05-16 13:49:46 +00:00
Jérôme Duval
a553e95d85 kernel: support elf32 on x86_64.
* define ELF32_COMPAT to enable ELF32 macros.
* add a flag ELF_LOAD_USER_IMAGE_TEST_EXECUTABLE to only check the format.
It will be used by load_image_internal() to check which mode to use when
loading an image.
* in arch_elf_relocate_rel(), switch to elf_addr instead of addr_t, which
would be the wrong size for elf32 on x86_64.
* the ELF compat loader reuses the relevant parts of elf.cpp and arch_elf.cpp,
excluding for instance load_kernel_add_on() or dump functions.

Change-Id: Ifa47334e5adefd45405a823a3accbd12eee5b116
2018-05-15 10:29:00 +00:00
Jérôme Duval
496080235a kernel/x86_64: add ia32 syscall entry and commpage syscall code.
* only for Intel sysenter/sysexit.
* the entry function processes stack arguments as follows:
    we look up the syscall in the table, find the number of arguments.
    reserve place on the stack for the arguments.
    copy arguments on the stack
    pop register arguments
    call the syscall function
    place the return value in ax and dx registers.
* TODO: we need to store the arguments somewhere for the post-syscall tracing.
* the thread exit stub is 32-bit, for the time being use hexadecimal instructions.

Change-Id: Ie5c502eb596d4fa7613d238de80643566bc19ed8
2018-05-15 10:27:18 +00:00
Jérôme Duval
27b32ee02c kernel/x86_64: adjust descriptors tables for compatibility mode.
* also adjust BOOT_GDT_SEGMENT_COUNT for x86, the definition is used by the
boot loader.
* add some 32-bit definitions.
* add a UserTLSDescriptor class, this will be used by 32-bit threads.

Change-Id: I5b1d978969a1ce97091a16c9ec2ad7c0ca831656
2018-05-15 10:27:02 +00:00
Murai Takashi
6692e4c87f Remove RAND_MAX
Since RAND_MAX is not used in source code and
pre-defined in stdlib.h .

Change-Id: Ic16dd9c86bc96cea409a82e83f5593257808568d
2018-05-15 05:31:34 +09:00
Murai Takashi
96ef28f853 xhci: Remove unnecessary parentheses
Remove unnecessary parentheses in declaration of
'trbs' pointed out by gcc8.

Change-Id: I87d043866929d1a7f56ce97aa3667c91eeed52e0
2018-05-14 10:33:23 +00:00
Adrien Destugues
e003057f5d PS/2 Synaptics: add support for extended buttons
It is possible to get up to 8 extra buttons on synaptics touchpads.
On some Thinkpad models, these are used to implement the trackpoint
buttons (reported as buttons 4, 5 and 6). Since the touchpad itself has
no buttons (it is a clickpad), we may at least try to handle these
properly.

Change-Id: I5d4021e36fb3ac86ecf213c5666f9b6ddd3e2bca
2018-05-12 18:21:26 +00:00
Zoltán Mizsei
ebdb22de92 Fix ps2 debug build on x86_64
Change-Id: I579656b6b0619b44aa4a02c87720762cb5dd1415
2018-05-12 18:20:31 +00:00
Jérôme Duval
356fc3bf06 BWindow: fix debug build. 2018-05-09 21:00:55 +02:00
Jérôme Duval
0032be820b kernel/x86: asm offsets for the extended syscall table.
the x86_64 compat syscall entry needs size and offset of parameters to
handle them correctly to the syscall function. struct extended_syscall_info
and struct syscall_parameter_info provide parameter count, size and offsets.

Change-Id: I7e5c7b6e19e757b28b43c3b3419b7071fae321f8
2018-05-09 18:24:32 +00:00
Axel Dörfler
ae47dec0fd mount_server: Use scoring mechanism to detect volume
* This makes mounting volumes more stable; ie. you can put your
  drive in another slot, or boot your native system in emulation, and
  it will still find the drives to mount.
* The old method is still left there in order to achieve a smooth
  transition.
2018-05-08 20:22:27 +00:00
Adrien Destugues
ad33fd78a5 BAffineTransform: de-virtualize some calls in flattening code
The Flatten and Unflatten method should check the size according to the
matching FlattenedSize method, not a possibly overriden version.

May also fix #14128 since we avoid use of the vtable by doing this.
2018-05-08 15:40:01 +00:00
Jérôme Duval
edf7f4cd5f virtio_scsi: actually write the cdb size
instead of the sense size. Should help with #14133.
2018-05-08 17:33:01 +02:00
Jérôme Duval
645dc27d9d broadcom570x: sync with FreeBSD 11.1.
* add a few sysctl definitions, kern_getenv().
2018-05-07 22:05:51 +02:00
Jérôme Duval
57ca9c743d broadcom440x: sync with FreeBSD 11.1. 2018-05-07 22:05:50 +02:00
Jérôme Duval
3f853fd3c2 usb_audio: use user_memcpy to read/write the user buffers.
* also check buffer addresses passed through structures.
* fixes gcc5 and 64-bit warnings.
* only setup tested (lack of isochronous transfers).
2018-05-07 19:04:45 +00:00
Jérôme Duval
630e3f1410 View: move BAffineTransform out of ViewSetStateInfo.
the size of BAffineTransform is architecture dependent, so we transmit
its contents in a standard array instead.

Change-Id: I907110742168846a869a48bb2d116cc5292ec7d0
2018-05-07 07:02:57 +00:00
Jérôme Duval
33dc8de507 kernel: remove incorrect inline and static keywords for syscalls. 2018-05-06 16:27:47 +00:00
Jérôme Duval
2aaad308b8 runtime_loader: enable elf32 on x86_64, elf64 on x86.
use x86 as default sSearchPathSubDir in compatibility mode.
use the generic memset/memcpy when x86_64 is the primary arch.

Change-Id: Ib464c308ff97f7ae2482ef4c037de1b1bb2bf61b
2018-05-05 09:37:49 +00:00
Jérôme Duval
51dfedd76b libroot_x86: use the generic memset/memcpy when x86_64 is the primary arch.
the standard x86 implementation uses the commpage, which is difficult to setup. we could
also use the C++11 version instead.

Change-Id: I4be7e3466082ff2c91bc32bef377a664ce65f3fc
2018-05-05 09:37:16 +00:00
Jérôme Duval
27bba9c3fe registrar: flat_app_info size was arch dependent.
copy each member of app_info instead.

Change-Id: Ica8d0a195b2dbaaf57d28f2fe2f7efd73c37b2c4
2018-05-05 09:30:08 +00:00
Adrien Destugues
7dba237f7f BSecureSocket: re-enable RSA cipher suite
my.justenergy.com allows only RSA, so we can't connect there without
this. Other websites may have a similar problem.

Also improve the handling of the error, as it was giving a generic
"general system error" to the user.

Fixes #13975.
2018-05-05 08:48:22 +02:00
Jessica Hamilton
f599721237 bootloader/efi: remove partition before adding to new list.
* A Node/Partition cannot be member of two lists at once. This
  resolves an issue where a partition cannot be found later
  due to corruption of a NodeList.
2018-05-05 14:14:35 +12:00
Jessica Hamilton
bb96d47d9b Revert "efi: force boot menu to show."
This reverts commit 3ceaa03c60.
2018-05-05 14:14:21 +12:00
Jessica Hamilton
3ceaa03c60 efi: force boot menu to show. 2018-05-05 14:11:26 +12:00
Alexander von Gluck IV
dd485ed444 elf: Add aarch64 and riscv defines
* Add some additional defines as well.

Change-Id: I0a40f6b80a634ddaf83a8c22b9726a6e1f49bd34
2018-05-04 18:32:33 +00:00
Philippe Houdoin
91077c485a /bin/shutdown: fixed bug, was returning non zero even on shutdown
success. Spotted by mcandre, thanks!
2018-05-03 12:22:45 +02:00
Jérôme Duval
1894e9b6a7 Add runtime_loader in secondary bootstrap packages.
add grist to runtime_loader source files.

Change-Id: I09c58b5cc1d57034632df99b4fb3c80e3ff49e3e
2018-05-02 16:46:02 +00:00
Jérôme Duval
fe11711026 virtio: add driver for the virtio balloon device
* how-to for qemu: command line option: -balloon virtio
* in the monitor view
    - to switch the vm size to 500MB: balloon 500
    - to display balloon info: info balloon
2018-05-02 14:24:40 +00:00
Adrien Destugues
401c837afc multi_audio: remove some unused debug macros
We were #defining DEBUG here, which leads to some system-wide debugging
macros being always enabled as well (PRINT_OBJECT and the like). This
should be managed only using SetConfigVar in UserBuildConfig.

Remove the unused UNIMPLEMENTED and BROKEN macros because everything is
implemented, and nothing is currently known to be broken :)
2018-04-29 17:25:46 +00:00
Augustin Cavalier
648f0d5f08 libroot_build: Properly remap fs_attr_* functions.
This was done using macros before, which isn't the way we have things set up.
In theory that method should work, however if not all consumers include the
libroot_build headers properly, then it breaks in subtle but confusing ways,
which is not what we want at all.

Thanks to Jessica for advice.

Change-Id: Idd45df5547daecf8239932957088da03ddfccf87
2018-04-29 17:25:18 +00:00
Jérôme Duval
88c1a9d048 virtio_net: improve performance.
* use so many buffers as the queue can contain.
* queue receive requests as soon as possible.
* don't wait for transmit completion.
* interface can now be brought down and up.
* add locking around access to lists and virtio queues.
* iperf results: guest->host 400MBits/sec.

Change-Id: I6423e4afcb59f280d702893cc8d22a9ef908113a
2018-04-26 18:46:06 +02:00
Jérôme Duval
e1ac2a3e45 virtio_pci: write config in IO-space instead of PCI config space. 2018-04-26 18:07:42 +02:00
Jérôme Duval
988f999816 virtio_block: fix build nach API change. 2018-04-26 16:36:04 +02:00
Jérôme Duval
61cd7e85d7 virtio: add API to uninit a device.
* free interrupts, free queues, return to init state.
* this will be used by virtio_net on interface uninit.

Change-Id: I7c1e6facc37cf6bfe19628576fdf2c0bac9e5c38
2018-04-26 06:25:41 +00:00
Jérôme Duval
6e82e42859 virtio: refactor to have a handler per queue.
* enable to iterate on available entries in one interrupt call.
* negociate -> negotiate, (void *) -> (void* ), thanks axel and philippe!

Change-Id: Ie2d290797abcbf4c0f3cb5bfff71d091bb800fa6
2018-04-26 06:25:15 +00:00
Axel Dörfler
30764e3821 launch_daemon: Fixed getting data of stopped service
* If you stopped a service, and ran it manually, it would hang forever
  waiting for its port data.
2018-04-25 22:56:22 +02:00
Fredrik Holmqvist
86901205d0 Avoid arithmetic operations on void pointers
See what I did there?
2018-04-25 21:42:16 +02:00
Fredrik Holmqvist
6d34de21b8 Missing else in else if. 2018-04-25 21:41:33 +02:00
Fredrik Holmqvist
72c715ecbe Another while (( ..) 2018-04-25 21:41:33 +02:00
Fredrik Holmqvist
a7affb9189 The ' = ' character is no more. 2018-04-25 21:41:33 +02:00
Fredrik Holmqvist
b18b18ac3e Wrong order of arguments in header.
It is called from KernelInterface with Mount(&fs, server, serverName, path..
That is also what FileSystem.cpp says.
2018-04-25 21:41:33 +02:00
Axel Dörfler
a77aa747ea launch_daemon: Added basic logging facility
* The daemon now stores many events in am internal log.
* You can use "launch_roster log" to retrieve it.
2018-04-25 10:10:43 +02:00
Axel Dörfler
6d7b8a3088 launch_daemon: Renamed TeamRegistrator to TeamListener 2018-04-25 10:10:43 +02:00
Jérôme Duval
95cebb26c7 fat: fix gcc2 build 2018-04-24 20:32:40 +02:00
Jérôme Duval
7760bb460f ntfs: fake_read_attrib used the user buffer directly
It now uses user_strlcpy()
2018-04-24 20:06:05 +02:00
Jérôme Duval
b0bcd96bd7 fat: use the return value of strlcpy instead of strlen. 2018-04-24 19:54:00 +02:00
Fredrik Holmqvist
e3becd53ee Ternary operator proper precedence.
Going through PVS Studio blogs on Haiku.
2018-04-23 23:25:16 +02:00
Axel Dörfler
7750fdcf18 vfs: _user_flock() did not use FS advisory locking calls
* The kernel's advisory locking implemenation must not be used if the
  file system has its own (ie. network file systems).
* Added ASSERT to free_vnode() that assures there is no locking left;
  I recently had a lot of them around.
2018-04-22 15:13:29 +02:00
Fredrik Holmqvist
58c99ce4d4 malloc_referenced adds +1 to int32 pointer so use its release 2018-04-22 12:47:30 +02:00
Fredrik Holmqvist
c0ceea9c79 Remove unused var and always true check. Clean redeclaration. 2018-04-22 12:09:56 +02:00
Fredrik Holmqvist
aa2c061c3d cppcheck: Shifting 32-bit value by 63 bits is undefined. 2018-04-22 11:47:15 +02:00
Fredrik Holmqvist
99400bbed0 Objs in array was deleted, but not array itself. 2018-04-22 00:12:08 +02:00
Zoltán Mizsei
c74be242c4 iwn: add working pci id for Intel 6235 2018-04-21 22:06:04 +00:00
Fredrik Holmqvist
c7fad27a8b Free ci on error 2018-04-21 23:37:01 +02:00
Fredrik Holmqvist
29208af825 Redundant '(' 2018-04-21 23:36:04 +02:00
Fredrik Holmqvist
5676dce83c memcmp on sizeof(x)==0 bytes fix 2018-04-21 23:34:16 +02:00
Adrien Destugues
1b4fdf606d intel_extreme: fix C++ syntax.
Thanks to tqh and cpcheck for finding this.
2018-04-21 22:12:26 +02:00
Jérôme Duval
853a76f1f3 vt612x: sync with FreeBSD 11.1. 2018-04-21 22:07:48 +02:00
Jérôme Duval
e68394b978 ar81xxx: sync with FreeBSD 11.1. 2018-04-21 21:55:58 +02:00
Jérôme Duval
dde876f9f8 kernel: pae paging: align *TableEntry() with 64bit paging
use SetTableEntry() in PutPageTableInPageDir() and PutPageTableEntryInTable().
2018-04-21 10:06:51 +00:00
Jérôme Duval
03df8bfcf2 kernel: vm: reduce stack usage in swap_init_post_modules().
* avoid a struct copy in PartitionScorer.
* reduce stack usage in get_mount_point().

Change-Id: I60a3161ba39e9a50eaae972b7ff5b4a26d6292fa
2018-04-18 12:37:02 +00:00
Jérôme Duval
1fb59be1d1 Fix some usages of BStackOrHeapArray.
Validates the buffer with IsValid() before actually using it. Thanks Rene!
2018-04-16 14:30:34 +00:00
Jérôme Duval
4b588b36ad virtio_scsi: avoid unbounded stack usage in ExecuteRequest(). 2018-04-11 23:45:50 +00:00
Jérôme Duval
48c1ae929e libroot: avoid excessive stack usage in __find_directory()
create_path() is inlined in __find_directory().
2018-04-11 23:44:22 +00:00
Jérôme Duval
70422d06a9 ipv6: avoid unbounded stack usage in send_fragments(). 2018-04-11 23:43:47 +00:00
Jérôme Duval
df4bea7d7c usb_hid: add a list blacklisted devices 2018-04-09 22:06:55 +02:00
Alexander Coers
272475393c Changed PNG translator config view
Removed workaround for already fixed bug 4217 and removed the call
to SetExplicitPreferredSize(), since the layout system was always able 
to calculate good values for PreferredSize.
So for me the call seems to be superfluous.

Fixes #13353
2018-04-09 13:01:26 +00:00
krish_iyer
f960e7e9a2 Support kit: Fixed issues in BString unit tests
1: Changed CPPUNIT_ASSERT -> CPPUNIT_ASSERT_EQUAL
2: Fixed coding style: Added two lines after including libraries, maintained 80 characters(MAX) in each line and space at comment start
3: Fixed the failure for "BString::Search" test "i != 0 by chaning the testing method(StartsWith->IStartsWith) and changed the string to be searched(sT->st)

Change-Id: I1237d1f2d0e3af7757963cc940bae929f487f088
2018-04-07 16:52:44 +00:00
Jérôme Duval
509c7718dd fat: dosfs_read_attr used the user buffer directly
It now uses user_strlcpy().
2018-04-07 17:53:47 +02:00
Michael Lotz
a113ad395f Cleanup: Remove debug leftover introduced in hrev51871. 2018-04-06 21:28:33 +02:00
Michael Lotz
9c4845e767 kernel: Implement wait info count limit in wait_for_objects.
Since wait_for_objects can wait on sems, threads and ports in addition
to FDs, limiting to RLIMIT_NOFILES as in the select/poll case does not
work. Since space is allocated for the wait objects in kernel memory,
limiting their number to a valid range is still desireable.

The limit is now placed at the sum of max sem, thread and port count
plus RLIMIT_NOFILES.

This also fixes a signed vs. unsigned comparison warning in
check_max_fds introduced in hrev51866.
2018-04-06 21:20:11 +02:00
Barrett17
80e9e5f3e7 Add new tests to MediaTest 2018-04-06 02:33:26 +02:00
Barrett17
5ba361f8bf ffmpeg: Fix warning about setting stream timebase
Spotted by jackburton, doesn't fix #13407.
2018-04-06 02:33:26 +02:00
Jérôme Duval
b1f1332ebb PackageKit: use the correct kernel headers.
The debug build of the packagefs kernel addon failed because user_memcpy had no type.
Using the correct headers for user_memcpy and IS_USER_ADDRESS fixed the issue.
2018-04-05 17:51:13 +02:00
hyche
0a4cbf0d1e btrfs: Fix stack corruption on MakeReference()...
because it needs extra space for storing data, and flexible array member o
doesn't do this.
I thought it was...

Change-Id: If64c06827809a4e021581c6adf8e0f198cf47450
2018-04-04 06:19:55 +00:00
Michael Lotz
c101b57682 kernel: Implement FD limit check for select/poll.
The amount of FDs that can be selected/polled needs to be limited by
the RLIMIT_NOFILES.
2018-04-04 00:09:23 +02:00
Michael Lotz
321372e3ef kernel: Make size argument to create_area_etc() size_t.
It was limited to a uint32 and could for example be overflown by the
slab MemoryManager that uses size_t on a 64 bit system.

This aligns the signature with create_area() that already uses size_t
for the size argument.

Note that the function is currently private, so the impact should be
limited.
2018-04-04 00:07:59 +02:00
Jérôme Duval
e1ceb339a0 kernel: override access control in user_[un]block_thread()...
when reading/writing the wait_status in userland. fixes #14067.
2018-04-03 22:42:14 +02:00
Jérôme Duval
048796e140 hda: sync snoop quirk pci ids list based on alsa. 2018-04-03 16:49:11 +02:00
Kim Brown
cb3445aa2a Installer: WorkerThread: Add syslog to ignored paths
A new install should start with an empty syslog. Adding
the syslog path to the set of ignored paths will prevent
an existing syslog file from being copied into the new
install.

Fixes #8373
Change-Id: I79ecf95773a34360185d38ee4ef0c8337b062e7a
2018-04-02 21:05:47 +00:00
François Revol
4498948fcf recover: Work around use-after-free
Inode::_FindPath() always deletes the inode it uses regardless
the source, including when it's from the HashtableInodeSource.

But the later returned the inode object directly from the hashtable
when it's inside, so it gets deleted bu _FindPath… then reused later on
when searching the hashtable again.

I'm not sure it's the correct solution but at least malloc_debug doesn't
complain anymore.
2018-03-27 23:14:32 +02:00
Andrew Lindesay
b45e8b1ef9 HaikuDepot : additional debugging for json-rpc invocations 2018-03-25 05:44:19 +00:00
Jérôme Duval
823466613f usb_raw: the command struct wasn't copied back in some cases.
hopefully fixes #14050 after e2e571c035.
2018-03-24 20:03:47 +01:00
Jérôme Duval
a25f7264b6 BString: fix Split() for multiple characters separators...
as suggested by Janus in #14045. Thanks!
* add a unit test for BString::Split().
2018-03-22 21:29:43 +01:00
hy che
7cf48d4e51 TextView: Remove redundant check in ScrollToOffset as PointAt() already does the check.
Change-Id: I2bf541fca84ef27749484ee1be05fb9debac32e2
2018-03-22 10:28:44 +00:00
Andrew Lindesay
d13c3d8967 HaikuDepot : Handling for Depot Name Anomalies
There is a problem primarily manifesting itself in
the x86_64 build where the packages' names from the
solver are not correlating with the names of the
as-configured depots.  There was also a problem
with a local variable being the same name as a function
parameter.  This does not fix the underlying problem,
but avoids further anomalies in the HaikuDepot UI.

Possibly related trac #11317, #11674, #13940.
Change-Id: Ic140f114bbe38e59c78760213843bf492ff7a270
2018-03-22 10:14:34 +00:00
Rene Gollent
364cbeb2e3 Debugger: Adjust type handling with namespaces.
DwarfImageDebugInfo:
- In some, but not all cases, gcc5 generates type information where the DIEType
  is a child of a namespace rather than of its containing compilation unit.
  This needs to be taken into account when building our name lookup table, as
  we'll otherwise not find the full definition of such types when attempting to
  locate them for corresponding variables. Fixes an issue reported by Axel.
2018-03-17 17:00:50 -04:00
Alexander von Gluck IV
3b60bc6b9b openfirmware/ppc: A few minor fixes and extra debugging
* Show old page table location and provide more feedback
* 16 int32 * 0x10000000 > sizeof(int32), fix to uint32

Change-Id: Ib68c34f5d3c6bfa1da53241e6586c07e4e494750
2018-03-13 21:35:22 -05:00