Commit Graph
100 Commits
Author SHA1 Message Date
Ingo Weinhold 7ed608c615 Remove debug output 2011-11-25 06:17:46 +01:00
Ingo Weinhold 6e2af637b9 Add support for shine-through directories
* packagefs_mount(): Initialize the fs_volume earlier, so it is more
  usuable in Volume::Mount().
* The new mount parameter "shine-through" can be used to specify which
  shine-through mode shall be used. Can be "system", "common", "home",
  and "none". Depending on the setting it is decided which directories
  of the underlying file system are bind-mounted on top of ours.
* Fix infinite loop in Volume::_RemovePackageContent().
* Use the RETURN_ERROR() macro in more places to help with debugging.
2011-11-25 06:17:45 +01:00
Ingo Weinhold 54e721afeb Add support for bind-mounting directories
* Add support function vfs_get_mount_point(), so a file system can get
  its own mount point (i.e. the node it covers). Re-added
  fs_mount::covers_vnode for that purpose -- the root node isn't know to
  the VFS before the mount() hook returns.
* Add function vfs_bind_mount_directory() which bind-mounts a directory
  to another. The Vnode::covers/covered_by mechanism is used, so this
  isn't true bind-mounting, but sufficient for what we need ATM and
  cheaper as well. The vnodes connected thus aren't tracked yet, which
  is needed for undoing the connection when unmounting.
* get_vnode_name(): Don't use dir_read() to read the directory. Since we
  have already resolved vnode to the covered vnode, we don't want the
  dirents to be "fixed" to refer to the covering nodes. Such a vnode
  simply wouldn't be found.
2011-11-25 06:17:44 +01:00
Ingo Weinhold f4a1387cea Add vfs_ prefix to resolve_vnode_to_covering_vnode() 2011-11-25 06:17:44 +01:00
Ingo Weinhold 47ea54c55b Generalize use of Vnode::covered_by/covers
* Introduce Vnode flags for covered and covering. Can be used as a quick
  check when one doesn't already hold sVnodeLock.
* Rename resolve_mount_point_to_volume_root() to
  resolve_vnode_to_covering_vnode().
* Adjust all code that deals with transitions between mount points and
  volume root vnodes to generally support covered/covering vnodes.
2011-11-25 06:17:43 +01:00
Ingo Weinhold 02be66ca10 Replaced fs_mount::covers_vnode by Vnode::covers
Introduce a Vnode::covers field. It is currently only used for the root
node of an fs_mount, replacing fs_mount::covers_vnode.
2011-11-25 06:17:42 +01:00
Ingo Weinhold 7bb72b8daf Comment typo fixes 2011-11-25 06:17:41 +01:00
Ingo Weinhold 7ea4dbcecf Hard code "Public Domain" as acceptable license 2011-11-25 06:17:41 +01:00
Ingo Weinhold d5df784299 Fixed input server start fallback
After failing to start the input server by signature, the fallback
didn't append the input server name to the servers directory returned by
find_directory().
2011-11-25 06:17:40 +01:00
Ingo Weinhold 16ca035b2b Nicer error output 2011-11-25 06:17:40 +01:00
Ingo Weinhold 870d5c92fe write_pos(): Fix return value for attribute writes 2011-11-25 06:17:39 +01:00
Ingo Weinhold 2cce5a0a05 fs_write_attr(): Allow 0-length NULL buffer 2011-11-25 06:17:38 +01:00
Ingo Weinhold 0f15206ac9 ReaderImplBase::ParseStrings(): Avoid new[0] 2011-11-25 06:17:38 +01:00
Ingo Weinhold fab5eddca9 Split package kit DataReader.cpp
Pull AttributeDataReader and FDDataReader implementations out of
DataReader.cpp into own source files. Thus we can avoid dependencies
(e.g. to fs_attr code) we don't need/want.
2011-11-25 06:17:37 +01:00
Ingo Weinhold caa4217eb5 PackageWriterImpl: Build platform symlink issues
On a non-Haiku build platform map openat(), fstat(), and
FileDescriptorCloser to _kern_open(), _kern_read_stat(), and
BuildFileDescriptorCloser respectively, so symlinks can be opened and
stat()ed.
2011-11-25 06:17:37 +01:00
Ingo Weinhold 7162cff6b0 <build>package: attribute iteration, license dir
PackageWriterImpl:
* Iterate through attributes using fs_read_attr_dir() instead of
  readdir(). Makes it work correctly on the build platform.
* On the build platform look up the system licenses in their source
  directory rather than based on find_directory().
2011-11-25 06:17:36 +01:00
Ingo Weinhold 06cdc7e6d9 libroot_build: fix error.ccp build
Since USES_BE_API is set by default on all libroot_build sources, the
error.cpp
was broken, since it wouldn't be exempt from the error mapping. Define
the
BUILDING_HAIKU_ERROR_MAPPER for it directly in the Jamfile, now.
2011-11-25 06:17:35 +01:00
Ingo Weinhold 2aedac8df2 Build the package tool for the build platform 2011-11-25 06:17:35 +01:00
Ingo Weinhold 7ed37afaba Build libpackage for the build platform 2011-11-25 06:17:34 +01:00
Ingo Weinhold c4b463c5cd Added several APIs to libbe_build/libshared_build 2011-11-25 06:17:33 +01:00
Ingo Weinhold d62ec0bd75 Fixed host build issues/warnings 2011-11-25 06:17:33 +01:00
Ingo Weinhold dff6f3c1ca Updated to current Haiku version 2011-11-25 06:17:32 +01:00
Ingo Weinhold d9516a06cc Open/close attribute support for xattrs backend
For the xattr/BSD (untyped) attribute backend implement fs_fopen_attr()
and fs_close_attr(). A new AttributeDescriptor is created. It is
currently used in write_pos() only.
2011-11-25 06:17:32 +01:00
Ingo Weinhold b19dacd077 Added driver settings and find_directory() support.
find_directory() is a very simplified implementation, only supporting
what we currently need.
2011-11-25 06:17:31 +01:00
Ingo Weinhold 37c83f4e8f Made the check for B_BUFFER_OVERFLOW more flexible. 2011-11-25 06:17:30 +01:00
Ingo Weinhold cdf4afaaf4 Use fs_close_attr()/write_pos() instead of close()/pwrite().
This makes it easier to reuse the code on non-Haiku platforms.
2011-11-25 06:17:30 +01:00
Ingo Weinhold c3093f6d0f Fixed printf() format related warnings. 2011-11-25 06:17:29 +01:00
Ingo Weinhold dad288f954 Removed obsolete TODO. 2011-11-25 06:17:29 +01:00
Ingo Weinhold 38b54295ff Added missing <StorageDefs.h> include. 2011-11-25 06:17:28 +01:00
Ingo Weinhold 287243ab5f Added very simple BLooper class to libbe_build. 2011-11-25 06:17:27 +01:00
Ingo Weinhold 2f7b75b323 Fix the gcc bison issue for real
Also touch cp/parse.{c,h}, which apparently are the culprit.
2011-11-15 20:22:23 +01:00
Ingo Weinhold 4f23d85e4f Work around issue with newer bison versions
Touch the source files generated by bison, so that make won't try to
have them updated.
2011-11-15 19:49:25 +01:00
Ingo Weinhold a235c39ee4 Added BuildPlatformStaticLibraryPIC rule.
It works like BuildPlatformStaticLibrary, but generates position
independent code.
2011-11-12 15:40:17 +01:00
Ingo Weinhold e89f127b9e KernelLd rule: opt-out linking against libsupc++
Introduced HAIKU_NO_LIBSUPC++ variable on target to prevent linking
against libsupc++.
2011-11-12 15:40:17 +01:00
Ingo Weinhold cd3e093133 Fix x86_64 BuildConfig issues
* Resolve TODO: HOST_GCC_BASE_FLAGS should not be included in
  HOST_LDFLAGS. Enable adding "-fno-strict-aliasing -fno-tree-vrp"
  accordingly.
* Fix handling of HOST_PLATFORM_IS_64_BIT and HAIKU_HOST_USE_32BIT: The
  former does now state whether the platform is effectively treated as
  64 bit platform, i.e. it actually is 64 bit and the 32 bit mode is
  not enforced. HAIKU_HOST_USE_32BIT is now only set when the platform
  is actually 64 bit, but 32 bit mode is enforced.
2011-11-12 15:40:17 +01:00
Ingo Weinhold 1c2d7d3a86 Fixed x86_64 handling by the build system.
* Map build variables HOST_CPU and HOST_ARCH to x86_64, if it they are
* x86 and
  64 bit and define the __x86_64__ C macro instead of __INTEL__ in that
case.
* <OS.h>: Also handle __x86_64__.
2011-11-12 15:40:16 +01:00
Ingo Weinhold 6d367d369e Ignore build/user_config_headers 2011-11-12 15:40:16 +01:00
Ingo Weinhold 38156af0a4 Added .gitignore 2011-11-12 15:40:16 +01:00
Ingo Weinhold 2172670237 scheduling_recorder: Fix signal handling
* The sa_flags field of the structure passed to sigaction() wasn't
  cleared, which resulted in the wrong type of handler function being
  called and the second parameter not being the expected user data.
* Always check fCaughtDeadlySignal in the main loop, so the signal
  doesn't have to hit the _kern_system_profiler_next_buffer() call
  (though that's the most likely one anyway).

Now scheduling_recorder can be stopped with a single Ctrl-C again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43219 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-07 20:21:07 +00:00
Ingo Weinhold ee87d51d97 Build fix
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-07 20:03:57 +00:00
Ingo Weinhold fae2ce1945 Enlarge threads and ports KMessage notification stack buffers
They were too small for all the fields added. This is why the system
profiler skipped "thread added" notifications.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43216 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-07 19:22:02 +00:00
Ingo Weinhold 40287cba78 Add opt-in panic for KMessage buffer overflow
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-07 19:19:34 +00:00
Ingo Weinhold 5b78a98745 Make more robust with respect on invalid input data
* When encountering scheduling data referring to an unknown thread, add
  a dummy thread for it. This prevents a crash when processing the
  per-thread events later.
* Make warning output more uniform.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43214 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-07 18:44:15 +00:00
Ingo Weinhold e3bd3d8334 Add methods {Add,Remove}AssociatedData()
Allows to associate untyped data with the model, which the model free()s
upon destruction.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43213 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-07 18:41:29 +00:00
Ingo Weinhold 65d7b9312b x86: Also set iframe::orig_{eax,edx} in TRAP_ERRC(). This makes
get_iframe_registers() in arch_user_debugger.cpp return the correct
eax/edx values also when the kernel was entered via an exception that
doesn't push an error code (e.g. page fault).
Fixes incorrect eax and edx values shown in Debugger and variable values
based on them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-06 12:53:20 +00:00
Ingo Weinhold bd291de302 Remove yasm check. Looks like I had accidentally (?) disabled the
version already.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-03 14:27:39 +00:00
Ingo Weinhold 530590d3b9 * Document that the haikuRequiredLegacyGCCVersion variable is
influencing this script.
* If haikuRequiredLegacyGCCVersion has not been specified, assume that
  the script was called manually and just use the version string from
  the gcc sources.
* Make error output a bit more consistent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43163 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-03 14:22:31 +00:00
Ingo Weinhold 951c43ff21 Allocate VMKernelAddressRange and VMKernelArea in their own object
caches to reduce slab area fragmentation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43136 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 22:04:37 +00:00
Ingo Weinhold f8154d172d mmlr (distracted) + bonefish:
* Turn VMCache::consumers C list into a DoublyLinkedList.
* Use object caches for the different VMCache types and the VMCacheRefs.
  The purpose is to reduce slab area fragmentation.
* Requires the introduction of a pure virtual VMCache::DeleteObject()
  method, implemented in the derived classes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43133 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 21:14:11 +00:00
Ingo Weinhold ef9d9a1720 Add new operator that takes an ObjectCache* and allocation flags and
template function object_cache_delete() to be used to delete objects
constructed with it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43132 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 21:12:09 +00:00
Ingo Weinhold b0ee1941f3 Revert change that did accidentally sneak into the style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43124 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 19:12:46 +00:00
Ingo Weinhold ab3d6a3eaf Style cleanup. No functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43122 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 19:09:48 +00:00
Ingo Weinhold f606e8fd79 mmlr + bonefish:
* AllocationTrackingCallback::ProcessTrackingInfo(): Also pass the
  allocation pointer.
* "allocations_per_caller" KDL command: Add option "-d". When given,
  each allocation for the specified caller is printed, including the
  respective stack trace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43087 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 22:26:23 +00:00
Ingo Weinhold e32699b404 mmlr + bonefish:
Add ObjectCache::ObjectAtIndex().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 22:23:37 +00:00
Ingo Weinhold 328df922e6 mmlr + bonefish:
* Add TraceOutput::PrintArgs(), a va_list version of Print().
* Move code of TraceOutput::Print() to new private template function
  print_stack_trace().
* Add public tracing_print_stack_trace().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43085 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 22:22:14 +00:00
Ingo Weinhold 50175c99c4 mmlr + bonefish:
Refactor the "allocations_per_caller" KDL command related functions.
They expect an instance of a class implementing the new
AllocationTrackingCallback interface, now. The only implementation ATM
is AllocationCollectorCallback, which does the work the now removed
slab_debug_add_allocation_for_caller() did before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43082 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 21:16:14 +00:00
Ingo Weinhold f908ff9bb6 mmlr + bonefish:
* Fix build broken in r43078. The slab_debug_add_allocation_for_caller()
  wasn't guarded correctly.
* slab_debug_add_allocation_for_caller(): Add bool resetAllocationInfos
  parameter, which makes the function clear the allocation tracking
  infos after processing the data.
* "allocations_per_caller" KDL command: Add option "-r" to reset the
  allocation tracking infos. The next invocation of the command will
  only show the allocations made after the reset.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43079 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 20:35:49 +00:00
Ingo Weinhold 0422a0f3ae mmlr + bonefish:
* dump_allocations_per_caller(): Compute the total allocation count and
  size from the caller infos instead of using return arguments in the
  helper functions called.
* Move caller info update code from analyze_allocation_callers() to new
  function slab_debug_add_allocation_for_caller(), so it can be reused.
* Add MemoryManager::AnalyzeAllocationCallers() to collect the
  allocation information for the memory manager.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43078 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 19:40:27 +00:00
Ingo Weinhold e1c6140eaa mmlr + bonefish:
* Add optional stack trace capturing for slab memory manager tracing.
* Add allocation tracking for the slab allocator (enabled via
  SLAB_ALLOCATION_TRACKING). The allocation tracking requires tracing
  with stack traces to be enabled for object caches and/or the memory
  manager.
  - Add class AllocationTrackingInfo that associates an allocation with
    its respective tracing entry. The structure is added to the end of
    an allocation done by the memory manager. For the object caches
    there's a separate array for each slab.
  - Add code range markers to the slab code, so that the first caller
    into the slab code can be retrieved from the stack traces.
  - Add KDL command "allocations_per_caller" that lists all allocations
    summarized by caller.
* Move debug definitions from slab_private.h to slab_debug.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43072 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 18:34:21 +00:00
Ingo Weinhold 97ac7257f6 mmlr + bonefish:
Add helper macros for placing markers in the source, so we can get the
address ranges of code we're interested in.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43071 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 17:19:26 +00:00
Ingo Weinhold 69d7ad7dc5 mmlr + bonefish:
* Move struct tracing_stack_trace to tracing.h header.
* Add tracing_find_caller_in_stack_trace(). Helper function to get the
  first return address of a stack trace that is not in one of the given
  address ranges.
* Add AbstractTracingEntryWithStackTrace::StackTrace() getter.
* Add tracing_is_entry_valid(). Checks, based on the additionally given
  time, whether a tracing entry is (probably) still in the tracing
  buffer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43070 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 17:16:29 +00:00
Ingo Weinhold e4700f2e2b Patch by Philippe Saint-Pierre: Wait only half a second instead of 5
before displaying anything.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42969 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-29 16:52:37 +00:00
Ingo Weinhold b353a9a30a ANSI C doesn't like unnamed unions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42444 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-17 13:57:30 +00:00
Ingo Weinhold b5a7089a43 OptionalBuildFeatures: Specify a grist for ExtractArchive. We would otherwise
get clashes between target names e.g. between the "common/include/" for OpenSSL
and the one for CLucene. Should fix #7798.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-10 15:18:52 +00:00
Ingo Weinhold 85b41b15d9 * Added bool and double BString::operator<<() versions.
* Removed the clashing operator in JobSetupDlg. Automatic whitespace
  cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42387 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-07 10:17:15 +00:00
Ingo Weinhold 1e393751ba MemoryManager::_GetChunks(): Fixed incorrect check. The area structure offset
introduced in r37701 was not taken into account for computing the short meta
chunk size. Fixes the reopened #6237.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-06 20:23:42 +00:00
Ingo Weinhold 100541ec40 waitpid(): Fixed regression introduced with my signals changes: When WNOHANG was
specified the syscall error code B_WOULD_BLOCK would no longer be mapped to 0.
Fixes #7693.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42188 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-15 02:42:53 +00:00
Ingo Weinhold 5b0ecc5fd1 Make sure headers/build is in the include paths, so that the Haiku counterparts
most headers refer to can be found. Fixes the build under Haiku (ticket #7688).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42187 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-15 01:20:20 +00:00
Ingo Weinhold 40f4cf2aca Attempt to fix the FreeBSD build. We don't really what KernelExport.h defines,
so include OS.h instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42185 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 13:44:07 +00:00
Ingo Weinhold 38c1f44d70 load_image_internal(): Forgot to reserve room on the stack for the program
arguments and environment. Fixes failures to start programs in case the space
available through rounding to full page sizes wasn't sufficient.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42184 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 13:39:54 +00:00
Ingo Weinhold 9437559db1 * Added function team_init_exit_info_on_error() which initializes the team's
exit info with some generic status.
* team_create_thread_start(), common_thread_entry(): Initializes the team's
  exit info (if that's the main thread) before calling thread_exit(). Fixes
  #7686.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42183 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 13:04:31 +00:00
Ingo Weinhold dc2b8faba2 exit_debugger(): Only try to release the semaphore when no one holds the
scheduler lock. Otherwise we may deadlock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42182 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 12:48:06 +00:00
Ingo Weinhold ec5cc81fa0 exit_debugger():
* Only try to cancel the a transfer, if sUseUSBKeyboard is set.
* Set the "_usbPipe" parameter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42181 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 12:46:40 +00:00
Ingo Weinhold dc3ba981d4 Added try_acquire_spinlock().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42180 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 12:41:11 +00:00
Ingo Weinhold 4cc4f7bb18 * Added KMessage to libroot_build.
* libbe_build: Where possible we directly use the actual Haiku headers and
  sources, now. In the headers/build headers we just include the respective
  Haiku headers as needed. That still allows overrides where necessary. The
  intention is to make it easier to keep the build stuff in sync.
* Fixed a few printf() format and signed/unsigned comparison warnings.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42179 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 11:42:49 +00:00
Ingo Weinhold 45ec6bf344 BResources::SetToImage(): Compile conditionally based on
HAIKU_TARGET_PLATFORM_HAIKU, so the file can also be compiled for the host
platform.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42178 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 11:29:08 +00:00
Ingo Weinhold e76046d3f9 Use casts that are more portable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42177 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 11:27:24 +00:00
Ingo Weinhold 32a44923a6 * Use B_PRI* macros.
* Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42176 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 11:26:43 +00:00
Ingo Weinhold 4bb026ea4b Missing header.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42175 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 11:26:05 +00:00
Ingo Weinhold 54cf3a72ba Changed sReplyPortInUse type from long to int32, so it be used with
atomic_add() also on 64 bit architectures.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42174 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 11:25:37 +00:00
Ingo Weinhold aa08883069 Use a more portable cast.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42173 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 11:23:48 +00:00
Ingo Weinhold eff23a8157 Added missing header <Size.h>.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42166 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 01:25:51 +00:00
Ingo Weinhold a928c3f001 operation <<(): Use the standard types [unsigned] long [long] instead of
[u]int32 and [u]int64 to avoid clashes with the int/unsigned int versions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 01:07:16 +00:00
Ingo Weinhold 07cadb8481 Make use of the UsePrivateBuildHeaders rule.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42164 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 00:51:52 +00:00
Ingo Weinhold c86c8e2163 Added PrivateBuildHeaders and UsePrivateBuildHeaders rules.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42163 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 00:46:33 +00:00
Ingo Weinhold af9a2c4e23 Small style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 00:41:12 +00:00
Ingo Weinhold 0a187107e7 arch_debug_serial_[try_]getchar(): Look at the line status we read a bit closer
before assuming we have data. If the I/O port isn't valid (e.g. because there
is no serial port) 0xff seems to be a typical value to read. In that case fail.
Fixes KDL input on machines without serial port -- kgetc() would always think
it read something from the serial port, never trying any other input.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42153 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 18:25:08 +00:00
Ingo Weinhold e823d4a6be Small refactoring: Moved serial port initialization to helper function.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42150 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 17:35:37 +00:00
Ingo Weinhold 90ade5e298 * Added file_system_module_info::uninitialize() analogously to
partition_module_info::uninitialize().
* Implemented the hook for BFS.
* Implemented KFileSystem::Uninitialize().

Fixes failure to initialize a BFS initialized device with an intel partition
map.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 01:53:11 +00:00
Ingo Weinhold 0b7fe5cbe2 partition_module_info::uninitialize(): Added block size parameter for
convenience.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42141 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 01:38:03 +00:00
Ingo Weinhold 285f4cf441 * Added optional partition_module_info::uninitialize() hook. It is supposed to
destroy the partitioning system's on-disk structure.
* Adjusted the existing partitioning system implementations accordingly.
  Actually implemented the hook for the intel partitioning system.
* Added Uninitialize() method to KDiskSystem and KPartitioningSystem. The latter
  implements the method calling the new module hook.
* _user_uninitialize_partition(): Also let the disk system uninitialize the
  on-disk structure.

This fixes the failure to initialize a disk device with BFS, when it contains a
valid partition map with at least one partition.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42140 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 01:27:13 +00:00
Ingo Weinhold f84387d6c4 _user_initialize_partition(): After performing the operation don't set the new
disk system, if the partition already has a disk system set. This can happen
when the disk system's initialization function is lazy and just lets the DDM
rescan the partition. In bad cases the previous disk system has a higher
priority than the new one and, if its on-disk structures have not been
destroyed, it will win the rescan. Not setting the disk system in such cases at
least leaves the partition object in a consistent state.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42139 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 00:35:49 +00:00
Ingo Weinhold ec623acad8 Removed weird debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42138 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 00:21:30 +00:00
Ingo Weinhold e53a1e0f94 Removed unnecessary (and broken) hack.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42136 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 00:02:18 +00:00
Ingo Weinhold 6436e4676f MainWindow::_UpdateMenus():
* Don't fall back to the disk device, if no partition was selected. No idea why
  that was done. It led to operations (like initialize) being enabled that
  would fail, if invoked.
* Don't check CanInitialize() on the selected partition with its current disk
  system to determine whether to enable the initialization menu. No idea why
  that was done either. It led to the menu being disabled, when there was no
  reason for it.
* Also disable the initialization menu when no partition is selected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42135 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 00:00:20 +00:00
Ingo Weinhold 5e78920c12 * Added platform_debug_get_log_buffer() which returns the debug log buffer and
its size.
* Added "Display current boot loader log" item to the "Debug Options" boot
  loader menu. It displays what the boot loader has logged so far. Might be
  interesting for early boot issues when serial debugging is not possible.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42134 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 23:31:57 +00:00
Ingo Weinhold 8bcc50c336 * Added arch_debug_blue_screen_try_getchar() and arch_debug_serial_try_getchar()
which don't wait for a character, but return -1 when no character is
  available ATM. Implemented correctly for x86 only.
* Changed the semantics of the debugger_module_info::debugger_getchar() hook.
  It is supposed to return immediately now.
* Adjusted usb_keyboard accordingly. Hacked UHCI's debug_process_transfer() to
  achieve that. It does now start, check, or cancel a transfer. Split
  UHCI::ProcessDebugTransfer() into StartDebugTransfer(), and
  CheckDebugTransfer() accordingly, and also added a CancelDebugTransfer().
  The latter seems to have issues. Michael, please have a look. I have no clue
  what I'm doing. :-)
* Adjusted kgetc() to poll all possible inputs using the new
  functions/semantics. This allows to use any input (USB, PS/2, serial) in KDL.
* Removed the no longer needed "serial_input" command.
* read_line(): Also support 0x7f as backspace code. That's what xterm sends.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42126 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 17:15:42 +00:00
Ingo Weinhold b23ab34f66 I accidentally committed r42122 and r42123 to the signals branch. Merged into
trunk. The interesting part of r42122 was already fixed in the trunk, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42124 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 14:53:02 +00:00
Ingo Weinhold 24df65921b Merged signals-merge branch into trunk with the following changes:
* Reorganized the kernel locking related to threads and teams.
* We now discriminate correctly between process and thread signals. Signal
  handlers have been moved to teams. Fixes #5679.
* Implemented real-time signal support, including signal queuing, SA_SIGINFO
  support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition
  of the real-time signal range. Closes #1935 and #2695.
* Gave SIGBUS a separate signal number. Fixes #6704.
* Implemented <time.h> clock and timer support, and fixed/completed alarm() and
  [set]itimer(). Closes #5682.
* Implemented support for thread cancellation. Closes #5686.
* Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554.
* Lots over smaller more or less related changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 00:00:23 +00:00
Ingo Weinhold 2e8aa19c63 * The boot loader does now set up an IDT that allows it to catch processor
exceptions (page faults and the like). The handler dumps possibly interesting
  information (registers, a (numerical) stack trace) to the serial output, and,
  if possible, also to the screen. That should help debugging boot loader
  crashes.
* For the IDT the boot loader sets up for the kernel the descriptors are set up
  the same way, so until the kernel initializes the IDT itself (arch_init()) the
  facility is still in place and can thus catch very early kernel boot crashes.
  Unfortunately the on-screen output doesn't seem to work anymore at that point,
  so the output only goes to the serial port...
* ... and to the debug syslog -- dprintf() does now append it there after
  debug_cleanup() has been called. Seems to work fine in qemu, but when I tested
  it on real hardware the debug syslog was gone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42092 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-11 00:08:42 +00:00