Commit Graph

33458 Commits

Author SHA1 Message Date
Ingo Weinhold 547999af44 HashedObjectCache::ReturnSlab(): Also free the slab object itself.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 14:05:59 +00:00
Ingo Weinhold 453a2bdd18 Replaced the locking strategy (formerly a recursive lock for the depot and
one for each per CPU store):
* The depot is now protected by a R/W lock combined with a spinlock. It is
  required to either hold read lock + spinlock or just the write lock.
* When accessing the per CPU stores we only need to acquire the read lock
  and disable interrupts. When switching magazines with the depot we
  additionally get the spinlock.
* When allocating a new magazine we do completely unlock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35200 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 13:00:57 +00:00
Ingo Weinhold 030a4ea6c9 Reordered functions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 12:12:54 +00:00
Ingo Weinhold d66916e33b Shuffled functions a bit, so that they are in a reasonable order.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35198 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 10:56:34 +00:00
Ingo Weinhold 53a87b035b Removed debug left-over.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 10:28:18 +00:00
Ingo Weinhold 5662ae4585 Changed the team shutdown process a bit:
* The threads beside the main thread are killed earlier now (in the new
  team_shutdown_team()), before removing the team from the team hash and from
  its process group. This fixes #5296.
* Use a condition variable instead of a semaphore to wait for the non-main
  threads to die. We notify the condition right after a thread has left the
  team. The semaphore was released by the undertaker.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35196 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 09:34:53 +00:00
Ingo Weinhold 15779f70b9 vm_get_page_mapping(): The translation map wasn't locked. For x86 the
function is used only in one place and the missing locking would be harmless
if it weren't for the per translation map physical page mapper. It is used to
map the page table for the lookup. Concurrent access could corrupt its data
structures, or, just as bad, the unlocked Query() could remap the page table
used by a concurrent Map() or Unmap(), which would then manipulate the
wrong page table.
Potentially messing up kernel memory, this bug could obviously cause all
kinds of kernel crashes and weird behavior. E.g. ticket #5138 is a likely
candidate, as are triple faults.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35195 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 09:00:38 +00:00
Michael Lotz 28e27159b9 Adding a log_overlay filesystem layer. It passes through all calls to the other
layer(s) and logs a timestamp, the thread id, the super volume or super vnode
and interesting bits about call arguments/results to a file (in /var/log). This
can be used for example to debug filesystems without having to manually add
debug output to all the calls, or to analyze access patterns. To add the logging
layer just mount the layer with whatever actual filesystem you have:

  mount -t "bfs:log_overlay" /dev/disk/usb/0/0/0 /mountpoint

This would then create the logfile /var/log/log_overlay_dev_disk_usb_0_0_0.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35194 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 05:01:28 +00:00
Philippe Saint-Pierre 94a20a5e74 [Expander]: Fix for Zoom
* When the zip file was really large, it was possible the Height passed to SetZoomLimit exceeded the maximum allowed size. Now, we clip at 32767.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 03:56:36 +00:00
Rene Gollent e9b3ccb129 Add Japanese Background preflet translation by Jorge G. Mare.
Thanks! Closes ticket #5300.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35192 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-20 02:45:37 +00:00
Michael Lotz 40fa690b51 The vnode->private_node holds our object, not vnode itself.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35191 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 23:47:03 +00:00
Karsten Heimrich fb39cbd38b * Fixes ticket #3068. DataTranslations accept timezone files as valid
translators.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35190 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 23:35:25 +00:00
Karsten Heimrich 887d9b8b43 * Cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35189 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 23:35:22 +00:00
Philippe Saint-Pierre 03734edfef [Expander] : Window Sizing enhancements
* Now takes the screen size into consideration when enlarging the window (fixing ticket #5280)
 * Enables Zooming capabilities
 * Remembers the last height of the window so that clicking Show contents on and off just returns it to the previous height.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35188 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 23:31:58 +00:00
Rene Gollent c40914bbf5 Fix build with VM_PAGE_FAULT_TRACING enabled.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35187 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 23:29:15 +00:00
Karsten Heimrich 73f41f49ec * Introduce a new method to ask the translator if it can handle the image
output size, if not it will not show up in the dynamically generated
  translator list. Folow up on ticket #4874.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35186 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 22:52:09 +00:00
Colin Günther 0541219b59 Applying patch by mmadia. This fixes ticket #5299. Thank you!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35185 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 22:05:18 +00:00
Stephan Aßmus 908b8aa481 Patch by Matt Madia:
Ignore "NetFS" OptionalPackage in the installoptionalpackage script. It is a
source code only optional package which needs to be compiled from within the
tree.

Thanks a lot! Fixes #5297.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35184 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 21:37:41 +00:00
Ingo Weinhold 20ca0c5eaa * object_cache_return_object_wrapper(): Calling object_cache_free() is a bad
idea, since that would potentially add the object back to the object store
  or lead to infinite recursion. When the object cache is destroyed it most
  likely led to infinite loops, because the object would alternately be
  removed from and added back to the object store.
* delete_object_cache(): Lock after destroying the object store, so we don't
  deadlock.
* Use the object store on SMP machines. It seems to work, though I only
  tested with the network stack and that seems to have problems of its own.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35182 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 20:45:20 +00:00
Ingo Weinhold bcf73b3a59 Pulled smp_get_num_cpus() out of loops.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35181 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 20:37:39 +00:00
Ingo Weinhold 7dcd388aa6 Coding style fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35180 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 20:36:29 +00:00
Ingo Weinhold 3da8837069 * Fixed build with PARANOID_HEAP_VALIDATION.
* heap_index_for(): Could return invalid index, if there hadn't been created
  a set of heaps for each CPU.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35179 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 20:36:06 +00:00
Adrien Destugues 4ac2299989 Update lithuanian catalog for touchpad.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35178 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 20:10:39 +00:00
Ingo Weinhold 1a7d8045d0 gcc 2 build fix
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35177 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 20:04:54 +00:00
Ingo Weinhold 70742459f5 Fixed build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35176 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 19:38:09 +00:00
Stephan Aßmus 51f50b1274 Installer cannot use find_directory(), since it needs to support source volumes
other than /boot. That's why it worked like it did in the first place. Some
folders like "trash" can be volume specific, but most others are not and the
volume passed to find_directory() is ignored (which makes sense).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35175 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 19:21:48 +00:00
Ingo Weinhold 825566f82f * Split the slab allocator code into separate source files and C++-ified
things a bit.
* Some style cleanup.
* The object depot does now have a cookie that will be passed to the return
  hook.
* Fixed object_cache_return_object_wrapper() using the new cookie.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35174 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 19:13:25 +00:00
Stephan Aßmus 6ff00ae7e5 Make the Installer ignore /var at it's new location. The old location is also
still checked, in case one uses the Installer to copy an old installation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35173 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 18:51:30 +00:00
Stephan Aßmus 776796d3af Added "NetFS" OptionalPackage.
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
2010-01-19 18:25:48 +00:00
Colin Günther 396abf076f * Adapting firmware based driver to the new firmware name mapping method.
* Removing the respective settings files, as they are no longer needed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35171 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 17:49:45 +00:00
Colin Günther d3806c1b62 * Reworked firmware loading. This gets rid of the need for the settings files.
Name mapping is now defined in the glue code.
* Adding two macros for handling firmware name mapping completely in the glue
  code:
  - HAIKU_FIRMWARE_NAME_MAP(firmwarePartsCount) is used when mapping is
    required. Have a look to iprowifi2100's glue code for an example.
  - NO_HAIKU_FIRMWARE_NAME_MAP() is used when the firmware names don't need to
    be mapped. For example: broadcom43xx
* Discard usage of vm_map_file() and use the previously read() method again.
  After Axel and Ingo agree that both methods are fine in this particular use
  case, using read() looks easier on the eye. It needs only 3 parameters, where
  vm_map_file() takes 10.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35170 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 17:44:38 +00:00
Stephan Aßmus bf365f13aa * Renamed NetFSServer to netfs_server and added .rdef for running it in the
background.
 * Renamed NetFSServerPrefs to netfs_server_prefs.
 * Fixed copyright years in authentication_server.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35169 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 16:57:59 +00:00
Stephan Aßmus 63fad9a172 Added resource which makes the userlandfs_server run as a background service.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35168 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 16:05:19 +00:00
Stephan Aßmus 44905bf648 * Renamed jam target to "authentication_server"
* Updated application signature (I couldn't find a place outside the server's
   code where it is used).
 * Added .rdef with icon and making the app run as background service.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35167 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 15:50:33 +00:00
Stephan Aßmus 0ccd0a0b6f axeld+stippi:
When initializing driver settings, make sure to set the parameter count to 0,
because these settings have not been parsed yet. This allows us to safely free
the settings. Freeing the settings is triggered in load_driver_settings() if
we encounter settings which have been originally loaded by the boot_loader,
which might be stale. I think the bug would trigger for settings which had been
loaded by the boot_loader but had never been parsed.

With this change, I can use the userlandfs on all my machines.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35166 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 15:40:24 +00:00
Stephan Aßmus 6a4c235b67 Renamed jam target to just "netfs".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 10:59:00 +00:00
Colin Günther 81a0bf6fdc Adding a wifi firmware installation script done by mmadia. This script installs
firmware for unshipable broadcom43xx and marvell88w8335. Furthermore it installs
the firmware for ipw2100 and iprowifi2200, which requires the user to consent
to its license terms. Thank you mmadia!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35164 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 10:17:33 +00:00
Ingo Weinhold 0fc052b47d Moved the definition of the CACHE_ALIGN_ON_SIZE flag to the header and fixed
its value.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35163 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 10:17:16 +00:00
Colin Günther 9c17873558 Adding firmware licenses for shipable firmwares. This fulfills a requirement of
AboutSystem and the install-wifi-firmwares script.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 10:13:27 +00:00
Ingo Weinhold a8806e5e0d * Renamed headers/private/kernel/slab/Depot.h to ObjectDepot.h.
* Moved the object depot code to its own source file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35161 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 10:12:48 +00:00
Colin Günther 0b97b70b5c * Adding shipable firmwares to the repository. They aren't included in the
nightlies, though. As this will require an update of AboutSystem, which is
  scheduled for a later commit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 09:58:11 +00:00
Colin Günther 6754b03459 Another driver settings file. Should have been part of r35158.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35159 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 09:45:28 +00:00
Colin Günther 3dc8c9b9ae Adding driver settings file with the firmware name mappings. Those files need
to be copied to /home/config/settings/kernel/drivers with omitting the file
endings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35158 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 09:44:02 +00:00
Colin Günther b6dd23b149 Reverting to original firmware naming scheme. You now just have to extract
the Intel provided firmware archive in /system/data/firmware/ipw2100/ with out
the need of any renaming.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 09:15:27 +00:00
Colin Günther 865639deac * Changing the naming scheme for firmwares. Instead of directly renaming
the respective firmware files renaming is now done within the firmware loader.
  The mapping of original firmware names to FreeBSD internal firmware names is
  now done within driver specific settings files. Those are committed in a next
  step.
  This approach allows a clean separation of FreeBSD compat layer requirements
  and native driver requirements.
  For example: we have two Intel PRO/Wireless 2100 drivers. Do we prefer the
  naming scheme of the native driver or do we force the native driver to use
  the one of the FreeBSD driver? With this commit we prefer native over FreeBSD.
* Changed the firmware loader to make use of Haiku's file mapping facility.
* Implementing firmware unloading.
* Some minor cleanups in two compat layer header files, which are using Haiku
  defined identifiers, where apropriate.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 09:08:52 +00:00
Ingo Weinhold 6379e53e2d vm_page no longer points directly to its containing cache, but rather to a
VMCacheRef object which points to the cache. This allows to optimize
VMCache::MoveAllPages(), since it no longer needs to iterate over all pages
to adjust their cache pointer. It can simple swap the cache refs of the two
caches instead.

Reduces the total -j8 Haiku image build time only marginally. The kernel time
drops almost 10%, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 08:34:14 +00:00
Michael Lotz 2416d6ae42 anevilyak+mmlr:
accept() is supposed to return B_WOULD_BLOCK when SO_NONBLOCK is set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35154 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 04:31:35 +00:00
Ingo Weinhold 3632eeedb9 * VMCache: Added a UserData attribute which can be used by the lock holder.
* Added "bool consumerLocked" parameter to VMCache::Unlock() and
  ReleaseRefAndUnlock(). Since Unlock() may cause the cache to be merged with
  a consumer cache, the flag is needed to prevent a deadlock in case the
  caller still holds a lock to the consumer. Hasn't been a problem yet, since
  that situation never occurred.
* VMCacheChainLocker: Reversed unlocking order to bottom-up. The other
  direction could cause a deadlock in case caches would be merged, since the
  locking order would be reversed. The way VMCacheChainLocker was used this
  didn't happen, though.
* fault_get_page(): While copying a page from a lower cache to the top cache,
  we do now unlock all caches but the top one, so we don't unnecessarily
  kill concurrency.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35153 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 03:02:11 +00:00
Michael Lotz 5ec7bd49cb The default for deleteWhenUnreferenced changed between the Referencable of the
old userlandfs and the BReferenceable now in use by netfs. So better explicitly
set that to avoid nasty surprises (like crashes left and right).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35152 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 02:41:06 +00:00
Ingo Weinhold df6a690eae Patch by Matt Madia: Use "set -o errexit" to error out when a command failed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35151 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-19 02:39:03 +00:00