Commit Graph

9701 Commits

Author SHA1 Message Date
Axel Dörfler
0a99f533c2 Fixed the race condition in acquire_advisory_lock() by using the new switch_sem() function.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 22:55:20 +00:00
Axel Dörfler
34e92cad76 Added and implemented new system calls switch_sem() and switch_sem_etc(); even if
they are public now, they might become private later on.
It's almost the same as acquire_sem() but allows you to release another semaphore
atomically. This makes condvar implementations and the like very simple to do.
Added B_CHECK_PERMISSION flags to the user calls, although it's not honored yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11887 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 22:35:00 +00:00
Ingo Weinhold
63531836b9 * Added a small private API (<fs/select_sync_pool.h>) to support FSs
and drivers that need to provide special select() support with
  managing select notification information.
* Renamed vfs_select.c to *.cpp and fixed the resulting C++ compiler
  errors. Added tracing macros.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 21:27:01 +00:00
Ingo Weinhold
cbc6d404f9 Added missing select()/deselect() Hooks to the file system interface
and made sure they are called by the VFS, if existent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 21:04:25 +00:00
Ingo Weinhold
d49f1b87a0 We were handling closing of file descriptors incorrectly. The close_*()
and free_*_cookie() hooks of the underlying FS were always called
together when the reference count of the FD dropped to zero. When
blocking operations (reading/writing) on the FD were still in progress
this would never happen, though. Now we additionally maintain an open
count and call the close_*() hook when it drops to zero.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 20:25:07 +00:00
Ingo Weinhold
92290ecd54 Added support for the ll' size qualifier. Supported was only L'.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 19:45:45 +00:00
Ingo Weinhold
f9ac365bc0 Removed version number from directory names.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11880 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:51:51 +00:00
Adi Oanca
ddf57545a2 Improved locking. A bit. :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11879 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:41:00 +00:00
Adi Oanca
211de495df Keyboard and Mouse handlers went private.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:37:56 +00:00
Adi Oanca
943ba1b132 MoveToFront() returned 'invalidate' for a floating window when it shouldn't; window was already in front as possible.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11877 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:36:30 +00:00
Adi Oanca
494d1b2a5a This fixes a problem with window's contents not being redrawn after a Show(), Hide and Show() again
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:22:23 +00:00
Ingo Weinhold
f422d333a9 Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:21:52 +00:00
Ingo Weinhold
0603429c37 Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11874 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:21:38 +00:00
Ingo Weinhold
b438e86d9d Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:21:21 +00:00
Ingo Weinhold
c6733267a8 Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:20:55 +00:00
Ingo Weinhold
6029f1e42b Removed version number from directory name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:20:38 +00:00
Axel Dörfler
3e06f513d4 Added the missing clear_caches() function - thanks to Michael Lotz for his indirect report :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:09:58 +00:00
Axel Dörfler
a36a94da37 Added the missing clear_caches() function and syscall. Does not yet do anything (which
is perfectly okay on x86 anyway, but should be moved into the arch stuff).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 17:06:56 +00:00
Axel Dörfler
6d1ec1085b Implemented advisory file locking, POSIX style (ie. accessible via fcntl()).
Should work correctly, although there is a big race condition left when you're
using F_SETLKW. Will be fixed next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-17 13:18:29 +00:00
Axel Dörfler
8a048cc56c Added macro for syscall with 10 arguments (yes, it's really used already).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11754 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-15 05:11:51 +00:00
Axel Dörfler
a4a54fa8ad read/write() return type was still wrong (ssize_t instead of status_t).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11753 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-15 05:09:56 +00:00
Axel Dörfler
a45de3956f misc.c is no longer used.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11752 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-15 05:07:53 +00:00
Axel Dörfler
9191c9ddc8 Enabled read-only -> read/write direction for set_area_protection() for the
simple cases - it might not work properly though, since we don't know yet if
a cache has children; therefore it will print out a warning as a constant
reminder if used in that way. It will still not work if we would need to
insert a new cache inbetween (in case the cache has children or only read-only
areas (even if there is no way yet to specify how exactly the VM should behave
in this case yet).
Added a comment to vm_map_file() about what we still need to do there.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11751 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-15 02:35:32 +00:00
Axel Dörfler
2a74bc0fcb --save now has -o and -s as short forms.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11750 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-15 00:02:21 +00:00
Jérôme Duval
5c21d9ac3a removed useless dump
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11749 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 23:54:58 +00:00
François Revol
5d3df182ae Fix typo
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11747 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 23:21:28 +00:00
François Revol
92e13ebb34 these headers needed to compile in R5.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11746 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 23:06:42 +00:00
Ingo Weinhold
0f6fa84153 The beginnings of the mountvolume command, using the DiskDevice API. Interrupted work. Probably doesn't even compile yet.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11745 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 22:10:26 +00:00
Niels Sascha Reedijk
5a072ced75 Quick merge of my development branch with mainline (for SVN switch).
The OHCI stuff was done by Jixt (thanks)./installusb
All is still very much work in progress

Patches applied:

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--base-0
   tag of Niels.Reedijk@gmail.com--haiku-2005/usb-busses--mainline--0.1--base-0

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-1
   Set the PORT_STATUS_LOW_SPEED flag correctly (using the register bitflag for low speed devices, instead of the proper lowspeed flag)

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-2
   Clean up transfers when they're done

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-3


 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-4


 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-5


 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-6


 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-7
   Remove obsolete ehci.c

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-8


 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-9
   Completed memory allocation + initialization

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-10
   First attempt at performing control transfers - failed miserably

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-11
   Trying to read a 16bit value into a 8bit integer, stupid

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-12
   nicer way of getting the base io address

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-13
   Take over control from BIOS

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busses--development--0.1--patch-14
   Revert change for disabling USB BIOS support


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11743 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 21:02:03 +00:00
Adi Oanca
89bdde9df1 There was too much debug output for regions rebuilding
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11742 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 20:59:00 +00:00
Niels Sascha Reedijk
c81edd87b5 Update from my personal Arch tree just in time before SVN-move
Patches applied:

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--base-0
   tag of Niels.Reedijk@gmail.com--haiku-2005/usb-busmanager--mainline--0.1--base-0

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-1
   Start device addition procedure when a new device is connected

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-2


 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-3
   Create transfers on the heap.

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-4
   Transfer supports synchronous and callbacks

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-5

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-6
   Give Pipes a notion of what type they are

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-7
   Improve the handling of speed within pipes

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-8
   Add a new member to the transfer in which the hostcontroller can store private data

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-9
   Made some changes inspired by a mail from Marcus Overhagen

 * Niels.Reedijk@gmail.com--nielx-2005/usb-busmanager--development--0.1--patch-10
   Fixed memory allocation model


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 20:50:44 +00:00
Adi Oanca
8b4cf1c373 Fixed a problem with floating subset windows not being shown when their main window became active. (Cleared visible regions for it and its children when automatically being removed from workspace)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11739 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 19:25:15 +00:00
Axel Dörfler
eec5ba5ba7 Also initialize the kernel_args::driver_settings to be on the safe side.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11737 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 17:35:46 +00:00
Jérôme Duval
376f56d265 when debug = 1, debug output goes to serial, when debug = 2, it goes to a file
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 16:43:59 +00:00
Axel Dörfler
c2e9a56e33 The environ pointer is now initialized in the libroot startup code.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11732 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 15:48:19 +00:00
Axel Dörfler
908e1391a3 When using keyboard input from the input_server, it will now wait until the
server accepts input (r5 method). This doesn't work yet, though, as our
input_server fires up the event loop too early.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11731 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 15:44:49 +00:00
Axel Dörfler
2727bdcfe3 Added HFS/plus partition type strings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11730 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 15:42:48 +00:00
Axel Dörfler
8270381cd9 Added work-in-progress HFS stuff to the boot loader.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 15:36:20 +00:00
Axel Dörfler
4a3b7efb91 Some unfinished work-in-progress.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11727 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 15:32:12 +00:00
Axel Dörfler
c320153fc6 Added a simple file cache module that logs to disk anything that happens.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11725 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 02:51:47 +00:00
Axel Dörfler
7fa5018c9d We always want to hold the parent's lock in Inode::Create(), even if we
just create an attribute directory.
Removed the now unnecessary UNSAFE_GET_VNODE lines.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11724 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 01:53:38 +00:00
Axel Dörfler
b7366070fa InodeAllocator now takes care of calling new_vnode() and the new publish_vnode().
bfs_inode::InitCheck() tested INODE_NOT_READY before making sure the block is
an inode at all, resulting in spurious "inode is not becoming unbusy" errors.
Since there is now publish_vnode() we don't even have to return B_BUSY at all
anymore, though - INODE_NOT_READY is no longer used at all.
bfs_inode::etc is no longer used either (and for the same reason).
Inode::Create() no longer locks the whole volume, but only the write lock
of the parent directory (if any).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11723 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 01:49:07 +00:00
Axel Dörfler
fa4244bffc Simplifications due to the solved get_vnode()/new_vnode() mess; bfs_read_vnode()
can now just do what it's supposed to do, even the bfs_inode::etc pointer is
no longer used.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11722 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 01:40:51 +00:00
Axel Dörfler
9e0a730ddf Needs to use publish_vnode() now (since the vnode can be accessed immediately).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 01:39:15 +00:00
Axel Dörfler
07646c514a The write lock of ReadWriteLock can now be held recursively; ie. you can
hold the lock and still call subsequent Lock() and LockWrite() without
the deadlock penalty.
Added another constructor to WriteLocked so that you can also pass NULL
to it (in this case, nothing happens, of course :)).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 01:37:48 +00:00
Axel Dörfler
4e08f1474d Fixed the get_vnode()/new_vnode() race condition by introducing a new
function publish_vnode(). When calling new_vnode(), the node is only
reserved, but not yet accessible for others. Only when you call
publish_vnode(), it will become available. That simplifies new node
handling/locking considerably.
Note, you don't have to call new_vnode() before publish_vnode(); ie.
publish_vnode() acts exactly like new_vnode() did before if used that
way.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 01:15:31 +00:00
Axel Dörfler
f4c3d28a1d Some minor updates; that's all what was left when merging my changes with
Ingo's... (snivel) :-)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11717 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-14 00:53:59 +00:00
Ingo Weinhold
edc47dd584 The debugger interface has changed a bit.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:59:20 +00:00
Ingo Weinhold
b24684af25 There are now two different callbacks for break- and watchpoints.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11715 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:58:36 +00:00
Ingo Weinhold
823f4c5bf4 * Various modifications needed due to the changes in <debugger.h>.
* user_debug_break_or_watchpoint_hit() into separate functions for
  break- and watchpoints. The one for breakpoints gets another parameter
  which indicates whether the breakpoint was a soft- or hardware
  breakpoint. This info is also sent to the debugger.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-13 23:57:34 +00:00