3290 Commits

Author SHA1 Message Date
Oliver Tappe
c3ac87e8fc * Copied imported OpenTracker Locale Kit files from the vendor branch
into their new homes (at least for now, might need some adjustment).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30540 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-01 19:23:59 +00:00
Axel Dörfler
2d8073a9dc * Added a TODO about a problematic use of vm_page_allocate_page() in combination
with vm_cache_acquire_locked_page_cache().
* Added new function vm_page_num_unused_pages() which returns the pages that are
  actually completely free and unused.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30514 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-30 15:46:55 +00:00
Ingo Weinhold
ef0ce69148 Added optional BDebugEventStream::ReadNextEvent() return parameter for the
stream position of the event header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30504 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-30 12:24:25 +00:00
Ingo Weinhold
22a332f0b0 Added a base struct for the scheduling event structures. To keep the interface
C friendly it's not an actual base class, but casting to it is fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-30 12:23:02 +00:00
Stephan Aßmus
eb2bd0e8e3 axeld:
* Implemented a way to do asynchronous pre-fetching when mapping files.
* There are slight code duplications in some places that could benefit
  from cleaning up, but nothing too bad.
* Implementing smarter ways to trigger prefetching and more analysis of
  the situations in the kernel would be nice. Currently up to 10 MB
  of every mapped file are pre-fetched without further analysis.
* The speed improvement is nice for certain operations. On our test
  system (real hardware), Firefox took 9 seconds from being launched
  to display a window. Now it takes 5 seconds. Both measurements
  right after booting. The same system took 35 seconds from launching
  Haiku in the GRUB menu to displaying the Tracker desktop background
  image. Now it takes 27 seconds.
* We didn't have the chance to check out the effects of this on the
  CD boot, but potentially, they could speed it up a lot.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-27 18:16:58 +00:00
Ingo Weinhold
57e7daa5a4 Added missing include.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30404 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-25 18:34:24 +00:00
Axel Dörfler
6f440aed2c * net_socket_module_info::acquire_socket() now returns whether or not the
socket could be acquired, ie. when its reference count is 0, it cannot be
  acquired anymore. This requires the protocol to do proper locking, though.
* The TCP EndpointManager now checks the return value of acquire_socket(), and
  only returns the endpoint if that succeeded.
* This fixes bug #2197.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30363 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-24 10:12:30 +00:00
Axel Dörfler
8eb51285d3 * Made _GetUnchecked() return nothing, as it was ignored anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-24 09:58:54 +00:00
Ingo Weinhold
a7ccfc910c Added WaitObjectListener destructor. Hopefully fixes the gcc 2 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30346 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-23 14:53:18 +00:00
Ingo Weinhold
227fe7d34a * Scheduler/wait object listener:
- Moved scheduler listening interface to <listeners.h> and added more
    convenient to use templatized notification functions.
  - Added a listener mechanism for the wait objects (semaphores, condition
    variables, mutex, rw_lock).
* system profiler:
  - Hopefully fixed locking issues related to notifying the profiler thread
    for good. We still had an inconsistent locking order, since the scheduler
    notification callbacks are invoked with the thread lock held and have to
    acquire the object lock then, while the other callbacks acquired the object
    lock first and as a side effect of ConditionVariable::NotifyOne() acquired
    the thread lock. Now we make sure the object lock is the innermost lock.
  - Track the number of dropped events due to a full buffer.
    _user_system_profiler_next_buffer() returns this count now.
  - When scheduling profiling events are requested also listen to wait objects
    and generate the respective profiling events. We send those events lazily
    and cache the infos to avoid resending an event for the same wait object.
  - When starting profiling we do now generate "thread scheduled" events for
    the already running threads.
  - _user_system_profiler_start(): Check whether the parameters pointer is a
    userland address at all.
  - The system_profiler_team_added event does now also contain the team's name.
* Added a sem_get_name_unsafe() returning a semaphore's name. It is "unsafe",
  since the caller has to ensure that the semaphore exists and continues to
  exist as long as the returned name is used.
* Adjusted the "profile" and "scheduling_recorder" according to the system
  profiling changes. The latter prints the number of dropped events, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30345 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-23 13:47:52 +00:00
Stephan Aßmus
acc632c7ec Make it clear from the API that the volume passed in is not touched by the
function.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30326 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-22 14:13:45 +00:00
Ingo Weinhold
0b6cffb656 Added BDebugEventInputStream::SetTo() for initializing with a memory buffer.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-21 15:29:11 +00:00
Ingo Weinhold
a2d8979e55 * Made the return value of BObjectList::BinarySearch() non-const.
* Added BObjectList::BinarySearchByKey() methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30292 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-21 12:15:42 +00:00
Ingo Weinhold
8b3b05cbf9 Synchronize the TSCs of all CPUs early in the boot process, so system_time()
will return consistent values. This helps with debug measurements for the time
being. Obviously we'll have to think of something different when we support
speed-stepping on models with frequency-dependent TSCs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30287 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-21 00:38:11 +00:00
Ingo Weinhold
65d2b8a8e9 * Introduces VMCache::CanWritePage() returning whether the given cache can
theoretically write the given page.
* page writer: Fixed the incorrect check whether a temporary page can be
  written by using the new CanWritePage().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30281 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-20 15:19:41 +00:00
Ingo Weinhold
4d8d8c1f38 * Added a "reserved" field to the debug event file header to align it to 8
bytes.
* strlcpy() isn't a particularly good string compare function.
* BDebugEventInputStream::_GetData():
  - Also need to reset fBufferPosition to 0 when the buffer is empty.
  - Fixed read position.

BDebugEventInputStream does now actually read the files written by
BDebugEventOutputStream.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30273 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 23:44:20 +00:00
Ingo Weinhold
36e787103f Made BDebugEventInputStream::ReadNextEvent() nicer to use.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-19 11:17:24 +00:00
Michael Lotz
827f849a34 * Reworked device detection, we'll see how well this works...
* Reworked some of the transfer handling after reading the specs.
* Ensure that the device selection bit is set correctly for all commands.
* Generally disable interrupts and enable them only when expecting a DMA one.
* Renamed disk failure to device fault according to specs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 20:58:33 +00:00
Ingo Weinhold
4db202f5f4 Defined a simple file format to store debug event streams as generated by the
system profiling interface and added classes BDebugEvent{Input,Ouput}Stream for
reading/writing those files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 17:38:21 +00:00
Ingo Weinhold
5b2f0f33f9 * Changed the interface of _kern_system_profiler_start(). The parameters are
passed in a structure now, so it is easier to extend it and ignore unused
  parameters.
* One can now select which system profiling events one is interested in.
* Added scheduling events to the system profiling interface. Those are pretty
  much the ones recorded when scheduler tracing is enabled. Still missing are
  the "wait object" events that allow to interpret what a thread is waiting
  for.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30243 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 17:35:28 +00:00
Ingo Weinhold
79257a4ad6 Added a listener mechanism to the scheduler (ATM only for scheduler_simple).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30242 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-18 17:24:58 +00:00
Stephan Aßmus
bd949d1715 Patch by Obaro Ogbo (nastee) with small changes by myself: The check of the
input_server filter if the screen saver should be run could be confused if
additional option flags were turned on. I've removed the SAVER_DISABLED
definition completely. Also, I renamed the confusing "fEnabled" member, which
really means "saver already running".

Thanks a lot! Fixes ticket #3474.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30207 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 20:00:01 +00:00
Ingo Weinhold
1b9d2885d3 * Also pass the team arguments and thread names with the respective system
profiling events.
* profile: Avoid using get_{team,thread}_info() in common code paths. The
  system profiling mode is asynchronous, so the team or thread in question
  could already be gone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 10:02:33 +00:00
Ingo Weinhold
998210b432 Missed in the previous commit: Added debug_get_symbol_iterator_image_info().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30169 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-15 13:30:58 +00:00
Ingo Weinhold
e52c3559d3 * Renamed debug_delete_image_symbol_iterator() to
debug_delete_symbol_iterator().
* Added debug_create_file_symbol_iterator() which opens a shared object file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-14 18:03:24 +00:00
Ingo Weinhold
0f37915687 * debug_create_symbol_lookup_context() gets a team ID instead of a
debug context now. That's all it needs.
* Added the option "-a" to the profile command line tool. It triggers profiling
  of the whole system. There are still some issues, particularly image related
  ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30129 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 22:59:31 +00:00
Ingo Weinhold
e2ae69da52 The kernel side of a new system-wide sampling-based profiling mechanism.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30127 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 22:20:51 +00:00
Ingo Weinhold
efd536ff89 * Cleared up a misconception in the notification mechanism. We already had
methods that used an "event mask" field. There was no need to introduce
  a "flags" field for the same purpose.
* Renamed protected DefaultNotificationService methods (removed "_" prefix).
* Adjusted the code providing a notification service accordingly.
* Changed the event message several notification services generated by renaming
  the "opcode" field to "event".
* Implemented the TEAM_ADDED event and also added a TEAM_EXEC event.
* Added notifications for threads and images.
* Added visitor-like iteration functions for teams, threads, and images.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30126 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 21:45:25 +00:00
Ingo Weinhold
60bfde6e0f Added data accessors for B_POINTER_TYPE.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30124 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 21:29:22 +00:00
Ingo Weinhold
4fba3522e0 * Removed src/kits/tracker/OpenHashTable.h. The shared version in
headers/private/shared is newer, though with small interface changes.
* Removed the unnecessary Debug.h include in
  headers/private/shared/ObjectList.h.
* Adjusted sources using these headers, mostly by adding missing includes.
* Lots of automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30123 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 21:24:32 +00:00
Michael Lotz
61f3dd4f28 Forgot this in the last commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 23:13:25 +00:00
Oliver Ruiz Dorantes
33941551de (Joerg Meyer) - Add Via processors IDs(Esther/Isaiah)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30106 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 15:13:20 +00:00
David McPaul
8507d18bcb define Stack Program Header type
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30098 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-10 03:27:27 +00:00
Michael Lotz
bf9a383524 * Work in progress commit of a reworked ATA bus_manager. It's now object based,
but doesn't really do anything more than before.
* It also replaces everything IDE with ATA counterparts and cleans up a lot
  of the definitions.
* Cleaning up the old ATA bus_manager as well as some license headers missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30049 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 23:54:52 +00:00
Axel Dörfler
34c7214442 * BParameterWeb::StartWatching() now just calls BMediaRoster::StartWatching()
as on Dano - since the functionality is already there, those two functions
  aren't really needed, though, so we could remove them again.
* Cleaned up DataExchange.h, and added basic reply/request structs for anything
  that needs an area.
* BControllable now uses a helper class ReceiveTransfer to deal with requests
  with areas.
* Major style cleanup of MediaRoster.cpp, though one could still bury some
  hours there...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 21:17:03 +00:00
Ingo Weinhold
b36c8ba26a Added elf_get_kernel_image() returning the image for the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30036 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 16:47:45 +00:00
Axel Dörfler
fd0399d738 * Remove executable bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30011 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 21:40:57 +00:00
Axel Dörfler
1111232758 * Sockets now inherit from WeakReferenceable.
* This fixes the problem when a socket changes something with regards to its
  parent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 16:07:15 +00:00
Axel Dörfler
28a650e94d * Made the WeakReferenceable class templatized. Not really sure yet I like that
better, though :-)
* Also fixed a mixup of the unintuitive argument order of our
  atomic_test_and_set(); I guess I will change that sooner or later.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29994 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 15:14:15 +00:00
Axel Dörfler
e1fed132d2 * Added a WeakReferenceable implementation, completely untested yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 12:01:30 +00:00
Axel Dörfler
8263f82d90 * Missed that when cleaning up the style.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29980 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 21:13:06 +00:00
Axel Dörfler
fd0803f300 * Added RemoveTail() method.
* Renamed DoublyLinkedList::Size() to Count(), since it actually counts the
  items (ie. O(n)).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29979 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 21:06:19 +00:00
Oliver Tappe
f9ae64e9a5 zooey + bonefish:
* optimized unmapping of a single page that was rather inefficient
  for large areas

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29978 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 20:46:18 +00:00
Oliver Tappe
31ffd6533a zooey + bonefish:
* made usable from C

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29977 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 20:42:05 +00:00
Alexandre Deckner
c51d0337a1 * Rewrote BDragger's mouse tracking to be asynchronous using a message filter. Placed the filter in
kits/shared since i plan to use it in other places like Tracker. Animated replicants like 
ActivityMonitor wont stall anymore when initiating the drag. (On the desktop, Tracker's mouse 
tracking still busy loops sometimes, that's next on my list). 

I had asynchronous long click detection (one button mouse support) in it but decided to get rid of 
it, it adds unneeded complexity in the code and is even getting in your way sometimes (ex: now you can 
take your time to drag the dragger, you wont be interrupted). If we want to reimplement that 
someday it should be done system wide anyway (only Tracker and replicants have that 'feature' 
AFAIK).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29972 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 19:15:00 +00:00
Stephan Aßmus
c559a267f7 Argh! Sorry, should have been part of previous commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29938 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 15:04:31 +00:00
Stephan Aßmus
12349c7d3d Begun to use structs for the BView<->app_server communication. This makes
the protocoll less prone to errors, reduces possible points of failure and
most importantly, reduces the number of function calls to the link API.
I only know the numbers for StrokeLine(), which I tested via the Benchmark
test app. With this change, drawing random colored and positioned lines
actually doubled in speed. On the BView side, the calls to
ServerLink::Attach() only halfed, while on the app_server side, the number
of calls to ServerLink::Read() is now 1/4th. It will also be worth
investigating why the link stuff is so slow at all. I also optimized
BView::DrawString() a lot in this change, but I don't have any numbers
yet. Some other commands which used multiple Attach()/Read() calls were
also optimized, at least the most important ones. Begin/EndLineArray() was
also pretty bad on the app_server side. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29937 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 14:59:43 +00:00
Oliver Ruiz Dorantes
f0c9d3e745 - Path by Joerg Meyer
- Add identification for Efficeon CPUs



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29885 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-03 23:04:30 +00:00
Ingo Weinhold
e66cd9d71b * For every request to userland we also send the team/thread/user/group ID of
the current thread, now. Implemented by introducing a new base class
  KernelRequest which has respective attributes.
* Server: RequestThreadContext does now also save the request that is being
  processed. Furthermore some space has been reserved for file system specific
  data, which can be initialized by the new
  FileSystem::InitRequestThreadContext().
* FUSE library: Implemented fuse_get_context() using the new
  RequestThreadContext feature.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-02 19:41:53 +00:00
Axel Dörfler
b4c1445fae * Fixed build when Debug.h had already been included.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-02 16:08:13 +00:00