Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold c1316c8dd3 Synchronized with recent kernel file cache changes up to r20483.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-31 23:52:05 +00:00
Ingo Weinhold 6e442c70cb Reversed locking order of sImageLoadMutex and sImageMutex in
unload_kernel_add_on(). The former one could lead to deadlocks with
load_kernel_add_on() (e.g. occasionally the boot process would hang).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-31 23:06:09 +00:00
Ingo Weinhold 57a860987a A few more changes to pages_io():
* Added a few comments.
* Simplified the nested while loops by dropping the special handling for the
  first iovec and restructuring the innermost loop. This also rules out
  the possibility of a zero-length temporary vec. IMHO the readability
  has improved quite a bit (YMMV :-). Hopefully without introducing new
  bugs; please review!
* Corrected computation of totalSize in case less than size has been
  read/written.
* Also set *_numBytes in case all fileVecs have been processed. Only
  relevant in case the request extends beyond the end of file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-31 22:44:01 +00:00
Ingo Weinhold 08e7fb4054 Fixed build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-31 20:27:39 +00:00
Ingo Weinhold 27d37d4d24 * Optional debug feature for tracking which page queue a page should be
in.
* New debugger command "find_page", which searches all page queues to
  find out, which one a page is actually in.
* Solved nasty race condition between the page scrubber and
  vm_page_allocate_page_run(): The page scrubber didn't mark the pages
  it was processing busy, so that vm_page_allocate_page_run() could claim
  them in the meantime. They would end up in the clear pages queue,
  although being assigned to a cache at the same time. This should
  finally solve bug #1056.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20474 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-30 19:48:51 +00:00
Ingo Weinhold e04bcee997 Made sources UserlandFS friendly. Can't be used with the fs_shell ATM,
anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20462 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 23:04:31 +00:00
Ingo Weinhold 563a8c4749 * file_cache_ref::lock was not initialized and destroyed.
* Fixed locking problems.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20461 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 23:02:10 +00:00
Ingo Weinhold f5a324b063 * Fixed iteration in block_cache::RemoveUnusedBlocks() as in r20459 for
the kernel implementation.
* block_cache::allocated_block_count was not initialized.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20460 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 22:58:02 +00:00
Ingo Weinhold 3e414ec314 Fixed broken iteration in block_cache::RemoveUnusedBlocks(). The loop
would start with the first block in the unused blocks list, but then
continue with the blocks that share the same hash table slot, thus
freeing potentially used blocks. Could theoretically have caused
BFS to see and write incorrect meta/administrative data on certain
occasions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 22:53:45 +00:00
Ingo Weinhold 2e474644c7 * Added dprintf() to the kernel emulation interfaces for BeOS and Haiku
style FSs.
* Fixed an infinite recursion in the base dprintf() implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 22:18:59 +00:00
Ingo Weinhold 3f86eca54a Removed glibc's dprintf() from libroot.so. It clashes with the dprintf()
defined by the UserlandFS server and is of no real use anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 22:15:11 +00:00
Ingo Weinhold 9449be79e7 GCC 4 fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20455 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 21:14:40 +00:00
Ingo Weinhold 62d61ee675 Reformatted to respect 80 columns/line limit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20452 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 16:39:29 +00:00
Ingo Weinhold f332f5da9e Patch by "kaliber" (slightly modified): Adds
cardctl, compress, diff3, dump_cis, dump_cisreg, fmt, fold, ident,
install, installsound, merge, prio, pack_cis, pc, patch, rlog, unexpand,
updatedb, uudecode, uuencode, zipgrep
to the image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20451 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 16:29:51 +00:00
Ingo Weinhold 3f51dabd08 Another fault handler instance where we have to trick gcc4 not to
optimize our code away.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 15:59:51 +00:00
Ingo Weinhold 492271435a Patch by Hugo Santos:
* added additional address family names
* support dumping the contents of ifreq (only interface name right now)
  and of ifconf (dumps the maximum of 8 interfaces)
* added <sys/sockio.h> ioctl names and type handling


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20448 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 15:26:37 +00:00
Ingo Weinhold b8ba8f58d7 Added the disk device API to the libbe_haiku.so, so that libtracker.so builds
again for target libbe_test. Added respective syscall stubs and other functions
to libhaikucompat.a.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20447 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-28 15:20:08 +00:00
Ingo Weinhold 073ddff0ad Copy'n'paste ...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20437 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-27 13:27:44 +00:00
Ingo Weinhold de71c58165 Added parse_expression() to the kernel emulation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20436 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-27 13:20:53 +00:00
Ingo Weinhold 369e45856b Added TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-27 13:04:50 +00:00
Ingo Weinhold 5682fde439 OPTIM is reset for each subdir anyway. No need to do that manually.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20433 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-27 12:15:01 +00:00
Ingo Weinhold 2b2ec4382a * Moved the AutoLocker class out of the kernel/utils/AutoLock.h header
into its own shared/AutoLocker.h. It can be used by userland code too.
* Removed headers/private/shared/ObjectLocker.h and replaced all uses of
  BObjectLocker by AutoLocker.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-27 12:05:33 +00:00
Ingo Weinhold a71744ba3a Patch by Hugo Santos. In his own words:
- moved the network type handling into NetworkTypes.cpp.
- list the known socket options and some of their types (mostly only handling
  integers right now).
- in order to look at the socket options values, i added specialized pointers
  to look at the value pointed by int *, unsigned int *, long *,
  unsigned long *, long long * and unsigned long long *. This proved helpful
  in other situations, such as looking at the msgCode of read_port_etc and
  other similiar cases.
- i added a new option to -d, "pointer_values" to enable/disable this "look
  at integer pointer values" behavior.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20429 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-26 22:27:15 +00:00
Ingo Weinhold a63342db0c Patch by kaliber: Several missing /bin commands added.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-26 02:55:19 +00:00
Ingo Weinhold 9a8d7c00c9 Fixed printing of signed numbers. If a long long is passed to snprintf()
the correct modifier ("ll") has to be used. On x86 it doesn't make a
difference, if that's the last argument, but with other ABIs it might.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-26 02:41:12 +00:00
Ingo Weinhold 95ebbeb153 Reorganized sources a bit:
* Context got its own source and header files.
* Syscall::GetSyscall() had little to do with the Syscall class itself;
  it's get_syscall() now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-26 02:02:18 +00:00
Ingo Weinhold 567638c602 Patch by Hugo Santos:
* Print structures passed to ioctl() for several commands (networking and
  terminal).
* Optional hex/decimal formatting of numbers (option -i).
* New level of detail option -d.
* Other improvements, like the introduction of a Context class to simplify
  passing around stuff.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20423 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-26 01:25:59 +00:00
Ingo Weinhold 4477befef2 * Modified AddVariableToScript to support multi-element arrays.
* Added rule AddSourceDirectoryToHaikuImage to copy source directories
  onto the image. They will be placed in /boot/home/HaikuSource/...
  according to their relative path. This should make it a bit more
  comfortable to use gdb as a source level debugger. Alas, the
  directories have to be made known to gdb individually (with the
  "directory" command). I guess we should update to 6.6...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20415 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-24 23:34:28 +00:00
Ingo Weinhold af9825c29c Support for printing fd_sets. Patch by Hugo Santos.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20414 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-23 21:52:48 +00:00
Ingo Weinhold 6376aa3f7a * The close-on-exit bitmap vfs_new_io_context() created was a byte
short, if the FD table size wasn't a multiple of 8.
* vfs_resize_fd_table() didn't seem to know at all about the
  close-on-exit bitmap. The pointer in the io_context would point to
  free()d memory afterwards. This explains the sporadically closed
  stdin/out/err descriptors in programs started from Tracker and
  Deskbar.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20413 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-23 21:19:02 +00:00
Ingo Weinhold 7a4de3f182 Added a Haiku file cache implementation to the UserlandFSServer.
Basically reused the kernel implementation, but needed to hack it quite
a bit and also add an emulation of the required VM interface.
Completely untested yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-23 00:09:55 +00:00
Ingo Weinhold 27810ccf5e Added the last useful features I dare imagine: A Lock() method and the
possibility to initialize the AutoLocker without locking the object even
if it is unlocked yet. Especially in loops Lock()/Unlock() come handy
when an otherwise constantly hold lock needs to be unlocked for a short
time.

I suppose we should move the kernel utils AutoLocker implementation
to headers/private/shared, and drop the less powerful ObjectLocker.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20405 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-23 00:03:59 +00:00
Ingo Weinhold 529bf4045b In a copy-on-write situation a page from a lower cache must always be
mapped fully read-only (for both kernel and userland). Previously a
kernel read access to a yet unmapped r/w accessible userland address
would cause the page from the lower cache to be mapped with write
permission for userland (on x86 also for the kernel) thus e.g.
allowing a fork()ed child process to write to the parent process'
memory.

Fixes bugs #113 and #928.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-21 19:48:38 +00:00
Ingo Weinhold 34ce586692 "Clean room" test for a "copy on write" problem leading to bugs #113
and #928. Under certain conditions a fork()ed child process can
write to the parent process' memory.
A fix follows...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-21 19:36:34 +00:00
Ingo Weinhold 44b5d72b5a Added new functions to the debugger API:
{set,clear}_debugger_{break,watch}point(), allowing to set/clear break
and watchpoints for the calling team. When a break/watchpoint is hit,
the team enters the debugger. Handy in situations when the program in
question can't really be started in a debugger (or it would be
complicated to do so). The functions work only as long as no debugger is
installed for the team.

We clear the arch specific team and thread debug infos now, when a new
debugger is installed, thus clearing break- and watchpoints.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-20 16:20:13 +00:00
Ingo Weinhold 467b8adffa For some reason a Terminal started by Tracker or Deskbar does not have a
valid stderr. Thus one of the FDs for the pipes created for the initial
handshake with the fork()ed child process exec()ing the shell would have
number 2 and would be closed when the child process set up the
stdin/out/err environment for the shell, leading to the child and the
parent being killed by a SIGPIPE when they tried to access the pipes.

This change replaces the pipes mechanism by one using send/receive_data(),
which is probably even faster. I also reduced the handshake_t::msg field
to 128 bytes and replaced the sprintf()s writing to it by snprintf()s.

Fixes bug #627. Although they looked related, bugs #113 and #928 still
persist.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-19 18:25:56 +00:00
Ingo Weinhold 15a62f7c61 gcc 4 fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20387 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-14 20:37:07 +00:00
Ingo Weinhold 2c97a8d164 Use -I instead of -isystem for system header directories when building
with gcc 4. Fixed resulting build errors (gcc is more lenient for
headers in -isystem directories).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20386 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-14 20:36:42 +00:00
Ingo Weinhold e4b4574f41 Reordered somewhat unhealthy looking if-construct (first
"currentPage->state == ..." then "currentPage != NULL").


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20377 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-12 12:23:45 +00:00
Ingo Weinhold 73a3220667 Incorporated hash and block cache changes of r20368 and r20374.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20375 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-12 08:32:47 +00:00
Ingo Weinhold 1f78f00899 We can build the ReiserFS add-on with Haiku interface for the userland,
too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:23:40 +00:00
Ingo Weinhold f0bc043b2a Ported the ReiserFS code to the Haiku FS interface. Removed the built-in
block cache.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20372 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:22:34 +00:00
Ingo Weinhold 43c46e9380 Copy'n'paste leftovers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:21:15 +00:00
Ingo Weinhold d0c61f232b More distinctive header guard.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 21:20:23 +00:00
Ingo Weinhold 824e907a2c Added Haiku block cache interface to the UserlandFS server. Basically
copied and adjusted the respective kernel code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 15:04:53 +00:00
Ingo Weinhold 9781d591cb Include <util/kernel_cpp.h> in DoublyLinkedList.h only when compiling
for the kernel. Added missing includes in userland code that uses the
header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 13:56:45 +00:00
Ingo Weinhold e1555e1fdf get_cached_block(): Remove the newly allocated block from the
hashtable in case of a read error (NewBlock() also adds the block,
but FreeBlock() only frees it).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20365 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-11 13:51:18 +00:00
Ingo Weinhold bf4604c363 Fixed incorrect loop conditions in [un]lock_memory(). If the given
start address wasn't aligned and numBytes was a multiple of the page
size, the last page was ignored. A subsequent get_memory_map() would
return NULL as physical address for that page, if it hadn't been mapped
before (that function looks generally suspicious, IMHO). E.g. reads from a
device into an unaligned buffer that hadn't been touched before would
hit that problem. Fixes bug #1075. Might also fix other reported
problems (like #1056), since this bug could have cause all kinds of weird
behavior and crashes. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-09 21:40:56 +00:00
Ingo Weinhold 517df2f7f3 Added a list of tools directly or indirectly required to build Haiku.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-09 14:07:27 +00:00
Ingo Weinhold fd87740ca0 Removed mentioning of non-BeOS platforms in the "Configuring on BeOS"
section.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-08 19:28:06 +00:00
Ingo Weinhold cdf5f77bab HaikuSubInclude in action.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20353 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 16:02:16 +00:00
Ingo Weinhold 3f2a43554a * Moved the DeferredSubInclude rules into MiscRules.
* Added new rule HaikuSubInclude for more comfortable subdirectory inclusion.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 16:01:19 +00:00
Ingo Weinhold 446ce41f36 Build RamFS for the Haiku kernel. Seems to work fine. Also fixed some
warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 08:09:27 +00:00
Ingo Weinhold 3fd2e5ccb4 r20337 broke the bfs_shell build (at least on Linux). Scary hack to fix
it which shouldn't break the R5 build again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20350 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 08:02:32 +00:00
Ingo Weinhold 4bf052db56 Removed dummy strtod().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 07:19:27 +00:00
Ingo Weinhold 1822f5ecbc Added strtod() and localeconv() to the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 07:18:51 +00:00
Ingo Weinhold aa6ebf59e0 Reorganized so that both the BeOS and Haiku FS interface of RamFS can be
built for UserlandFS. The latter appears to be working fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20347 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:46:12 +00:00
Ingo Weinhold c7a7242307 *sigh* svn really messed it up. I supposed one should make sure to run
update on the directory to be copied before doing it, even if it is up
to date.

Anyway: Ported RamFS to Haiku's FS interface. Change set apparently merged
with older changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20346 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:40:25 +00:00
Ingo Weinhold 224e7c4269 Mmh, apparently I have to check the copied directory itself in first.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20345 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:22:18 +00:00
Ingo Weinhold 4b997aa15a Ugh! Tested the value of the symlink() symbol instead of the symLink
parameter. Spotted by gcc4. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20344 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:12:57 +00:00
Ingo Weinhold 7b4b242d27 Incorrectly set uid instead of gid.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:10:27 +00:00
Ingo Weinhold 1716d266c5 The read_attr_stat()/write_attr_stat() capabilities were not correctly
set.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20342 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 06:08:48 +00:00
Ingo Weinhold 5b89b67d95 Added missing module initialization/uninitialization.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-06 07:52:24 +00:00
Ingo Weinhold 4ed322c66e * Added support for interfacing with Haiku style FS modules (yet
untested).
* Added library with the relevant part of the Haiku kernel interface.
  The cache interface is missing, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20340 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-06 02:39:34 +00:00
Ingo Weinhold 2f92537221 One unremove_vnode() prototype shall suffice.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-06 01:22:47 +00:00
Ingo Weinhold 4e0e80ed6c We analyze a client FS's capabilities -- i.e. which hooks it provides or
can be emulated -- and pass this info to the kernel add-on. Thus we can
avoid passing requests to the userland that can't be serviced anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20331 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-05 05:16:08 +00:00
Ingo Weinhold cf4ccd6575 Renamed the FS interface hook read_link() to read_symlink().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-05 03:52:57 +00:00
Ingo Weinhold 12d359b85a * Removed write_link from the FS module interface. Adjusted all FS
add-ons accordingly and removed the syscall.
* Removed send_notification().
* Reimplemented notify_listener(). It used the unimplemented
  send_notification(). Now it has a chance to work. Note that
  notify_listener() is obsolete. I would already have removed it, if
  there weren't lots of FS implementations still using it (Hint!).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20329 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-05 00:46:57 +00:00
Ingo Weinhold 5a5aacca23 Added a level of indirection in the FileSystem management
(FileSystemInitializer). This will allow for subclassing FileSystem
later.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20328 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 23:11:02 +00:00
Ingo Weinhold fd7339329f Not needed anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20327 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 21:48:55 +00:00
Ingo Weinhold aa46234e72 Made ReiserFS code gcc 4 friendly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 09:18:55 +00:00
Ingo Weinhold 1ac141b1f8 Made RamFS code gcc4 friendly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 09:02:12 +00:00
Ingo Weinhold 6aeea78c6e Made the UserlandFS code gcc4 friendly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 08:26:45 +00:00
Ingo Weinhold 48d60fa69c Introduced new build system features: The variable HAIKU_DONT_INCLUDE_SRC to
turn off the inclusion of src/Jamfile, and the rule DeferredSubInclude to
include a subdirectory in UserBuildConfig. Together they allow a developer
working on a subproject to reduce jam's parsing time when only building the
subproject. Relevant mostly on BeOS; on Linux jam is pretty fast anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 05:09:59 +00:00
Ingo Weinhold eb9b19800b Fixed gcc 4(.1.2) build problems.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 05:00:40 +00:00
Ingo Weinhold 5ca2f7aa8c gcc 4.1.2 conveniently saves the version number in a separate file.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 04:47:55 +00:00
Ingo Weinhold 30589be58b Added C++ guard. I don't know, why we define the <wctype.h> protos both
there and in <wchar.h>. Any reason for not removing them in <wctype.h>? Or
maybe even nicer reverse the inclusion direction, i.e. remove the
duplicate protos in <wchar.h> and include <wctype.h> instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20317 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-04 02:31:43 +00:00
Ingo Weinhold 2660a88261 We don't need ufs_mount anymore. One can simply use mount:
mount -t userlandfs -p "<client FS> <client FS params>" ...

The parameters may change later in order to become a proper driver
settings string.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-03 10:26:35 +00:00
Ingo Weinhold 348be5b50b * Introduced the new static lock sVnodeCoveredByMutex to guard the
vnode::covered_by fields. Together with sMountOpLock it allows write
  access, either lock alone suffices for read access. Before
  sMountOpLock had to be acquired for read (and write) access, which
  meant that while mounting/unmounting a FS path resolution would have
  to wait. In case of the UserlandFS this would even cause a deadlock
  while mounting if the client tried to resolve the path of the device
  to be mounted (e.g. by opening it).
* Added a clarifying comment about read access to the
  fs_mount::covers_vnode/root_vnode field and removed locking in
  resolve_volume_root_to_mount_point() which was not necessary for
  explained reasons.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-03 02:42:36 +00:00
Ingo Weinhold bb7ddc43d3 Fixed two query bugs:
* For B_EQUALS queries the first match would be skipped.
* Exact entry name matches were broken, since the used NameIndex::Find()
  expected null-terminated keys with the \0 included in the key length
  while it was fed only the raw string length.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 11:18:14 +00:00
Ingo Weinhold 2f742879c8 * Changed get_vnode_name() to take a dirent* parameter instead of the
name (saves copying the name, if that has to be done anyway) and added a
  wrapper version with the old interface.
* dir_vnode_to_path() was broken for file systems that didn't support
  the get_vnode_name() hook. It resolved the mount point too early, so
  that it was searching the mount point and not the FS root dir for the
  node. It uses the get_vnode_name() function now (before resolving the
  mount point).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20305 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 09:34:33 +00:00
Ingo Weinhold cc0bac7f51 We fake read_stat() on the root node and read_fs_info() when the
connection to the server is lost. The former is required by our mount
command (it stat()s the mount point for some reason unknown to me). The
latter is just to be a good citizen.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20300 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 07:09:18 +00:00
Ingo Weinhold 5a31d77f2c read_attr() was broken. We passed a pointer to the node instead of the
cookie.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20299 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 01:45:58 +00:00
Ingo Weinhold 97dd0fe3c8 * Adjusted according to the is_vnode_removed() -> get_vnode_removed()
change.
* The new notification functions are used instead of send_notification()
  and notify_listener() now. Mapped them in the BeOS kernel emulation
  accordingly. RamFS node monitoring seems to work now. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20298 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:41:09 +00:00
Ingo Weinhold 9481e62bdb is_vnode_removed() is now known as get_vnode_removed() and returns its
answer through a reference parameter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20297 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:34:20 +00:00
Ingo Weinhold c8b7e8185a Fixed debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:33:05 +00:00
Ingo Weinhold a5f128e512 There's the supposed "out of memory" problem. Haiku is stricter than
BeOS and rejects create_area() requests with B_ANY_KERNEL_ADDRESS
address specification.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-02 00:32:26 +00:00
Ingo Weinhold 042eb16896 * More debug output in the kernel module.
* Made publish_vnode() available in userland. For old style FS add-ons
  publish_vnode() is used when they request a new_vnode(). The semantics
  of new_vnode() changed considerably in Haiku, but publish_vnode()
  seems to do pretty much what the old new_vnode() did.
* The UserlandFS hosted RamFS begins to work under Haiku. It runs pretty
  soon out of memory though (under vmware with 256 MB) and node
  monitoring is broken ATM.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20264 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 04:56:08 +00:00
Ingo Weinhold 32164a180c Set reasonable permissions for the root directory. Haiku seems to be a
bit pickier than BeOS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20263 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 04:46:16 +00:00
Ingo Weinhold 6d3667845f Be nicer to FSs and fill in the known part of the fs_info *after* the FS
had its go. BeOS does the same.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20262 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 02:55:41 +00:00
Ingo Weinhold d8e8d39b71 Variable are data not text. I wonder why that ever worked under BeOS.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20261 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 02:06:31 +00:00
Ingo Weinhold 0c2f529390 Committed accidentally and forgot to fix it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 01:43:05 +00:00
Ingo Weinhold b15ce38615 Fixed debug build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 01:42:14 +00:00
Ingo Weinhold 617ed3e4a9 Implemented the new attribute open/close/... FS hooks. The mapping to the
old interface is completely done in userland ATM.

It becomes more and more obvious that we probably need to provide
the kernel add-on with a bit more information about what the client FS
interface supports in the first place, so we can save unnecessary trips to
the userland. Opening/closing attributes for a FS using the old style
interface could be handled completely in the kernel add-on, for instance
(even if we lose a bit of accuracy wrt to open modes etc.).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-01 01:16:13 +00:00
Ingo Weinhold 9ce869f45f Welcome back, is_vnode_removed(), old friend!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:26:44 +00:00
Ingo Weinhold 223bba10f3 Resurrected is_vnode_removed().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:24:28 +00:00
Ingo Weinhold 8cda49ebb8 We can apparently build the old style reiserfs and ramfs add-ons using
Haiku's userlandfs. I wouldn't expect them to work very well yet, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20255 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:12:39 +00:00
Ingo Weinhold c10705cbda We do now provide the BeOS style FS add-ons with the kernel interface they
need via library libuserlandfs_beos_kernel.so. Fine-tuned the legacy headers
so they can by used by the the kernel interface emulation code as well as by
the add-ons. This is actually a bit hacky, since we build everything in the
Haiku build environment and thus mix these old headers and Haiku's.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20254 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 22:07:40 +00:00
Ingo Weinhold 9b54c9d1e3 Removed cache.h, lock.h, and fsproto.h. The copies in the userlandfs public
headers dir are used instead. Added missing <new> inclusion.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 21:50:31 +00:00
Ingo Weinhold ca6faf4958 * Adjusted BeOSKernelFileSystem and BeOSKernelVolume to Haiku's FS interface.
* Moved stuff need for the BeOS interface only into the beos_* namespace.
* Shuffled a few things around to reduce the block cache implementation
  dependencies. compat.h and sysdep.c are gone accordingly.
* The whole UserlandFSServer builds now and could (at least theorectically)
  drive a FS add-on implementing the old interface. The required emulation of
  the BeOS kernel is not yet provided, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20247 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-28 04:54:13 +00:00