improvements like a new Fullscreen mode, context menu's for downloads,
persistent storage of credentials...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36621 a95241bf-73f2-0310-859d-f6bbb57e9c96
for bezilla's and NetSurf's source archives, instead of defining a local
variable (as installoptionalpackage didn't like it). No functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36557 a95241bf-73f2-0310-859d-f6bbb57e9c96
SourceURL: Text <URL> lines. InstallSourceArchive commands have been added,
where source archives provided. The baseSourceURL has been updated to
http://haiku-files.org/files/releases/r1alpha2/sources
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36544 a95241bf-73f2-0310-859d-f6bbb57e9c96
prevents a second folder "draft" being created when saving mails in Mail.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36503 a95241bf-73f2-0310-859d-f6bbb57e9c96
support for JPEG, PNG, GIF images as well as text/*. It also fixes a problem
where the policy for new pages was wrongly applied to pages that already have
a pending resource request.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36488 a95241bf-73f2-0310-859d-f6bbb57e9c96
* updated optional package for gcc4 to point to an archive without that link
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36464 a95241bf-73f2-0310-859d-f6bbb57e9c96
So far, only the packages specified in @alpha-* were checked. A combintation
of `objdump -x $lib | grep NEEDED` and nm $lib | grep "\w _Z"` was used.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36459 a95241bf-73f2-0310-859d-f6bbb57e9c96
indicates the archive to be usable with either GCC. When utilized, the
packages shared libraries will automatically be symlinked in the alternative
gcc subdir, eg common/lib/gcc4. At the moment, packages that set isCDPackage
are not supported, as Installer needs to be enhanced.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36456 a95241bf-73f2-0310-859d-f6bbb57e9c96
to the CD image without extracting them anymore. Test pending.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36441 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Removed VLC from the alpha-*, apparently this was only done in the alpha-1
branch back then.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36437 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Apparently triggered by some strange stellar constellation, the
libgcc.a contained in gcc-2010-04-20 did not contain the files
required for c++ support. Fixed by rebuilding gcc and fetching
the (then correct) libgcc.a from there and putting it into
gcc-2010-04-20-1.zip
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36434 a95241bf-73f2-0310-859d-f6bbb57e9c96
test for BGradient. Mandelbrot would also be a candidate for removal, but maybe
some people are sentimentally attached to it, since it was an old BeOS demo. :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36428 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Removed irq_routing struct from ACPI.h to where it is used. Might be able to use acrestype.h instead of duplication.
* Disable old embedded controller and remove it from image.
* Move embedded controller code to busmanager module.
* Remove (some) code duplication
Should work as before, but is now initialized right after the bus manager. Can probably remove further code duplication.
I hope I've done it correctly, feedback is most welcome.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36420 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Add file descriptor and IO context tracing.
* Some minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36272 a95241bf-73f2-0310-859d-f6bbb57e9c96
r35867, OptionalBuildFeatures is parsed before OptionalPackageDependencies. As
a result, we can no longer rely on build features being added by resolving
OptionalPackageDependencies. Alternatively, "HAIKU_BUILD_FEATURE_SSL = 1 ;"
could be set in UserBuildConfig/ReleaseBuildProfiles.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36264 a95241bf-73f2-0310-859d-f6bbb57e9c96
uses it.
* While I were at it, I removed the ps2mouse driver as well, as well the whole
arch directory (as it is otherwise empty).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36261 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Introduce a system-wide localization catalog used for strings hidden deep in some libraries. Add special API to get it.
* string_for_size is the first to make use of this system wide catalog. This allows to have a fully localized DriveSetup.
* As a side effect, tracker also uses it. It now requires liblocale.so.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36175 a95241bf-73f2-0310-859d-f6bbb57e9c96
* addition of common/etc/vimrc
* creation of symlink vi --> vim
Improves but not a final fix for #5699
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36082 a95241bf-73f2-0310-859d-f6bbb57e9c96
temporary means for joining an unencrypted or WEP encrypted wifi network.
setwep works with 64- and 128-bit WEP and supports both text keys as well as
hex digit keys.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36057 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Renamed parameter "appName" to "target".
* Replaced parameter "generatedCatalog" by "sourceLanguage" and made it
optional. Default is "en".
* Removed the no longer needed parameter from the DoCatalogs invocations.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36016 a95241bf-73f2-0310-859d-f6bbb57e9c96
build_archive. Updated ImageRules accordingly. Tested on the following:
* jam -q -sTARGET_BOOT_PLATFORM=pxe_ia32 pxehaiku-loader haiku-netboot-archive
* jam -q haiku-boot-floppy
* jam -q haiku-alternative-gcc-archive
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36005 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Cleaned up and prepared automatic globbing of the catkeys files.
Currently commented out as it breaks the build.
- Removed the AddFilesToHaikuImage invocation, which doesn't belong there.
Instead we set the variable HAIKU_CATALOG_FILES on the target and
automatically add the catalogs of a target in AddFilesToContainer.
* LinkApplicationCatalog: Pass the language name to the actions via variable.
Fixes the "independent target" warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36002 a95241bf-73f2-0310-859d-f6bbb57e9c96
the symlink creation has been also pulled out into its own if block.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35961 a95241bf-73f2-0310-859d-f6bbb57e9c96
ipw2100 & iprowifi2200 are distributed with the default image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35943 a95241bf-73f2-0310-859d-f6bbb57e9c96
gcc-2.95.3-r1a1-x86-gcc2-2009-08-26.zip and the AddSymlinkToHaikuHybridImage
rule. Fixes#5617.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35937 a95241bf-73f2-0310-859d-f6bbb57e9c96
CopySetHaikuRevision: Added support for extracting the svn revision number
from an hg repository.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35926 a95241bf-73f2-0310-859d-f6bbb57e9c96
the default setting for the "debug syslog" feature (can still be overridden
in the boot loader). Per default enabled for kdebug level >= 1.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35884 a95241bf-73f2-0310-859d-f6bbb57e9c96
* build shared and static libraries for libtiff, cleaned libtiff sources
* TIFFTranslator now uses this library
I used 3.8 as library version as it seems the API didn't change since then
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35857 a95241bf-73f2-0310-859d-f6bbb57e9c96
need to edit their UserBuildConfig to use "BeZillaBrowser".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35808 a95241bf-73f2-0310-859d-f6bbb57e9c96
resolves the issue of FreeBSD 8.0 of creating ISOs that will not boot. ISO
creation was also tested with FreeBSD 7.2 and Haiku r35767 gcc2hybrid.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35783 a95241bf-73f2-0310-859d-f6bbb57e9c96
* applied Matt's patch (somewhat changed) that corrects the links for gcc4's
libstdc++.so and libsupc++.so in case of a gcc2 hybrid (they must point
to /system/lib/gcc4/... instead of /system/lib/...)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35746 a95241bf-73f2-0310-859d-f6bbb57e9c96
whether to extract the firmware archive onto Haiku Image or to simply copy
it intact. This allows the ipw2100 and iprowifi2200 firmware archives to be
copied onto the default images. Fixes#5523
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35738 a95241bf-73f2-0310-859d-f6bbb57e9c96
* the optional package ICU-devel now explicitly installs the appropriate
symlinks for the development libraries as required (for both standard
and hybrid builds)
* ICU-devel now depends on Development (more indicative than required, but
I think it makes sense)
Thanks to Matt and Rene for pointing me in the right direction.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35730 a95241bf-73f2-0310-859d-f6bbb57e9c96
(basic) development optional packages - needs
some more investigation
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35709 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added iprowifi4965 driver to the image.
* Add the firmware for the Wifi drivers that need it to the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35687 a95241bf-73f2-0310-859d-f6bbb57e9c96
* updated optional package ICU-devel to include links to make the libs available
for development (only links for the current abi are being created)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35680 a95241bf-73f2-0310-859d-f6bbb57e9c96
the haiku-anyboot-image pseudo target. As I'm not too much at home with Jam I'd
appreciate any input. Especially for the TODO where removing the MBR using
RmTemps seems to cause a failure to get it built again every other time.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35668 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added optional package WifiFirmwareScriptData, which is for people who build
their own images & have wifi hardware that requires install-wifi-firmwares.sh
and have no active network connection.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35637 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added "extractedSubDir" parameter to ExtractArchiveTo{Container,HaikuImage}.
If given it specified the path of the subdirectory in the archive that
shall be extracted.
* Added AddWifiFirmwareToHaikuImage rule for extracting Wifi firmware
archives onto the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35635 a95241bf-73f2-0310-859d-f6bbb57e9c96
* InstallOptionalHaikuImagePackage: Made the first argument an actual file
name, i.e. the extension ".zip" is no longer appended by it.
* Renamed rules UnzipArchiveTo{Container,HaikuImage} to
ExtractArchiveTo{Container,HaikuImage} and generalized them to support
tgz/tar.gz archives (implemented in build_haiku_{image,cd}).
* Removed DownloadOptionalPackage. DownloadFile is used instead.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35634 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Renamed DownloadFile to DownloadLocatedFile.
* Pulled a generalized rule DownloadFile out of DownloadOptionalPackage.
* Added InstallSourceArchive rule which can be used in OptionalPackages to
add sources for installed packages to the image.
* Added configure option --include-sources to enable including the sources
for third party software in the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35617 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Removed the test driver from the image; it serves no practical purpose.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35459 a95241bf-73f2-0310-859d-f6bbb57e9c96
* moves Firefox's jam code to BeZillaBrowser
* echos a warning on Firefox being phased out.
* sets BeZillaBrowser as a dependency of Firefox
The last two to ease transition from Firefox. This fixes#3529.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35456 a95241bf-73f2-0310-859d-f6bbb57e9c96
compiler. Fixes#5322 (the ones in /boot/develop would be overwritten).
* Simplified the Jamfile building these libraries.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35396 a95241bf-73f2-0310-859d-f6bbb57e9c96
compatibility between two different versions of a shared library.
Even when using this tool, you still need to make up your mind about compatibility, but
IMHO it helps a lot.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35380 a95241bf-73f2-0310-859d-f6bbb57e9c96
could prove to be a major PITA (because of all the dependencies that would need to be rebuilt)
* when adding a library to the image, its optional minor abi version is taken care of, too (i. e. a
corresponding link is created).
* the ABI-related links in /system/lib are now replicated in /boot/develop/lib/<arch>
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35362 a95241bf-73f2-0310-859d-f6bbb57e9c96
Update Netsurf and Bezilla packages to include compatible version of libjpeg. This is a temporary measure until they're properly rebuilt against libjpeg 8.
Closes ticket #5329.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35325 a95241bf-73f2-0310-859d-f6bbb57e9c96
build system
* declared ICU-libs as private system libraries, which causes them to no longer
be available for building software (they no longer are linked from the
development lib folder, so the linker won't find them)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35323 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added support to do larger raw allocations (up to one large chunk (128 pages))
in the slab areas. For an even larger allocation an area is created (haven't
seen that happen yet, though).
* Added kernel tracing (SLAB_MEMORY_MANAGER_TRACING).
* _FreeArea(): Copy and paste bug: The meta chunks of the to be freed area
would be added to the free lists instead of being removed from them. This
would corrupt the lists and also lead to all kinds of misuse of meta chunks.
object caches:
* Implemented CACHE_ALIGN_ON_SIZE. It is no longer set for all small object
caches, but the block allocator sets it on all power of two size caches.
* object_cache_reserve_internal(): Detect recursion and don't wait in such a
case. The function could deadlock itself, since
HashedObjectCache::CreateSlab() does allocate memory, thus potentially
reentering.
* object_cache_low_memory():
- I missed some returns when reworking that one in r35254, so the function
might stop early and also leave the cache in maintenance mode, which would
cause it to be ignored by object cache resizer and low memory handler from
that point on.
- Since ReturnSlab() potentially unlocks, the conditions weren't quite correct
and too many slabs could be freed.
- Simplified things a bit.
* object_cache_alloc(): Since object_cache_reserve_internal() does potentially
unlock the cache, the situation might have changed and their might not be an
empty slab available, but a partial one. The function would crash.
* Renamed the object cache tracing variable to SLAB_OBJECT_CACHE_TRACING.
* Renamed debugger command "cache_info" to "slab_cache" to avoid confusion with
the VMCache commands.
* ObjectCache::usage was not maintained anymore since I introduced the
MemoryManager. object_cache_get_usage() would thus always return 0 and the
block cache would not be considered cached memory. This was only of
informational relevance, though.
slab allocator misc.:
* Disable the object depots of block allocator caches for object sizes > 2 KB.
Allocations of those sizes aren't so common that the object depots yield any
benefit.
* The slab allocator is now fully self-sufficient. It allocates its bootstrap
memory from the MemoryManager, and the hash tables for HashedObjectCaches use
the block allocator instead of the heap, now.
* Added option to use the slab allocator for malloc() and friends
(USE_SLAB_ALLOCATOR_FOR_MALLOC). Currently disabled. Works in principle and
has virtually no lock contention. Handling for low memory situations is yet
missing, though.
* Improved the output of some debugger commands.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35283 a95241bf-73f2-0310-859d-f6bbb57e9c96
One just has to love the write overlay. That one really saved a lot
of work.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35224 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added amd64-* as supported host gcc machine.
* Added work-around for AMD64 FreeBSD 8: It only has a static libsupc++,
which prevents us from building shared libraries, so we use the shared
libstdc++ instead.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35211 a95241bf-73f2-0310-859d-f6bbb57e9c96
You will want to edit /boot/home/config/settings/kernel/netfs-server before you
run netfs_server for the first time (or use netfs_server_prefs on the command
line, see below).
To run the server:
$ /system/servers/netfs_server &
To run the client:
$ /system/servers/authentication_server &
$ mkdir /dummy
$ mount -t userlandfs -p "netfs """ /dummy
A "Network" icon will appear on your desktop. Remote servers will appear inside
the "Network" folder (host name). Inside a folder for a server are the shares
of that server. (I.e. what has been defined as share in that respective server's
netfs-server driver settings file). netfs_server has actually a new settings
file format, you can create settings by using "netfs_server_prefs --help" on the
command line. Have fun!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35172 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Moved the "tmp" directory out of /var, and to /boot/common/cache/.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35104 a95241bf-73f2-0310-859d-f6bbb57e9c96
Changed strings to sentence case in various places. This is the
case-misc.diff part of ticket #5169.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35043 a95241bf-73f2-0310-859d-f6bbb57e9c96
temporary solution as long as there is no package manager available. When
executing the script, it mentions this, too. This fixes#4680. Thank you.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35041 a95241bf-73f2-0310-859d-f6bbb57e9c96
B_USE_BUILTIN_ATOMIC_FUNCTIONS is defined most atomic_*() functions are
redefined as macros using the built-ins directly.
* Enabled that feature for the x86 build. Might work on other platforms as
well, but that needs to be tested.
No significant speedup for the -j8 Haiku image build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35018 a95241bf-73f2-0310-859d-f6bbb57e9c96
only -jN and gcc's build system has problems with multiple jobs. It works
fine for binutils and gcc 4 though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34990 a95241bf-73f2-0310-859d-f6bbb57e9c96
access to a vm_page. It is basically an atomically accessed thread ID field
in the vm_page structure, which is explicitly set by macros marking the
critical sections. As a first positive effect I had to review quite a bit of
code and found several issues.
* Added several TODOs and comments. Some harmless ones, but also a few
troublesome ones in vm.cpp regarding page unmapping.
* file_cache: PrecacheIO::Prepare()/read_into_cache: Removed superfluous
vm_page_allocate_page() return value checks. It cannot fail anymore.
* Removed the heavily contended "pages" lock. We use different policies now:
- sModifiedTemporaryPages is accessed atomically.
- sPageDeficitLock and sFreePageCondition are protected by a new mutex.
- The page queues have individual locks (mutexes).
- Renamed set_page_state_nolock() to set_page_state(). Unless the caller says
otherwise, it does now lock the affected pages queues itself. Also changed
the return value to void -- we panic() anyway.
* set_page_state(): Add free/clear pages to the beginning of their respective
queues as this is more cache-friendly.
* Pages with the states PAGE_STATE_WIRED or PAGE_STATE_UNUSED are no longer
in any queue. They were in the "active" queue, but there's no good reason
to have them there. In case we decide to let the page daemon work the queues
(like FreeBSD) they would just be in the way.
* Pulled the common part of vm_page_allocate_page_run[_no_base]() into a helper
function. Also fixed a bug I introduced previously: The functions must not
vm_page_unreserve_pages() on success, since they remove the pages from the
free/clear queue without decrementing sUnreservedFreePages.
* vm_page_set_state(): Changed return type to void. The function cannot really
fail and no-one was checking it anyway.
* vm_page_free(), vm_page_set_state(): Added assertion: The page must not be
free/clear before. This is implied by the policy that no-one is allowed to
access free/clear pages without holding the respective queue's lock, which is
not the case at this point. This found the bug fixed in r34912.
* vm_page_requeue(): Added general assertions. panic() when requeuing of
free/clear pages is requested. Same reason as above.
* vm_clone_area(), B_FULL_LOCK case: Don't map busy pages. The implementation is
still not correct, though.
My usual -j8 Haiku build test runs another 10% faster, now. The total kernel
time drops about 18%. As hoped the new locks have only a fraction of the old
"pages" lock contention. Other locks lead the "most wanted list" now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34933 a95241bf-73f2-0310-859d-f6bbb57e9c96
'+' as part of their name, which is illegal for shell variables (where the
corresponding replacement character is 'X').
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34903 a95241bf-73f2-0310-859d-f6bbb57e9c96
(--update must be given as first option, but can be followed by others)
* added simple perl scripts that is used by configure to convert BuildSetup
from jam to shell format
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34896 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Determine HOST_LD and HOST_OBJCOPY in configure.
* Removed Solaris ld work-around in BuildSetup.
The change requires configure to be re-run. Alternatively HOST_{LD,OBJCOPY}
can be added to generated/build/BuildConfig.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34892 a95241bf-73f2-0310-859d-f6bbb57e9c96
TODO: determine which other command line tools may also fit under this new group.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34889 a95241bf-73f2-0310-859d-f6bbb57e9c96
* let BuildSetup set HAIKU_HOST_IS_BIG_ENDIAN according to HOST_GCC_MACHINE
* minor cleanup in BuildSetup
* when building ICU, set the endianness indicator suffix according to
HAIKU_HOST_IS_BIG_ENDIAN
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34864 a95241bf-73f2-0310-859d-f6bbb57e9c96
so that it can make use of the firmware installed by the OptionalPackage
Wifi-ipw2100+fw.
* Updating OptionalPackages to use the latest Wifi-ipw2100+fw package.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34833 a95241bf-73f2-0310-859d-f6bbb57e9c96
debug heap implementation.
* Added libroot_debug.so to the DevelopmentMin optional package. Since it has
the same soname as the standard libroot, it can simply be specified in
LD_PRELOAD to run a program with that version.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34788 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added VMCache::MovePage() and MoveAllPages() to move pages between caches.
* VMAnonymousCache:
- _MergeSwapPages(): Avoid doing anything, if neither cache has swapped out
pages.
- _MergeSwapPages() does now also remove source cache pages that are
shadowed by consumer swap pages. This allows us to call _MergeSwapPages()
before _MergePagesSmallerSource(), save the swap page shadowing check
there and get rid of the vm_page::merge_swap flag. This is an
optimization based on the assumption that usually none or only few pages
are swapped out, so we save a lot of checks.
- Implemented _MergePagesSmallerConsumer() as an alternative to
_MergePagesSmallerSource(). The former is used when the source cache has
more pages than the consumer cache. It iterates over the consumer cache's
pages, moves them to the source and finally moves all pages back to the
consumer. The final move is relatively cheap (though unfortunately we
still have to update all pages' vm_page::cache field), so that overall we
save iterations of the main loop with the more expensive checks.
The optimizations particularly improve the common fork()+exec*() situations.
fork() uses CoW, which is implemented by putting two new empty caches between
the to be copied area and its cache. exec*() destroys one copy of the area,
its cache and thus causes merging of the other new cache with the old cache.
Since this usually happens in a very short time, the old cache does still
contain many pages and the new cache only few. Previously the many pages were
all checked and moved individually. Now we do that for the few pages instead.
A very extreme example of this situation is the Haiku image build. jam has a
huge heap (> 200 MB) and it fork()s+exec*()s for every action to be executed.
Since during the cache merging the cache is locked, any write access to a
heap page causes jam to block until the cache merging is done. Formerly that
took so long that it killed a lot of parallelism in multi-job builds. That
could be observed particularly well when lots of small actions where executed
(like the Link, XRes, Mimeset, SetType, SetVersion combos when building
executables/libraries/add-ons). Those look dramatically better now.
The overall speed improvement for a -j8 image build on my machine is only
about 15%, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34784 a95241bf-73f2-0310-859d-f6bbb57e9c96
Intel Pro Wireless 2100 and 2200/2945 chipsets in a license correct manner.
Thank you!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34780 a95241bf-73f2-0310-859d-f6bbb57e9c96
- Replaced the "userOnly" parameter by a "flags" parameter, that allows to
specify kernel and userland stack traces individually.
- x86, m68k: Don't always skip the first frame as that prevents the caller
from being able to record its own address.
* capture_tracing_stack_trace(): Replaced the "userOnly" parameter by
"kernelOnly", since one is probably always interested in the kernel stack
trace, but might not want the userland stack trace.
* Added stack trace support for VM cache kernel tracing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34742 a95241bf-73f2-0310-859d-f6bbb57e9c96