Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold 87ac9f1d46 Fixed boot loader BFS build which I broke with my recent changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20861 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 14:31:18 +00:00
Ingo Weinhold c391f84b2c * Prepared the BFS sources to be used with the new FS shell:
- Moved all inclusions of system headers into a new
    system_dependencies.h header, which conditionally either includes
    these or the FS shell headers.
  - Fixed compiler warnings related to printf-like functions (int32 is
    int, not long on non-BeOS platforms).
* Build a new bfs_shell. Compiles and links, but does nothing ATM.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20860 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 12:25:49 +00:00
Ingo Weinhold a38a92c955 Beginnings of a new, better portable FS shell with Haiku FS interface.
Doesn't do anything ATM, but already provides the required system
interface (VFS, caches, POSIX functions).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20859 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 12:17:22 +00:00
Ingo Weinhold f38eff6aa2 Added a few more functions to the host platform BeOS compatibility layer:
* thread related functions,
* semaphore related functions,
* atomic_*() functions,
* readv_pos(), writev_pos().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20858 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 12:11:30 +00:00
Ingo Weinhold 5b1cb74b86 Even more correct return value.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20856 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 10:47:21 +00:00
Ingo Weinhold 93ed453113 More correct return value.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20855 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-27 10:45:57 +00:00
Ingo Weinhold 40844fe526 Ouch! sleep() != snooze()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20766 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-20 02:17:03 +00:00
Ingo Weinhold ca615cfc7a BRoster::Launch() didn't send a B_SILENT_RELAUNCH message to an already
running app. Fixes bug #1162.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20743 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-18 02:15:19 +00:00
Ingo Weinhold d619e89985 Fixed incorrect use of the sort() function. It expects a "less than"
compare function with bool return value, not a -1/0/1 returning
compare function. Fixes bug #1158 (registrar crash on shutdown).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20733 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-17 05:39:33 +00:00
Ingo Weinhold e1d3054a28 Patch by Urias McCullough: Revived jam package for rtl8169.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20616 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-08 10:54:17 +00:00
Ingo Weinhold 315cfc48ca The ":" to identify a target for the "run" feature must be at the
beginning of the string; it was formerly matched anywhere.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-08 02:21:10 +00:00
Ingo Weinhold 4f4e5272fc Under Linux it is now possible to emulate the BeOS attribute support via
xattrs. It can be enabled with the configure switch "--use-xattr". Note
that the amount of data stored in attributes may be limited by the used
file system -- e.g. AFAIK ext3 has a limit of one block (usually 4 KB)
for all attributes of a file, which might not suffice. XFS should be
fine, as should ReiserFS 3.6 (or any FS which stores attributes in
hidden files).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20609 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-08 02:19:01 +00:00
Ingo Weinhold 055fa4f22f Assigning values to errno would not work; the next invocation would
overwrite them with the host platform errno again. We do now track
changes and use a hopefully reasonable strategy for updating the host
errno.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-08 02:04:21 +00:00
Ingo Weinhold d307e81230 Added ENOATTR.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20607 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-08 02:01:07 +00:00
Ingo Weinhold a9bf6ecbab libroot_build.so:
* Reorganized sources a bit:
  - The descriptor support is in a separate file now.
  - Disentangled the attribute support from the other stuff.
* Removed broken xattr use for attribute support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-07 19:01:21 +00:00
Ingo Weinhold ea3f7d3d8d Added an "isExecutable" parameter to the Translator rule. All
translators pass "true" (was used before), but I suppose most of them
don't really need it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20605 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-07 01:42:47 +00:00
Ingo Weinhold 1acbe440b8 Removed the obsolete second argument ("relpath") of the Addon rule and
shuffled "isExecutable" to the end. The new order favors the common use
cases. Adjusted all Addon invocations and while at it also removed
separate LinkAgainst invocations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-07 01:27:19 +00:00
Ingo Weinhold afed18de79 New build system feature to shorten the turn-around times when working
with image files. E.g.

  jam -q update-image libbe.so kernel_x86

will only build libbe.so and the kernel (if necessary) and copy them
onto the already existing Haiku image. The MIME DB will not be
reinstalled, and only those source directories will be copied for which
the AddSourceDirectoryToHaikuImage rule is given a second argument
(e.g. "1"). The image will otherwise remain unchanged.

The "update-vmware-image" and "update-install" work similarly for the
VMWare image and the directory installation respectively. Note that, due
to the way the VMWare image is created (prepending a header to the
standard image), the file itself is fully rebuilt, i.e. changes made
during the emulation will be lost after updating the VMWare image.

The feature requires Haiku's jam. With other jam versions a similar
effect can be reached by accordingly setting the HAIKU_IMAGE_UPDATE_ONLY
and HAIKU_INCLUDE_IN_IMAGE in the UserBuildConfig file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20602 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-06 21:13:35 +00:00
Ingo Weinhold 2c24a1a9f6 New handy build system feature: It is now possible to pass a command
line to jam that contains build targets and that will be executed by
the build system after building the targets and replacing their
occurrences in the command line by their paths. The keyword indicating
such a command line is "run", targets are marked by a leading ":".
E.g.:

  jam -q run ':<build>xres' -l :libtracker.so

This builds the xres tool for the host platform and libtracker.so for
Haiku, and afterwards lists the resources libtracker.so contains. Note,
that this feature requires using Haiku's jam version.

The functionality is implemented by the new RunCommandLine rule, which
can, of course, also be used in the UserBuildConfig.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-06 03:14:58 +00:00
Ingo Weinhold f51c147043 Added rules NextID, which returns an numerical ID incremented with each
invocation, and NewUniqueTarget, which returns a unique target name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20597 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-06 02:39:37 +00:00
Ingo Weinhold 25b12e83ae Added rules for performing basic integer arithmetics (+, -, *). The rules
operate manually on digit lists, so they are certainly not fast and shouldn't
be used excessively, but at least it's possible to do calculations in Jam now,
should the need arise.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20596 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-06 02:37:12 +00:00
Ingo Weinhold 8338b05a30 More FS interface documentation. All FS hooks required for writing a basic
read-only FS are documented, now. Be encouraged to review and add more. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20568 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-04 23:46:05 +00:00
Ingo Weinhold 3458a335ab Started documenting the FS API a bit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20544 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-04 01:27:50 +00:00
Ingo Weinhold ed07b9c7e3 The last missing hooks -- get_vnode_name(), write_attr_stat() and
rewind_query() -- are passed to the userland. get_vnode_name() has an
emulation in userland, in case the client FS doesn't implement it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20522 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-03 04:40:54 +00:00
Ingo Weinhold 610f8dbb5f Utterly obsolete.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20521 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-03 04:31:30 +00:00
Ingo Weinhold 53b742e1bb Define debug output prefixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20520 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-03 04:30:22 +00:00
Ingo Weinhold 1e768ed1d3 get_vnode_name():
* read_dir() is supposed to return B_OK and and a count of 0 when
  reaching the end of the directory. In case the node in question could
  not be found, we were looping infinitely.
* free_dir_cookie() was not invoked.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-03 04:29:24 +00:00
Ingo Weinhold 6a83347f52 Synchronized with kernel file cache changes in r20509.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-02 23:44:24 +00:00
Ingo Weinhold 962b0b887d Added a wrapper function for the invocation of debugger commands. It
sets a fault handler, so that an invalid memory access while executing
the command (address typos always do the trick :-) won't result in
another KDL session on top of the current one, which wouldn't even be
"cont"able.

All pieces of code setting a fault handler do now save and reset the
previous one, so that e.g. a user_memcpy() in a debugger command doesn't
disturb the mechanism.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-01 17:15:37 +00:00
Ingo Weinhold 9bf1f552d9 Enabled setjmp()/longjmp() support in the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20499 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-01 17:05:26 +00:00
Ingo Weinhold c26c2ab28a Fixed TARGET_PLATFORM r5 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-01 13:41:19 +00:00
Ingo Weinhold fd93718c93 BFS can be built for the userland. And it even seems to work. :-P
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20488 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-01 00:19:40 +00:00
Ingo Weinhold b5975dbf4e Disabled stealing an unused page from some cache. Unfortunately this
introduced a locking problem, since vm_page_allocate_page() is invoked
with a locked cache. I guess I have to rethink the design. :-/


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20487 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-01 00:16:36 +00:00
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