Commit Graph

32923 Commits

Author SHA1 Message Date
Ingo Weinhold
2f7eb9b546 Fixed a stupid race condition between IORequest finishing and
IORequest::Wait(). Wait() immediately returned when IsFinished() returned
true, but this is the case as soon as the last IOOperation has finished. The
I/O scheduler is not done with the request at this point, though, since it
will still be sitting in at least one of three doubly linked lists. Since the
usual procedure to issue synchronous I/O requests is to create an IORequest
on the stack, pass it to the I/O scheduler, and Wait() on it, Wait()
returning early might cause the IORequest object to be destroyed while it is
still in use, leading to invalid memory access in the I/O scheduler,
corruption of its list structures, as well as later corruption of the issuing
thread's stack.
Related tickets:
* #4431: The request issuing thread returned and already deleted the area the
  request was writing to before NotifyFinished() was called.
* #3048, #4883: Caused by the on stack IORequest being overwritten with other
  data while being handled by the I/O scheduler thread.
* #4517: Hard to say, but I've seen a such a problem too, after a thread
  scheduling related change. An explanation would be a list structure
  corruption in the I/O scheduler causing an infinite loop with disabled
  interrupts.
* #2845, #3428, #3429: The block notifier/writer is I/O heavy and as such
  quite likely to run into the stack corruption issue.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34655 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 19:28:33 +00:00
Jérôme Duval
fe69204315 added more missing prototypes in math.h
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 16:35:25 +00:00
Jérôme Duval
0270440a97 added missing prototypes for fmin, fma, fmax functions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 16:22:56 +00:00
Jérôme Duval
d0c1951713 added fmin, fma, fmax from glibc (ticket #5114).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 14:22:13 +00:00
Jérôme Duval
63a275889b gcc4 build fix
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34651 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 13:28:28 +00:00
David McPaul
2a9896ce47 switch to use STL containers, limit to 10 cache entries, don't clear cache on findkeyframe, removed inflight list as it was not needed, report error conditions better. This makes video work again
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34650 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 12:09:17 +00:00
Jérôme Duval
42ee486389 Use B_OP_OVER instead of B_OP_COPY on Haiku (bug #4815)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34649 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-13 00:23:07 +00:00
Jérôme Duval
0b604ab644 Some simplifications (thanks Axel):
* Don't watch for moved entries
* Ask the network stack to delete the named interface 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34648 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 20:22:10 +00:00
Axel Dörfler
a195cce7b5 * Added a bit more missing info about user_threads.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34647 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 19:08:04 +00:00
Ingo Weinhold
c062f1a56d Moved the definition of WaitObjectsTreeModel into it's outer class. Ugly, but
pacifies gcc 2.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34646 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 18:37:26 +00:00
Ingo Weinhold
1ff6076985 Added check box to further group the wait objects by name. This allows to
easily see how wait times for similar objects add up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34645 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 18:25:20 +00:00
Ingo Weinhold
2754b722f1 Added ThreadModel::WaitObjectGroup::Object() getter.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 18:17:35 +00:00
Ingo Weinhold
4c06f2b600 Added boolean deleteIfOwning parameter to MakeEmpty().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34643 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 18:17:15 +00:00
Jérôme Duval
b1b74111f5 * free buffer on ioctl failures
* monitors /dev/net for added or removed devices and handles events 
	by configuring or unconfiguring interfaces. When plugged a usb 
	network device, it now appears correcly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34642 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 15:30:26 +00:00
Axel Dörfler
adf9b14ed6 * Applied r34634 to the simple SMP scheduler as well (Rene was right, I just
overlooked it).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34641 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 15:02:30 +00:00
Ingo Weinhold
a5852db3c2 * Moved the ThreadWindow::WaitObjectPage implementation to new class
AbstractWaitObjectsPage and templatized it over model, wait object group,
  and wait object type.
* Replaced the previous MainWindow::WaitObjectPage implementation using
  AbstractWaitObjectsPage.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34640 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 12:31:24 +00:00
Adrien Destugues
dedd14df43 Added new bulgarian transations done by cssvb94. Thanks again!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34639 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 10:58:47 +00:00
Rene Gollent
5c7993bfab Small cleanup: As the cpu_ent struct now tracks the running thread directly, the affine scheduler can use that instead of keeping track internally.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34638 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-12 00:01:33 +00:00
Ingo Weinhold
e36d79e9dc CPU selection in enqueue_in_run_queue():
* Moved the CPU selection conde into a separate function.
* Re-added the support for disabling CPUs, which I accidentally removed.
* Got rid of idle CPU tracking. We don't need it anymore -- we iterate
  through all CPUs and check the priority of the running thread.
* Added a kind of round-robin component to the CPU selection loop, so that
  we pick CPUs more evenly. And indeed, the ProcessController display is
  less skewed, now. There doesn't seem to be a measurable performance gain,
  though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34637 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 23:28:28 +00:00
Jérôme Duval
faf3d7997f the sample rate label is Hz, not kHz.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34636 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 22:21:57 +00:00
Ingo Weinhold
b4be7c9021 * Added cpu_ent::running_thread which is maintained by the schedulers.
* simple_smp scheduler: Rewrote the interesting part of
  enqueue_in_run_queue(). It always selects a target CPU for the inserted
  thread, now. If no CPU is idle, the CPU running the thread with the lowest
  priority is chosen. If the thread running on the target CPU has a lower
  priority than the inserted one, it will be asked to reschedule. If that's
  the current CPU, we'll return the correct value (wasn't done before at
  all).
  These changes help reducing latencies. On my machine in an idle system
  playing music DebugAnalyzer shows maximum latencies of about 1 us. I still
  find that a bit much, but it's several orders of magnitude better than
  before. The -j8 Haiku image build time dropped about 10%.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 19:06:57 +00:00
Axel Dörfler
edc69377fa * Changed the simple scheduler's next thread selection in the same way as the
affine scheduler to avoid possible latency issues.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34634 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 17:40:15 +00:00
Ingo Weinhold
59967f764e * buffer_ready_sem was released with B_DO_NOT_RESCHEDULE, but without
returning B_INVOKE_SCHEDULER from the interrupt handler, causing
  latencies up to a full quantum for the multi audio output thread. This
  change improves audio clicks quite a bit on my machine. Though they still
  happen from time to time and particulary on FS activity.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34633 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 16:16:44 +00:00
Ingo Weinhold
ed4f4fcf8b * Added the thread's ID to its name in the first column and in the tool tip.
* Made the thread name column wider by default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34632 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 15:38:13 +00:00
Ingo Weinhold
9a76765acb Added context menu item to hide the selected threads and renamed the context
menu items to be more descriptive.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34631 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 15:23:48 +00:00
Ingo Weinhold
d473f5766f Added support for setting the output frequency. Also done some preparation for
setting the input frequency, but I'm too lazy and not interested in the feature
to actually implement it.
For some reason the setting is not persistent. But the other parameters don't
seem to be persistent either, so this is apparently a general problem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34630 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 12:40:06 +00:00
Ingo Weinhold
ec1dcae8cd We have to use dprintf_no_syslog() in the scheduler, as all code is executed
with the threads spinlock held.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34629 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 10:25:56 +00:00
Colin Günther
5b7dad76dd Dependency for kernel_c++_structs.h needed.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34628 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-11 08:52:11 +00:00
Axel Dörfler
1e6b39c341 * Patch by Gerald to set a fallback range in case no EDID info was provided.
* This fixes bug #4572.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34627 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 23:26:22 +00:00
Colin Günther
2b03fdfe35 * Implementing rman_get_start and copying rman_make_alignment_flags from
FreeBSD 8 (r199625) and thus adding the FreeBSD license header.
* Implementing the glue code to make the wavelanwifi driver linking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34626 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 22:04:51 +00:00
Colin Günther
281f1ab86c Choosing an even number for SIOCEND as suggested by François. Thank you.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34625 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 20:51:26 +00:00
Colin Günther
89ee864a4c Renamed atheros wlan driver to atheroswifi. This makes it easier to tell apart
the lan atheros813x and the wlan atheros driver.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34624 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 20:21:43 +00:00
Ingo Weinhold
35a25fae05 Automatic whitespace cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 19:10:54 +00:00
Colin Günther
0229a55264 * Adding remaining wlan drivers (FreeBSD RELEASE_8_0_0) to trunk.
Both are compiling, but not linking yet. Only for compilation of pci support
  has been taken care of, as neither ISA nor PCMCIA are usable within Haiku 
  anyway.
* Enhancing the FreeBSD compat layer so that the above drivers are compiling.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34621 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 16:23:38 +00:00
Colin Günther
3d9728baf9 * Changed definition of driver_intr_t to the way it is defined in FreeBSD.
The internal_intr structure needed to be adapted accordingly, otherwise it
  would not compile anymore.
  This definition is needed by the aironet (if_an.c) driver I'm currently
  porting.
* Extending FreeBSD compat layer a bit in preparation of porting the remaining
  wlan drivers. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 16:16:19 +00:00
Ingo Weinhold
6813f2c744 Debug mode build fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34619 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 16:01:48 +00:00
Ingo Weinhold
d363440a49 * Don't lock the audio mixer connection. At least to me it seems handy to play
with it as well.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 16:00:42 +00:00
Colin Günther
b56f3c65ff Add two more socket ioctl's as they are needed by the aironet (if_an.c) and
wavelan (if_wi.c) drivers I'm currently porting.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34617 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 15:46:37 +00:00
Axel Dörfler
9d6dc833bd * Made sure the tool tip stays on screen without moving itself below the cursor;
I'm afraid there is nothing left of stippi's earlier solution. This fixes
  bug #5097.
* The alignment as specified in the BToolTip is now respected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34616 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 14:31:58 +00:00
Ingo Weinhold
3533b6597d * Reintroduced the SMP_MSG_RESCHEDULE_IF_IDLE ICI message. This time
implemented by means of an additional member in cpu_ent.
* Removed thread::keep_scheduled and the related functions. The feature
  wasn't used yet and wouldn't have worked as implemented anyway.
* Resurrected an older, SMP aware version of our simple scheduler and made it
  the default instead of the affine scheduler. The latter is in no state to
  be used yet. It causes enormous latencies (I've seen up to 0.1s) even when
  six or seven CPUs were idle at the same time, totally killing parallelism.
  That's also the reason why a -j8 build was slower than a -j2. This is no
  longer the case. On my machine the -j2 build takes about 10% less time now
  and the -j8 build saves another 20%. The latter is not particularly
  impressive (compared with Linux), but that seems to be due to lock
  contention.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34615 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 11:54:38 +00:00
Ingo Weinhold
10b4833178 When any of the executed timer hooks return B_INVOKE_SCHEDULER, let
timer_interrupt() return B_INVOKE_SCHEDULER. The scheduler itself uses a
timer hook and relies on scheduler_reschedule() to be called. Will make this
even more reliable in the next commit.
This might fix #3535.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34614 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 11:29:38 +00:00
Axel Dörfler
2388f50c53 * The io_handler::handled_count was increased unconditionally, but in some cases
not at all.
* Tried to improve the readability of the "ints" command output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34613 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 11:14:46 +00:00
Colin Günther
ccc02f719a * Moved socket ioctls from FreeBSD compat layer into the corresponding Haiku
header. This shall ensure uniqueness of the ioctls.
* Added a special SIOCEND define to Haiku's sockio.h, so that drivers can define
  private ioctls as can be seen in src/add-ons/kernel/drivers/network/wlan/atheros/dev/ath/if_athioctl.h.
* Modified ioccom.h of the FreeBSD compat layer, to make use of the special
  SIOCEND define.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34612 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 11:11:03 +00:00
Axel Dörfler
33c82a30c0 * While reading in a block, the block is now marked busy, and the cache
unlocked, allowing for more parallel access.
* Writing is still done synchronously, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34611 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 10:29:37 +00:00
Axel Dörfler
d470839990 * The dormant_flavor_info copy constructor was broken, causing bug #5101.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-10 09:54:59 +00:00
Jérôme Duval
0a8f3c969e update to tzdata2009l
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34609 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 23:17:00 +00:00
Siarzhuk Zharski
cafbf72df7 VIA VT6122 Gigabit Ethernet driver. Based on FreeBSD vge driver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 20:10:39 +00:00
Siarzhuk Zharski
2fa85815f6 Bringing FreeBSD driver to trunk as vt612x.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34607 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 20:00:05 +00:00
Siarzhuk Zharski
d34d043199 VIA VT6122 NIC driver ported from FreeBSD vge driver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 19:58:44 +00:00
Axel Dörfler
61c915d1f2 * Fixed GCC2 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-09 19:21:05 +00:00