Commit Graph
100 Commits
Author SHA1 Message Date
Axel Dörfler 03298f9d20 * The WaitList now always notifies all waiters.
* In SendData(), TCP will now split the buffer into smaller parts if it
  can send data (ie. there is free space in the buffer queue left, but
  not enough to send the whole buffer, and the free space is more than
  the send low water mark of the socket).
* Both of these changes together let TCP now pass the "forwarding" test
  of the OpenSSH suite.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-02 17:36:28 +00:00
Axel Dörfler 248f01553f * Fixed warning and bad coding style.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25290 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-02 13:00:27 +00:00
Axel Dörfler 2239c25b29 Fixed warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25289 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-02 12:39:17 +00:00
Axel Dörfler 63368af591 * As Ingo pointed out to me earlier, TCP could now delete its socket too early
when using the shutdown() command.
* If TCP no longer needs a socket, it will now set the flag FLAG_DELETE_ON_CLOSE;
  when the socket is closed from the upper layers, it will set the FLAG_CLOSED
  flag - and only if both are set, TCP will now delete the socket itself on
  receive.
* This fixes bug #2189.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25278 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-01 11:44:19 +00:00
Axel Dörfler a1e3e17d35 * Added 24-bit mode support.
* This fixes bug #2182.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-30 16:07:25 +00:00
Axel Dörfler ec12806d2f Reverted r25258 - I didn't know that an undefined value defaults to 0.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25270 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-30 08:03:53 +00:00
Axel Dörfler 5b90e47b18 The "arp" command now supports flushing all temporary entries using the new
-F option.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25264 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 22:07:06 +00:00
Axel Dörfler 801591dbde * Added an atomic_pointer_set() template function to util/atomic.h.
* Made the pointers const.
* Changed how the ARP module maintains its arp_entry::request_buffer: it
  now uses the atomic_pointer*() functions to make sure there is no race
  condition, and it's deleted only once.
* Getting an ARP entry would return uninitialized data, if the entry hadn't
  been resolved yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25263 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 22:03:03 +00:00
Axel Dörfler b1d749f8f1 * Added an atomic.h header that provides a C++ file with a templatized
64-bit safe version of atomic_test_and_set() for pointers:
  atomic_pointer_test_and_set().
* The VFS is now using this function (it's not used anywhere else in the
  kernel this way).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 21:05:05 +00:00
Axel Dörfler 6ad0d967f0 Fixed build when ENABLE_TRACING is 0.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 20:43:34 +00:00
Axel Dörfler c0b5962cd6 * Removed unused function benaphore_lock_etc(). A timeout is not really a
good idea for a benaphore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 20:20:36 +00:00
Axel Dörfler c16d05cff9 * steal_page() called remove_page_from_queue() without holding the sPageLock.
This fixes bug #1900 for real.
* Rearranged find_page_candidate() a bit, removed duplicate code, added a panic
  in case the marker state is invalid.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25255 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 19:45:13 +00:00
Axel Dörfler bbc25eb650 * Renamed temporary KDL variable from _cookie to _volume in the "mount"
command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:49:14 +00:00
Axel Dörfler 0b51ee4efd * The page writer was calling remove_page_marker() without holding the
sPageLock. This could easily mess up the page queue.
* Now, remove_page_marker() gets the lock itself. This fixes bug #1900.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:48:27 +00:00
Axel Dörfler 8e8edffce7 * Fixed at least the "dd" part of bug #2148: the second double indirect array
block would be incorrectly addressed when allocating a stream - this could
  cause random blocks to be overwritten, and therefore could cause many sorts
  of problems.
* Moved BFS_TRACING macro to the tracing_config.h file, and let it follow the
  new semantics of those other macros in there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25249 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:15:35 +00:00
Axel Dörfler e7ad26598a * The "bfs" KDL command can now also convert block offsets to block_runs and
vice versa.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:08:42 +00:00
Axel Dörfler 76824051fd * Only enable block/transaction tracing when the macro is 1.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25247 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 14:57:56 +00:00
Axel Dörfler 18df7df8f7 * Followed Ingo's suggestion, and retricted sending SIGPIPE only to userland
API clients.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25246 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 14:01:46 +00:00
Axel Dörfler 8e0a418b70 * Implemented sending of urgent data. Seems to work fine, but of course only
if the other end is not a Haiku host (retrieving of urgent data is still
  missing).
* Resolved TODO: SendData() now sends a SIGPIPE when trying to send on a
  closed connection.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25245 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 12:42:50 +00:00
Axel Dörfler 63cf342664 * tcp_header::urgent_offset must be set in network byte order as well.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25243 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 12:31:57 +00:00
Axel Dörfler b18927737f * Added the "sock" test application (as used in Steven's TCP Illustrated) to
our repository, and integrated it to the build system.
* Got it from: http://www.icir.org/christian/sock.html (sock-0.3).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25242 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 09:30:29 +00:00
Axel Dörfler 895d7215fb * Added TCPEndpoint::GetOption(), currently only supports TCP_NODELAY, and
TCP_MAXSEG.
* Note, TCP_MAXSEG cannot be set yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25241 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 09:26:24 +00:00
Axel Dörfler 6289578982 * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25240 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:46:01 +00:00
Axel Dörfler ae33c41ea8 * For local connections, we no longer use the TIME_WAIT state; in this case,
we know that the connection was torn down cleanly, and there are no inflight
  segments floating around anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:39:08 +00:00
Axel Dörfler cd2bea0cd2 * Closed endpoints are now deleted directly, they no longer get into the
2MSL wait.
* Accidently left on debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25238 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:28:36 +00:00
Axel Dörfler 66cb8f0ede * Use dprintf_no_syslog() for FLOW and everything in scsi2ata.c - this prevents
endless writing to the syslog.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25237 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:11:43 +00:00
Axel Dörfler 0cadc931d2 * TIME_WAIT endpoints must not send an acknowledgement for known data; this
fixes the "endless discussions" when closing a local connection - only
  happened on a simultaneous close.
* A FIN in TIME_WAIT now updates the time-wait timer, as required by the
  TCP specification.
* Entering TIME_WAIT now cancels all connection timers. We might want to
  think about putting time wait connections into a separate hash, and delete
  the socket early on.
* Added tracing support for send/receive, timers, and state changes.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25236 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 07:39:58 +00:00
Axel Dörfler 5abeea69a5 * Added tracing for binds and connects as well.
* Introduced the TCP_TRACING macro in tracing_config.h.
* Enlarged the default trace size to something a tiny bit useful (but still
  acceptable for systems with little RAM).
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25235 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 07:35:00 +00:00
Axel Dörfler 7829775e8f * Added a dummy replacement for parse_expression().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25226 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 15:49:18 +00:00
Axel Dörfler c927bf5c49 * Made it work and build again after recent network stack changes.
* Implement "close" command that actively closes the server socket, or does
  an simultaneous close. Even though this triggers an "endless conversation"
  between two time-wait endpoints on Haiku, it works fine in the shell.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25225 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 15:48:49 +00:00
Axel Dörfler db4b6bc46c * Merged _Receive() and _SegmentReceived().
* Cleanup, shuffled methods around, renamed methods, etc. - no functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25223 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 09:43:22 +00:00
Axel Dörfler 05bc1e8973 * Added _CancelConnectionTimers() that does what its name suggests, and is
now used from various places that previously did not cancel all timers
  they should have.
* When a connection moves to the CLOSED state, it should cancel all timers;
  this prevents from sending a reset at the end of a connection.
* If the persist/delayed acknowledge timers were canceled too late, they might
  still have tried to send something (which would eventually cause a reset
  sent to the peer).
* Follow RFC 1337 with respect to time wait assassination prevention (ie.
  we now ignore resets from peers in time wait state).
* _SegmentReceived() must not check the sequence of a time wait connection;
  it prevented sending a reset when that was due (a new connection request
  would time out, instead of fail immediately).
* Also, that method must never be called in the LISTEN or SYNCHRONIZE_SENT
  states, so we don't need to check for those.
* We don't have to wait in Close() until the connection is actually closed -
  removed a TODO. TCP should handle this internally.
* Renamed _ShutdownEgress() to _Shutdown().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25219 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 18:21:16 +00:00
Axel Dörfler 42759f5626 * _BindToEphemeral() now remembers the last port it used, and tries a higher
one next. This should work around the problem Ingo observed with the OpenSSH
  tests (not tested, though).
* The only TCP compliant fix for this problem would be to not enter time wait
  for local connections at all (which I will do soon).
* Another work around other implementations use is to accept incoming
  connections for time wait endpoints (the connection will then be replaced).
  I'm not yet sure if I want that behaviour, though.
* Added tracing for unbinding endpoints (with stack trace) to investigate
  another bug (sometimes closed connections aren't actually closed).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 18:14:03 +00:00
Axel Dörfler 2651d14422 Build fix; SYSCALL_TRACING is now always defined.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25214 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 15:10:34 +00:00
Axel Dörfler 13bbfe422b * validate_instantiation() also needs to add the BPrivate namespace in case
it couldn't find the class on first try. This fixes the problems mentioned
  by Shinta as part of bug #2086.
* Got rid of GetNumber() - there is a POSIX function strtoul() for exactly
  this purpose.
* demangle_class_name() can now fail.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25179 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-26 14:28:16 +00:00
Axel Dörfler 5b89ed13fd Added the BeServed sources into our repository. They are licensed under the
terms of the MIT license.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25176 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-26 11:46:00 +00:00
Axel Dörfler f8a2f7ce58 * attribute dirs shouldn't be locked out either; I've inverted the type check,
so that it now only checks for the type that allow locking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25168 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-25 22:44:03 +00:00
Axel Dörfler c4d143146c * fDragBitmap was never initialized, leading to occasional crashes after the
first mouse click.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-25 11:39:47 +00:00
Axel Dörfler 2909d9dc26 * Factored a delete_notification() that is now used in three places.
* remove_transaction_listeners() was checking the events_pending field without
  holding the sNotificatonLock - that should have been harmless (as we're in the
  middle of deleting the transaction), but it now looks better.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25130 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-24 16:23:10 +00:00
Axel Dörfler 701d196668 * Inode::_GrowStream() did not make the double indirect block writable before
adding a block to its array. This could cause all kinds of trouble, and
  fixes at least a part of #2148.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25125 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-24 11:28:41 +00:00
Axel Dörfler 89eb861a3e * Large cleanup. Removed inconsistent usage of errno in instantiate_object();
instead, it will now use the image_id parameter to store errors in.
* find_instantiation_func() and validate_instantiation() will no longer
  overwrite errno with B_OK.
* Made private functions static, and moved them to the top.
* If the class name starts with '_', it will now try to add a BPrivate namespace
  in case it could not find the class. This should help with the compatibility
  issues Shinta reported (also part of ticket #2086).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25124 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-24 09:56:03 +00:00
Axel Dörfler 991c062ff3 * Made the archive version of BTextControl::_InitData() more resistant against
a broken archive - it will now create a new _BTextInput_ child, if it couldn't
  find one. This fixes #2086.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25123 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-24 09:52:27 +00:00
Axel Dörfler 74a7b3ff69 * Wrote a test application that tries to fragment your disk by creating many
small files, and then deleting every other.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-23 12:44:00 +00:00
Axel Dörfler 32bcfcf6a9 Some more changes towards a working prototype:
* The "net" driver is now also loaded.
* The node tree is now dumped.
* If registering fails, the node is now removed from its parent again 
  (for now, correct would be to release it).
* device_node::_RegisterDynamic() now also checks for the driver path.
* _RegisterFixed() no longer calls supports_device() - since it has been
  directly specified, we will assume the user knows what he is doing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25112 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-22 21:52:10 +00:00
Axel Dörfler cd81456e14 Just a minor bug that caught my attention while glancing at the code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25105 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-22 19:55:33 +00:00
Axel Dörfler 43bae01508 * Made waiting for a timer handler more power usage friendly.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25101 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-22 18:46:34 +00:00
Axel Dörfler 1201d52e6c * Color drops for the data source color are now only accepted on the colored
box, added a new method _LegendColorFrameAt() that returns that area, and
  is also used when drawing it.
* Fixed changing the history background color; it accidently changed the color
  of the wrong view. This fixes bug #2115.
* If the history gets too dark, it will now lighten up the scale, instead of
  drawing it even darker.
* Changing the color of a data source now immediately redraws the colored box,
  too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25097 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-22 15:14:51 +00:00
Axel Dörfler f4103e2b13 Reverted r25084, and fixed bug #1762 again as suggested by Korli on the mailing
list.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-20 21:22:16 +00:00
Axel Dörfler 945fb7e32a * Replaced destructor with destructorFunc to please python - it's not a reserved
keyword, so this stupid python should really be fixed instead.
* Enforced the 80 column limit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25090 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-20 21:20:07 +00:00
Axel Dörfler 99ad4f7e07 Fixes building strace - the network types should be reworked to work with the
new syscalls, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25075 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-20 12:00:48 +00:00
Axel Dörfler bd6908f87b socket_interface.h is no more - this fixes the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-19 23:49:27 +00:00
Axel Dörfler 49aadb1dac Fixed the build of vfs_net_boot.cpp - I obviously messed up the full build I
thought I had done.
Of course, that wouldn't have happened if Ingo didn't break the network boot
with his netstack changes ;-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-19 19:28:34 +00:00
Axel Dörfler 9c89c45059 * Allow color drops to change the legend background color only for the
replicant.
* Implemented storing and restoring the color of the data sources.
* Minor style fixes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-19 13:11:19 +00:00
Axel Dörfler 45e95a057f * Removed the old net_stack driver code, and the kernel socket interface.
* Also removed the header files that belong to those files.
* Only kept the userland_ipc.h header for now, to remember us about the
  former userland server driver (that I also removed - it can always be
  resurrected from SVN if needed).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-19 12:42:25 +00:00
Axel Dörfler 5464b10f1a * get_uint32_color() now returns the color as host endian value.
* Introduced a new get_rgb_color(), that returns an rgb_color from a host endian
  uint32.
* Those two together fix bug #2094.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 18:10:44 +00:00
Axel Dörfler 2e5e52d6f1 * Simplified the Deskbar "Application" and "Desktop Applets" link creation
a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25027 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 15:26:39 +00:00
Axel Dörfler 95230c2995 * Added ActivityMonitor to the list of apps in the Deskbar.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25026 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 15:00:33 +00:00
Axel Dörfler 3f315b26d2 * Moved the "Remove View" functionality into the popup menu of the ActivityView
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25025 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 14:51:27 +00:00
Axel Dörfler f374f0d9f1 * A view can have more than just one LayoutItem, and therefore, we have to
remove them all in RemoveView().
* Also, previously, the wrong LayoutItem could be removed if there was any
  view that had more than one item around.
* IOW using BView::RemoveSelf()/RemoveChild() yourself would have leaked
  memory in the best case, and would otherwise crash your app if there was
  any view with more than one LayoutItem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25024 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 14:44:19 +00:00
Axel Dörfler 43eda1cd8f * Each DataSoure now has a "primary" indicator - this is used to separate
more important DataSources from less important ones.
* Made the popup less crowded based on that info.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25021 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 12:54:34 +00:00
Axel Dörfler 065e8de0d5 * Improved layout of the activity views: each view now has separate layout
items for the history and the legend, causing the history parts of all
  views to be of equal size if used (which ActivityWindow now does, of course).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25020 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 12:45:41 +00:00
Axel Dörfler 28d5567e28 * GetPreferredSize() no longer crashes when given a NULL parameter (as the
other interface views already do).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 12:01:07 +00:00
Axel Dörfler 00d5cfaa7e Fixed view persistence again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25018 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 11:35:05 +00:00
Axel Dörfler 6f6ba87580 * Amazing: François writes almost style compliant code! :-)
* Minor cleanup - I haven't written SystemInfoHandler, François did.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25017 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-18 11:08:34 +00:00
Axel Dörfler f127ebfd93 * Replaced the previous pthread_key implementation with a lockless one
that does not rely on the Be API TLS anymore, and is also more compliant
  with respect to the lifespan of the key specific values.
* It supports up to 256 different keys, which is equivalent of the solution
  that FreeBSD offers.
* The main thread now also gets a pthread_thread structure.
* Reenabled the POSIX suite test pthread_key_delete_2-1 as we now pass it.
* This also fixes bug #1642.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-17 13:44:39 +00:00
Axel Dörfler ef4a3227fa * If there is no handler, we must not try to remove it from the linked list.
* This fixes bug #1644 again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-17 11:55:04 +00:00
Axel Dörfler e0da34f5c0 * "where" and "be:view_where" are supposed to contain the same value; dunno
why the latter is then even added, but we do the same thing as BeOS now.
* This fixes bug #2075.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24997 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-17 11:10:44 +00:00
Axel Dörfler 2d8e02e435 * Started playground for the new device manager. This will eventually evolve
into the full thing, and will then be adapted to the kernel.
* Doesn't do a lot at this point - it can be built as a test app under BeOS
  and Haiku.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24973 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-15 19:07:08 +00:00
Axel Dörfler c54a6536d6 Committed patch by Gerald Zajac, thanks!:
* Enabled testing the checksum of the EDID info.
* Added a version check of the EDID info.
* Added more debug output.
* In the ModeList class, changes were made to how the refresh rate is 
  computed and used.  Previously, some of the basic VESA modes were not 
  added to the mode list because the computed and specified refresh rates 
  did not exactly match.  Now if the computed refresh rate is within 1.2% 
  of the specified rate, the mode is added.  With this change, all basic 
  VESA modes selected by the EDID info are now added to the mode list.
* The "additional video modes" shown in the EDID dump are now added to 
  the mode list.  Previously, this mode data was setup but not added to 
  the mode list.  Code was also added here to set the vertical & 
  horizontal sync polarity according the EDID info.  The sync polarities 
  are set according to a VESA document that I have.
* Fixed copy_str() warning, broken removal of trailing spaces, and null
  termination.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24959 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-13 10:58:30 +00:00
Axel Dörfler 9c79200c6b Added ActivityMonitor to the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24956 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-13 06:03:48 +00:00
Axel Dörfler 3a4a214197 Some more work on the ActivityMonitor:
* Added legend.
* Added network receiving/sending DataSource.
* Now uses the new layout engine.
* Added support for per CPU DataSources, and added a per CPU CPU usage
  DataSource.
* The DataSources can now be turned on and off via popup menu.
* You can now add more than one view to the window.
* The DataSources of the ActivityViews are now remembered.
* Now uses an offscreen bitmap to reduce flicker (it should now no longer
  flicker with accelerated graphics).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24955 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-13 06:02:45 +00:00
Axel Dörfler 6ad23dbbf4 Some cleanup:
* Reordered to have the constructor/destructor first.
* Two blanks between functions.
* Removed superfluous constructor calls.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24953 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-13 04:57:13 +00:00
Axel Dörfler 4b3b81da9e This header is no longer necessary, since Ingo added the BSD timer macros
to our sys/time.h - this fixes a lot of warnings, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-13 02:28:43 +00:00
Axel Dörfler ac0e5c1ce5 The fs_sync() function (or any other, for that matter) must not hold the
sMountMutex lock when calling sync() on a file system. This fixes a potential
deadlock (I just encountered for the first time).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24915 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-11 17:01:25 +00:00
Axel Dörfler 9493edbe9f Applied patch by Christian Fasshauer:
* get_dir_path_and_leaf() now removes trailing slashes from the path.
* This fixes bug #2016, thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24913 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-11 14:37:48 +00:00
Axel Dörfler c28d31cce6 Removed unused variables.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-10 12:48:42 +00:00
Axel Dörfler cdde324d77 * Looks like r24456 was a bit premature: with string attributes, it makes sense
to ignore a trailing null byte, which the code now didn't do anymore.
* This caused bug #2054.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-10 11:43:45 +00:00
Axel Dörfler 400ba068e0 Made sure load_driver_symbols() is not used anymore when building for Haiku;
it's a no-op, and I removed the prototype from KernelExport.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-09 17:48:36 +00:00
Axel Dörfler afaf6f2f1b * Implemented open_module_list_etc() in libkernel_emu.so as well.
* Added license.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24874 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-09 14:45:17 +00:00
Axel Dörfler 8b79f1fd68 * Added open_module_list_etc() that also allows to specify a required name
suffix. You can use this to verify the version of a module_info structure.
* Made module_info::std_ops optional.
* Minor cleanup in module.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-09 14:36:04 +00:00
Axel Dörfler 4f61b1059c Added some macros and an error message if another compiler than GCC is used.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-09 14:21:45 +00:00
Axel Dörfler 037f70947f * Cleaned up KernelExport.h completely, removed deprecated and non implemented
API, uses the _PRINTFLIKE macro where appropriate.
* Got rid of the "qent" structure, struct timer now contains everything we
  need. This makes the affected code in sem.cpp, signal.cpp, and timer.c much
  cleaner, and resolves a few TODOs.
* Minor cleanup in vfs.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-09 14:21:06 +00:00
Axel Dörfler 36de598e0f * block_cache_sync[_etc]() now also waits for all notifications to be handled.
This fixes a potential problem where a volume would be left marked dirty on
  a clean reboot as reported by Vasilis; no harm would have been done to the
  data on the volume, though (it would just replay a log entry that it didn't
  need to).
* Unified the naming of the notifier/writer thread: renamed the thread to "block
  notifier/writer", and the variable holding the thread ID to
  sNotifierWriterThread.
* Added a few more doxygen descriptions to the private functions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-09 11:04:26 +00:00
Axel Dörfler cfc3fa87da * Cleaned up InterfaceDefs.h, added TODO about getting rid of declaring
_init_interface_kit_() in there.
* Moved private get_mode_parameter() into the BPrivate namespace.
* Renamed interface_misc.h to InterfacePrivate.h.
* Minor other cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-09 10:07:35 +00:00
Axel Dörfler 3d7e508f7b Added sys/poll.h header by popular request (see ticket #2037).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24864 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-08 09:17:07 +00:00
Axel Dörfler 8b5e5656f4 * BFS now panics if cache_sync_transaction() didn't free the space needed,
instead of writing over the old log entries.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24856 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-07 12:15:15 +00:00
Axel Dörfler b9fe86d2d7 * Added pthread_setconcurrency(), and pthread_getconcurrency() functions.
* Since we use a 1:1 mapping, they don't do anything besides remembering the
  level set, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-07 10:57:01 +00:00
Axel Dörfler 391fdf1e99 * notify_transaction_listeners() would always remove all listeners when it
was asked to. Unfortunately, it also removed the TRANSACTION_WRITTEN
  listeners (that were added before notifying other listeners), so that BFS
  could never free up space in the log. Now, it will only remove the listeners
  it may remove. This fixes bug #2024.
* Rearranged functions a bit, moved notification/listener related private
  functions together.
* Added tracing entry for written transactions as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24853 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-07 10:39:01 +00:00
Axel Dörfler 797a92d84d * Made super block log handling endian-safe.
* Made all debugging functions endian-safe.
* Added tracing for log entries.
* Added new KDL command "bfs_journal" to dump all pending log entries.
* When BFS_DEBUGGER_COMMANDS is defined, the LogEntry class will also track
  the transaction ID it belonged to.
* The "bfs" KDL command now sets some useful debugger variables.
* The "bfs_allocator" KDL command now accepts the group index as 3rd argument.
* Renamed Journal::_TransactionListener() to _TransactionIdle(), as that's
  all it is for.
* Removed TODO comment in Volume::WriteSuperBlock(), as it's actually not true.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-07 10:32:03 +00:00
Axel Dörfler 18d3e65ebd * The beginnings of an activity monitor application. Very bare and feature-less
right now, but it's already working (and shows that we better compute our
  system_info::cached_pages field directly).
* I am not sure if we want to keep this app here, merge it with
  ProcessController, or have it as a separate (3rdparty) app. Opinions welcome.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24846 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-06 21:30:50 +00:00
Axel Dörfler a63f51dea4 * Enabled a few more chipsets that I found PCI IDs for. Only the i845G one has
actually been tested (see ticket #1969).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-06 09:37:14 +00:00
Axel Dörfler 0e4edbeafa * Added checks to (hopefully) all write/create functions to bail out early
if the volume is read-only. This should help with #2028.
* Removed unused bfs_[de]select() functions.
* Removed most paranoia checks - now that we control both sides of code,
  this would just hide eventual problems in the VFS code.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24809 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-05 12:24:11 +00:00
Axel Dörfler 98b7d71b7c The wait_for_notifications() function now detects if it has been run from
within the notifier/writer thread, and will then flush the notifications
directly. This should fix #2008 again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24806 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-05 10:23:11 +00:00
Axel Dörfler 355914a2cd * Enlarged maximum kernel size to 2 MB - this is the code the boot loader's
MMU code reserves for the kernel, and we hit that limit recently with the
  addition of the boot splash code.
* This fixes the boot crash as triggered by Stippi's recent changes to the
  splash image.
* Cleanup (doxygen comments, line length).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24805 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-05 10:16:49 +00:00
Axel Dörfler d6e60839e9 * Resolved a TODO: determine the log size depending on the size of the volume.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24797 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-04 19:32:39 +00:00
Axel Dörfler 64b7ef1d0f * As briefly discussed in ticket #2024, I've changed BFS to allow to mount
volumes with a broken log. It will only allow the volume read-only then,
  though (unlike Be's BFS), as your disk could be corrupt.
* Added InitCheck() method to the RecursiveLock class, and now only check
  this one in Journal::InitCheck() instead of also replaying the log there;
  this is now done directly in Volume::Mount().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24795 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-04 18:59:17 +00:00
Axel Dörfler 7686d00c6f * This should fix a deadlock as reported by bga.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24793 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-04 15:11:37 +00:00
Axel Dörfler 807d3aa8e3 * If BFS's Journal::_WriteTransactionToLog() noticed there wasn't enough free
space left for the new log entry, it did call cache_sync_transaction(), and
  then just assumed the space would be ready. But since the transaction could
  have been written before that call by the block writer, and since the
  _TransactionWritten() hook is now called asynchronously,
  cache_sync_transaction() actually has to flush all pending TRANSACTION_WRITTEN
  notifications before returning to the caller.
* To implement this, block_cache now publishs a condition variable, and
  wait_for_notifications() adds a fake notification that signals that one.
  Since the notifications are handled in FIFO order, this guarantees that
  the previous TRANSACTION_WRITTEN hook is done.
* notify_transaction_listeners() could accidently delete notifications that
  still had pending signals. Now, it will defer the deletion to the notification
  thread instead in that case. This should fix bug #2008.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24792 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-04 14:02:30 +00:00
Axel Dörfler 0bb7a9c0ca * Journal::_TransactionWritten() updated Volume::LogStart() before it actually
wrote the super block, so there was a race condition with what
  _WriteTransactionToLog() assumed was already written there (if it managed to
  write the log entry before the super block was written by
  _TransactionWritten(), and a reboot happened just then, the log start could
  point to an invalid log entry). Not very likely, but it could happen.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24791 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-04 13:54:18 +00:00
Axel Dörfler 5ebf78f405 * More or less reverted r24782; most ifdef's are NOT needed when running
Haiku code, they work around buggy BeOS code not present on Haiku.
* If this code turns out to be problematic under Haiku (Bruno, did your changes
  make any difference at all?), then please fix the problems in the Storage
  Kit, don't enable work-arounds for BeOS.
* Simplified the macro check as suggested by Ingo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24790 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-04 11:06:33 +00:00