Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold ea77094b24 Replaced the hown-grown recursive lock implementation by a shared lazy
recursive lock. I haven't investigated it closer, but the previous
implementation was even broken -- "strace /bin/true" showed two
release_sem() calls, but no acquire_sem().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34342 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 11:17:53 +00:00
Ingo Weinhold 8bef23107e Added a lazy_recursive_lock implementation -- identical to recursive_lock,
just using a lazy_mutex instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 11:14:50 +00:00
Ingo Weinhold 6e06922908 Replace semaphores/benaphores in the env, fork, and user/group code by lazy
mutexes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34340 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 10:47:01 +00:00
Ingo Weinhold 937b23cb21 Added locking primitive lazy_mutex, which has essentially the same behaviour
as a mutex, but allocates its semaphore lazily. This comes at the cost of an
additional atomic_add() when the semaphore has actually to be acquired, but
saves the semaphore creation completely in single-threaded programs and in
any program when there's no lock contention.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 10:44:07 +00:00
Ingo Weinhold f2bb2575e6 Use the shared recursive lock implementation instead of the home-grown stuff.
The shared implementation is benaphore style, saving unnecessary syscalls.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34338 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 09:57:26 +00:00
Ingo Weinhold 93b9f21335 Added recursive lock implementation (an adapted kernel version).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34337 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 09:54:58 +00:00
Ingo Weinhold d78ffde5d1 * Some minor cleanup and improved comments.
* Fixed check in hoardSbrk(): resize_area() was invoked, even if the area was
  already large enough.
* Increased the initial heap size to 64 pages. Apparently the hoard
  implementation is rather generous and the first malloc() (caused by
  __init_heap()) already required enlarging the area.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34336 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-29 09:20:58 +00:00
Ingo Weinhold 1f3f5ca265 Fixed header guard.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34325 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-27 21:10:08 +00:00
Ingo Weinhold 7f2d527a02 64 bit fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34324 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-27 21:09:21 +00:00
Ingo Weinhold 59d6284b7b Changed the way the syscall infos are generated. We no longer include the
preprocessed <syscalls.h> header in sources compiled for the build platform.
Instead we're generating macros for the return type and parameter type sizes
via the CreateAsmStructOffsetsHeader rule (no template magic anymore) and
thus get a clear separation of host and target code, resulting in better
portability (although surprisingly enough the build already worked on 64 bit
hosts).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-27 21:00:37 +00:00
Ingo Weinhold 3be9edf8da Since we had completely identical arch_gensyscalls.h files for all
architectures, there's now a arch/generic/generic_gensyscalls.h which is
included by the otherwise empty arch_gensyscalls.h files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-27 17:13:30 +00:00
Ingo Weinhold 0dfceb2b8a Style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-27 16:55:10 +00:00
Ingo Weinhold dc28a50219 Hacked up mesa/x86/gen_matypes.c so it no longer generates a header file, but
a file suitable for the CreateAsmStructOffsetsHeader rule. The file is then
used to generate the actual matypes.h header. This fixes issues when
cross-compiling from a 64 bit platform.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-27 14:12:32 +00:00
Ingo Weinhold a492466dad Created new private system header computed_asm_macros.h defining the macro we
use for the asm_offsets.cpp file, so it can be reused elsewhere.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-27 14:07:05 +00:00
Ingo Weinhold 4dafc3b298 Fixed 64 bit warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34285 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 15:47:08 +00:00
Ingo Weinhold 1409c878f8 The attr_info structure has a different size on x86_64, so we need to
copy the fields individually. This fixes optional package installation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34284 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 15:46:24 +00:00
Ingo Weinhold bf5b4ce27a Replaced hardcoded printf()/scanf() format modifiers by the B_{PRI,SCN}*
macros. This fixes the broken keymaps when building on a 64 bit host.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34283 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 15:42:54 +00:00
Ingo Weinhold d52f7d5214 Added potential HAIKU_OFFICIAL_RELEASE macro definition to be defined in the
release branch. This completes the build system part of #5036.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34275 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 11:34:55 +00:00
Ingo Weinhold 318cb33fbf Undefine B_HAIKU_{32,64}_BIT macros before defining them. Fixes warning when
building on Haiku, since those will be defined already -- by way of the host
platform's <BeBuild.h>, which currently is included by the POSIX headers..


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 10:20:42 +00:00
Ingo Weinhold a1fb0cb3ed Renamed headers/build/config to headers/build/config_build, so it doesn't
shadow the host platform's <config/...> headers anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 10:18:13 +00:00
Ingo Weinhold 0bab2e8af4 Don't include HaikuBuildCompatibility.h in the [b]fs_shell build. It's not
needed -- the code has its own complete platform abstraction layer -- and
only causes problems.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34270 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-26 10:14:21 +00:00
Ingo Weinhold 6236ae8570 Also include HaikuBuildCompatibility.h on a Haiku host platform and
conditionally define some of the new stuff there. That fixes the build under
a r34172 Haiku, though it also causes some problems that needed working around.
Haven't tested under newer Haiku revisions yet. Will do tomorrow.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34267 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 23:48:45 +00:00
Ingo Weinhold 6cb744fecb Fixed debug build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34266 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 23:44:43 +00:00
Ingo Weinhold fff4c66437 Also define a B_HAIKU_32_BIT.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34265 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 23:44:23 +00:00
Ingo Weinhold 41975f20f0 Fixed gcc 4 32 and 64 bit warnings in the libbe_build code. This time ported
them back to the Haiku versions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34262 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:52:43 +00:00
Ingo Weinhold eb3cef886e Accidentally removed with the previous commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:35:43 +00:00
Ingo Weinhold 7870a9ffc7 Updated the messaging related build platform code with the current Haiku
version.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:34:59 +00:00
Ingo Weinhold e6604f4804 Don't use ssize_t in structs describing persistent structures.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:26:12 +00:00
Ingo Weinhold 3818aa7dac On 64 bit machines the bfs_inode::pad field is too small for a
DoublyLinkedListLink. That actually seems to get the bfs_shell working
properly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:24:45 +00:00
Ingo Weinhold d1456cc2de Added new [FSSH]_B_HAIKU_{32,64}_BIT macros.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:21:58 +00:00
Ingo Weinhold 2f59a69a9a Fixed gcc2 build and warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34255 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:17:19 +00:00
Ingo Weinhold 7c90c5fc9f Fixed gcc2 build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34254 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 21:13:57 +00:00
Ingo Weinhold abb72bec4b Fixed __HAIKU_ARCH for m68k.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34252 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 19:38:09 +00:00
Ingo Weinhold 4d8a54be0d Updated the resources support with the unmodified Haiku version.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 17:19:14 +00:00
Ingo Weinhold d3ed58a7c9 Added ELF64 support to BResources.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 17:14:29 +00:00
Ingo Weinhold ff4d0f1c92 * Style cleanup.
* Removed AutoDeleter class and use the shared one instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 15:00:40 +00:00
Ingo Weinhold cf844822db * Added B_PRIdTIME and B_PRIiTIME macros (for time_t).
* Added FSSH_[S]SIZE_MAX to headers/private/fs_shell/fssh_types.h.
* Fixed various 64 bit compiler warnings. Nothing too serious, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34241 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 12:02:20 +00:00
Ingo Weinhold a79e0ef1ad Also add __STDC_LIMIT_MACROS to the host defines. It gives us macros like
INT32_MAX.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34240 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 11:58:09 +00:00
Ingo Weinhold b20286c41c For the time being go with BeOS compatible types for all but 64 bit
architectures. Fixes the PPC build.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34235 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 09:44:38 +00:00
Ingo Weinhold d91159f6b2 Build fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34234 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-25 09:43:33 +00:00
Ingo Weinhold a8a03488b1 * Don't even try to use the BeOS compatible types on the build platform.
That's just leading to problems.
* Fixed various 64 bit warnings when building libbe_build.so. One of the more
  serious issues, that might bite us, is that 64 bit Linux defines dev_t to
  unsigned long, while Haiku code assumes that it is signed and 32 bit. We'll
  see...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 23:36:10 +00:00
Ingo Weinhold 045852f952 Forgot the search and replace step after the copy and paste.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34226 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 23:01:22 +00:00
Ingo Weinhold b23206b6e4 * Fixed operator<<() versions clashing with 64 bit compilers.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34225 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 22:55:52 +00:00
Ingo Weinhold a1f8d8a11c Updated the build versions of <BeBuild.h> and <SupportDefs.h>. Copied
modified versions of the new config headers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 22:50:55 +00:00
Ingo Weinhold d1b0d5a4af Removed unused files.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34223 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 22:29:48 +00:00
Ingo Weinhold 8074eba663 Removed empty dir.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34220 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 20:35:05 +00:00
Ingo Weinhold 0fde9192c9 Fixed indentation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34219 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 20:30:01 +00:00
Ingo Weinhold d71135d687 Fixed typo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 20:20:10 +00:00
Ingo Weinhold bdfce0e900 Define __STDC_FORMAT_MACROS directly in HOST_DEFINES.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 20:19:08 +00:00
Ingo Weinhold 8859eeab53 Replaced "%Ld" and "%lld" in printf()s by the new B_PRI* macros to avoid
warnings when building with a 64 bit compiler.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34216 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 19:48:32 +00:00
Ingo Weinhold 1fee9fcf21 Replaced some off_t's in on-disk structure definitions by fixed-size int64. I
couldn't bring myself to replace the types everywhere they are used, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 19:46:59 +00:00
Ingo Weinhold 2222d0559d * Introduced new header directory "config", which ATM contains HaikuConfig.h
and types.h. The idea is to provide a basic architecture/compiler
  abstraction by defining types and macros that allow the posix/ and os/
  headers to be mostly architecture/compiler agnostic. 
* Adjusted the posix/ and os/ headers accordingly.
* <SupportDefs.h>: Introduced B_PRI* and B_SCN* macros similar to the PRI*
  and SCN* macros defined in <inttypes.h>, just for the BeOS/Haiku [u]int*
  types and some POSIX types (e.g. off_t, dev_t, ino_t) that don't have POSIX
  macros. Also the B_PRI* and B_SCN* macros are available unconditionally,
  unlike the <inttypes.h> macros, which require __STDC_FORMAT_MACROS to be
  defined in C++ mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34214 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 19:44:07 +00:00
Ingo Weinhold b5a20f9d11 Removed headers and sources not needed for build platform version for libbe.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34212 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 18:59:40 +00:00
Ingo Weinhold a85cf9d793 * configure: Pass gcc's host machine string to the jam build system.
* BuildSetup: Set jam variable HOST_PLATFORM_IS_64_BIT and add host define
  HAIKU_HOST_PLATFORM_64_BIT if the host platform is 64 bit. Removed the
  check from BeOSBuildCompatibility.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34211 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 18:57:49 +00:00
Ingo Weinhold 1111c840c7 Moving the bfs_fuse build into another directory would probably be the way to
go, but for the time being at least don't cause the BFS sources to be compiled
twice regardless of which target is built.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34204 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-24 12:08:45 +00:00
Ingo Weinhold 452edf50c3 Fixed warning when building with 64 bit compiler.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34200 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-23 19:35:58 +00:00
Ingo Weinhold 60d8d8fcc5 * Added -j<n> option to configure. It is passed to the
build_cross_tools[_gcc4] script which in turn passes it to make. Cores and
  hyperthreads are plentiful these days; no need to let most of them idle when
  building the cross tools.
* Sorted the configure options alphabetically again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34199 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-23 19:34:55 +00:00
Ingo Weinhold d9333ff158 Added Apache 2.0 license.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34198 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-23 15:17:50 +00:00
Ingo Weinhold bb163c0289 * Added a set_mtrrs() hook to x86_cpu_module_info, which is supposed to set
all MTRRs at once.
* Added a respective x86_set_mtrrs() kernel function.
* x86 CPU module:
  - Implemented the new hook.
  - Prefixed most debug output with the CPU index. Otherwise it gets quite
    confusing with multiple CPUs.
  - generic_init_mtrrs(): No longer clear all MTRRs, if they are already
    enabled. This lets us benefit from the BIOS's setup until we install our
    own -- otherwise with caching disabled things are *really* slow.
* arch_vm.cpp: Completely rewrote the MTRR handling as the old one was not
  only slow (O(2^n)), but also broken (resulting in incorrect setups (e.g.
  with cachable ranges larger than requested)), and not working by design for
  certain cases (subtractive setups intersecting ranges added later).
  Now we maintain an array with the successfully set ranges. When a new range
  is added, we recompute the complete MTRR setup as we need to. The new
  algorithm analyzing the ranges has linear complexity and also handles range
  base addresses with an alignment not matching the range size (e.g. a range
  at address 0x1000 with size 0x2000) and joining of adjacent/overlapping
  ranges of the same type.

This fixes the slow graphics on my 4 GB machine (though unfortunately the
8 MTRRs aren't enough to fully cover the complete frame buffer (about 35
pixel lines remain uncachable), but that can't be helped without rounding up
the frame buffer size, for which we don't have enough information). It might
also fix #1823.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-23 15:06:08 +00:00
Ingo Weinhold 12fef51bc7 Since r33809 dprintf() acquires a mutex when called with interrupts enabled.
This is something must must not do in an idle thread or we get the scheduler
into trouble.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34196 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-23 14:19:09 +00:00
Ingo Weinhold 752639885a * Fixed syslog permissions.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34177 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-21 18:13:06 +00:00
Ingo Weinhold d73033ce64 * Made PackageDomain BReferenceable.
* LeafNode/Directory: We make sure that the added PackageNode with the newest
  modified time is always at the head of the list. This is the package node
  whose stat, attribute data and, in case of non-directory nodes, also content
  data will be returned. This results in a well-defined algorithm what happens
  when multiple directories contain the same file -- the newest file wins.
* Resolved most TODOs regarding error handling when adding a package domain,
  package, or package node.
* Volume::_AddPackageContentRootNode(): Fixed the back tracking loop. It would
  just continue with siblings of the given root node, causing them to be added
  more than once, leading to data structure corruption.
* We now listen to the packages directory. When packages are added or removed
  their contents is automatically added/removed to the file system. We don't
  listen to the package files themselves yet. I.e. modifying an "installed"
  package in place respectively copying/downloading it there will probably not
  work correctly.
  Due to a limitation in the userlandfs the mechanism works correctly only when
  using the kernel module. When running the userland version, one better leaves
  the packages directory alone while packagefs is mounted.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34172 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-21 15:43:37 +00:00
Ingo Weinhold 4d7a736bbf Some more style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 13:57:20 +00:00
Ingo Weinhold 0d1fab522b * Added flag KMESSAGE_CLONE_BUFFER, which will cause buffer passed to SetTo()
to be cloned.
* Added "flags" parameter to the SetTo(const void*,...) version.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 13:52:23 +00:00
Ingo Weinhold 395fb0895f Style cleanup. No functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34152 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 11:04:12 +00:00
Ingo Weinhold 1c61ec1aad Fixed gcc 4 warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34151 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 11:03:27 +00:00
Ingo Weinhold 2425ac35d9 Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34149 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 08:14:03 +00:00
Ingo Weinhold 9136af73da Our functions deserve to be pretty.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34148 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 08:06:05 +00:00
Ingo Weinhold c77f643a2b Added support for in-kernel node monitoring ({add,remove}_node_listener()).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34147 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 07:59:09 +00:00
Ingo Weinhold c89002c82c * Added missing include.
* Made buildable for userland.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34146 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 07:56:18 +00:00
Ingo Weinhold 3386d3985c Fixed warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34145 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 07:14:48 +00:00
Ingo Weinhold 9837ec16c8 Fixed spelling.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34144 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-20 07:10:23 +00:00
Ingo Weinhold f0a0bca5bb Should have been part of r34137. Request definitions for the new I/O request
functionality.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34139 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 16:33:52 +00:00
Ingo Weinhold ef58ee846b * Added method PackageDataReader::ReadDataToOutput(), which writes the read
data to a DataOutput.
* Implemented packagefs' io() hook and changed the read() hook implementation
  to use the file cache. It's now possible to mmap() files and thus execute
  programs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34138 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 16:31:16 +00:00
Ingo Weinhold 8af6418b5c Implemented support for the recently introduced I/O request calls
io_request_{offset,length}(), {read_from,write_to}_io_request().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34137 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 16:26:40 +00:00
Ingo Weinhold 1748a3cb45 IOBuffer::SetVecs(): fUser was initialized incorrectly, if the vecs referred
to physical memory whose address would accidentally satisfy the
IS_USER_ADDRESS() check.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34136 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 16:23:22 +00:00
Ingo Weinhold 778aa3bf62 transfer_io_request_data(): There was some confusion about the isWrite
parameter and request->IsWrite(). The parameter means whether we want to
write to the request's I/O buffer (therefore renamed it to writeToRequest),
while request->IsWrite() indicates whether the request is a write request.
One can only write to a read request's buffer and vice versa.
IOBuffer::LockMemory() also wants to know whether the request is a write
request, not whether we want to write to the memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 16:19:59 +00:00
Ingo Weinhold 62b3c49b85 Added missing "static". Spotted by Axel "Eagle Eye" Doerfler. ;-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34123 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 08:41:13 +00:00
Ingo Weinhold 59d51abc40 Removed obsolete uncommented function stubs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34122 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 07:39:47 +00:00
Ingo Weinhold 1ca0b78f54 Extended the public I/O request C API.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34121 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-19 07:38:33 +00:00
Ingo Weinhold 46776004f7 * Extract the attributes from the package files and attach them as
PackageNodeAttribute to the PackageNodes.
* Implemented the attribute FS interface hooks.
* Made Package and PackageNode BReferenceable.
* Fixed the reference management for Node.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-18 22:44:20 +00:00
Ingo Weinhold 4e2cd77109 * Added new interface BufferCache -- basically a memory allocator with the
option to cache a freed buffer -- and implementations
  BlockBufferCache{NoLock,Kernel}.
* ZlibPackageDataReader does now dynamically get its read and uncompress
  buffers from a provided BufferCache when needed.
* Allocating the buffers once and keeping them over the whole life time was a
  bit too memory heavy, since we create a reader for every file for which a
  vnode is created. A FS module global factory provides a buffer cache.
* Added a mutex to PackageFile::DataAccessor which guards the access to the
  data reader which isn't thread safe.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34115 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-18 15:26:11 +00:00
Ingo Weinhold 744a460c12 * Package: Added Open() (and matching Close()) method, which opens the package
file once, tracking an open count.
* Added VFSInit()/VFSUninit() methods to the Node and PackageNode class
  hierarchies, called by the {get,put}_vnode() PackageFile implements them to
  set up/tear down access to the file data. Also added a Read() reading the
  data.
* Implemented the open(), free_cookie(), and read() FS hooks for real. Reading
  files works now. Executing doesn't yet -- it requires working with
  IORequests in a way not supported by the userlandfs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34102 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 22:04:46 +00:00
Ingo Weinhold 37fca3d23f ZlibPackageDataReader::ReadData(): We were always copying the data from the
start of the chunk, which is wrong for non chunk aligned offsets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34101 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 21:50:48 +00:00
Ingo Weinhold 9ccaaa9642 * Filter out write permissions.
* We now report more correct stat data. The information are retrieved from the
  Package* objects.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34098 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 16:40:18 +00:00
Ingo Weinhold 694cb0b270 * Implemented intermediate base class PackageLeafNode for PackageFile and
PackageSymlink with a "fat" interface.
* Replaced File and Symlink by fat class LeafNode.
* Added Package* object management to Directory and LeafNode.
* Implemented packagefs_read_symlink(), so symlinks work now.
* Added some missing locking the kernel interface.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34096 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 16:10:21 +00:00
Ingo Weinhold cc32c48494 Work in progress:
* The FS parses package files from "/boot/common/packages" and builds an
  node tree representation of the contained entries. Merging directories should
  work. Lots of other stuff is missing yet, though.
* Implemented the hooks for directory entry lookup and iteration. So it's
  possible to see the contents of the FS at least.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34088 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 11:46:19 +00:00
Ingo Weinhold cf17d2695d Added Referenceable.cpp -- it's in the kernel, so we need it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 11:37:11 +00:00
Ingo Weinhold 713cc7fc84 Added fs_read_attr().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34085 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 11:35:47 +00:00
Ingo Weinhold 6dccfe1317 * Added interface ErrorOutput and implementation StandardErrorOutput and used
them in the PackageReader instead of fprintf().
* Got rid of unconditional printf().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34084 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-17 11:33:50 +00:00
Ingo Weinhold b932032a35 Implemented the most basic functionality required to cleanly mount and unmount
(at least in userlandfs).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 23:26:45 +00:00
Ingo Weinhold 246aa3e3e2 Debug support functionality -- tadjusted version taken from userlandfs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34068 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 23:23:32 +00:00
Ingo Weinhold 9d14ecca03 Build package and packagefs with -Werror.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34067 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 23:22:27 +00:00
Ingo Weinhold eaf37e54bf Added Jamfile for building for the userlandfs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34065 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 22:03:54 +00:00
Ingo Weinhold 3791c3fc27 The very beginning of a package FS: Empty stubs for a minimal read-only file
system.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34064 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 21:56:03 +00:00
Ingo Weinhold 689605bf2a * Added support for iterative operation to ZlibCompressor/ZlibDecompressor.
* Added support for compressing/decompressing the TOC section of the package
  to PackageWriter/PackageReader.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34063 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 21:29:53 +00:00
Ingo Weinhold 51e49965a7 The compressed size wasn't computed correctly (ignoring the chunk offset
table), resulting in invalid archives when storing files > 64 KB.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 10:39:57 +00:00
Ingo Weinhold 7f03bc34fe Apparently I didn't manage to put the class implementations in the matching
source files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 10:08:26 +00:00
Ingo Weinhold c0fad25fa9 * Got rid of the *Data classes. The *DataReader classes do the same.
* Implemented writing of short data inline in the TOC.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34055 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 08:41:57 +00:00
Ingo Weinhold 03423585a4 Incorrectly used errno instead of error.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34054 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-15 08:40:35 +00:00