Commit Graph

2234 Commits

Author SHA1 Message Date
Axel Dörfler
6cc43bfbb0 * _user_find_partition() did not work for partitions (only for devices), as it
did not set the "devicesOnly" flag to false when calling RegisterDevice().
* ddm_userland_interface.cpp incorrectly wrote to userland memory when it
  assigned "neededSize" in several places.
* Replaced on-stack path with the UserStringParameter class where appropriate.
* Made the UserStringParameter class castable to char*.
* Minor cleanup in KDiskDeviceManager.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26563 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 14:05:47 +00:00
François Revol
dcd20e9d16 forgotten -fno-pic makes arch_elf.cpp give the correct pointers to dprintf instead of garbage.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26560 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 01:56:33 +00:00
François Revol
9a486099e8 better english, tell about rela relocs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26559 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 01:11:45 +00:00
François Revol
9f8e918d80 The .dynamic section should be both part of the data and dynamic segments!
This makes the kernel loadable by the bootloader, which does load it, and all the modules \o/


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26558 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 00:46:07 +00:00
Axel Dörfler
86cea5c5f1 * Renamed IOOperation::SetRequest() to Prepare().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26557 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 00:45:25 +00:00
Axel Dörfler
8faff60c7f * Enabled all DMA tests, wrote some more.
* Moved data buffer creation to a TestSuiteContext class.
* Added checks if the I/O operation does the correct thing, ie. reads/writes
  the data to the right offset.
* Rearranged DMA translation: we now handle the partial write case correctly
  (bounce buffer must always span over the whole block), and are able to join
  adjacent bounce buffers together.
* The new _AddBounceBuffer() method also respects boundary and segment size
  restrictions for bounce buffers.
* IOOperation now prepares the outgoing vecs/offset/length to contain the
  right data for the current phase (partial read begin/end/do-all); it will
  also make sure that the lengths of the vecs are of the same size than the
  whole request.
* All tests are now passed, the I/O request implementation seems to be ready
  for integration now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26556 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 00:43:01 +00:00
Stefano Ceccherini
85f2668898 Patch by Dustin Howett (GSOC): Move ACPI probing out of the
bootloader's smp init and into its own unit.
ACPI tables can now generally be found with acpi_find_table(signature).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26538 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 07:13:51 +00:00
François Revol
3ef0397bc5 - cleanups
- disable tracing mmu
- make scratch buffer 8k as it's declared as such... that makes things much better indeed :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 02:54:37 +00:00
François Revol
3c5029f112 Turned out the generated kernel_m68k had a single PT_LOAD segment (RWE) instead of separate text and data like every other single binary, and everything on other platforms. This works around it by forcing sections to separate headers. It's still beyong me why I have to do this here, ld should do it on its own. Anyone has a clue ?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26536 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:36:31 +00:00
François Revol
1e5538f5e8 silently skip PT_INTERP and PT_PHDR types as we can ignore them. This should make real unhandled types more obvious.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:31:25 +00:00
Ingo Weinhold
2f14f5ee99 axeld + bonefish + mmlr:
* Added trace entry for block reads from disk.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26534 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:30:16 +00:00
François Revol
f83297ba2d cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26533 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:29:08 +00:00
Ingo Weinhold
2b3c0783a0 mmlr + bonefish + axeld:
* Fixed build: round_up() has been renamed to key_align().
* Whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26532 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-21 00:27:44 +00:00
François Revol
1b5a395d01 Cleanup and fix 040 definitions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 22:08:39 +00:00
François Revol
d14351d2c6 - better not check an entry for validity when we want to fill it
- bitfield definitions of page dirs were reversed... 040 is still wrong though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 21:16:37 +00:00
François Revol
74c5e8bd10 - move VADDR_TO_* to headers
- move part of mmu handling to mmu-dependant files and extend ops
- implemented 040 mmu init. doing so I spotted a bug in ARAnyM which ignored [ID]TT0. Linux likely doesn't use them but I was too lazy touse temporary page tables. I also noticed bitfields were in wrong order, to be fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 20:31:48 +00:00
François Revol
c6d022fab9 Send panic to natfeat output as well.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 17:04:41 +00:00
Ingo Weinhold
e700fc1d5c axeld + bonefish + mmlr:
* FileMap::_InvalidateAfter():
  - Off-by-one error. The last extend (which normally should be kept)
    was thrown away, too, but still accessed afterwards. Worst case
    could be a write to free()d memory.
  - Drop the last extend when it would be truncated to zero size.
* FileMap::Translate():
  - Incorrect handling of B_BUFFER_OVERFLOW case in the
    vfs_get_file_map() loop. After the loop the function would return
    incorrectly, making the caller think all vectors in the provided
    array had been initialized correctly. This could cause a file system
    implementation using the file map to read from or write to random
    disk locations, in the latter case possibly corrupting the file
    system.
  - Some readability improvements in the final loop. Removed incorrect
    check.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26523 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 16:29:12 +00:00
Axel Dörfler
762472641e * Added the generic device bus manager module to the built-in module list; now
it can actually be used (that should have been part of an earlier commit,
  but didn't break the build this time).
* dump_modules() must use kprintf() instead of dprintf().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26522 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 13:52:15 +00:00
Axel Dörfler
0d066dea36 * Added block level tracing to the block cache.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26521 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-20 12:37:56 +00:00
Axel Dörfler
45a206a742 axeld + bonefish:
More work on the I/O scheduler, more precisely mainly the DMAResource class:
* When splitting requests into operations, we're now able to flexibly mix
  bounce buffer segments and the given physical vectors in a single
  operation. This reduces the number of operations.
* Squashed several TODO and fleshed out more of the implementation.
* Added a test driver running unit tests. There are only a few tests yet,
  but those pass.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-19 23:27:14 +00:00
Michael Lotz
69dddbdea1 Initial work towards supporting IO APICs. This cannot work for PCI interrupts
though until we use ACPI for proper PCI IRQ routing through the IO APIC.
Therefore the IO APIC code path is not yet enabled and the IO APIC isn't used.
ISA interrupts would work though, as would PCI interrupts if you'd hardcode
them for your specific configuration.
Note that this change also modifies some parts in the bootloader and in the PIC
setup to make local APICs available even on non-SMP systems. This causes APIC
timers to be used instead the normal PIT if it is available (also on non-SMP
configurations).
Also fixes some general errors in SMP and PIC code as well as some code cleanup.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 23:19:41 +00:00
Axel Dörfler
aef87862a4 * Added support for generic drivers.
* If init_driver() fails, the device manager now prints a message to syslog.
* device_node::CompareTo() was broken: it never correctly compared the last
  attribute. This could cause duplicate nodes.
* Removed superfluous white space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 17:12:27 +00:00
Axel Dörfler
6969690afe bonefish + axeld:
* Moved the old I/O scheduler code into the device manager, and replaced its
  contents completely :-)
* Implemented the DMA and I/O requests/scheduler framework - for now in C++
  only. It's a work in progress and not used anywhere yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26488 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 14:39:46 +00:00
Axel Dörfler
df1b333aa5 No wethers in here anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26487 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 14:37:23 +00:00
Axel Dörfler
af4d15c72a * Removed I/O scheduler knowledge from devfs - it will be moved into the
drivers that need it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 14:35:47 +00:00
Michael Lotz
541959e00a Add (not really necessary) locking of the sMountMutex in case of KDEBUG to keep the assert in find_mount() happy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26484 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 02:07:08 +00:00
François Revol
a440169494 - fix def
- calculate ram ranges, 1 for st ram, one for fast ram if available. The kernel won't differentiate yet though, we'll have problems with DMA later on...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-18 01:11:59 +00:00
François Revol
36265c4de7 - print vars of interest to help setup mem map
- shuffle memory map
- set up transparent translations: first 32MB of RAM and last 16MB for IO space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 23:56:22 +00:00
Michael Lotz
84717c2c61 bonefish+mmlr:
Fix kernel printing of unsigned 64bit datatypes with the highest bit set. They
would previously be converted to a signed type and were then handled wrongly.
Use the sign flag to properly decide when to use casting to a singed type.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26473 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 19:26:09 +00:00
François Revol
87f9eb4682 Make sure debug output will wrap at 80 cols as the atari VT52 emulation doesn't do it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 02:38:23 +00:00
François Revol
3d5d990815 machine != platform
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 02:14:01 +00:00
François Revol
566ca582ba Fix 030 code. Seems we need to force gas to understand we want 030 code there, -m68030 didn't help.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 01:40:36 +00:00
Axel Dörfler
eaf71fbdb6 * Build fix: coreutils had a replacement for dirfd().
* Made DIR argument const in dirfd().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26469 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 01:22:13 +00:00
Axel Dörfler
13ea2be597 * Since cache_io() can now work with NULL buffers, I resurrected prefetching
using it.
* IOW cache_prefetch_vnode() should work again now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26468 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 01:10:18 +00:00
Michael Lotz
d73327e274 Make dirfd() publically available. It used on other systems as well it seems.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26466 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 01:01:52 +00:00
François Revol
b092ec2850 030 version of transparent translation init.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-17 00:03:38 +00:00
Axel Dörfler
50baef55f2 * Removed some old working_set/page daemon stuff from the address space.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-16 23:36:25 +00:00
Axel Dörfler
6db6b628d6 * Added B_PHYSICAL_BASE_ADDRESS address specification for anonymous areas.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-16 23:32:25 +00:00
Axel Dörfler
736352dcf5 * Added [un]lock_memory_etc() versions that accept a team_id as first argument.
This allows drivers to lock the memory outside of the original team context.
* create_area_etc() got a struct team as first argument, but that should have
  been a team_id.
* Removed delete_area_etc() - there is already vm_delete_area() doing the same
  thing.
* Renamed vm_get_address_space_by_id() to vm_get_address_space(), as there is
  no other method of getting an address space.
* Removed erroneous white space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26455 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-16 22:55:17 +00:00
Axel Dörfler
cb9191556c bonefish + axeld:
* Removed the superfluous "flags" parameter from ConditionVariable::Add()
  that we forgot there when we moved the flags field from
  ConditionVariableEntry::Add() to Wait().
* Using this method was therefore not a good idea - only UnixFifo did, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26454 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-16 22:43:50 +00:00
Ingo Weinhold
0629fe02b3 Properly round the partition size in
get_default_partition_content_name().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-15 11:28:18 +00:00
Ingo Weinhold
f9f2d81621 Added helper function get_default_partition_content_name() that can be
used by file systems to get a useful name, if the file system (or just
that specific volume) doesn't have one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26403 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-13 12:50:35 +00:00
Ingo Weinhold
64789466f1 Calmed down some debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-13 12:47:36 +00:00
Ingo Weinhold
60f2ef17be * Added "partition_id partition" field to fs_volume, so that file
systems can get the partition they reside on easily.
* Updated TODO.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-13 12:47:08 +00:00
Axel Dörfler
9082b7f4ed * Completed module watching mechanism.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26369 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-10 12:42:02 +00:00
Axel Dörfler
b4147ed317 * RescanDiskSystems() now locks the disk device manager, as it clobbers the
disk system lists.
* Added module watching; on module changes, it will now automatically rescan
  the disk systems.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-10 12:21:05 +00:00
Axel Dörfler
b5753dd7c9 * Added a __swap_int32() function to the runtime_loader - this fixes the build,
since KMessage needs it now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-10 11:52:57 +00:00
Axel Dörfler
a120934388 * Moved KMessage field printing from vfs_boot.cpp::get_boot_partitions() into
KMessage::Dump().
* Improved message dump output a bit (more concise).
* get_boot_partitions() now simply calls KMessage::Dump() instead.
* Added a KMessage::IsEmpty() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26365 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-10 10:06:17 +00:00
Ingo Weinhold
f937627dc8 Blue screen pagination:
* Changed prompt and keys: Now it's 'q' to quit (abort) the debugger
  command and 's' to skip the following output.
* Don't offer or try to quit a command in the boot debug output.
* Cleanup the prompt and go to the next line also when aborting the
  command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-09 22:59:45 +00:00