Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold 3539fc6e19 page writer:
* When writing a page failed it is not a good idea to re-enqueue it at the tail
  of the modified queue, since that is definitely behind the page writer's
  marker and the page would be picked up again before reaching the end of the
  queue. If that happened with more than 256 pages, the page writer would keep
  picking up only those non-writable pages and make no more progress.
* When selecting pages also skip temporary pages, if there's no more swap space
  available, since trying to write those pages would most likely fail anyway
  (triggering the first problem).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30230 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-17 14:26:17 +00:00
Ingo Weinhold 644ab95496 Added support for providing a command line also for the system profiling mode.
Just as in the other mode the command is started and profiling stops when the
command terminates.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30229 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-17 12:17:44 +00:00
Ingo Weinhold f568799e1b Don't leak the Team objects for teams that are gone.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30228 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-17 11:40:03 +00:00
Ingo Weinhold adb0d19d56 Declared the function pointer parameter as such, thus making gcc 4 happy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-17 11:17:56 +00:00
Ingo Weinhold 8342d4cdd2 * Updated to use add_debugger_command_etc().
* Added "step" debugger command to single-step to the next instruction (of the
  topmost iframe).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30212 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 22:56:53 +00:00
Ingo Weinhold 8753babd62 Handle kernel debug exceptions similar to those in userland. This allows to
continue kernel breakpoints -- we would just retrigger the breakpoint when
continuing before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30210 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 22:18:02 +00:00
Ingo Weinhold 31d9352ff6 Make sure kernel breakpoints are installed on all CPUs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30209 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 21:57:52 +00:00
Ingo Weinhold 48b0c6f93a debug_trap_cpu_in_kdl(): If the CPU running the kernel debugger exited and
re-entered it fast enough, we wouldn't leave the loop and thus cause a
deadlock, since we wouldn't process the ICI message telling us to halt. We do
now call smp_intercpu_int_handler() in the loop and guard the function from
being re-entered. This also has the advantage that we can execute code on all
CPUs in the kernel debugger, if we have to.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30208 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 21:55:40 +00:00
Ingo Weinhold b447670286 * Removed most of the special-casing for kernel breakpoints in the kernel
enter/exit code. There's no real reason not to keep kernel breakpoints
  enabled when in userland (unless there are breakpoints installed for the
  team, of course).
* Enabled kernel breakpoints by default (check your kernel_debug_config.h,
  if you have overridden it!), since they don't really add any overhead
  anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30206 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 19:56:11 +00:00
Ingo Weinhold 1b9d2885d3 * Also pass the team arguments and thread names with the respective system
profiling events.
* profile: Avoid using get_{team,thread}_info() in common code paths. The
  system profiling mode is asynchronous, so the team or thread in question
  could already be gone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-16 10:02:33 +00:00
Ingo Weinhold a0320c161d Darn, should have been part of r30170 already.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30173 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-15 15:14:24 +00:00
Ingo Weinhold 1836e90993 * In exclusive mode we no longer stop searching when we have found an image
for a stack trace, if we haven't actually hit a symbol in the image. This
  way we don't get "unknown" image hits for PLT slots anymore.
* In system profiling mode add the kernel images to new teams. The mode should
  be usable now. Well, except maybe for the amount of data one gets.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30172 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-15 15:13:10 +00:00
Ingo Weinhold afa231acb8 * Reorganized the image management. Introduced a SharedImage which knows the
symbols and is identified by name. Image does still represent a team-bound
  image, but it refers to a SharedImage for the symbols, now. This allows us
  to load the symbols for a shared object only once and share the data for all
  teams referring to it.
* Made the area used for system profiling writable. "-a -f" would segfault
  since the return addresses are sorted in-place.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30170 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-15 13:41:40 +00:00
Ingo Weinhold 998210b432 Missed in the previous commit: Added debug_get_symbol_iterator_image_info().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30169 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-15 13:30:58 +00:00
Ingo Weinhold 39df634176 Added debug_get_symbol_iterator_image_info() to get an image_info from a
symbol iterator.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30168 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-15 13:30:14 +00:00
Ingo Weinhold e52c3559d3 * Renamed debug_delete_image_symbol_iterator() to
debug_delete_symbol_iterator().
* Added debug_create_file_symbol_iterator() which opens a shared object file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-14 18:03:24 +00:00
Ingo Weinhold 60dd191612 Removed the SymbolLookup dependency in debug_next_image_symbol().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30158 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-14 16:52:08 +00:00
Ingo Weinhold 92696166d0 * Removed debug output accidentally committed.
* Also allow yasm 0.7.{0,1} -- they have been reported to successfully build
  at least.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30152 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-14 00:07:31 +00:00
Ingo Weinhold 81f87f58ed When clearing a device we do now ignore an error when we could write anything
at all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30151 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-13 23:57:12 +00:00
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