Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold 77e84f219a configure does now check the yasm version for target architecture x86, and
sets the HAIKU_YASM build variable, which will be checked in BuildSetup.
Re-running configure or adding the variable manually to
generated/build/BuildConfig is required.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30145 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-13 10:50:17 +00:00
Ingo Weinhold 73677f785a * Some refactoring: There are three ways to access the symbols of an image.
Formerly two were implemented in ImageFile (from file, via syscalls) and one
  in SymbolLookup (via the debugger interface). Now there's a base class Image
  and respective derived classes implementing those methods.
* Simplified SymbolIterator.
* Moved the classes into sub-namespace BPrivate::Debug.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-12 23:57:35 +00:00
Ingo Weinhold 0b8b543af8 Build fixes (gcc4).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30136 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-12 10:08:22 +00:00
Ingo Weinhold 1e855c376c * Patch by Fredrik Ekdahl: gcc 4 build fixes (missing headers).
* Added missing header for mountvolume.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-12 09:57:26 +00:00
Ingo Weinhold b8f38f28ae Re-added avcodec.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-12 09:55:55 +00:00
Ingo Weinhold 526d707eb6 Added new build tool create_image which is now used to create and/or clear a
raw image. This fixes the problem that an existing image couldn't be resized.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30133 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-12 09:18:18 +00:00
Ingo Weinhold 0f37915687 * debug_create_symbol_lookup_context() gets a team ID instead of a
debug context now. That's all it needs.
* Added the option "-a" to the profile command line tool. It triggers profiling
  of the whole system. There are still some issues, particularly image related
  ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30129 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 22:59:31 +00:00
Ingo Weinhold e2ae69da52 The kernel side of a new system-wide sampling-based profiling mechanism.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30127 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 22:20:51 +00:00
Ingo Weinhold efd536ff89 * Cleared up a misconception in the notification mechanism. We already had
methods that used an "event mask" field. There was no need to introduce
  a "flags" field for the same purpose.
* Renamed protected DefaultNotificationService methods (removed "_" prefix).
* Adjusted the code providing a notification service accordingly.
* Changed the event message several notification services generated by renaming
  the "opcode" field to "event".
* Implemented the TEAM_ADDED event and also added a TEAM_EXEC event.
* Added notifications for threads and images.
* Added visitor-like iteration functions for teams, threads, and images.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30126 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 21:45:25 +00:00
Ingo Weinhold 60bfde6e0f Added data accessors for B_POINTER_TYPE.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30124 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 21:29:22 +00:00
Ingo Weinhold 4fba3522e0 * Removed src/kits/tracker/OpenHashTable.h. The shared version in
headers/private/shared is newer, though with small interface changes.
* Removed the unnecessary Debug.h include in
  headers/private/shared/ObjectList.h.
* Adjusted sources using these headers, mostly by adding missing includes.
* Lots of automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30123 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 21:24:32 +00:00
Ingo Weinhold a76d4f314c Removed avcodec from the build as long as it is broken.
gcc 2.95.3 build:

Cc /home/bonefish/develop/haiku/haiku/generated-gcc2/objects/haiku/x86/release/add-ons/media/plugins/avcodec/libavcodec/dsputil_mmx.o
In file included from /home/bonefish/develop/haiku/haiku/src/add-ons/media/plugins/avcodec/libavcodec/x86/dsputil_mmx.c:31:
/home/bonefish/develop/haiku/haiku/src/add-ons/media/plugins/avcodec/libavcodec/x86/mmx.h:24: warning: #warning Everything in this header is deprecated, use plain __asm__()! New code using this header will be rejected.
/home/bonefish/develop/haiku/haiku/src/add-ons/media/plugins/avcodec/libavcodec/x86/dsputil_mmx.c: In function `gmc_mmx':
/home/bonefish/develop/haiku/haiku/src/add-ons/media/plugins/avcodec/libavcodec/x86/dsputil_mmx.c:1753: Invalid `asm' statement:
/home/bonefish/develop/haiku/haiku/src/add-ons/media/plugins/avcodec/libavcodec/x86/dsputil_mmx.c:1753: fixed or forbidden register 6 (bp) was spilled for class GENERAL_REGS.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30122 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-11 20:22:10 +00:00
Ingo Weinhold e7f2fa91bc Don't use MakeLocate to make sure that the parent directory exists, since
that also sets LOCATE, which could cause jam to incorrectly place our
directory. Should fix the problems with the SSL build feature some people
have been seeing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30039 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 18:03:18 +00:00
Ingo Weinhold 90d46a5c43 * Fixed the "qOffsets" return value. At least how I understand the
documentation the segment offsets it shall return are relative to the
  address specified in the program header.
* Added "qSupported".
* Added the mandatory commands and some additional ones. Partially implemented
  only.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30038 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 16:54:57 +00:00
Ingo Weinhold 7be389053f Don't use exit() when compiling for the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30037 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 16:48:32 +00:00
Ingo Weinhold b36c8ba26a Added elf_get_kernel_image() returning the image for the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30036 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 16:47:45 +00:00
Ingo Weinhold 777ae2fbb5 More style fixes. Sorry, missed those before.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30027 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 13:15:16 +00:00
Ingo Weinhold c970c6e8f3 Converted C to C++ comments.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30026 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 13:13:08 +00:00
Ingo Weinhold ae2e6c439f * Style cleanup.
* gdb.c -> gdb.cpp


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30025 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 12:56:02 +00:00
Ingo Weinhold 861dbb4810 Implemented more of the detailed FUSE initialization functions for file systems
that use them directly instead of fuse_main().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30024 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 11:18:04 +00:00
Ingo Weinhold ab15dd259a Also print the retrieved type and flags.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30023 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 10:58:50 +00:00
Ingo Weinhold a3c74fcd8c Added a strsep() to our BSD compatibility library.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30022 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 10:57:46 +00:00
Ingo Weinhold ff81d306d4 * Moved the optional package dependency definitions into the new
build/jam/OptionalPackageDependencies and include it earlier (before the
  Jamfiles).
* Introduced build/jam/OptionalBuildFeatures which is supposed to do the setup
  for optional build features that need it.
* Renamed USE_SSL to HAIKU_BUILD_FEATURE_SSL and made it more intelligent.
  The OpenSSL optional package is downloaded and unzipped automatically when
  enabled. Switching between enabled/disabled HAIKU_BUILD_FEATURE_SSL is
  handled gracefully -- the concerned components are built in separate
  subdirectories. Adding the OpenSSL optional package to the image also enables
  HAIKU_BUILD_FEATURE_SSL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30021 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 10:07:17 +00:00
Ingo Weinhold d339b68bef * Added UnzipArchive rule which unzips a zip file into a target directory.
* Added DownloadOptionalPackage which is mainly a wrapper around DownloadFile
  preventing the package from being downloaded twice, even if invoked more
  than once.
* InstallOptionalHaikuImagePackage uses DownloadOptionalPackage now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30020 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 09:55:33 +00:00
Ingo Weinhold 35d0aeac70 Added rule SetupFeatureObjectsDir that simplifies using different output
directories when a certain feature is enabled/disabled/configured a certain
way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 09:51:01 +00:00
Ingo Weinhold 0228ef3608 IOOperation::Finish():
* Fixed the read with bounce buffer case. When skipping a partial bounce
  buffer before the part we're interested in, we forgot to update "offset".
* Added some more comments for readability.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 16:06:30 +00:00
Ingo Weinhold 53cce89bf5 Fixed build. The tests actually reveal a problem in the IORequest
implementation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29998 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 16:01:29 +00:00
Ingo Weinhold 8c91d29b34 * PageWriterRun::Go(), vm_page_write_modified_page_range(): When writing the
page failed since the cache has been shrunk, we need not only remove the
  page from the cache, we also need to remove all of its area mappings and
  free it. Not removing the area mappings might have been the cause of #3110,
  not freeing it would cause it to be leaked for good.
* vm_page_write_modified_page_range(): When writing failed for another reason
  and the page wasn't in the modified queue before, we would lose the info
  in which queue it was before and setting the page state to modified would
  assume the active queue. This could potentially screw up our page queue
  structures.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29992 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 14:06:07 +00:00
Ingo Weinhold b3660edb89 Reenabled ntfs. I wouldn't mount it writable, but reading shouldn't harm.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29991 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-07 13:53:22 +00:00
Ingo Weinhold 64f22f3d0d * fs_walk():
- Get the actual node type. This seemed to be the main problem with using
    ntfs -- paths beyond the root directory could not be resolved.
  - Fixed memory leak in case of error.
* Pass node types instead of mode_t's to publish_vnode().
* Automatic white space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29964 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 11:37:19 +00:00
Ingo Weinhold f1fdb02675 Added jamfile for building ntfs for userland.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29963 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-06 11:33:04 +00:00
Ingo Weinhold 3a28e9bb96 * On construction initialize fLastEventTime with the current system time.
Otherwise when restarting the input server the screen blanker would start
  immediately.
* Automatic white space cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29935 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-05 13:49:05 +00:00
Ingo Weinhold 53e1017720 bonefish + mmlr:
* We started the "main2" thread too late. Since the scheduler was already
  started on all CPUs, the idle thread could wait (for a mutex) while
  spawing the "main2" thread. This violated the assumption in the scheduler
  that all idle threads would always be ready or running. We now create the
  thread while the kernel runs still single-threaded.
* scheduler_start() is now invoked with interrupts still disabled. We enable
  them after the function returns. This prevents scheduler_reschedule() from
  potentially being invoked before scheduler_start().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29914 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-04 23:54:01 +00:00
Ingo Weinhold ec29f0842c bonefish + mmlr:
Don't really resume the undertaker thread after creating it, since at that
point the scheduler has not been started yet. Didn't do any harm, since it was
only the second thread anyway and the idle thread was rescheduled almost
immediately.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-04 21:59:37 +00:00
Ingo Weinhold 73b118b633 bonefish + mmlr:
Check gKernelStartup to avoid sending ICI when entering the kernel debugger
(after ICI is enabled). Moreover it's more obvious than to use that instead
of relying on ICIs not being enabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29907 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-04 21:57:07 +00:00
Ingo Weinhold e66cd9d71b * For every request to userland we also send the team/thread/user/group ID of
the current thread, now. Implemented by introducing a new base class
  KernelRequest which has respective attributes.
* Server: RequestThreadContext does now also save the request that is being
  processed. Furthermore some space has been reserved for file system specific
  data, which can be initialized by the new
  FileSystem::InitRequestThreadContext().
* FUSE library: Implemented fuse_get_context() using the new
  RequestThreadContext feature.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29872 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-02 19:41:53 +00:00
Ingo Weinhold a773113804 * Initialize fuse_config before parsing the arguments.
* Implemented fuse_is_lib_option() more correctly.
* Actually use the value of the "use_ino" option.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-02 17:46:09 +00:00
Ingo Weinhold 39f2d9e66b Parse the FUSE library options. They aren't used yet, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29844 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-01 00:11:34 +00:00
Ingo Weinhold a79773546f * Added minimal config.h.
* Added FUSE option parsing to the build -- small changes to get it building.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29813 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-30 23:18:14 +00:00
Ingo Weinhold 8553e89ea8 Copied from FUSE 2.7.4 vendor branch.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-30 23:14:13 +00:00
Ingo Weinhold 0feb2904db Moved AssembleNasm to MainBuildRules.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29805 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-30 15:11:55 +00:00
Ingo Weinhold 328029e178 Patch by Alexander von Gluck (kallisti5) to get the PPC build going again
(mostly at least). Also disables -Werror for the binutils, but those should
be fixed eventually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29804 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-30 15:00:10 +00:00
Ingo Weinhold a9cd24f58e Fixed incorrect __HAIKU__ check introduced in r28305.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29803 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-30 14:48:57 +00:00
Ingo Weinhold 9ab8968af3 Added sections on checking access permissions, node monitoring, and caches.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29797 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-30 02:22:27 +00:00
Ingo Weinhold 0551e706bf * Updated to current FS interface.
* Fixed and completed several function documentations. There's still quite
  a bit missing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29787 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-29 17:17:55 +00:00
Ingo Weinhold 973032b8d7 Added TODO for Axel or whoever is interested. :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29781 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-29 15:59:36 +00:00
Ingo Weinhold 002c9410ed Missing "struct thread" declaration, breaking the PPC build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29780 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-29 14:43:36 +00:00
Ingo Weinhold d117d093a2 Updated the FS introduction. It's in sync with the current API again, but some
new sections for caches and FS layers should be added.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29768 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-28 21:50:19 +00:00
Ingo Weinhold 50c9917f8f Resurrected the FS interface documentation and introduction. It's not in sync
with the current API, but it just needs to be updated rather than rewritten
from the scratch.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29766 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-28 21:00:53 +00:00
Ingo Weinhold 1000f8b212 * Fixed double-lock in RemoveDir() spotted by Stippi.
* Added node monitoring support. For the changes we make at least. Changes made
  by other peer in network file systems are not recognized.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29749 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-28 00:03:21 +00:00
Ingo Weinhold c8722a1e82 * Removed WriteFSInfo(). It's used only for changing the volume name and we
can't implement that with the FUSE interface.
* We now mark nodes dirty after a write operation.
* Implemented Sync() by fsync()ing all dirty nodes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29746 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-27 15:56:52 +00:00
Ingo Weinhold 3ed1a753c5 Make gcc 4 happy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29742 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 23:57:24 +00:00
Ingo Weinhold 40b0400da7 * Fixed incorrect loop check in _UnlockNodeChainInternal() nothing would ever
be unlocked.
* Fixed incorrect array indexing in _FindCommonAncestor().
* Fixed copy and paste bugs in _LockNodeChainsInternal().
* Added MultiNodeLocker class, a RAII frontend for _{Lock,Unlock}NodeChains().
* Implemented entry renaming and hard linking.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 23:52:35 +00:00
Ingo Weinhold 85ea1e09d3 * Refactored node locking methods. There's now a LockIterator class which helps
with locking.
* Implemented methods for locking two directories. It's a bit complex, since
  we need to enforce a global locking order on the node tree to avoid
  deadlocks. Untested yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29738 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 22:41:00 +00:00
Ingo Weinhold edae667b94 * Removed the asynchronous I/O methods. We won't implement them for the time
being.
* Introduced locking for FileCookie.
* Implemented SetFlags() and FSync().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29736 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 17:23:37 +00:00
Ingo Weinhold 880d0bde5a acquire_spinlock[_nocheck]() do now panic() when they couldn't acquire the
spinlock for a long time. That should help to analyze system "freezes"
involving spinlocks. In VMware on a Core 2 Duo 2.2 GHz the panic() is
triggered after 20-30 seconds. The time will be shorter on faster machines.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29732 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 15:16:39 +00:00
Ingo Weinhold b747212f50 Implemented WriteStat() (backend for chown(), chmod(), utime(), truncate()).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29722 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 01:12:11 +00:00
Ingo Weinhold 4ecbee4f94 * Our error codes are already negative, so return ENOSYS instead of -ENOSYS.
* fuse_fs_utimens(): Fall back to the utime() hook, if utimens() is not
  available.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 00:50:44 +00:00
Ingo Weinhold 3cf43c2651 Removed the fs_vnode_ops::create_dir() parameter for returning the ID of the
newly created dir. The VFS really doesn't need it and for some file systems
it might not be easy to get by. Several file systems (e.g. rootfs and fat)
were ignoring the parameter anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-26 00:16:34 +00:00
Ingo Weinhold cd4ee847c4 * Added support for symlink and directory creation, as well as entry deletion
(directories and other nodes).
* Removed methods we can't possibly implement, since the FUSE interface doesn't
  provide them and we can't emulate them.
* A FUSEEntry does now also own a reference to its parent directory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29715 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-25 23:33:18 +00:00
Ingo Weinhold d16ba4b957 Added support for O_TRUNC, file creation, and writing to files.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29689 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-25 01:07:00 +00:00
Ingo Weinhold fde6bf44b1 * Preparations for write support: Added a locking to the existing hooks. We
need to make sure that the paths of nodes don't change while we're meddling
  with them. We read-lock the directories up to the root directory for that
  purpose.
* Added missing locking for directory and attribute directory cookies.
  We have to do that, since concurrent readdir()s on the same dir handle are
  possible and we write-access the cookie data in such a case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29687 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-24 23:21:01 +00:00
Ingo Weinhold 474d27da32 Added RWLockable and RWLockManager classes. The former is basically a
light-weight read-write lock, that doesn't use a semaphore itself. Locking
and unlocking has to be done via methods of RWLockManager. This combo allows
lots of locks without risking to hit the semaphore limit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29686 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-24 23:13:56 +00:00
Ingo Weinhold a3ff5c0561 * Added missing inclusion of <stddef.h>.
* Added AutoLocker constructor with the locking strategy as parameter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29685 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-24 23:09:49 +00:00
Ingo Weinhold 5efbbbe0fa Missing space between Firefox and LibLayout. Spotted by "sarmale".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29679 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-24 18:29:13 +00:00
Ingo Weinhold f11f17301f Implemented the attribute directory methods. Untested yet -- sshfs doesn't
support the respective xattr hooks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29656 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-22 22:15:23 +00:00
Ingo Weinhold fd4f53a7a0 Implemented ReadSymlink() and Access().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29655 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-22 18:10:00 +00:00
Ingo Weinhold b5884f05a3 * Got rid of from_fuse_error(). The client FS hooks are supposed to return
negative error codes now (e.g. using the new error mapping mechanism). This
  is necessary since the read() and write() hooks have to return a size or a
  negative error code.
* Implemented Read(). We can now read sshfs files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-22 15:49:10 +00:00
Ingo Weinhold 39d58e2f49 Experimental approach to tackle the problem with Be's negative error codes and
ported software:
* If the macro B_USE_POSITIVE_POSIX_ERRORS is defined the POSIX error code
  constants (ENOMEM, EINTR,...) will have positive values.
* Introduced the macros B_TO_{POSITIVE,NEGATIVE}_ERROR() which do convert a
  given error code to a positive/negative value.
* Added static library libposix_error_mapper.a that overrides all POSIX
  functions (save the ones I forgot to add :-)) directly meddling with error
  codes (having them as parameter or returning them) dealing with the
  positive<->negative error code conversions. The functions have hidden
  visibility, so they affect only the shared object they are linked into.
* So ideally all one has to do is to build a ported software with
  -DB_USE_POSITIVE_POSIX_ERRORS and -lposix_error_mapper and be good with
  respect to error code problems.
* Potential issues:
  - When mixing ported and Haiku native code, i.e. using Haiku native code in
    a ported software or using a ported library in a Haiku native application
    care must be taken to convert error codes where the two interface. That's
    what the B_TO_{POSITIVE,NEGATIVE}_ERROR() macros are supposed to be used
    for.
  - A ported static library can obviously not be linked directly against
    -lposix_error_mapper. The shared object linking a against the ported static
    library has to do that. The previous point applies when that causes mixing
    with Haiku native code.
  - When dependent ported libraries are used probably all of them should use
    the error mapping.

Comments welcome.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-22 15:43:03 +00:00
Ingo Weinhold a2dad9e1a9 get_library_symbol(): Simplified the RTLD_NEXT case. The caller is not bound
to search for a function with the same name as the calling function, so we
really don't need to find the calling function; the calling image suffices.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29645 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-22 01:39:34 +00:00
Ingo Weinhold 89569e1852 * Include <Errors.h> -- we're checking for an error constant.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-22 01:33:47 +00:00
Ingo Weinhold be07036291 A non-empty volume name looks much better in Tracker.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-21 21:09:29 +00:00
Ingo Weinhold fe24dc3df4 * Fixed the directory filler callbacks. It is possible that it is passed a NULL
struct stat (new callback) or a 0 type. So if we don't have a node type, we
  need to stat the node.
* Added simple opening/closing of files (no reading/writing yet).

It's now possible to browse sshfs volumes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29634 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-21 20:58:15 +00:00
Ingo Weinhold c029607ba8 Support 0 file descriptors/infos in poll()/wait_for_objects(). Fixes #3591.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29633 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-21 20:23:36 +00:00
Ingo Weinhold 41464387bd As per the documentation of the statfs() hook, some statvfs members are
ignored. So we must not use them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29624 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-20 16:34:23 +00:00
Ingo Weinhold 8d0f474ca1 * Added support for the zero offset method for the readdir() hook's filler
callback.
* Added support for the deprecated getdir() hook.
* Fixed various bugs.

Listing the root directory with sshfs does now work. For subdirectories
stat()ing the entries seems to fail, which might be due to the yet missing
open() support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-20 16:13:12 +00:00
Ingo Weinhold b4d95b2afa Forgot to add in my previous commit. Defines the FUSEEntry, FUSENode structs
and the respective hash table definitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-20 11:15:32 +00:00
Ingo Weinhold f06f733751 * More work on the file system initialization. Mounting/unmounting works now
with sshfs.
* Added basic node and entry management, which we need, since the FUSE
  interface works with paths only, while our VFS plays with node IDs and
  node cookies.
* Implemented most of the mandatory hooks (vnode operations, lookup, read stat,
  open/close/read dir). I was hoping to get directory listings with sshfs now,
  but as I had to find out, it implements the deprecated getdir() while we
  only support the new {open,read,release}dir() interface yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29619 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-20 01:26:53 +00:00
Ingo Weinhold 02442071c3 Ugh, apparently I forgot to implement HasVNodeCapability(). Now we're actually
saving the trips to userland for hooks that aren't implemented there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29618 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-20 01:18:32 +00:00
Ingo Weinhold 08edcdfb61 Added interface constant for FUSE.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29617 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-20 01:15:26 +00:00
Ingo Weinhold 609c5aceee The open() and opendir() hooks are mandatory.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29616 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-20 00:38:34 +00:00
Ingo Weinhold 1d077f8397 * Added "fuse_api.h" header wrapping the inclusion of <fuse.h>.
* Implemented the fuse_fs_*() functions.
* More work on the initialization procedure for the client file system. We do
  now start a separate thread which calls the main() function. It won't return
  from fuse_main_real() until unmounting the FS. We create a fuse_fs structure
  and call the client FS initialization and cleanup hooks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29613 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 18:28:45 +00:00
Ingo Weinhold f68892b93e deliver_signal() SIGKILL:
* Use atomic_or() to update sig_pending of the main thread.
* We didn't call update_thread_signals_flag() for the main thread, so its
  handle_signals() wouldn't be called, resulting in an infinite loop, if this
  signal interrupted a restartable syscall. Calling exit() from another thread
  than the main thread was likely to run into this problem. Should fix #3178.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29612 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 13:57:10 +00:00
Ingo Weinhold 7e6a04c78e Use the actual file system name.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29611 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 13:14:39 +00:00
Ingo Weinhold 69cd702b39 Pass the file system name to the FileSystem base class and store it there.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 13:14:12 +00:00
Ingo Weinhold d15b54c97f Removed HAIKU_ADD_ALL_OPTIONAL_PACKAGES build variable. It did more harm than
good lately.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 12:15:13 +00:00
Ingo Weinhold 292e63bf9f * Applied (slighly modified) patch by Matt Madia: When the
--alternative-gcc-output-dir configure option has been specified,
  HAIKU_ADD_ALTERNATIVE_GCC_LIBS is set by default. One has to explicitely
  unset it in UserBuildConfig to avoid building the alternative gcc libs.
* Adjusted documentation accordingly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29607 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 12:06:15 +00:00
Ingo Weinhold c93232896f Added FileSystem and Volume subclasses for the FUSE interface. ATM they are
mostly skeletons, doing a bit of initialization.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29604 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 01:36:40 +00:00
Ingo Weinhold 98092e9867 gcc 4 fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29602 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 22:43:47 +00:00
Ingo Weinhold 4bbbead0bd UserlandFS package: Added the FUSE library and goodies needed for development.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29596 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 16:44:10 +00:00
Ingo Weinhold 6ea1d00edb Added library for FUSE support. Contains only a few empty stubs ATM. It is
sufficient to build sshfs-fuse, though. Obviously it doesn't actually work yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29595 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 16:42:51 +00:00
Ingo Weinhold 270ef7be8c Don't go for pre 2.5 compatibility.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29594 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 16:39:46 +00:00
Ingo Weinhold e72a9b541a Imported FUSE 2.7.4 includes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29592 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 16:24:08 +00:00
Ingo Weinhold d87fd57ea7 Added UserlandFS optional package.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29588 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 14:03:42 +00:00
Ingo Weinhold 12539c39d3 Remove and delete the VNode in _WriteVNode()/RemoveVNode() after the client FS
is done with it, since we still need to serve file cache requests.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29587 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 13:25:47 +00:00
Ingo Weinhold 557f6a25da PutVNode(): Switch order of put_vnode() and _DecrementVNodeCount(). After the
put_vnode() might be removed from our map, if that was the last reference to
the node, so _DecrementVNodeCount() would emit an error message -- harmless
but annoying. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29586 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 13:12:34 +00:00
Ingo Weinhold d95f6cac87 Call file_map_init(). Otherwise the static lock isn't initialized.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29581 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 02:06:07 +00:00
Ingo Weinhold c481d02017 BFS happily calls file_cache_{set_size,sync}() with NULL pointers, which the
kernel implementation ignores, so we should allow that in userland, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29580 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 02:04:56 +00:00
Ingo Weinhold 5c20c5a552 Replaced the mutex and read-write lock implementations by the kernel code,
too. It's slightly adjusted to use the thread blocking syscalls and a benaphore
style threads spinlock replacement. This solves the following problems:
* The static mutex/rwlock initializers are safe now.
* The rwlock implementation is compatible with the kernel implementation. E.g.
  a write lock owner can acquire a read lock, which would dead-lock before.
* We don't use semaphores anymore. With a userland BFS one could quite easily
  hit the global semaphore limit before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29579 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 02:03:41 +00:00
Ingo Weinhold 4c35c6b5e1 * _user_unblock_thread[s]() also set the user thread's wait_status, now. This
makes them more convenient to use, since the caller doesn't need to know the
  target threads' user thread structure.
* Adjusted the pthread rwlock implementation accordingly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29578 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-18 01:53:06 +00:00