Commit Graph

6015 Commits

Author SHA1 Message Date
Paweł Dziepak
1eba40776d kernel/x86_64: rewrite cpuid.S -> cpuid.cpp
Just getting rid of some assembly, no functional change.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
2014-08-25 23:07:22 +02:00
Paweł Dziepak
721a07ac24 libroot: remove ATOMIC_FUNCS_ARE_SYSCALLS
GCC knows whether these functions need to be implemented using syscalls
(or more clever solutions like in Linux) and calls libgcc in such case.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
2014-08-25 23:07:18 +02:00
Paweł Dziepak
d3b1caa62d kernel, libroot: use C++11 atomics in atomic_*()
The less assembler in our sources the better. These functions wouldn't
be used very much since SupportDef.h inlines them, but the symbols should
be available.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
2014-08-25 23:06:08 +02:00
Paweł Dziepak
aa58f7e431 os/arch: implement all atomic_*() using std::atomic<>
Time to get rid of some asm code. Surprisingly, it appears that
on x86[_64] the emitted code for atomic_test_and_get() isn't as efficient
as it could be, even with -O2, but cmpxchg is so expensive that this slight
difference shouldn't matter much.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
2014-08-25 23:06:08 +02:00
Fredrik Holmqvist
454ca0b1aa Accidently push tracing on device_manager. Fixing. 2014-08-23 16:35:32 +02:00
Fredrik Holmqvist
ad5bbfb8e1 Update ACPICA to 20140724.
Previous update was 20121018. So it was about time don't you think? I think so :)

 * ACPI 5.1 is fully supported in ACPICA as of this release.

Changes are so many that I can just point to the Changelog:
  https://acpica.org/sites/acpica/files/changes_13.txt

Here is the work in progress: http://instagram.com/p/sCxrHnh2sU/
2014-08-23 16:30:50 +02:00
Arvind S Raj
7a402b996e Reimplemented atomic_get_and_set in C++.
Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>

* C++ code written by pdziepak.
2014-08-18 08:45:40 +02:00
Oliver Tappe
e81d40a7c8 Fix debug build.
* Restore missing definitions of std::nothrow and mynothrow that are
  required for the debug build.
* Additionally, cleanup function overrides provided by kernel_cpp,
  such that any exceptions in kernel, bootloader or runtime_loader will 
  trigger a panic.
2014-08-17 20:24:02 +02:00
Ithamar R. Adema
21af7e541f ARM: remove all references to sfdisk
sfdisk is no longer used by the ARM build, since we can handle
everything with mtools (using mpartition instead of sfdisk).
2014-08-17 14:34:25 +02:00
Oliver Tappe
87e8603d9f Merge branch 'gcc_syslibs'
* From now on, the gcc-specific system libraries (libgcc, libsupc++ and
  libstdc++) are provided by separate packages built along with gcc:
  - gcc_syslibs contains the shared libraries (libgcc_s.so, libsupc++.so and
    libstdc++.so)
  - gcc_syslibs_devel contains the static libraries and both c++ and gcc
    headers
  The shared libraries now make proper use of symbol versioning and there
  are version-specific symlinks
* The buildsystem has been adjusted to no longer use the libraries and
  headers from the cross-compiler, but use the ones provided by the
  above-mentioned packages. The only exception is that the 32-bit libraries
  required for the bootloader of the x86_64 architecture are still taken
  from the cross-compiler.
2014-08-13 13:50:29 +02:00
Oliver Tappe
f7653b1b74 Optionally build glue code for bootstrap_stage0 platform. 2014-08-13 13:32:49 +02:00
Oliver Tappe
445257ffd6 Fix missing symbols in <stubbed>libroot.so.
* A couple of symbols reuse the same address (via weak symbols), so
  we adjust generate_stubs.py accordingly.
2014-08-13 13:32:49 +02:00
Oliver Tappe
b2883f6a0d Add support for building <stubbed>libroot.so.
* <stubbed>libroot.so is a shared library which contains all the symbols
  from libroot, but without any code. This library will be required by
  the (to be introduced) stage0 of the bootstrap process, in order to
  be able to link the shared gcc syslibs (libstdc++.so, libsupc++.so
  and libgcc_s.so).
2014-08-13 13:32:46 +02:00
Oliver Tappe
37f558d5a3 Let runtime_loader ignore RT_RELRO program headers.
* The new libstdc++.so contains program headers of type PT_RELRO (for
  making segments read-only after relocation). While the actual feature
  has not been implemented, the runtime_loader should now silently
  accept (and ignore) those program headers.
2014-08-13 13:32:45 +02:00
Oliver Tappe
220d040227 Use libstdc++, libsupc++ and libgcc from gcc_syslibs.
* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
  from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
  x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
  necessary since we're only using libgcc-as-single-object for libroot
  with x86_gcc2, where the filtered object file doesn't exist. Should
  the objects that used to be filtered cause any problems as part of
  libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
  x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
  x86_gcc2, we still build libstdc++.so from the sources in the Haiku
  source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.
2014-08-13 13:32:44 +02:00
Jérôme Duval
3aeed6607c include strings.h where appriopriate...
instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949
2014-08-08 22:40:37 +02:00
Arvind S Raj
82d287ddcb Reserve 8MB space for kernel before RAM_loader
...so that kernel does not overwrite the loader.

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>

Fixes #11067.
2014-08-08 17:39:33 +02:00
Adrien Destugues
178be2a6d5 Style fix. 2014-08-08 09:15:38 +02:00
Arvind S Raj
fea7eea417 Check if gARMPagingMethod is null
in arch_vm_translation_map_is_kernel_page_accessible. Fix borrowed from x86
(commit 428b9e758c).

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>

Fixes #11107.
2014-08-08 08:37:12 +02:00
Jérôme Duval
4dc5ce8fd8 mknod[at](): moves from unistd.h to sys/stat.h
* this solves #10883.
2014-08-04 19:03:08 +02:00
François Revol
98f35f3a92 Add EHOSTDOWN to strerror() 2014-07-30 12:31:24 +02:00
François Revol
65b2278e9a How come we missed the case B_DONT_DO_THAT in strerror() ??? 2014-07-30 12:26:31 +02:00
François Revol
917634bc8a Add missing strings to strerror() for hrev46649 2014-07-30 12:26:31 +02:00
Arvind S Raj
7749faf602 Disable frame buffer for now since it's not essential. Fix involves correcting fault when writing to CM_CLKSEL_DSS during frame buffer initialisation. 2014-07-28 16:12:58 +02:00
François Revol
ae2cdda736 Fix type mismatch warnings 2014-07-28 14:50:15 +02:00
François Revol
3501a97d9b Add cases for uname() for all known platforms
After what QEMU linux-user says about those.

Not sure what to do for ARM. I used the lowest emulated CPU in QEMU.
2014-07-28 14:45:04 +02:00
François Revol
2692aea576 Fix "unhandled case in switch" warning 2014-07-28 14:45:04 +02:00
John Scipione
970910c21e Runtime loader: Fix unchecked return value
Tested by running Attraction! from haikuware.com

CID 1228648
2014-07-23 14:44:36 -04:00
Jessica Hamilton
dc2f4e9a2f find_directory.cpp: improve #ifdef macros with comments 2014-07-21 21:52:23 +00:00
Adrien Destugues
ba0b0f2319 Sorry, I didn't mean to commit this. 2014-07-21 09:41:00 +02:00
Adrien Destugues
043178a063 Add WizzNic
* Update sdl_image_x86 to a version that can load PNG files
* Update giflib_x86 to match what's required by the new SDL_image
package
2014-07-21 09:34:52 +02:00
Jessica Hamilton
ea7e2601d4 runtime_loader: only add ABI directories to system library paths
It only makes sense to add the ABI directories to library paths
created by Haiku itself. E.g. on a gcc2h build, appending x86.

This also fixes build issues where LIBRARY_PATH is amended, and
the target binaries and libraries are in different locations.

Note: the develop lib directories were excluded, as runtime_loader
shouldn't be looking at these in the first place.
2014-07-21 11:12:11 +12:00
Jonathan Schleifer
e0650f25c3 Build libsupc++-kernel without TLS 2014-07-20 20:32:34 +02:00
Julian Harnath
b916156a83 Move libroot synchronization functions to private namespace
* Prefix lock functions with __ to mark them as private. Add
  forwarding macros to keep existing code working.

* Avoids symbol name clashes with kernel lock APIs, occuring when
  using kernellandemu-lib in userlandfs. Thanks to Ingo for the
  suggestion.
2014-07-13 16:19:08 +02:00
Ingo Weinhold
e527b79631 Switch package file accessor classes to use BPositionIO
* PackageFileHeap{Reader,Writer} as well as Package{Reader,Writer} and
  their implementation and super classes do now internally use a
  BPositionIO instead of a FD to access the package file. This provides
  more flexibility needed for features to come.
* BPackageReader has already grown a new Init() version with a
  BPositionIO* parameter.
2014-07-12 15:40:22 +02:00
Ingo Weinhold
01e6d687c0 boot loader: Add pwrite(), lseek(), ftruncate()
ftruncate() is just a stub (needed for BFdIO).
2014-07-12 15:40:22 +02:00
Ingo Weinhold
1b50eb7d91 Remove unnecessary zlib build feature dependency 2014-07-12 15:40:21 +02:00
Axel Dörfler
de9c061339 bfs: Use the QueryParserUtils instead of its own copy.
* Ingo copied the methods into a shared location, and then obviously
  "forgot" to let BFS use them. As a side note for Ingo: the complete
  error GCC reported was "std::fssh_size_t" not defined with the macro
  wrapper as code location. The actual problem was a "using std::size_t"
  in some C++ header that accidentally got included after the wrapper.
* The shared Query code is not yet used. That'll be done another time.
* Renamed BFS_SHELL define to FS_SHELL, such that QueryParserUtils can be
  used in any file system shell, not just the bfs_shell.
2014-07-09 22:54:39 +02:00
Augustin Cavalier
d229332a33 CIDs 1162783 & 1162784: out-of-bounds access & write in MSI.
* The number of IO vectors is not 256 on x86, but rather 224 as set by
  NUM_IO_VECTORS in "arch_int.h".
* Jessicah mentioned hearing about MSI crashes before, but that was a
  few weeks ago.
* These were the only CIDs in the MSI code.

Signed-off-by: Michael Lotz <mmlr@mlotz.ch>
2014-07-08 20:39:37 +02:00
Augustin Cavalier
d71c5a1ebf #10717: Addressing issues brought up by Axel and Gerasim
Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
2014-07-06 14:02:12 +12:00
Augustin Cavalier
ba38276d19 Ensure partition block size is not 0.
* I tried having this test in KDiskDeviceManager.cpp, but it
   failed booting in one case and did not solve the problem in another.
   I think this is because there is an Open() call here, and that rereads
   the blocksize.
 * Tested and it solved the problem for me.
 * Should fix #10717 and #9489 at least.

Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
2014-07-06 10:24:14 +12:00
Ingo Weinhold
b3263ad3e1 Switch package kit to BZlibCompressionAlgorithm
... and remove the Zlib{Compressor,Decompressor} API.
2014-06-30 21:55:41 +02:00
Ingo Weinhold
6a89a36aa0 Move package kit Zlib* classes to support kit
Also move to B* namespace and no longer expose the zlib dependency in
the headers.
2014-06-30 21:55:41 +02:00
Arvind S Raj
6f742d85f9 Corrected check to ensure that command line options are indeed passed.
* Currently, no command line options are being passed via u-boot
  to haiku. However, the comparison doesn't ensure that cmdline
  is not an empty string - it merely ensures cmdline is not null.

Signed-off-by: Ithamar R. Adema <ithamar@upgrade-android.com>
2014-06-27 12:20:22 -07:00
Arvind S Raj
cf0ba4901d Move stack to SDRAM as specified in memory map.
* After initializing the page table and enabling MMU,
  the pre-MMU stack becomes invalid leading to a fault.
  This was fixed by moving the stack to SDRAM as specified
  in LOADER_MEMORYMAP before ARM entry point start_netbsd.

Signed-off-by: Ithamar R. Adema <ithamar@upgrade-android.com>
2014-06-27 12:20:16 -07:00
Ingo Weinhold
32832cbe47 Remove BPackageKit::BDataOutput
Use BDataIO instead.
2014-06-23 22:58:15 +02:00
Ingo Weinhold
dec78bb27c Add new error codes B_PARTIAL_{READ,WRITE} 2014-06-23 22:58:15 +02:00
Ingo Weinhold
d2d1af830b Revert "Move ZlibDecompressor to libshared"
This reverts commit 9af2105d36.

Conflicts:
	src/kits/package/Jamfile
2014-06-18 22:13:39 +02:00
Ingo Weinhold
a01adf34d6 Revert "boot packagefs: Fix zlib dependency declaration"
This reverts commit 0b565a6f51.
2014-06-18 22:13:37 +02:00
Ingo Weinhold
f39d7f1096 Revert "boot packagefs: Fix header path in zlib dependency"
This reverts commit aafc3386ef.
2014-06-18 22:13:37 +02:00
Ingo Weinhold
f648efd3d4 Revert "Fix zlib-dependencies of (boot & standard) packagefs."
This reverts commit 06ed405803.
2014-06-18 22:13:36 +02:00
Humdinger
6229115bac More small C++11 tweaks. 2014-06-16 19:34:56 +02:00
PulkoMandy
004f41565e Apply fix suggested by Ingo
* Fix mixup of HAIKU_IMAGE vs HAIKU_IMAGE_NAME
* Use $(1) and $(2) instead of $(<) and $(>)
* Remove useless count parameter to dd
2014-06-15 14:59:01 +02:00
PulkoMandy
4a2260f21a Let the bootloader know about ARMv7.
When an ARMv7 CPU is detected, immediately turn on the FPU. This allows
us to use vsnprintf in the TRACE call in that function, as our libc is
compiled with floating point support and will trigger a fault if the FPU
is not available.

This lets the boot go further, and crash in mmu_init. Next steps:
* Find why mmu_init is crashing
* Setup some fault handlers, otherwise we call uboot ones, and they are
not very helpful. They will also probably not work once the mmu is
enabledvery helpful. They will also probably not work once the mmu is
enabledvery helpful. They will also probably not work once the mmu is
enabled...
2014-06-13 22:15:54 +02:00
PulkoMandy
afe56d3ab3 Load uImage higher so it doesn't overwrite itself
Loading of haiku_loader from an uImage is a 2-step process:

* First, the uImage is loaded (in our case from SD card using fatload)
to RAM at a temporary address.
* Then (using bootm), it is unpacked. The uImage is a container format
and can hold several files, with a load and execution address. The files
are copied from the uImage to their final location, and it's better if
that doesn't overlap with the uImage content

When this loading is done, bootm jumps to the entry point found in the
uImage.

We now actually execute our code from haiku_loader. This crashes with
the following call stack:
* vsnprintf
* dprintf
* boot_arch_cpu_init
* cpu_init

It seems vsnprintf is trying to use VFP instructions (probably from the
libgcc) but that triggers some kind of fault, and the handler (setup by
uboot?) ends up crashing the system by jumping to unmapped memory at 0.
2014-06-13 20:26:51 +02:00
PulkoMandy
3d6edc43d9 Patch by dnivra (GSoC 2014, ARM suppport)
* Cleanup the SD card image building to allow jam -q @bootstrap-mmc to
work.

There are a few remaining tricks before you can safely build an image:
* This uses a non-POSIX du option, and is only tested with Linux du
only (Linux is the only supported system to run bootstrap builds,
anyway)
* The Python recipe in haikuports.cross is known to not build on
Debian/Ubuntu, but work fine on OpenSuse. There is a patch available in
haikuports bugtracker to allow the reverse.
* You need to populate the haikuports repo package list with some
packages (which don't exist yet) to make the build system happy. But our
git hook to generate the repositories is preventnig me to share this
hack.

Once built, the image currently crashes early in the kernel execution.
On to debug that!
2014-06-13 17:22:48 +02:00
Jérôme Duval
d64267ffb2 vfs: checks whether the mount's unmounting flag is already set.
* thanks to Ingo for suggesting the idea, quoting him:
"by holding sVnodeLock read-locked, get_mount() ensures that fs_unmount() can't
process the nodes. If it is already past that point, the root node check
(not NULL, not busy, ref count > 0) is supposed to detect that. But it doesn't
look like this can work. fs_unmount() doesn't set the root node to NULL (the
root node field is NULL only during a short period in fs_mount()), but it just
frees the nodes after releasing sVnodeLock. So the not busy and ref count > 0
checks could already access freed memory".
* tested OK, this fixes #10522.
* replaced mount->root_vnode by the local variable with the same value.
2014-06-09 21:45:28 +02:00
Jessica Hamilton
5700f5fcc3 libroot.so: update glibc's e_pow.S on x86. Fixes #9962 2014-06-07 09:33:15 +12:00
Jessica Hamilton
01fbdbab83 xsi_semaphore: use MemoryDeleter instead of multiple free() 2014-06-03 13:38:04 +12:00
Oliver Tappe
1a7bcf6962 Lots of B_PRI... insertions to fix errors with DEBUG=1. 2014-06-02 02:00:28 +02:00
Paweł Dziepak
b20eb413cd kernel/x86_64: help gcc with devirtualization
This patch gets rid of some indirect calls in the paging code.
2014-05-30 02:11:05 +02:00
Paweł Dziepak
fb010e297f kernel/x86_64: use C++11 atomics in X86PagingMethod64Bit 2014-05-30 00:23:49 +02:00
Paweł Dziepak
91e7f347f9 kernel/x86_64: try to inline physical page mapper functions
The way we handle paging is very wasteful and relies heavily on virtual
funcions even if there is absolutely no reason to do so. The proper
solution would be to do a major rework of paging code (including
arch-independent parts).

On x86_64 physical page mapper is very simple what makes the overhead
resulting from the desing of paging interface very expensive. This
patch attempts to make things a bit better by helping GCC with
devirtualization and allowing inlining physical page mapper impementation
(well, only when it is devirtualized).
2014-05-29 23:41:46 +02:00
Puck Meerburg
d0592a1164 Fix Coverity bug 605892: Resource leak
Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
2014-05-30 08:45:56 +12:00
Michał Siejak
679ad262e9 haiku_loader now ignores unusable drives reported by BIOS.
This fixes the problem with find_unique_check_sums() taking a very long
time to complete when one or more drives report read errors.

Fixes #10880.

[Paweł: minor style issue]
Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
2014-05-29 22:32:15 +02:00
Jessica Hamilton
44ec21c3ff ByteOrder.h: simplify compiler test
* A problem with our gcc requires adding casts for gcc4 when
  the __builtin_bswap functions are used with a format string
* Unlike gcc2, the __builtin_bswap functions do not get disabled
  despite using -fno-builtins, hence added compiler check in
  runtime_loader/utility.cpp
2014-05-30 00:15:38 +12:00
Oliver Tappe
06ed405803 Fix zlib-dependencies of (boot & standard) packagefs.
* Some files that depend on zlib.h weren't declared as such, which
  could cause multijob builds to fail.
2014-05-24 20:26:41 +02:00
Adrien Destugues
5e36a367d7 Convert strdup.c to C++. 2014-05-23 18:30:26 +02:00
Adrien Destugues
6f79af3c55 Web+: move BookmarbKar to own file.
It's a bit long for an inline class, and I'm going to add more stuff to
it.
2014-05-23 15:38:10 +02:00
Pawel Dziepak
680ca3b13d runtime_loader: fix CID 1211995, improve generation counting
There is no need to increase generation counter each time new DSO is
registered.
2014-05-08 23:07:50 +02:00
Pawel Dziepak
fad7246fcd runtime_loader: fix CID 1211997, proper corner case handling 2014-05-08 23:07:50 +02:00
Pawel Dziepak
2c001246a0 build: when using gcc4 build kernel with c++11 2014-05-08 23:07:50 +02:00
Pawel Dziepak
76636769bd kernel/x86_64: inline x86_{read, write}_msr()
This patch makes it possible to inline rdmsr and wrmsr instruction. The
performance impact shouldn't be significant since they are used relatively
rarely and wrmsr is usually a serializing instruction, but there is no reason
not to do so.
2014-05-06 21:41:49 +02:00
Pawel Dziepak
88e8e24c84 kernel/x86_64: improve context switch implementation
The goal of this patch is to amortize the cost of context switch by making
the compiler aware that context switch clobbers all registers. Because all
register need to be saved anyway there is no additional cost of using
callee saved register in the function that does the context switch.
2014-05-06 21:15:55 +02:00
Pawel Dziepak
9db5b975f9 kernel/x86_64: rework of IDT handling code
Similarly to previous patch regarding GDT this is mostly a rewrite of
IDT handling code from C to C++. Thanks to constexpr IDT is now entirely
generated at compile-time.
2014-05-06 14:59:54 +02:00
Pawel Dziepak
2b6d4bc657 kernel/x86: add space between literal and identifier
Due to introduction of user-defined suffixes C++11 requires that there
is a space between literal and identifier to avoid ambiguity.
2014-05-06 14:59:53 +02:00
Pawel Dziepak
cd59bf4349 kernel/x86_64: x86_64 gdt handling code overhaul
Virtually no functional change, just rewriting the code from
"C in *.cpp files" to C++. Use of constexpr may be advantageous but
that code is not performance critical anyway.
2014-05-06 14:59:53 +02:00
Pawel Dziepak
c1dc104960 kernel/x86_64: enable c++11 in x86_64 specific code 2014-05-06 14:59:53 +02:00
Pawel Dziepak
f31c19bb9e libroot/x86_64: relax asm constraints in find_thread() 2014-05-06 14:59:53 +02:00
Pawel Dziepak
344643740a libroot/x86_64: minor improvements in TLS code
* less inline asm
 * std::atomic<> instead of obsolete atomic_*()
2014-05-06 14:59:53 +02:00
Pawel Dziepak
ea7e57c966 libroot: enable c++11 in os/arch/x86_64 2014-05-06 14:59:53 +02:00
Pawel Dziepak
0e45e3eb1d runtime_loader: keep symbol DSO in SymbolLookupCache
While resolving TLS related relocations it is necessary to know the DSO
that defines the symbol. Without proper support in caching that information
is available only when the symbol is resolved first time. That works well
for TLS since TLS_DTPMOD is guaranteed to be before TLS_DTPOFF relocation.
This patch makes the newly introduced parts of the interface work in a
general case.
2014-05-04 12:52:05 +02:00
Pawel Dziepak
df58e6a9f4 runtime_loader: support linking TLS symbols from any DSO
Previously TLS_DTPMOD relocation blindly returned ID of the current DSO.
This patch does proper symbol lookup if there is a symbol assigned to the
relocation and uses ID of the DSO in which the symbol is defined.
2014-05-04 12:21:26 +02:00
Pawel Dziepak
44c0c4d3d0 runtime_loader: add support for ELF based TLS
This patch introduces support of ELF based TLS handling with lazy allocation
and initalization of TLS block for each DSO and thread. The implementation
generally follows the official ABI except that generation counter in dtv
is in fact a pointer to Generation object that contains both generation
counter and size of the dtv. That simplified the implementation a bit, but
could be changed later. The ABI requirements regariding in memory position
of TLS block is not honoured what results in static TLS model being
unsupported. However, that should not be a problem as long as
"executables" in Haiku are in fact shared objects and optimizations which
require specific TLS block in memory layout are not possible anyway.
2014-05-04 04:00:17 +02:00
Pawel Dziepak
bc472ab8f9 runtime_loader: add simple vector implementation
std::vector requires libstdc++ which may be unsafe to use in runtime_loader.
2014-05-04 02:40:04 +02:00
Pawel Dziepak
634bc98a3c libroot/x86[_64]: relax asm constraints in tls_*() functions 2014-05-04 02:40:04 +02:00
Murai Takashi
79895eed07 Fix gcc 4.9.0 build
Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>
2014-04-29 22:01:34 +02:00
Jessica Hamilton
f21045a772 Correct B_USER_BOOT_DIRECTORY path. Fixes #10070. 2014-04-27 15:45:40 +12:00
PulkoMandy
279c181ab8 Import stdatomic.c from freebsd for ARM port
* Fixes missing atomic stuff that gcc requires
* The gcc build still fails further down, because of a mixup of
VFP/nonVFP objects (at least for beagle build).
2014-04-19 23:44:32 +02:00
Pawel Dziepak
744dfa3c4c kernel: make sure thread priority is within valid range
The scheduler expects that all threads expect the initial idle threads
have priority in range [THREAD_MIN_SET_PRIORITY, THREAD_MAX_SET_PRIORITY].
If the requested pririty is out of range the value is clamped. Failing
with B_BAD_VALUE is probably an overkill since there isn't any real
change in the guarantees provided by the scheduler about the behavior
of such thread. Also, BeBook suggests that spawn_thread() can specify
priority 0.
2014-04-18 23:55:18 +02:00
Ingo Weinhold
6b3a5caf99 VFS: Pass packages state selected in boot loader to packagefs 2014-04-18 23:31:40 +02:00
Ingo Weinhold
8585939dca VFS: Don't try to mount the no longer existing /boot/common packagefs 2014-04-18 23:31:40 +02:00
Ingo Weinhold
5c0f8450ac Boot loader: Add support for choosing an old packages state
For potential boot volumes with older packages states the respective
item in the boot volume menu now has a sub menu for selecting a state.
The boot loader functionality for this feature is complete -- i.e. the
respective kernel is loaded and the name of the old state is added to
the kernel args -- but kernel packagefs and package daemon support is
still missing.
2014-04-18 23:31:39 +02:00
Ingo Weinhold
59881eaa16 Boot loader: Update copyright right in boot menu 2014-04-18 23:31:39 +02:00
Ingo Weinhold
59ae1c816d Boot loader: Add get_stat(), directory_from()
* Add Node::Stat() and simplify Descriptor::Stat().
* Add get_stat() and directory_from().
2014-04-18 23:31:39 +02:00
Ingo Weinhold
2f019bd6ca boot loader: Implement subset of <dirent.h> API
* Add opendir(), closedir(), readdir(), rewinddir().
* Add open_directory(), similar to opendir(), but basing the path off a
  specified directory.
2014-04-18 23:31:39 +02:00
John Scipione
ebd3bcdb9b exfat: handle 4-byte UTF-16 surrogate pairs
... in filenames. Replace the existing Unicode conversion functions
with UTF conversion functions from js that he relicensed MIT for us.

Put the UTF conversion functions in a private but shared code location
so that they can be accessed throughout the kernel.

Right now we only provide functions to convert between UTF-8 and UTF-16.
At some point we should also add functions to convert between UTF-8 and
UTF-32 and UTF-16 and UTF-32 but these aren't needed by exfat.

Remove the old Unicode conversion functions from exfat as they assumed
UCS-2 characters and don't work with UTF-16 used by exfat.

Rename most variables with the term length with code unit where code units
are intended. The term length, when used, means length in bytes while code
units represent either a full 2-byte UTF-16 character or half a 4-byte
surrogate pair.
2014-04-11 18:46:03 -04:00
Pawel Dziepak
91810926dc scheduler: Fix and simplify thread migration logic in low latency mode
This patch remove the old thread migration logic which used few special
cases and (broken) general check that attempted to balance threads.

The new logic is pretty straightforward and seems perform well without
any additional special cases. Current core is compared with the least loaded
one and the thread is migrated if that would result in estimated loads of
both cores (i.e. the current one and the least loaded one) to become closer
to the average load (i.e. average of that two cores).
2014-04-09 03:24:34 +02:00
Pawel Dziepak
1bba129c56 scheduler: Let ThreadData::ShouldRebalance() choose the actual core
Currently, ThreadData::ShouldRebalance() (and mode specific functions
it calls) only decides whether to migrate thread to another core or not.
However, in most cases it actually needs to find the best candidate for
new core so it could as well return that information.
2014-04-09 03:24:34 +02:00
Jessica Hamilton
c552bd6771 haiku_loader: search for matching shortcut in supermenus
Fixes #7469.
2014-04-07 22:14:08 +12:00