Commit Graph

24688 Commits

Author SHA1 Message Date
Ingo Weinhold
0cb2617fa5 Before starting to wait the undertaker does now check whether there's
already a dead thread available. Fixes a race condition.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25754 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-02 04:34:09 +00:00
Ingo Weinhold
e72e5275ff Added test that runs another program and analyzes the contention of the
thread and team spinlocks during that time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25753 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-02 02:07:26 +00:00
Ingo Weinhold
1c8de8581b * Added optional spinlock contention measurement feature. Enabled when
B_DEBUG_SPINLOCK_CONTENTION is defined to 1. It typedefs spinlock to a
  structure (thus breaking BeOS binary compatibility), containing a
  counter which is incremented whenever a thread has to wait for the
  spinlock.
* Added macros for spinlock initialization and access and changed
  code using spinlocks accordingly. This breaks compilation for BeOS --
  the macros should be defined in the respective compatibility wrappers.
* Added generic syscall to get the spinlock counters for the thread and
  the team spinlocks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25752 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-02 02:04:12 +00:00
Stephan Aßmus
e78b56aaf7 Fix the link target for Beam. Note that the R5 version cannot retrieve mails
either, it just hangs there trying ot connect and eventually times out.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25751 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 21:18:08 +00:00
Axel Dörfler
032f1e5f90 * Fixed an endless loop when using vfs_get_vnode_name() or the "wrong"
get_vnode_name() variant.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25750 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 18:47:18 +00:00
Rene Gollent
7ee180f34d Fix I2C tracing, style cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25749 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 16:16:10 +00:00
Jérôme Duval
19b07e67d2 when acquiring results in an error, the resource should be reset to avoid a crash on delete
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25748 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 15:27:00 +00:00
Axel Dörfler
710b77326d * vm_cache::virtual_size is not always a multiple of B_PAGE_SIZE for files.
In these cases, the last partial page would have never been written back.
* This fixes bug #2282, and eventually others.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25747 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 10:53:10 +00:00
Ingo Weinhold
123dfa78e5 Enforce 80 columns maximum line length.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25746 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 02:40:08 +00:00
Rene Gollent
3104402815 gcc4 build fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25745 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 02:36:47 +00:00
Ingo Weinhold
73aa393d73 * Introduced pipes in the kernel debugger. The syntax is similar to
pipes in the shell, though the semantics is a little different: The
  second command is invoked whenever the first command has written a
  complete line. The line is passed as last argument to the second
  command. The new command flag B_KDEBUG_PIPE_FINAL_RERUN causes the
  second command to be invoked again (with NULL argument) after the
  first command is done.
* Added kprintf_unfiltered() and kputs_unfiltered() which bypass the
  pipe mechanism and directly print to the bluescreen/serial output.
* Moved most commands from debug.cpp to the new
  debug_builtin_commands.cpp.
* B_KDEBUG_DONT_PARSE_ARGUMENTS commands don't get an argument anymore,
  if it would consist of white space only.
* Added new debugger command return value B_KDEBUG_ERROR, which
  indicates that executing the command failed. This return code will
  abort a complete pipe.
* Since debugger commands can nest (i.e. one command can invoke another
  one) the setjmp()/longjmp() mechanism to restore the stack after a
  page fault in a command needs more than one jump buffer.
* Added abort_debugger_command(), which longjmp()s out of the currently
  executed command. This will also abort the current pipe.
* When pagination is enabled pressing "a" will abort the running command
  (as opposed to "q" which only disables the blue screen output, but
  lets the command continue).
* Added debugger commands:
  - "grep" which can be used to filter output by pattern. Removed the
    "filter" command and the underlying mechanism that did that before.
  - "head" which prints only the first lines of output of another
    command.
  - "wc" counts lines, words, and characters of another command's
    output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25744 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-01 02:25:00 +00:00
Jérôme Duval
5f3c81d6a6 fix local variable naming
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25743 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 21:01:05 +00:00
Jérôme Duval
4eae685d97 replaced benaphore with mutex
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25742 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 19:50:53 +00:00
Michael Lotz
b204648b75 Don't define UNIX when building zip as a build tool under a BeOS compatible
host. This prevents the BeOS and Unix specific zipup.h from clashing and allows
hybrid GCC2/GCC4 images to be built under BeOS.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 18:07:07 +00:00
Ingo Weinhold
2ed64c408d Patch by Michael Lotz fixing a missing typedef when compiling with
native compiler gcc 2 and cross-compiler gcc 4.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25740 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 16:39:56 +00:00
Axel Dörfler
3736cb7d04 * Ported scsi_cd to the new driver architecture.
* Added legacy_sata and scsi_cd back to the image.
* Minor cleanup in scsi_disk.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25739 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 16:09:31 +00:00
Axel Dörfler
e67cf5815b * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25738 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 12:04:09 +00:00
Axel Dörfler
fc128a4c76 * Made block_io.h usable from C++ (which doesn't like "typedef a *a" anymore).
* Renamed scsi_dsk to scsi_disk.
* Joined all scsi_disk sources together to a single scsi_disk.cpp file.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25737 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 11:59:02 +00:00
Axel Dörfler
654aaf6ee2 Quick build fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 11:26:06 +00:00
Stephan Aßmus
4fd26cd542 Reuse existing nodes if the media formats do not change. This fixes the
regression that audio playback of multiple files was not "seamless" anymore.
Even video playback should be seamless, the remaining small glitch could be
a problem with buffer timeout if the switch takes too long.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25735 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 11:06:04 +00:00
Stephan Aßmus
4aa9ff58c6 Fix a locking problem with inner locks to protect the race condition when
the producer media nodes would access the suppliers in their own thread
without having any locks held, while the window could replace the suppliers.
I think since I delayed the deletion of the suppliers in the controllers, this
problem was only theoretical... but this is just more clean.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25734 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 10:39:45 +00:00
Stephan Aßmus
7bed1cb42d * The SeekSlider had the wrong follow mode. If the window was resized in such
a way that the transport group did not need to re-layout, then the seek
  slider would not be at the correct position.
* Layout the transport controls with a fixed maximum width in order to prevent
  spreading them too much.
* Fix "About" and "MediaPlayer" missing a space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25733 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 10:37:44 +00:00
Stephan Aßmus
474f214fdb Print a warning in case the video buffer is bigger than what should be
displayed, does not seem to be the reason for the problem I am observing
with one clip I have, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25732 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 10:35:43 +00:00
Stephan Aßmus
d7f2503a08 * Support codecs that don't support B_YCbCrXXX color spaces.
* Leave the codec a chance to advertise the best output color space,
  try B_YCbCr422 as the most widely supported format in case the codec
  does not advertise.
* Support two more overlay colorspace modes in the video consumer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25731 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 08:46:11 +00:00
Ingo Weinhold
8d1699709a * For operations that implicitly install a MIME type, we no longer send
two notifications (install + update), but only the install
  notification.
* When create_app_meta_mime() installs a new MIME type (app signature or
  supported type), it only sends the install notification, instead of
  install + one or more updates.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25730 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-31 00:07:32 +00:00
Michael Lotz
9a18e1d269 * Do not delete the device handed over to the devfs when deleting the vnode
as it seems devfs should not take over ownership. The device is deleted
  in republish_driver for legacy drivers before the call to devfs_unpublish_device
  that in turn deletes the vnode. This looks generally suspicious to me as
  the device pointer the devfs vnode may still use gets invalid for a certain
  amount of time (until the node is unpublished). So maybe the devfs should
  take ownership of the device afterall and it shouldn't be deleted by the
  device_manager/legacy driver functions. Axel please review.
* Do not try to delete the IOScheduler for now as creating one is disabled
  currently too.

This fixes the crash on rescans of legacy drivers as seen when unplugging
USB devices.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25729 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 20:30:07 +00:00
Stephan Aßmus
eaa3851e82 Build fix for GCC 4.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 19:21:54 +00:00
Stephan Aßmus
bbf1ff835d Added BMediaRoster class definition.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25727 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 19:17:37 +00:00
Michael Lotz
3cec30848c Fix build with TRACE_VFS enabled and also fix a warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 19:06:30 +00:00
Stephan Aßmus
0fc56ed57b * Moved a bunch of non-primary interface classes into a new subfolder
"interface"

* Complete reimplementation of the playback engine using Media Nodes:
- Seeking video files does not appear to lockup the playback anymore, but
works on a frame accurate level even for keyframe based streams. There is
currently a problem with certain container formats, the audio track reports
a "Device Seek Error" in certain conditions. In that case audio goes silent,
and can be restarted by going back to the beginnings of the stream.
- Video overlays are now supported.
- It would be possible to connect the output of the MediaPlayer to other
applications or dormant media nodes.

* Known regressions:
- The volume slider has currently no effect anymore.
- Switching the audio track during playback has a known race condition and
can crash the player.
- The new engine is not as "light weight" as the old one. I tagged the
previous implementation in tags/components/mediaplayer-engine-v1. It does
not seem to have any noticable effect though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25725 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 18:59:36 +00:00
Michael Lotz
2ec83efbb2 Fix one reason for crashing on legacy driver rescans, but there seems to be
more to it.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25724 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 17:45:27 +00:00
Stephan Aßmus
590c0d667c Darn... should have been part of my last commit:
Export the Read/Write locking strategies from the BPrivate namespace. Fixes
Icon-O-Matic build (RWLocker).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 14:12:04 +00:00
Stephan Aßmus
722f6c5cd0 Small cleanup of duplicated files. AutoLocker and AutoDeleter are already
part of headers/private/shared, Icon-O-Matic used older versions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 14:03:02 +00:00
Axel Dörfler
9abdb2222c * PoseView waited for 200 ms after a B_META_MIME_CHANGED message was evaluated
to give other windows the opportunity to mark the icon invalid before
  recaching it.
* Since we currently update all app MIME types on first boot, over 400 messages
  are generated, so that delay easily caused the message queue to get full.
* I've now reduced the wait to 10 ms, and also call BWindow::UpdateIfNeeded()
  afterwards, which empties the message port, too. This fixes bug #2212.
* Note though, this should be handled completely different to make it really
  work right.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 09:10:53 +00:00
Axel Dörfler
873066a8e1 A bit of cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 09:07:06 +00:00
Ingo Weinhold
e4d2f9ba4f Removed the condition that only caches with a source can be merged.
Instead we only allow temporary caches to be merged. This remedies the
problem that after fork() + join() there remains a superfluous cache
layer for all RAM areas.
I haven't tested it, but this might improve the jam situation
memory-wise (huge heap is committed one less time), though it might
worsen it performance-wise (lots of heap pages are moved with every
merge).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 01:02:29 +00:00
Ingo Weinhold
ad66253c1a * Broke the cache merging code out of vm_cache_remove_consumer() into
new function merge_cache_with_only_consumer(), which is also used in
  vm_cache_remove_area(), now.
* Added tracing for the merge case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-30 00:27:02 +00:00
Ingo Weinhold
0a871009db Added VM cache kernel tracing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25715 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 22:09:51 +00:00
Ingo Weinhold
91312c915d Changed tracing output prefix from "cache" to "block cache".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 21:21:33 +00:00
Ingo Weinhold
42d3fc045e Added implementations for the __fssh_swap_int*() functions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25713 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 20:52:43 +00:00
Ingo Weinhold
72e3b6ffd3 Missing prefix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25712 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 20:51:59 +00:00
Stephan Aßmus
1083a4b6d2 Added Andreas Faerber and Scott McCreary to the list of contributors for their
help with bugs, sending patches and the ongoing Haiku-Ports effort.

As always, if you think someone should be listed, please drop me a line!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25711 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 19:56:00 +00:00
Stephan Aßmus
7494509957 Fixed typo in long description, thanks to Urias McCullough who noticed!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 19:44:25 +00:00
Axel Dörfler
f20a8750cb * Enlarged the default BLooper port capacity to 200 messages. Since limiting
the message count doesn't really make much sense anyway (as opposed to
  limiting the maximum size of waiting messages), we might still want to
  enlarge this even more.
* This should further help with #2212.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25709 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 18:24:19 +00:00
Axel Dörfler
55112db6ea * Do not update the internal window state in case sending the message failed.
* This is not perfect, but it makes Tracker catch up and redraw when the next
  event is due. This improves the situation in bug #2212.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 18:16:07 +00:00
Michael Lotz
c7d757a074 * For multi function devices it is not so unlikely to try to do multiple
concurent SendRequest() calls. Therefore it's probably a good idea to
  protect that, now that the request data is not dynamically allocated anymore.
* Fix warning about not returning a result in the compatibility version of
  init_mutex_etc() (which wouldn't make a difference as the Haiku version
  does not return anything).

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25707 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 17:48:41 +00:00
Stephan Aßmus
cfccb35af6 Added audio mimetype for APE (Monkey's Audio), curtesy of SHINTA. Thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 17:27:28 +00:00
Axel Dörfler
abc690633a * AHCI and other SATA drivers aren't in busses/sata, but either busses/scsi
or busses/ide.
* This change makes the AHCI driver working again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25705 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 15:03:15 +00:00
Ingo Weinhold
9101535322 Added new kernel thread "undertaker" which gets rid of dead thread
remains. This replaces the previous mechanism of switching the thread to
a dedicated death stack. We might consider moving more cleanup work to
the undertaker, but that seems a little more involved.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25704 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 14:28:31 +00:00
Axel Dörfler
2620242fd5 * Fixed broken comparisons introduced with r25702.
* Removed old OpenBeOS namespace leftover.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25703 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-29 14:27:57 +00:00