the CACHE_DONT_SLEEP flag to work for real, since otherwise the thread could
block on the mutex held by a thread allocating memory. We use two condition
variables to prevent multiple threads from allocating slabs at the same time.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35206 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Changed the semantics of object_cache_reserve_internal(). Now it makes sure
the given number of objects are free. As a side effect this also changes
the semantics of object_cache_reserve() similarly, though I have trouble
seeing the purpose of the function in the first place.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35204 a95241bf-73f2-0310-859d-f6bbb57e9c96
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
* 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
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
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
* 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
* 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
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
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
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
* 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
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
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
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
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
* 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
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
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
* 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
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
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
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
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
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
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