Pawel Dziepak
31a75d402f
kernel: Protect lock internals with per-lock spinlock
2013-10-24 00:01:18 +02:00
Pawel Dziepak
4c4994435d
kernel/util: Fixes in [MinMax]Heap implementation
2013-10-22 23:56:31 +02:00
Pawel Dziepak
5cf9b69b49
kernel/util: Minor improvements in Heap and MinMaxHeap
...
* [MinMax]Heap::ModifyKey(): Do not attempt to move node if the key
actually hasn't changed.
* Allow allocating initial array at construction.
2013-10-21 21:24:05 +02:00
Pawel Dziepak
7ea42e7add
kernel: Remove invoke_scheduler_if_idle
2013-10-21 02:38:57 +02:00
Pawel Dziepak
ea79da9500
kernel: Remove support for thread_queue
2013-10-21 02:30:20 +02:00
Pawel Dziepak
cd8d4e39fd
kernel: Introduce scheduler modes of operation
2013-10-21 02:17:00 +02:00
Pawel Dziepak
343c489689
kernel: Create CPU topology tree
2013-10-21 01:33:35 +02:00
Pawel Dziepak
5cbf227236
kernel/util: Allocate only one array in MinMaxHeap
2013-10-20 23:33:55 +02:00
Pawel Dziepak
18c0d163ed
kernel/util: Add MinMaxHeap implementation
2013-10-17 19:22:29 +02:00
Pawel Dziepak
278c9784a1
scheduler_affine: Use global core heap and per-core CPU heaps
...
There is a global heap of cores, where the key is the highest priority
of threads running on that core. Moreover, for each core there is
a heap of logical processors on this core where the key is the priority
of currently running thread.
The per-core heap is used for load balancing among logical processors
on that core. The global heap is used in initial decision where to put
the thread (note that the algorithm that makes this decision is not
complete yet).
2013-10-17 02:11:28 +02:00
Pawel Dziepak
cf863a5040
kernel: Decide whether to use simple or affine scheduler
...
Simple scheduler is used when we do not have to worry about cache affinity
(i.e. single core with or without SMT, multicore with all cache levels
shared).
When we replace gSchedulerLock with more fine grained locking affine
scheduler should also be chosen when logical CPU count is high (regardless
of cache).
2013-10-16 18:39:25 +02:00
Pawel Dziepak
f20ad54be2
kernel: Add support for SMP systems to simple scheduler
...
In SMP systems simple scheduler will be used only when all logical
processors share all levels of cache and the number of CPUs is low.
In such systems we do not have to care about cache affinity and
the contention on the lock protecting shared run queue is low. Single
run queue makes load balancing very simple.
2013-10-15 00:29:04 +02:00
Pawel Dziepak
29e65827fd
kernel: Remove possibility to yield to all threads
...
Kernel support for yielding to all (including lower priority) threads
has been removed. POSIX sched_yield() remains unchanged.
If a thread really needs to yield to everyone it can reduce its priority
to the lowest possible and then yield (it will then need to manually
return to its prvious priority upon continuing).
2013-10-09 20:42:34 +02:00
Pawel Dziepak
fee8009184
kernel: Add another penalty for CPU bound threads
...
Each thread has its minimal priority that depends on the static priority.
However, it is still able to starve threads with even lower priority
(e.g. CPU bound threads with lower static priority). To prevent this
another penalty is introduced. When the minimal priority is reached
penalty (count mod minimal_priority) is added, where count is the number
of time slices since the thread reached its minimal priority. This prevents
starvation of lower priorirt threads (since all CPU bound threads may have
their priority temporaily reduced to 1) but preserves relation between
static priorities - when there are two CPU bound threads the one with
higher static priority would get more CPU time.
2013-10-09 20:13:47 +02:00
Pawel Dziepak
4ade765cab
kernel/util: Add heap implementation
2013-10-09 04:26:09 +02:00
Pawel Dziepak
a2bdd2842f
kernel: Add scheduler_op for dumping thread data
2013-10-09 02:08:49 +02:00
Pawel Dziepak
0896565a6e
kernel: Support sched_yield() properly
...
sched_yield() should not yield to the threads with lower priority.
2013-10-09 01:18:55 +02:00
Pawel Dziepak
9363e99b19
kernel: Remove Thread::next_priority
2013-10-08 20:21:35 +02:00
Pawel Dziepak
4cba4ff1df
kernel/util: Use private/kernel/debug.h
2013-10-08 01:36:30 +02:00
Pawel Dziepak
b8c1df9b00
kernel: Add O(1) lookup and insertion priority queue
2013-10-05 20:16:06 +02:00
Pawel Dziepak
7039b950fb
x86[_64]: Fix style issues
2013-10-05 18:03:00 +02:00
Pawel Dziepak
149c82a8ec
kernel/util: Add bitmap implementation
2013-10-03 04:27:49 +02:00
Pawel Dziepak
36cc64a9b3
x86[_64]: Add CPU cache topology detection for AMD and Intel CPUs
2013-10-02 23:48:03 +02:00
Pawel Dziepak
1f50d09018
kernel/util: Add bit hack utilities
2013-10-02 21:24:46 +02:00
Pawel Dziepak
8ec897323e
x86[_64]: Add CPU topology detection for Intel processors
2013-10-02 01:19:17 +02:00
Pawel Dziepak
4110b730db
x86[_64]: Add support for CPUID sub-leaves
...
Some CPUID leaves may contain one or more sub-leaves accessed by setting
ECX to an appropriate value.
2013-10-01 20:31:18 +02:00
Ingo Weinhold
81291304ad
Merge remote-tracking branch 'haiku/master' into package-management
...
Conflicts:
build/jam/BuildSetup
build/jam/HaikuImage
build/jam/board/sam460ex/BoardSetup
build/jam/board/verdex/BoardSetup
data/catalogs/apps/icon-o-matic/fr.catkeys
src/add-ons/kernel/drivers/audio/hda/hda_codec.cpp
src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp
src/apps/debugger/files/FileManager.cpp
src/apps/debugger/files/FileManager.h
src/apps/debugger/user_interface/gui/inspector_window/MemoryView.cpp
src/apps/haiku-depot/MainWindow.cpp
src/apps/haiku-depot/MainWindow.h
src/apps/haiku-depot/Model.cpp
src/apps/haiku-depot/PackageInfo.h
src/apps/haiku-depot/PackageInfoListener.h
src/apps/haiku-depot/PackageInfoView.cpp
src/apps/haiku-depot/PackageInfoView.h
src/apps/haiku-depot/PackageListView.cpp
src/apps/haiku-depot/PackageListView.h
src/system/kernel/arch/arm/arch_timer.cpp
src/system/libroot/os/arch/arm/atomic.S
src/tools/translation/bitsinfo/Jamfile
src/tools/translation/bmpinfo/Jamfile
src/tools/translation/tgainfo/Jamfile
2013-09-27 01:55:45 +02:00
Ithamar R. Adema
cc65466f0d
ARM: kernel: Make KDL more useful on ARM
...
This adds the -mapcs-frame compiler flag for ARM to have "stable"
stack frames, adds support to the kernel for dumping stack crawls,
and initial support for iframes. There' much more functionality
to unlock in KDL, but this makes debugging already a lot more
comfortable.....
2013-09-17 23:04:59 +02:00
François Revol
09d213f3b3
PPC: OF: Make sure kernel args match the U-Boot one
...
Since both platforms can boot the same kernel we must accept either
arg, so we make sure they are identical for now.
TODO: use a union or KMessage maybe?
2013-09-17 15:49:49 +02:00
François Revol
c14bca2958
Merge branch 'master' into sam460ex
2013-09-14 01:16:51 +02:00
Ingo Weinhold
cf70d345b2
Merge remote-tracking branch 'haiku/master' into package-management
...
This reverts 8f7f28a7c3
(OpenGL: Upgrade
to
Mesa 9.2).
Conflicts:
build/jam/BuildFeatures
build/jam/HaikuImage
build/jam/OptionalPackages
build/scripts/build_cross_tools_gcc4
src/add-ons/opengl/swpipe/Jamfile
src/apps/diskusage/Jamfile
src/kits/tracker/ContainerWindow.cpp
src/kits/tracker/DeskWindow.cpp
src/kits/tracker/Jamfile
2013-09-13 01:02:28 +02:00
Jérôme Duval
0edcbd2754
apic: serialize writes to x2apic MSR...
...
as required by the specifications (it isn't needed with memory mapped i/o).
2013-08-26 21:48:33 +02:00
Jérôme Duval
787773400c
Added x2APIC support.
...
* Mostly useful for virtualization at the moment. Works in QEmu.
* Can be enabled by safemode settings/menu.
* Please note that x2APIC normally requires use of VT-d interrupt remapping feature
on real hardware, which we don't support yet.
2013-08-26 21:08:21 +02:00
Jérôme Duval
46f7a54d8c
MSI: Use the effective APIC id of the boot CPU for the address destination.
...
* This should only affect systems where the CPU ids aren't sequential (mostly
non Intel).
* Fixes #9807 .
2013-07-29 17:36:03 +02:00
Ingo Weinhold
1eda8517f1
BOpenHashTable: Add IsEmpty()
2013-06-27 21:57:43 +02:00
François Revol
b8ded2f897
Merge branch 'master' into sam460ex
2013-05-27 17:45:55 +02:00
Ingo Weinhold
1848fdc329
util/khash: Add hash_hash_string_part()
2013-05-11 23:17:55 +02:00
Ingo Weinhold
00090d290d
boot loader: print max heap usage info before entering kernel
2013-05-09 03:14:35 +02:00
Ingo Weinhold
25a7b01d15
Merge branch 'master' into package-management
...
Additional changes:
* Add src/system/kernel/lib/zlib, which builds a kernel version of zlib,
needed by packagefs.
* BuildFeatures: Add a build feature "gcc2" to allow for easier checks.
* Referenceable.cpp: Include <OS.h> instead of <debugger.h>. The latter
is not needed and prevents building for the build platform.
* zlib/zutil.h: Fix gcc 2 build. We really should use the external
package instead.
Conflicts:
.gitignore
build/jam/BuildSetup
build/jam/FileRules
build/jam/FloppyBootImage
build/jam/HaikuImage
build/jam/ImageRules
build/jam/KernelRules
build/jam/NetBootArchive
build/jam/OptionalBuildFeatures
build/jam/OptionalLibPackages
build/jam/OptionalPackageDependencies
build/jam/OptionalPackages
build/scripts/build_haiku_image
configure
data/bin/installoptionalpackage
data/system/boot/Bootscript
headers/os/app/Message.h
headers/os/package/PackageInfo.h
headers/os/package/PackageInfoAttributes.h
headers/os/package/PackageInfoSet.h
headers/os/package/PackageRoster.h
headers/os/package/PackageVersion.h
headers/os/package/hpkg/PackageInfoAttributeValue.h
headers/os/storage/FindDirectory.h
headers/os/storage/Node.h
headers/os/support/StringList.h
headers/private/system/directories.h
src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile
src/add-ons/kernel/file_systems/packagefs/AttributeIndex.cpp
src/add-ons/kernel/file_systems/packagefs/Jamfile
src/add-ons/kernel/file_systems/packagefs/Package.cpp
src/add-ons/kernel/file_systems/packagefs/Package.h
src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp
src/add-ons/kernel/file_systems/packagefs/PackageDomain.h
src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.cpp
src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.cpp
src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.h
src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.cpp
src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.h
src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.cpp
src/add-ons/kernel/file_systems/packagefs/PackageNode.h
src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.cpp
src/add-ons/kernel/file_systems/packagefs/Version.cpp
src/add-ons/kernel/file_systems/packagefs/Version.h
src/add-ons/kernel/file_systems/packagefs/Volume.cpp
src/add-ons/kernel/file_systems/packagefs/Volume.h
src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp
src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c
src/apps/deskbar/BarApp.cpp
src/apps/deskbar/BarMenuBar.cpp
src/apps/deskbar/BarMenuBar.h
src/apps/deskbar/BarView.cpp
src/apps/deskbar/BarView.h
src/apps/deskbar/BarWindow.cpp
src/apps/deskbar/BarWindow.h
src/apps/deskbar/DeskbarMenu.cpp
src/apps/deskbar/DeskbarMenu.h
src/apps/deskbar/DeskbarUtils.cpp
src/apps/deskbar/DeskbarUtils.h
src/apps/deskbar/ExpandoMenuBar.cpp
src/apps/deskbar/ExpandoMenuBar.h
src/apps/deskbar/TeamMenu.cpp
src/apps/processcontroller/ProcessController.cpp
src/apps/remotedesktop/RemoteDesktop.cpp
src/bin/bash/config-top.h
src/bin/finddir.c
src/bin/package/Jamfile
src/bin/package/command_add.cpp
src/bin/package/command_create.cpp
src/bin/package/command_list.cpp
src/bin/package_repo/command_list.cpp
src/bin/pkgman/command_refresh.cpp
src/build/libbe/support/Jamfile
src/build/libpackage/Jamfile
src/build/libroot/Jamfile
src/build/libroot/fs.cpp
src/build/libroot/remapped_functions.h
src/kits/locale/MutableLocaleRoster.cpp
src/kits/opengl/GLRendererRoster.cpp
src/kits/package/PackageInfo.cpp
src/kits/package/PackageInfoSet.cpp
src/kits/package/PackageRoster.cpp
src/kits/package/PackageVersion.cpp
src/kits/package/RepositoryCache.cpp
src/kits/package/hpkg/PackageWriterImpl.cpp
src/kits/package/hpkg/ReaderImplBase.cpp
src/kits/package/hpkg/WriterImplBase.cpp
src/kits/print/PrintTransport.cpp
src/kits/print/Printer.cpp
src/kits/screensaver/ScreenSaverRunner.cpp
src/kits/support/StringList.cpp
src/kits/tracker/ContainerWindow.cpp
src/kits/tracker/DeskWindow.cpp
src/kits/tracker/PoseView.cpp
src/libs/print/libprint/Transport.cpp
src/preferences/printers/AddPrinterDialog.cpp
src/preferences/screensaver/ScreenSaverWindow.cpp
src/servers/debug/DebugServer.cpp
src/servers/input/AddOnManager.cpp
src/servers/media_addon/MediaAddonServer.cpp
src/system/boot/Jamfile
src/system/boot/loader/Jamfile
src/system/boot/loader/loader.cpp
src/system/boot/loader/vfs.cpp
src/system/kernel/fs/vfs.cpp
src/system/kernel/fs/vfs_boot.cpp
src/system/libroot/os/find_directory.cpp
src/system/runtime_loader/runtime_loader.cpp
src/tools/package/Jamfile
2013-05-05 15:03:26 +02:00
Ingo Weinhold
274ca38fd1
BOpenHashTable::Clear(): Set fItemCount to 0
...
If not empty, the count would afterwards be out of sync with reality.
2013-04-27 16:21:41 -04:00
Rene Gollent
c24adb2950
Rework DefaultNotificationService registration.
...
- Instead of implicitly registering and unregistering a service
instance on construction/destruction, DefaultNotificationService
now exports explicit Register()/Unregister() calls, which subclasses
are expected to call when they're ready.
- Adjust all implementing subclasses. Resolves an issue with deadlocks
when booting a DEBUG=1 build.
2013-04-22 18:42:21 -04:00
Ingo Weinhold
237127fbe4
Fix _user_entry_ref_to_path() in chroot
...
* Add "bool kernel" parameter to vfs_entry_ref_to_path(), so it can be
specified for which I/O context the entry ref shall be translated.
* _user_entry_ref_to_path(): Use the calling team's I/O context instead
of the kernel's. Fixes the bug that in a chroot the syscall would
return a path for outside the chroot.
2013-04-22 18:06:28 +02:00
François Revol
eecde8e37c
Merge branch 'master' into sam460ex
2013-04-21 01:34:20 +02:00
François Revol
247db0d169
U-Boot: pass a copy of the FDT to the kernel
2013-04-21 01:15:43 +02:00
Ingo Weinhold
7fa369956e
BOpenHashTable::Clear(): Set fItemCount to 0
...
If not empty, the count would afterwards be out of sync with reality.
2013-04-18 15:53:34 +02:00
Pawel Dziepak
8614737f71
elf: restore correct region protection after relocation
2013-04-16 03:44:38 +02:00
Pawel Dziepak
87d1bdb87c
util: add secure pseudorandom number generator
2013-04-11 12:31:58 +02:00
Pawel Dziepak
69042ecd1b
util: style fixes
2013-04-11 12:15:47 +02:00
Pawel Dziepak
6003243ef3
util: introduce kernel utils for pseudorandom number generation
...
Currently there are two generators. The fast one is the same one the scheduler
is using. The standard one is the same algorithm libroot's rand() uses. Should
there be a need for more cryptographically PRNG MD4 or MD5 might be a good
candidates.
2013-04-11 04:34:59 +02:00
Pawel Dziepak
a8f8d2c057
x86_64: put user stack and team data at top of user address space
2013-04-04 20:54:56 +02:00