Commit Graph
100 Commits
Author SHA1 Message Date
Michael Lotz 67f1ff42ed Add missing check for non-data items which lead to picking up some mice as
keyboards due to buttons being padded by non-data arrays. The keys wouldn't
actually be used later, but a (useless) keyboard device would still be
published.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35797 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-10 01:12:12 +00:00
Michael Lotz 18074c28fa Reworked the handler adding to be based on input reports. This way multiple
handlers may be added to a single device if it provides more than one report
for a kind of device. Should fix #5549 where two mouse reports are present
and only the first one was picked up and made available as device.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35796 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-10 01:06:14 +00:00
Michael Lotz 2cf04ca728 Don't take ownership by writing the OS-owned semaphore when the BIOS-owned flag
isn't set. I'd tend to say that's a rather odd interpretation of the specified
protocol if a BIOS goes mad if the sem is written to while it doesn't actually
own the controller (it should just be a no-op in that case and directly set the
sem state). But it seems this is what others do as well (FreeBSD, Linux) so we
follow. Thanks to vegardw in #2083 for researching into this and proposing this
fix. Minor other cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35780 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-07 22:46:11 +00:00
Michael Lotz 1487898473 * The MBR boot code did execute the check for disk extensions with the wrong
magic code. This would lead to them not being detected on systems where the
  BIOS (rightfully) returns an error in this case. Since the CHS fallback can't
  work it would then fail with "Missing Operating System".
* Fixed a typo, an 80 char limit violation.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-02 01:28:49 +00:00
Michael Lotz aceebab740 Add a CHS conversion function. It is not used though as we can't generally make
valid CHS addresses due to not knowing the geometry of the target device
beforehand. So it's mostly just for completeness...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-02 01:22:11 +00:00
Michael Lotz e3c9401739 Add missing dependency that would cause the MBR not to be rebuilt on changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-02 00:53:41 +00:00
Michael Lotz 610a2eed63 Made heap classes const just in case. They really already were though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-01 22:29:23 +00:00
Michael Lotz 0a54a1a530 Fix missing stdint include, missing open mode flags and libsupc++ linking.
Thanks to luroh and mmadia for testing!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35674 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 20:49:08 +00:00
Michael Lotz 596ba08220 Well, it was a 50-50 chance to hit the portable write function... Should fix
the anyboot build tool build on non-Haiku.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35673 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 20:19:44 +00:00
Michael Lotz 100e91926c Adding buildsystem support for the "anyboot" images. They can be built using
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
2010-02-28 18:54:16 +00:00
Michael Lotz bfa5a8db18 Adding an "anyboot" buildtool that takes a chainloading MBR, a ISO CD boot image
and a Haiku image and fuses everything to a hybrid MBR/ISO image. Since it
contains a valid MBR, partition table and el-torito CD boot record such an image
should be pretty universally bootable. It can be written to disks, USB sticks or
CDs/DVDs. Since it has a partition table in place it is also possible that it
helps with the non-booting USB sticks where the BIOS (wrongly) assumes a
partition table.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35667 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 18:51:16 +00:00
Michael Lotz e4c0070fe6 Added a bit of logic to possibly fall back to a fixed 512 block MBR in case
certain conditions indicate that we might deal with a fixed 512 bytes MBR on
a non 512 byte block size medium. One condition is that at least one partition
had to be shrunk to fit the available size (which usually happens with larger
block sizes). We retry with a fixed 512 block size once and compare the result
if it didn't improve the situation it is reverted again. This is mostly a
preparation for the upcoming "anyboot" hybrid MBR/ISO images.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35664 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 18:10:29 +00:00
Michael Lotz 17d87ddf36 * Finish the partition scanning part so that UDF is recognized and mountable.
* Added myself to the copyrights.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 08:50:01 +00:00
Michael Lotz 7cadc8aff2 * Cleanup the Jamfile, this one doesn't work on BeOS anymore.
* Turn off remaining verbose debug output.
* Add UDF to the default image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 08:03:41 +00:00
Michael Lotz af15ee68f1 * Implement udf_io and udf_get_file_map.
* Add file map and cache and do reads through the file_cache for file ICBs.
* Move the private _Read() backend from the header to the implementation file.
* Read() is now only used for directory iteration.
* Turned off the verbose debug output.
* Minor cleanup.

This fixes the abuse of the block_cache, should allow executables on UDF and
won't panic on protected content.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 07:50:28 +00:00
Michael Lotz 4f3f1911cd The whole reading was seriously confused. It tried to use the block cache for
multiple blocks at a time which it doesn't do as it always only returns one
block (and actually completely ignores the provided offset and length).
It only didn't crash after that because it would in the end always only memcpy
length >> block shift bytes which ends up being pretty small in most cases.
Since it does block wise mapping it can't do multiple blocks anyway, and really
using the block cache for this is all wrong because this should really use a
file map to resolve the block mapping and then use the file cache instead.
Still this at least gets it working. Beware though that protected DVD content
will make the block cache panic, as reading these blocks without prior setting
the drive up correctly will fail (the drive will stall the reads).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35651 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 05:35:31 +00:00
Michael Lotz a282be40e4 Re-lock the cache directly after the read. Otherwise the error case would
remove the block from an unlocked cache and the cache->lock would be unlocked
twice when the calling function unlocked. It panics in that case anyway, but
this should make it continuable and is more correct.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35648 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-28 00:02:31 +00:00
Michael Lotz 8d3a8691d4 * UDF didn't actually initializing _flags to 0 (same as with fat).
* Set the _type as well, this gets file listings work.
* Some cleanup and debug output moves/fixes/additions.

Yet crashes when accessing files though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35647 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-27 23:19:13 +00:00
Michael Lotz a9038d00b4 The withLength variable wasn't initialized properly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35613 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-25 01:50:29 +00:00
Michael Lotz 64bf879506 Finish the implementation of heap_debug_malloc_with_guard_page() using mprotect
to make the guard page inaccessible. Thanks Ingo for the pointer!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35488 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 23:48:51 +00:00
Michael Lotz 386c8bad1b Return an error when encountering an invalid allocation info.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 21:42:55 +00:00
Michael Lotz ac653a30df Add heap_debug_set_debugger_calls() which allows to disable debugger calls for
the heap debug panics. Instead syslog output is generated if turned off.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 21:35:07 +00:00
Michael Lotz c1502cf1b8 Add heap_debug_get_allocation_info() to retrieve the size of the allocation as
well as the thread allocating it. Can for example be used to verify that an
object or buffer is as large as expected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 20:57:52 +00:00
Michael Lotz 081ff2db28 * Add heap_debug_set_memory_reuse() which allows to disable memory reuse,
keeping all returned heap memory in the 0xdeadbeef state (including the
  first sizeof(void *) bytes otherwise for the free list). While wasting a lot
  of memory it allows you to rely on 0xdeadbeef being always present as no
  future allocation will reuse the freed memory block.
* Also added heap_debug_malloc_with_guard_page() which is intended to allocate
  a memory block so it is aligned that the start of invalid memory past the
  allocation is in an unmapped guard page. However the kernel backend that would
  guarantee this is not yet implemented, so right now this works only by chance
  if no other area happens to be allocated exactly past the created one. With a
  very specifc suspicion you can put that one allocation you get to good use
  though. It causes a crash when accessing memory past the allocation size so
  you actually get a backtrace from where the access happened instead of only
  after freeing/wall checking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-15 20:28:15 +00:00
Michael Lotz f6a6245c89 * Adding malloc_debug.h that exposes the malloc_debug API.
* Moving some functions around, removing and adding others for the public API.

I've written a blog post at haiku-os.org to go as documentation for this
introducing the API and the other helpful bits.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-08 01:27:21 +00:00
Michael Lotz 7f8ffb252f Also add /boot/common/add-ons to ADDON_PATH. I don't know why this wasn't done
in r23974, but seeing that it was added to the runtime_loader default paths as
well I take it this was an oversight.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 18:47:37 +00:00
Michael Lotz 60fb713d19 Must only advance by step sizes, otherwise we may end up with misaligned pages
again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 16:55:43 +00:00
Michael Lotz b07ef504a0 Add a memalign test that checks for valid alignments and fills/verifies
allocated buffers to validate that the full allocated size is actually usable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 02:11:31 +00:00
Michael Lotz 160abe2685 Sync two locking changes from kernel heap. This just moves the page locking into
the contiguous page allocation function and unlocks a bin locker a bit earlier.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 02:02:13 +00:00
Michael Lotz b7d3ddaa0e Sync kernel heap with alignment handling fixes, simplifications and performance
improvements from debug heap in r35422.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35423 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 01:59:53 +00:00
Michael Lotz 638a24fa52 * Seperate the raw page wise allocation and allocations from bins.
* Make the contiguous page allocation capable of aligning the allocation
  and make it more clever by checking up front if there's a chance of getting
  enough pages at all, by giving up earlier if the page count can't be fit
  anymore, and in the alignment case by only checking the pages which have a
  valid alignment.
* If the alignment requirement is > B_PAGE_SIZE we now use page allocation
  directly, because the bins aren't necesarily aligned on their size past
  B_PAGE_SIZE anymore.
* When doing aligned bin allocation, calculate the aligned size up front and
  choose the right heap for the allocation.
* Also when doing aligned bin allocations we not only need to round up the size
  but also ensure that the bin we choose is aligned at all.
* Moved adding leak check info into it's own function.

Fixes various misalignment problems when working with alignments > B_PAGE_SIZE
or when using alignments < allocation size. Also the directly aligned page
allocations now only use up as many pages as actually required instead of
allocating based on the rounded up to align size.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35422 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-07 01:09:27 +00:00
Michael Lotz 029f4e9317 * Add an inline CurrentPoseList() that returns either the filtered or normal
pose list and replaced the rather ugly "fFiltering ? ..." everywhere with it.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-02 17:56:52 +00:00
Michael Lotz cc5b851813 No need to lock out the normal typeahead when filtering doesn't apply (i.e. in
icon mode). And a little automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35388 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-02 17:37:53 +00:00
Michael Lotz e33d4e74c2 Update the test to cover a wider width range now that truncating doesn't crash
anymore. Also make that test string a bit more complicated.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35386 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 22:03:11 +00:00
Michael Lotz 5bc9fb9d24 * Replace the truncate_string() helper function with a new, simplified version.
* Remove no longer necessary support functions.
* The new version uses a single BString as input/output parameter and only
  modifies that one by removing non-fitting chars and inserting the ellipsis
  where appropriate, so avoids copying around bytes/chars/strings in a few
  places. It uses the new Chars functions of BString so also no need for manual
  multibyte handling.
* Adjusted the BFont and ServerFont usage of truncate_string() which are both
  simplified by using the single BString. It avoids a lot of temprary
  allocations and string copying. The char * version of BFont
  GetTruncatedStrings() now uses the BString version and not the other way
  around anymore which requires us to allocate temporary BString objects, it's
  not worse than before though.
* This fixes a bunch of problems with the previous functions like always
  prepending the ellipsis for B_TRUNCATE_BEGINNING, crashing on short enough
  widths, violating the width in the B_TRUNCATE_END case when the width was
  short enough, non-optimal truncation in a few cases and sometimes truncation
  where none would've been needed. Also fixes #4128 which was a symptom of the
  broken B_TRUNCATE_BEGINNING.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 18:43:03 +00:00
Michael Lotz 8806dfd057 Adding test that shows that B_TRUNCATE_BEGINNING mode is essentially broken.
Worse yet for a small enough length it actually crashes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 13:39:06 +00:00
Michael Lotz 0086654c68 Automatic whitespace cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35376 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:36:59 +00:00
Michael Lotz b3e4ce5422 Use the multibyte aware string functions for typeahead search and filtering so
that special characters can be used as well (umlauts for example).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35375 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:30:08 +00:00
Michael Lotz 5cd9308ef4 Drop BeOS compatibility and remove related cruft, including using String.cpp
directly. Fixes the build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:27:18 +00:00
Michael Lotz 7acdd03f5e Replaced the sMatchString buffer used for typeahead search by a BString. No
intended functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 05:02:05 +00:00
Michael Lotz 82471975d5 Adding a simple test app for the utf-8 aware BString functions. I didn't feel
like writing a full blown unittest though, sorry...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35372 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 04:26:05 +00:00
Michael Lotz a5b7cbe331 Adding utf-8 aware version of most functions to BString. They are named after
the corresponding normal functions but have a "Chars" in the name like
"MoveCharsInto" or "AppendChars". Also added CountBytes() and CharAt().
This should make everyday string handling with multibyte strings a bit easier.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-01 04:20:01 +00:00
Michael Lotz 83c03b5698 Missed the re-insertion when exiting early after checking the sort order for a
pose on a non-visible pose list which would cause poses to get lost from the
unfiltered list.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35354 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 02:28:29 +00:00
Michael Lotz eeeef45c69 * Implemented a "refs catcher" that will catch refs received through a
B_REFS_RECEIVED within a short amount of time (0.5 seconds right now) and
  send them to the last window to be appended to the playlist. This allows to
  select multiple media files in Tracker and get them inside a playlist of a
  single window instead of spawning many individual ones (like when filtering
  for an album, selecting all tracks and opening them by hitting enter).
* Introduce special append index values APPEND_INDEX_REPLACE_PLAYLIST (-1, does
  the same as before) and APPEND_INDEX_APPEND_LAST. The latter is used when
  appending through a RefsReceived() call and ensures that the index is
  evaluated at the actual insertion time (in ImportPLItemsCommand::Perform())
  as by the time this function is called the playlist count may have changed
  already due to multiple RefsReceived() invokations, which would then mess up
  the order. This makes the above item work as expected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 01:03:06 +00:00
Michael Lotz 497aa62c2f * Provide a LaunchLooper that receives launch messages and executes the launch
functions provided with the given arguments.
* Make use of that looper to replace spawning a thread for each launch task.

On the one side this reduces the amount of used threads (and should fix #698)
and on the other side it makes the order in which refs are sent a bit more
predictable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 00:25:10 +00:00
Michael Lotz 382a4b129a Add some locking to accesing PlaylistItems in these two cases as suggested by
Stephan.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 18:42:46 +00:00
Michael Lotz 6a5cf0a1f2 Allow shift-return to discard the filter so you can decided whether or not the
filter shall stay in effect when opening a selection.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35347 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 18:17:22 +00:00
Michael Lotz 2932770972 Fix missing check that would cause non-matching poses to show up on attribute
changes (which may also happen on creation of new files).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35346 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 17:41:26 +00:00
Michael Lotz ac53da69c7 When initially starting filtering we need to make sure that non-matching poses
fall out of the selection. The same is later done when removing them from the
matching subset, so moved that to a common EnsurePoseUnselected().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35345 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 17:10:46 +00:00
Michael Lotz beb2e05421 * Renamed CancelFiltering() to ClearFilter() to make it more clear what it does.
* Add UpdateAfterFilterChange() with the update part of FilterModified().
* Add StopFiltering() that clears the filter and updates.
* Make use of these functions where appropriate to fix missing scroll ranges
  after canceling a filter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35344 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 16:53:53 +00:00
Michael Lotz 545ebde00c Implement type ahead filtering (this time for real and without abusing the
vertically sorted pose list). When enabled typing will filter based on the
currently visible attribute columns. Using shift-space as a delimiter
independent filtering strings can be typed, so you can filter based on multiple
attributes at once to refine results while you type. Filtering stays active
until you cancel it using the escape key. While the filtered result is displayed
all normal file operations can be used. Using the return key while filtering
auto-selects and opens the first filter result, allowing for fast traversal
through directories and directly opening the topmost result.

* Introduces fFilteredPoseList which stores the active filter result. The list
  is only used when filtering is currently active, so no syncing is required
  otherwise.
* Some minor adjustments to leave out invalidations where non-visible poses are
  updated.
* Account for the now possible multiple lists throughout BPoseView.
* Add filter string output to the CountView and made that one a bit wider.
* Added all the settings-cruft for type ahead filtering (defaults to off).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 08:08:58 +00:00
Michael Lotz 6568077f50 Fix hid_decode build on GCC4. Spotted by Johannes Wischert, thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35338 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-30 01:37:04 +00:00
Michael Lotz 67df6a72c3 Cleanup, these aren't necessary anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35337 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-29 23:31:10 +00:00
Michael Lotz 17ec4668b2 Printing of basic types was broken when they were part of non fixed size fields.
The size instead of the data would be printed. The fixed/non-fixed handling is
generic though, so no need to special case the always non fixed elements.
Since adding of basic types through their Add*() function always generates fixed
size fields, this would only be visible if the data was added through AddData()
with isFixedSize == false. This is the case in compiled resources for example,
hence you would see it when printing the returned messages of BMimeType::Get*()
functions for pre-installed types.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35336 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-29 23:29:51 +00:00
Michael Lotz c14db1b2a1 Also accept buttons from the "button page" as long as they are using arrays.
That usually indicates keyboard-like usage and one of my keyboards uses this
type for multimedia keys.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-27 00:44:39 +00:00
Michael Lotz 384eec9bc3 Add "hid_decode" which uses the usb_hid HID parser to decode a report descriptor
(which is conveniently stored by usb_hid to /tmp for each device you plug in).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-26 23:34:23 +00:00
Michael Lotz fd97180e27 Make the HID parser usable standalone in userland.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-26 23:27:56 +00:00
Michael Lotz cef3da793a Remove leftover from lazy copy&paste action.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35303 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-26 21:27:42 +00:00
Michael Lotz 63bcd0d0c3 Add "URI" property that returns the URI of the currently playing item.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35302 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-26 21:23:33 +00:00
Michael Lotz c5d6e9b06e Add some scripting to the MediaPlayer so it can be remote controlled.
Example usage to skip one track forward: hey MediaPlayer Do Next of Window 0


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-26 04:41:54 +00:00
Michael Lotz a387e84423 Also accept B_MIME_DATA dropped messages. Allows the Terminal to be used with
Keymap as an on-screen keyboard by dropping the sample clipboard content and the
actual keys onto it (including control ones).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35293 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-26 02:34:07 +00:00
Michael Lotz 96d719ae74 Automatic whitespace cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35292 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-26 02:30:21 +00:00
Michael Lotz c30aac4e5e Add the "Delivery-Date" to the default headers. This provides a fallback in case
the "Date" header is missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35270 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-23 20:37:48 +00:00
Michael Lotz ff6fe8b3ad Automatic whitespace cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35268 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-23 17:45:16 +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
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
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
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
Michael Lotz 44b08ffcb9 The node parameter is a void ** but these calls expect the void * to the node we
got as a result from read_vnode. The joys of void pointers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35149 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-18 23:57:38 +00:00
Michael Lotz fc844f7bfb * Don't call into the ATA stack if we're not transferring data since the
interrupt could be triggered early in the boot process where the ATA channel
  might not yet be fully set up leading to KDLs accessing uninitialized memory.
* Automatic whitespace cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35087 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-15 19:21:52 +00:00
Michael Lotz d4ffeadd1a Don't return early when we're not DMAing. This causes the bus master status
to be read/acknowledged (new) and the status to be read (like before in that
case) which helps discarding spurious interrupts on one controller I have that
would otherwise cause an interrupt storm as the bus master interrupt would never
be acknowledged. The ATA stack will discard the interrupt if it's not expecting
a transfer, so no real harm done.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35083 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-15 02:56:39 +00:00
Michael Lotz 15755741ce Move just a bit more of the interrupt code to the glue code. It does an and with
the enabled interrupts to check if there's anything of interest. This obviously
couldn't really work when clearing the enabled interrupts in the glue code.
This gets broadcom43xx working for me, tested with a Linksys WMP54GS-EU (PCI).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-13 22:24:18 +00:00
Michael Lotz c126f2f2c4 anevilyak:
* Fix missing parenthesis in r35040 that caused node monitoring not to work.
* Minor automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-13 15:52:21 +00:00
Michael Lotz 29aa1bebef Add missing error return.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34970 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-09 13:12:54 +00:00
Michael Lotz 14429e896e Reverted the part of r31520 that made devfs_unpublish_partition() take a raw
device path + child partition name. When a "raw" device is unpublished the node
removal notification triggers the partition and child partitions to be
unpublished/removed. Since in that case the "raw" node is already unpublished
trying to resolve it in devfs_unpublish_partition() again to unpublish the child
partitions would fail, leaving the child partition nodes behind. When a new raw
device would then become available publishing its partitions would fail because
of these left behind nodes, causing bug #4587. Seeing that this code is more
compact and straight forward anyway I don't quite see why it was changed in the
first place.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34967 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-09 03:55:38 +00:00
Michael Lotz c1f316db61 When canceling the transfer, the callback is still called, just with the
canceled status, so we need to collect the corresponding sem release. Otherwise
we would run directly into the old cancel status the next time we schedule.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34932 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-07 02:21:31 +00:00
Michael Lotz 40d3e7158f Whitespace cleanup, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34922 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-07 00:13:03 +00:00
Michael Lotz 5926a6129f I don't know why this was disabled, but not canceling the queued transfers after
a timeout leaks these transfers. In the end this would at least lead to a flood
of canceled transfers on device unplug or, worse yet, exhaust the USB memory
pool stalling all further transfers as seen in #4604. Probably fixes both
issues, can't test though as I don't have the hardware.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34915 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-06 00:54:15 +00:00
Michael Lotz cb3d173dc2 Whitespace cleanup only, no functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34914 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-06 00:48:13 +00:00
Michael Lotz cc83a8213b The wlan part uses a very specific way to update multicast addresses for the
parent interface. It calls if_addmulti() on it but temporarily sets the ioctl
hook to NULL. We need to account for that so we don't crash on multicast setup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34699 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-19 03:26:28 +00:00
Michael Lotz de86f3421c Also call construct_mbuf() from m_getjcl() as it initializes the mbuf fields. It
also handles the M_PKTHDR flag. Before, the uninitialized fields could be left over
from earlier freed mbufs and on m_freem previous m_next fields could be returned
resulting in random mbufs being freed. This makes the iprowifi4965 work and fixes
#5089.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34691 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-18 18:00:11 +00:00
Michael Lotz 8665c30ace That was not such a good destruction order in the error case. As the scheduler
accesses the scheduler data inside the thread structure, freeing it first lead
to a crash when a thread couldn't be created.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33940 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-07 16:33:29 +00:00
Michael Lotz 59fa665d53 The "was dropped" flag is only used to specify whether or not DropPoint()
returns valid data. Since the data is still valid in the copy, we don't need
to clear the corresponding flag when copying a message. This is most probably
the same behaviour as in R5 as Tracker seems to expect that in the case where
a drop is done after a menu was displayed as in #4757. Thanks to aldeck for
tracking that one down inside Tracker, should fix #4757.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33746 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-23 10:33:40 +00:00
Michael Lotz 4f5d9ca63d Fix libkernelland_emu build after ConditionVariable and devfs changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-22 23:50:15 +00:00
Michael Lotz ee7ec20503 Account for single page allocations. They aren't used anywhere right now because
the bin sizes ensure that when hitting this case it always allocates multiple
pages. This makes it more flexible for other use cases though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-22 13:06:15 +00:00
Michael Lotz 6bb413270b The allocation size wasn't updated on an area based realloc that would still
fit into the existing area. In that case further reallocs could then assume the
wrong previous size and then not copy enough from the original buffer, leading
to lost bytes at the end of the new buffer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33724 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-22 12:05:50 +00:00
Michael Lotz 4bee71c211 * Implement per-CPU heaps. They only get enabled in case there's enough memory.
* Allow an allocator to be created on the heap to allow for non-locked
  allocators to be created.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-22 08:57:34 +00:00
Michael Lotz 5ee1f125e5 Make use of the wait status field so it can be provided in Notify() and then
read out in the ConditionVariableEntry::WaitStatus(). That way you can notify
with a specific status that can be read out on the other end.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-21 23:44:59 +00:00
Michael Lotz 6c4570c807 Also name these BLockers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33707 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-21 15:29:31 +00:00
Michael Lotz 1d984896da Name the lockers to be able to identify them when debugging/analyzing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-21 15:27:22 +00:00
Michael Lotz 6fb91db708 We didn't acquire/release a BSound reference when playing using a BSoundPlayer
which lead to #4825.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33705 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-21 15:20:37 +00:00
Michael Lotz 35e7c9642f Fix dirent handling. The d_reclen field contains the size of the whole record,
so it includes sizeof(dirent).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33689 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-20 22:52:35 +00:00
Michael Lotz 432cc51cc7 Add small but very important missing detail. Before blocking it didn't set the
wait status and therefore would return directly without actually blocking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33681 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-20 19:05:35 +00:00
Michael Lotz b5addd82d7 axeld:
Restore ignoring the BIOS provided width and height in case the timings
suggest a bigger dimension. Also re-add the corresponding comment. Should
fix #4810 and might affect #4807 as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-19 09:06:10 +00:00
Michael Lotz b501a0387d anevilyak+korli+mmlr:
* Check for overflows in memory allocation. If someone happened to (erroneously)
  try to allocate a negative amount of memory we could overflow and crash
  because of the sizes getting messed up.
* Review and update the alignment logic which was a bit broken for the huge
  allocation case (reaching the area threshold). Also assert the results so
  next time this will be easier to spot.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33638 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-18 12:35:49 +00:00
Michael Lotz 8da446a982 The fModel member wasn't initialized.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-17 17:25:47 +00:00
Michael Lotz b7204bd774 Make the swap hash lock into a rw_lock to reduce lock contention a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-17 17:24:59 +00:00
Michael Lotz cf723bc673 Make the nightlies a bit bigger. They were completely filled and probably missed
some files from optional packages.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33611 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-17 11:41:25 +00:00
Michael Lotz 23d857d96a Fix missing initialization of fSpacing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33572 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-13 12:58:06 +00:00
Michael Lotz 417f446051 The parameter to toFixPtString() only controls the decimal places, not the
actual digits. Therefore the buffer was always too small leading to memory
corruption. Use the version that allocates the string for us instead, then trim
it and assign it to the result.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33566 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-10-13 02:48:17 +00:00