Commit Graph

4568 Commits

Author SHA1 Message Date
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
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
Michael Lotz
3d1f420b23 bonefish+mmlr:
* Add "allocation_infos" KDL command. Can be used to print the allocation info,
  including the stack trace, given an object cache, slab, allocation within a
  slab or allocation address. It can also optionally be filtered by team/thread.
* Fix the AllocationDetailPrinterCallback to not access a possibly invalid
  trace entry for printing a stack trace.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43118 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 16:12:48 +00:00
Michael Lotz
81fea74394 bonefish+mmlr:
Add MemoryManager::DebugObjectCacheForAddress() to retrieve the ObjectCache for
a certain address from KDL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43117 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 16:09:49 +00:00
Michael Lotz
9a79e531ef bonefish+mmlr:
* Introduce TracingMetaData::IsInBuffer() to validate that a certain memory
  range is within the valid tracing buffer limits.
* Use that when validating in tracing_is_entry_valid() before trying to access
  the entry, resolving a TODO.
* Validate the candidate time against the handed in time (if specified) as an
  additional check.
* Tiny unrelated text cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-02 16:02:07 +00:00
Michael Lotz
45cbd81436 Fix build with tracing disabled. Since capture_tracing_stack_trace() doesn't
return a stack trace when tracing is disabled we don't really need to be able
to print one either.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43088 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 22:49:32 +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
Michael Lotz
a5e2a43050 Fix the build with memory manager tracing disabled. The guard was missing
in the header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43084 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 21:40:40 +00:00
François Revol
7014f7f3e4 Fix method name in trace.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43083 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 21:29:19 +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
François Revol
8fe82997ba Some more tracing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43074 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 18:59:47 +00:00
François Revol
f6fbf32a02 Dump the 68040 mmu registers before touching them.
Added a comment about the Milan clone which uses the mmu in the BIOS to emulate Atari hardware, and the Transparent Translation registers to map the PCI bus, which screws up with our current code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43073 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 18:58:18 +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
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
Michael Lotz
485bb14c36 Prefix the heap version of the "allocations" debugger command with "heap_".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43068 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 16:29:28 +00:00
Michael Lotz
5fd0416842 Tiny cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43063 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-01 14:27:25 +00:00
Michael Lotz
ffb6929a3b bonefish+mmlr:
Move blocking the 0xcccccccc and 0xdeadbeef address ranges from heap to VM init
so that it also works when used in the slab allocator.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43047 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-31 22:00:16 +00:00
Michael Lotz
72156a402f bonefish+mmlr:
* Introduce "paranoid" malloc/free into the slab allocator (initializing
  allocated memory to 0xcc and setting freed memory to 0xdeadbeef).
* Allow for optional stack traces for slab object cache tracing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-31 21:58:00 +00:00
Michael Lotz
fe8f0f4601 bonefish+mmlr:
* Add an AbstractTraceEntryWithStackTrace that includes stack trace handling.
* Add a selector macro/template combo to conveniently select the right base
  class depending on whether stack traces are enabled or not.
* Minor style cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-31 21:37:39 +00:00
Michael Lotz
ebf63109bb Tiny style cleanup. No functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43044 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-31 21:31:58 +00:00
Michael Lotz
a735bdebb9 Align all filesystem relevant places to use B_UNSUPPORTED for unsupported
instead of a mix of B_NOT_SUPPORTED and B_UNSUPPORTED. This allows checking for
a specific error code. Probably one of those should be phased out...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43025 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-31 10:18:03 +00:00
Michael Lotz
d3fdd8b180 Remove superflous test done a few lines above already.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43014 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-30 20:37:15 +00:00
Axel Dörfler
d817520f98 * Removed some dead code by applying a patch by lucian from ticket #6275,
thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42970 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-29 17:09:12 +00:00
Adrien Destugues
a1f2a6b179 Add cfmakeraw. Like cf{get/set}{i/o}speed, it iisn't POSIx standard but is used
often enough and simple enough to write that we should allow it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-16 16:44:17 +00:00
Michael Lotz
20f094cc38 Fix and add copyright year spotted by Urias.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42833 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-12 21:06:21 +00:00
Michael Lotz
fc2d7cb04d * Introduce {reserve|allocate|free}_io_interrupt_vectors() that can generically
be used to mark certain io interrupt vectors as reserved and to allocate from
  the still free ones. It is a kernel private API for now though.
* Make the MSI code use that functionality instead of implementing its own which
  slims it down considerably and also removes quite a bit of hardcoded knowledge
  about the interrupt layout that didn't really belong there.
* Mark the various in-use interrupts as reserved from the components that
  actually know about them (PIC, IO-APIC, SMP, APIC timer and interrupt setup).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42832 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-12 20:55:28 +00:00
Michael Lotz
2a77028057 Relax ensure_all_functions_matched() to assume no interrupt use when a device
has no routing information but wasn't configured by the BIOS either. The
function will now only panic if a device that was previously configured would
not be so anymore after enabling the IO-APIC. Fixes #7971.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42795 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-02 21:25:15 +00:00
Rene Gollent
17f2def171 Only call UserDefinedTimersRemoved if there actually are any. Should fix #7998.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42776 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-28 13:06:48 +00:00
Philippe Houdoin
d230708bcf * Expand kernel_args addresses ranges size, 8 is somewhat too small, leading
to a panic at boot.
* Make the panic message more explicit when there is no more room left.

This should hopefully fix #7869.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42715 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-05 10:49:32 +00:00
Jérôme Duval
920e575c03 As suggested by Ingo, revert r42648 and apply patch from Alex Smith provided in #7872. Thanks!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42650 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-20 20:09:32 +00:00
Jérôme Duval
d29d58edea Disable interrupts when updating real time clock. Fixes #7872. Seems to have been introduced in r42116.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42648 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-20 17:46:50 +00:00
François Revol
4b9d794063 Add a hack to detect the Milan which boots with a black&white mode, to make the menu and console readable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42641 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-19 12:15:57 +00:00
François Revol
f62ad34221 Add support for enumerating video modes using the Milan API and the ST/TT XBIOS calls. Not really tested, ARAnyM doesn't emulate the Milan stuff, and the ST resolutions aren't exactly chunky anyway (will need patching the framebuffer kernel args to include the mode/4CC instead of just bit depth).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42640 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-19 12:12:22 +00:00
François Revol
e45efadaad Complete the SCREENINFO structure definition; expose a single version of the Setscreen() calls, since they are just the same with magic values and extra args anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42639 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-19 12:08:57 +00:00
Oliver Tappe
45f2f22b52 * update (not-so-)optional package ICU to 4.8.1, which contains interesting stuff
for message formatting
* adjust LocaleKit to use namespace 'icu', as ICU has been configured to no longer
  use a version specific namespace
* adjust LocaleKit to general API changes in ICU 4.8
Note: all software using ICU (like WebPositive) needs to be rebuilt!
Note: the ICU package for PPC needs to be updated before it can be used!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42638 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-18 22:13:06 +00:00
Axel Dörfler
d5e36fb599 * Introduced new fs_lopen_attr_dir() function that opens the attribute
directory of a file without traversing leaf links (just like lstat()).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42620 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-10 21:08:00 +00:00
Axel Dörfler
33272012fb * Fixed reversed handling of O_NOTRAVERSE in attr_open(), and attr_create().
* Added support for O_NOFOLLOW for those two as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42619 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-10 20:53:06 +00:00
Axel Dörfler
b6455c080b * Implemented dladdr() in the runtime loader. This is like a gazillion times
faster than before.
* This also solves a TODO in dladdr(), although I did not use
  get_library_symbol() as I didn't quite see how that could fit as the comment
  suggested; there is now a new function get_symbol_at_address() for this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-08-07 21:01:23 +00:00
Alexander von Gluck IV
40a5a5a0ac * Rename of_region type template as per Axel
* Rename of_support.h/cpp back to support.cpp as per Axel


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-26 16:42:14 +00:00
Alexander von Gluck IV
bf0e980dc4 * Fix a few style issues as per Axel
* Rename a few variables to make more sense
* OF_FAILED is a signed int.. fix return of of_address_cells
* OF_FAILED is a signed int.. fix return of of_size_cells


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42497 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-26 15:09:18 +00:00
Alexander von Gluck IV
ed8b50f79a small tab fix; no functional change
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42490 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-25 22:52:00 +00:00
Alexander von Gluck IV
d24ddec4e4 * Move platform support.cpp into less generic of_support.cpp
* Add header file to support of_support.cpp
* Add support functions to obtain address and size cell lengths
* Small style cleanups
* Add support for G5 PowerPC cpus...
* Refactor memory region code to be aware of 64-bit OF addresses.
  As-is the boot loader wouldn't start on G5 systems because
  OpenFirmware memory base addresses are stored as two 32-bit
  unsigned int 'cells' vs one 32-bit unsigned int 'cell' on G3/G4.
  I removed the static struct and replaced it with a template
  and pass uint32 or uint64 depending on the address cell size.
  Thanks for the idea DeadYak!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-25 22:26:35 +00:00
Alexander von Gluck IV
75f0db355c * Remove a few superfluous spaces
* Style fixes as per Axel
* Reintroduce removed OF_FAIL checks


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42460 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-21 01:44:45 +00:00
Alexander von Gluck IV
372fe617b2 * Clean up OpenFirmware machine detections
* Detect OpenBIOS used in QEMU and set machine flag
  (OpenBIOS isn't 1:1 Apple OpenFirmware)
* Show at boot which machine type is detected


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-20 20:31:32 +00:00