Commit Graph

18797 Commits

Author SHA1 Message Date
Salvatore Benedetto
1b442f1919 * Revert Copyright
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-13 09:44:23 +00:00
Ryan Leavengood
d1ac4d47b2 Getting a little ahead of myself here...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22526 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-13 05:02:09 +00:00
Ryan Leavengood
44f919da9a Adding Łukasz Zemczak's package installer to our tree. This was his Google
Summer of Code project. Thanks for your work Łukasz and I hope we can see
more work from you.

Still to do:
- Create an icon.
- Add pkg files to the MIME database with PackageInstaller as the default
handler. The rdef here has the MIME type name for the pkg format should
anyone else choose to add it :)
- Support for running scripts included with packages.
- Testing various different packages.
- Fixing problems in the Haiku GUI layout system which affect the code used 
for various parts of the installer GUI (please bear with the commented out
code for now.)
- Adding this to the image.

Tomorrow I will add Łukasz's InstalledPackages utility which can be used to
view installed packages and uninstall them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-13 04:46:32 +00:00
Karsten Heimrich
ed1c257ade * the divider width was taken from the wrong archive field
- this is my first commit, so i'm really looking forward to work with you guys    :)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22523 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 22:42:51 +00:00
Salvatore Benedetto
46a41c432c * Clean up (removing unneeded comment)
* Renaming, fixing coding guidelines
* Re-writing AddTo method
* Removing ohci_software.h file (its content has been moved to ohci.h) but it will probably be deleted in the future.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22522 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 22:17:27 +00:00
Axel Dörfler
4191a211aa * Started accelerant extension to be able to get the preferred mode from
the accelerant, as well as its EDID info. B_GET_PREFERRED_DISPLAY_MODE and
  B_GET_EDID_INFO are both optional. The preferred mode will be taken from the
  EDID info if only the latter hook is implemented, or the former returned an
  error.
* Currently, the app_server should correctly set the preferred mode on start,
  but no accelerant supports that yet, so it's not really tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22520 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 16:50:24 +00:00
Ingo Weinhold
e8cae7424e Patch by Vasilis Kaoutsis: Correctly set errno on error.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 16:49:56 +00:00
Ingo Weinhold
36b89f8f12 Patch by Vasilis Kaoutsis: Style cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 16:49:19 +00:00
Axel Dörfler
7bdf92f3f7 Started a create_display_modes() function that should be used by accelerants
to create their mode list. Once it's done, it should cover all possible cases,
and allow the base mode list to reside in the app_server (under Haiku, at least),
so that all drivers will benefit from an updated list.
Right now, it might already work to a degree, but it's not yet tested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22517 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 15:59:50 +00:00
Axel Dörfler
13a81299f1 Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22516 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 15:56:08 +00:00
Axel Dörfler
4ff0c50078 * The loop that should select a thread of the next priority class actually did
not work; it would always choose the last thread of the current priority.
  IOW a thread was never skipped, and lower priority threads were never called
  when a higher priority thread was running - from the POV of the scheduler,
  we only has real time threads...
* Improved "run_queue" KDL output.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 10:29:08 +00:00
Axel Dörfler
00ef60f643 Removed the "next_*" in queue debugger commands.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22514 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 10:25:58 +00:00
Axel Dörfler
dd980a197c Started working on a test application for the scheduler; it uses the scheduler
of the kernel directly, and emulates the kernel's API where necessary.
Not complete at all yet, but I already found one serious bug in our current
scheduler with it :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22513 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 10:23:45 +00:00
Stefano Ceccherini
9d12401dcf Check keys against "raw_char" instead of "key"
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22512 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 09:44:32 +00:00
Stefano Ceccherini
cbcae6ef9b StyledEdit didn't print anything if there's only one line (bug #1288).
Note, though, that printing in StyledEdit is still very much broken. 
Often it prints only the current page, for example.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22511 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-12 07:58:33 +00:00
Axel Dörfler
e0049e2c37 Updated to latest kernel versions.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22510 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-11 17:55:27 +00:00
Stefano Ceccherini
fc6a714ec0 Static variables should have the s prefix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22509 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-11 13:43:07 +00:00
Stefano Ceccherini
65e63b987d PaletteConverter now exports a static InitializeDefault() method, which
can be used (and is, by _init_interface_kit()) to initialize the ... 
er... default instance of 
PaletteConverter using the system color map, thus avoid building the 
list of colors, which takes some time. Fixes bug #505.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22508 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-11 13:30:56 +00:00
Axel Dörfler
7861bd3cfb * IDs are now generally printed as decimal values.
* Removed old port test code, it doesn't belong there.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22507 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-11 08:30:18 +00:00
Axel Dörfler
f8941839c3 * Reworked stealing pages: the page thief thread is gone now,
vm_page_reserve_pages() and vm_page_allocate_page() will now steal pages from
  the inactive queue as needed.
* We currently never steal active pages anymore, but this might need to be
  revised later (therefore, the page scanner never waits anymore, but uses
  mutex_trylock() to lock a cache).
* The page scanner and writer now both run at normal priority - let's see how
  that will work out.
* Introduced an inactive queue.
* Instead of shuffling pages around in the queue (and therefore destroying LRU)
  the page stealing mechanism now uses a marker page to be able to release the
  page lock without losing its position in the queue.
* The page writer now always grabs the whole release count of the semaphore, so
  that there won't be a huge backlog to catch up with. 
* vm_page_num_free_pages() now also includes the inactive queue as well as the
  reserved pages (they are no longer regarded as free pages).
* Added a insert_page_after() function that inserts a page after another one,
  needed by the marker code.
* clear_page() now gets a vm_page instead of a physical address which simplified
  some code.
* Removed superfluous initialization of the queues (if those aren't zeroed on
  start, we would have serious problems, anyway).
* Removed old and unimplemented dump_free_page_table() ("free_pages") KDL
  command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22506 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-11 08:01:18 +00:00
Axel Dörfler
215a91d161 No need to print and try NULL at all.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22505 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-11 07:49:04 +00:00
Axel Dörfler
90bab16d16 * IDs are now generally written as decimal numbers, rather than hexadecimal.
* Fixed warnings with debug output turned on.
* Shuffled functions around a bit.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22504 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-11 07:46:55 +00:00
Ingo Weinhold
15ed7c71d6 More fleshing out the disk system add-on interface and related classes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-10 21:35:22 +00:00
Ingo Weinhold
67c578e73f Added global lock that can be used for lazy initializations.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22502 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-10 21:30:51 +00:00
Michael Lotz
2827e2995b Extended flushing repeat messages in kernel debug output. The repeat message is printed when there has been no repeat for more than 1 second and now also when the first repeat was more than 3 seconds ago. This ensures that repeat messages are sent when the repeated message is constantly output at a frequency of less than a second.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22501 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-10 20:47:16 +00:00
Axel Dörfler
f271831fc8 Corrected comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-10 18:57:10 +00:00
Ingo Weinhold
d9769e2219 Patch by Vasilis Kaoutsis: select() and pselect() set errno correctly now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22499 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-10 14:13:34 +00:00
Axel Dörfler
013f781f47 vm_test_map_{modification|activation}(), vm_clear_map_flags(), and
vm_remove_all_page_mappings() all computed the wrong virtual address for the
page in question, and would therefore return incorrect data!
Introduced a virtual_page_address() function that is now used by all of them.
So that's why we were still "losing" modified flags - it took me some hours
to find those (sometimes processes died after stealing pages)...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22498 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-10 09:58:25 +00:00
Rudolf Cornelissen
1f48250890 updated naming for some previous unknown cards, added 24 new cards for support/recognition in the kernel driver, being GF 6xxx, 7xxx and 8xxx types. Also two more nforce 6100 4x0 cards recognized now. NOTE: accelerant update will come at a later date (soon I hope), needs more investigation first.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22497 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-09 20:05:43 +00:00
François Revol
ba5b226142 Fix warnings
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22496 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-09 19:44:29 +00:00
Axel Dörfler
477c9d1dc0 * vm_set_area_protection() would remap the whole area instead of just the page
it intended to. That resulted in more writable pages where you wouldn't want
  them (ie. allowing the area to change pages in lower caches).
* We were losing modified pages: vm_unmap_pages() sometimes has to preserve
  the modified flag (eg. when called from page fault).
* Both of these were responsible that stealing active pages would crash
  applications - even if less likely, this could also have happened when
  stealing inactive pages. Therefore, I've activated stealing active pages
  again.
* The page writer now pushes the pages of busy vnodes to the end of the queue,
  so that it won't pick them up again too soon (the vnode destruction would
  be in the process of writing those pages back, anyway).
* The page thief now triggers the page writer to run once it has to steal
  active pages. This might be a bit too aggressive, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22495 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-09 11:05:50 +00:00
Axel Dörfler
0d871d3c5f * satisfy_cache_io() was using the wrong value to compute the number of
pages to reserve, which could result in to few being reserved in certain
  situations.
* Use MutexLocker where appropriate.
* Reordered includes following the new rules.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22494 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-09 02:04:36 +00:00
Axel Dörfler
de37318060 Removed gethostname() and sethostname() from the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22493 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-09 02:02:50 +00:00
Axel Dörfler
6030b585aa * Implemented gethostname() and sethostname().
* uname() now calls gethostname() instead of using a hard-coded value.
* This fixes bug #1250.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-09 01:36:18 +00:00
Axel Dörfler
173d0b2fc7 panic() could hang in the early boot process in case it was called before
the blue screen was initialized - blue_screen_enter() now returns wether
or not it has been initialized already (there will only be serial output
in that case).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22491 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-09 00:12:29 +00:00
Stefano Ceccherini
17dee6524b and there, the usual commit which removes the forgotten debug output...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22490 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 21:48:49 +00:00
Stefano Ceccherini
c044172704 I was wrong after all. InsertText() doesn't call SetRunArray() (and
hence CancelInputMethod()), but it implements part of it. To avoid code 
duplication, I added a private _SetRunArray() call, which does most of 
the work, except cancelling the input method, and calling Refresh().
Removed some unneeded code from CancelInputMethod(), some small changes 
in HandleInputMethodChanged. 
-Questa linea, e quelle sotto di essa, saranno ignorate--

M    src/kits/interface/TextView.cpp
M    headers/os/interface/TextView.h


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22489 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 21:46:35 +00:00
Axel Dörfler
ace15ce212 Changed defaults in readline to be more useful. This fixes bug #1540.
Alternatively, we could add an inputrc file - this would have the advantage
that other apps using readline built-in would have those, too.
OTOH this really should be in the defaults, too, IMO (ie. we could do both).
Opinions welcome :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22488 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 21:18:19 +00:00
Ingo Weinhold
b510c4d236 Reverted r22484. setitimer() already sets errno, if necessary.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22487 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 19:58:54 +00:00
Axel Dörfler
873f2ffc1a * Fixed the page_thief(): it never noticed it could not get a page.
* The page_thief() will no longer steal any pages in B_LOW_MEMORY_NOTE state,
  only in the more serious cases.
* I've disabled stealing active pages for now again; there seem to be some
  problems with it (either with how we do it, or with other stuff).
* vm_page_schedule_write_page() now always releases the page writer semaphore,
  resulting in many more written pages - this isn't optimal as long as there is
  no I/O scheduler, but before it was much too rare when there are many dirty
  pages.
* Customized the thread priorities a bit to make the page scanner/thief/writer
  experience a bit nicer with our current scheduler.
* vm_page_reserve_pages() would return too early, it did not test if really
  enough pages are free.
* Under certain circumstances, the wakeup from vm_page_reserve_pages() did not
  work - we now always notify in vm_page_unreserve_pages() to work around that
  problem.
* Checked if the page reservations are done when needed and are always balanced
  for the whole kernel.
* vm_page_allocate_page() now panics if it can't deliver a reserved page.
* vm_page_allocate_page_run() can no longer steal reserved pages.
* With all of those changes, I could finally copy a file in emulation, ie. the
  Luposian bug should finally be fixed, even though the system might still not
  be perfectly stable under low memory. Will do some more testing.
* write_page() no longer prints something on failure.
* Dumping a whole page queue will now also write the cache type of each page.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22486 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 16:15:56 +00:00
Axel Dörfler
0710d59c1c * Added a "canWait" argument to vfs_get_vnode() - you can use this to ignore
busy vnodes.
* dir_create_entry_ref() used get_vnode() incorrectly (and could therefore
  potentially prevent a file system from doing proper locking when called
  from the kernel).
* The vnode_store now uses this for its acquire_unreferenced_ref()
  implementation (and therefore for the page writer).
* read_into_cache() and write_to_cache() were still marked inline.
* The system will now wait 10 secs for a busy vnode before returning an error.
* It will also no longer panic in that case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 16:06:32 +00:00
Ingo Weinhold
a16571b404 Patch by Vasilis Kaoutsis: Return error code via errno.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22484 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 15:32:02 +00:00
Axel Dörfler
899d854005 * B_LOW_MEMORY_NOTE now starts earlier, at 8 MB left.
* vm_low_memory_state() now periodically recomputes the state in case the
  low memory thread is waiting for something.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 13:56:49 +00:00
Axel Dörfler
7faf279d73 The block allocator needs to reserve pages, too, when it maps pages.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 08:25:47 +00:00
Ingo Weinhold
98b97f9603 First draft of the userland disk system add-on interface. A good deal of
functionality of the kernel add-ons will be moved into userland, which
will simplify the kernel-side significantly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-08 01:33:46 +00:00
Ingo Weinhold
0b7582a306 Some types of files cannot be seeked and we need to fail in those cases.
We actually need to fail for sockets, too, but until I'm mistaken, we
can't identify them in the VFS. Fixes bug #1539.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 22:51:41 +00:00
Ingo Weinhold
ede3fe6c94 POSIX functions return their error codes via errno and so does lseek().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 22:43:41 +00:00
Jérôme Duval
1ea618c556 added BOOT_MODE define instead of adding dprintf_no_syslog()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22478 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 19:52:24 +00:00
Axel Dörfler
b21fc3c730 Added another test case to the menu trigger test that could reproduce the last
problem of BMenuItem::SetTrigger() that got fixed in r22476 (see bug #1506 for
the details).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 17:22:30 +00:00
Axel Dörfler
f1be468272 fTriggerIndex was still a byte index in BMenuItem::SetTrigger() - this one
fixes bug #1506 once and for all :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22476 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 17:20:28 +00:00
Ingo Weinhold
bf95c9aee6 * The shadow_changed() FS and partitioning system hooks take an
additional partition_data* child parameter now.
* _user_get_partitionable_spaces() doesn't need to copy the buffer into
  the kernel, since it is no input parameter. It also copies back the
  actual partitionable spaces count on error, now -- B_BUFFER_OVERFLOW
  is returned when the buffer was too small, but then the count must be
  returned too.
* Fixed several instances of syscall implementations that unloaded a disk
  system, although they didn't load it in the first place. This screwed
  up the load count with undesirable consequences.
* _user_create_child_partition() would set the size to the supplied
  offset.
* Fixed broken loop in KPhysicalPartition::CreateShadowPartition().
* KPartition::RemoveChild() notified the listeners about the wrong
  event.
* Intel partitioning module:
  - The *_get_partitionable_spaces() correctly return B_BUFFER_OVERFLOW
    now, if the supplied buffer is too small.
  - Implemented a part of pm_shadow_changed(), which creates and updates
    the PartitionMap, so that the validate_*() hooks have a chance to
    work at all.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22475 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 15:39:35 +00:00
Ingo Weinhold
24ce374f61 The index parameter to validate_create_child_partition() is optional,
but it is mandatory to the KDiskSystem::ValidateCreateChild(), which is
invoked, so we need to use a stack variable.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22473 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 15:14:54 +00:00
Ingo Weinhold
dbef8fc452 * Added get_physical_partition() function, which always retrieves the
physical partition, unlike get_partition() which returns the shadow
  partition, if it exists.
* Added B_PARTITION_SHADOW[_CHILD] partition pseudo operation values for
  the shadow_changed() hook, notifying a disk system, that a shadow
  partition has been created.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 15:11:37 +00:00
Ingo Weinhold
04adb291a6 Clear the user_partition_data::user_data fields before updating the
BPartition structure with the data retrieved from the kernel. For new
partitions the field is not set in the next step and later code would
use an initialized pointer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 14:56:26 +00:00
Ingo Weinhold
7ede8e4494 Added [Content]Parameters() getters.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 14:52:54 +00:00
Ingo Weinhold
11e9c3980c Changed semantics of GetNextSupportedType(): It expects a pointer to the
parent (not the child) partition, now. A method with the old semantics
is probably needed, too, but before creating a child partition, one
obviously doesn't have a child to pass yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22469 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 14:50:25 +00:00
Ingo Weinhold
2e3d6b83ca * Ask for a partition name for initialization only, if the disk system
supports names.
* Finished interface for creating partitions.
* Cosmetic changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22468 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 14:47:17 +00:00
Ingo Weinhold
9d337ccc01 Aesthetical changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22467 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 14:41:55 +00:00
Axel Dörfler
20b232e900 Actually forgot this nail: the file cache will now reserve the pages it will
allocate with the vm_cache locked - this is necessary to be able to steal pages
from itself (large files...).
The system doesn't actually lock up anymore, but it still renders itself unusable;
obviously the page thief does not work correctly, yet. The rest of the experience
is created by our current scheduler (the page thief runs and runs, but it doesn't
free any pages anymore).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22466 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 13:32:13 +00:00
Axel Dörfler
0633dcc2c6 * Fixed a serious oversight that could result in trying to insert a page
twice into the same cache: cache_io() called read_into_cache() (or
  write_to_cache()), and that broke down the request into smaller parts.
  It then called read_chunk_into_cache() (or write_chunk_to_cache() resp.)
  to actually allocate pages and fulfill the request.
  However, it needed to unlock the cache for each chunk, and in the mean
  time someone else could insert pages into the remaining chunks.
* Now, cache_io() already takes care of chunking the data which makes this
  approach safe, and also simplified the code a bit - read_into_cache()/
  write_to_cache() are gone now. I've renamed read_chunk_into_cache() to
  read_into_cache() (same for the write function).
* Also got rid of that goto in that function while I was on it.
* Disabled cache_prefetch_vnode() for now (it's similar to cache_io(), but
  since it's currently not used [since no cache module is installed yet],
  I didn't want to go through updating it now, too).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 12:21:18 +00:00
Jérôme Duval
94302e2f82 dprintf_no_syslog is needed for openfirmware platform
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22464 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 18:40:32 +00:00
Jérôme Duval
428a7df2f9 fix ppc kernel build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22463 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 18:20:05 +00:00
Axel Dörfler
c950f17a51 * Added a acquire_unreferenced_ref() to vm_store
* his has to be used by the page writer to make sure the vnode is still valid.
* This should have been the final nail on the Luposian bug - I haven't tested
  it yet, but we'll certainly see :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22462 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 15:35:38 +00:00
Axel Dörfler
80f5469291 * struct vnode is an opaque type now, removed void* where it was used incorrectly.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22461 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 15:33:12 +00:00
Jérôme Duval
2caa43976d switch from COMPILE_FOR_R5 to HAIKU_TARGET_PLATFORM_HAIKU
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22460 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 14:11:25 +00:00
Jérôme Duval
082c9eb03a clean up
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 14:04:09 +00:00
Jérôme Duval
4689d4f1ab added ice1712 driver on behalf of Jérôme Leveque. Thanks!
Current status : playback only.
Support for M-Audio Delta 1010, Delta 1010 LT, Delta DIO 2496, Delta 66, Delta 44, Audiophile 2496 and Delta 410 VX 442.
Tested on M-Audio Audiophile2496.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22458 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 13:45:16 +00:00
Axel Dörfler
5c7dbe881d Applied François' patch to be able to free large allocations. Even though the
heap is going away soon, it doesn't hurt to have it in the repository.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22457 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 13:14:11 +00:00
Axel Dörfler
1211351476 The page thief can now also steal active pages under pressure.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 11:38:03 +00:00
Axel Dörfler
0e18334057 * Mapping a page might actually need memory - since we usually have locks that
interfere with the page thief, we always need to have reserved a page for
  this upfront. I introduced a function to the vm_translation_map layer that
  estimates how much pages a mapping might need at maximum. All functions that
  map a page now call this and reserve the needed pages upfront.
  It might not be a nice solution, but it works.
* The page thief could run into a panic when trying to call vm_cache_release_ref()
  on a non-existing (NULL) cache.
* Also, it will now ignore wired active pages.
* There is still a race condition between the page writer and the vnode
  destruction - writing a page back needs a valid vnode, but that might just
  have been deleted.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22455 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-06 11:18:21 +00:00
Ingo Weinhold
aa4d8ee6ee * Allow NULL name argument on initialization.
* Some code beautification on the way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22454 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-05 23:25:58 +00:00
Ingo Weinhold
d6e565c76b * Fixed gcc 4 warnings.
* Style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22453 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-05 22:39:52 +00:00
Ingo Weinhold
7ca40195ba Don't overwrite the last read byte with the null-terminator. Fixes bug
#1536.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22452 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-05 19:01:18 +00:00
Ingo Weinhold
570263197e * Reviewed checking of empty paths and fixed some occurrences. Thanks to
mjw for the hint. Fixes bug #1516.
* Changed _{kern,user}_create_symlink() to no longer check the supplied
  link string. BeOS seems to do that, but this is not standard
  conforming. The previous implementation even used the path processed
  by check_path(), which would potentially have appended a ".".
* Some style cleanup.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22451 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-05 18:42:50 +00:00
Axel Dörfler
7ce5ca3222 The page scanner must not turn pages inactive that are actually wired
(currently, wired pages don't always have the PAGE_STATE_WIRED, but a
wired_count).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22449 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-05 16:54:50 +00:00
Ingo Weinhold
7c8a352db7 * Cleanup.
* Corrected checking of parameters (name).
* Gracefully deals with disk systems that rescan after initialization,
  now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22448 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 23:52:21 +00:00
Ingo Weinhold
db5c68ca46 * Added the partition size as parameter to the file and partitioning
system initialize() hooks. It's often the only info about the
  partition one needs and thus locking the partition just to get it is
  no longer necessary.
* intel partitioning system:
  - Removed passing around block sizes. We require 512 byte sectors
    anyway. In fact using the parent partition's block size was even
    wrong.
  - Simplified writing the partition map sector.
  - Simplified and corrected the partition map initialization.
  - We don't fail identifying a partition anymore, if the partition map
    contains no partitions. We would never identify a freshly
    initialized partition map before.
  - Made pm_identify() more intelligent: It determines the priority to
    return depending on whether the partition is the device itself and
    whether we have recognized child partitions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22447 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 23:48:18 +00:00
Ingo Weinhold
6748659272 Added an identify_file_system() hook to the FS modules. The boot loader
does no longer give partitioning systems precedence over file systems.
The one with the greater identification priority wins. ATM, if a file
system wins, we still mount the first file system that recognized the
partition at all, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22446 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 23:16:31 +00:00
Jérôme Duval
ff386118f4 removed former haiku_book and headersampler tool
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22445 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 22:15:58 +00:00
Stefano Ceccherini
6fc1a5d0ea Mail's inherited InsertText() calls CancelInputMethod()
indirectly, and since InsertText() is called inside 
BTextView::HandleInputMethodChanged(), this method would see fInline 
slip away from under its feet.. Now we call the BTextView version 
explicitly. Fixes bug #1022, although I'm not sure if this is completely 
correct.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22444 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 19:57:27 +00:00
Ingo Weinhold
bcc2eb0c72 Moved the write support code into a separate source file.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22443 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 18:27:25 +00:00
Ingo Weinhold
33e38cdad2 * Implemented bfs_validate_initialize(). It should probably do more
checks (e.g. if the partition is big enough), though.
* bfs_initialize():
  - Report job progress.
  - Rescan the partition after it has been initialized, so that all
    partition_data fields are properly initialized.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22442 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 18:11:00 +00:00
Ingo Weinhold
8c8f8c8420 Added scan_partition() function which can be used by disk systems (e.g.
in *_initialize()) to save some work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22441 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 18:03:24 +00:00
Ingo Weinhold
088136f66b gcc 4 warned unnecessarily.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22440 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 17:59:29 +00:00
Axel Dörfler
edf668344a * Added some docs.
* Removed dead code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22439 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 16:53:02 +00:00
Axel Dörfler
9d8c209014 * vm_remove_all_page_mappings() now returns an accumulation of the flags of
the unmapped page.
* This is needed by everyone who calls this to make sure modifications to a
  page aren't ignored. Namely, the page scanner and the page thief were
  affected.
* Cleaned up locking the page's cache a bit in page_thief(); there is now
  a helper class that takes care of everything.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22438 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 16:36:35 +00:00
Axel Dörfler
06cd40f399 Forgot to replace the error code with the new "mayBlock" logic, thanks Ingo!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22437 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 15:11:48 +00:00
Ingo Weinhold
6f05787478 * rootfs.c -> rootfs.cpp
* Made the kernel rootfs reusable by the FS Shell and removed the
  copy in the FS Shell sources.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22436 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 14:30:50 +00:00
Axel Dörfler
417f276c05 Forgot to commit the fs_shell with r22434, thanks for the note, Stefano!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 13:23:00 +00:00
Axel Dörfler
3e9513aa4a * fs_{write|read}_pages() now has an additional argument "mayBlock".
* the page writer don't allow to block, while all other writers do. This fixes
  bug #1509. The reason the page writer needs this is because it marks several
  pages from different caches as busy.
* Fixed a warning about ASSERT being defined already in BFS, since
  util/DoublyLinkedList.h now includes debug.h.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22434 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 12:45:15 +00:00
Stefano Ceccherini
94b9294f48 oops! Somehow I managed to commit a version with some extra debug code
enabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22433 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 11:37:04 +00:00
Stefano Ceccherini
f2476bcc9c Patch by Rene Gollent: TextViews now can scroll even if they aren't
attached to a BScrollView.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22432 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-04 11:32:06 +00:00
Ingo Weinhold
39c99f8644 The toggledView variable was assigned twice. The last assignment should
win. Interestingly with gcc 4 and optimizations enabled the same value
was passed twice to Add().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22431 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 22:53:19 +00:00
Ingo Weinhold
d45ce8b1dc Move the job control entries of a dying team's children to the kernel
team as well. Otherwise the children would later try to remove them from
a list they weren't in.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22429 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 22:20:30 +00:00
Ingo Weinhold
76ab7bdcf8 Added function dprintf_no_syslog(). It is basically equivalent to
dprintf() with the exception that it doesn't write anything to the
syslog. The reason is that syslog_write() releases a semaphore and can
therefore not be invoked when the thread spinlock is held.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22428 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 22:14:53 +00:00
Ingo Weinhold
0e69ce7702 Define _BOOT_MODE.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 22:10:06 +00:00
Stephan Aßmus
bf7ab50d4c large patch by Bek (HOST team):
* style improvements, header reformatting, small refactoring and adding
  of missing copyrights

(to Marcus: this is not the original patch, it has already been revised two
times by myself and I thought it was very nice now)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22426 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 21:19:17 +00:00
Marcus Overhagen
88d9b383f5 added more IDs, removed Intel IDE mode ID due to possible collision with a physical PATA interface
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22425 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 20:16:11 +00:00
Ingo Weinhold
0febb19caf Added the students who worked on the DDM and intel partitioning system.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22424 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 20:15:05 +00:00
Ingo Weinhold
b2537f99cd Added option "--thread" which will perform the crashing operation in
another thread.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22423 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 19:35:40 +00:00
Ingo Weinhold
99454e4a90 If the ring buffer is full line_buffer_readable_line() returns the
buffer size in case the buffer does not contain an EOL or EOF. This
prevents readers from waiting infinitely, if canonical input processing
is enabled in that situation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22422 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 19:07:51 +00:00
Ingo Weinhold
e8429ec9e6 * Added debugger command "tty", which dumps some info about a tty.
* RequestOwner was removing the wrong request from the second queue,
  which could cause the list structure to become invalid and result in
  bug #1526.
* In the writer loops we do now call tty_notify_if_available() when
  we're potentially going to wait and had written something before, so
  that a waiting reader will be woken up also when we write more bytes
  than fit into the ring buffer.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22421 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 19:04:44 +00:00
Marcus Overhagen
2f28a3f623 Added PCI ids from Freebsd, Netbsd and Openbsd pcidevs files.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22420 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 17:57:09 +00:00
Marcus Overhagen
83447512ed Changed device detection. The driver now first uses device and vendor id to check
for devices. This allows using devices that are in IDE compatibility mode.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22419 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-03 16:05:23 +00:00
Ingo Weinhold
b2d056ecde Add wait_for_objects.cpp to the kernel, too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22418 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 19:52:47 +00:00
Ingo Weinhold
b16fdbd661 Little test program for wait_for_objects_etc().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22417 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 19:48:39 +00:00
Ingo Weinhold
636bfc08ae * Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of
vfs_select.h, respectively moved most of it into the new kernel
  private header wait_for_objects.h.
* Added new experimental API functions wait_for_objects[_etc](). They
  work pretty much like poll(), but also for semaphores, ports, and
  threads.
* Removed the "ref" parameter from notify_select_events() and the
  select_sync_pool functions as well as from fd_ops::fd_[de]select(). It
  is no longer needed. The FS interface select() hook still has it,
  though -- the VFS will always pass 0.
* de]select_fd() take a select_info* instead of a select_sync* + ref
  pair, now. Added respective functions for semaphores, ports, and
  threads.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22416 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 19:47:31 +00:00
Axel Dörfler
a82d70c719 Fixed PLL clock for i8xx chips again.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22415 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 17:40:05 +00:00
Stephan Aßmus
2a74c55308 * when a vector icon was present, BAppFileInfo::GetIcon() would return an
error if the provided bitmap was B_CMAP8, now BIconUtils will convert the
  icon to B_CMAP8
-> this behaviour is a little inconsistent compared to what happens when
  reading icons from attributes, there, the CMAP8 icon is prefered in case
  such a bitmap is passed, even if a vector icon exists. I am not really
  sure which behaviour is better. For a consistent UI, maybe it is better
  to prefer the vector icon always. I've added a note to BAppFileInfo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22414 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 16:54:34 +00:00
Axel Dörfler
e5b464d09f Added a TODO what we need to do with stolen active pages - for now, we don't
do anything with them, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22413 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 16:06:17 +00:00
Axel Dörfler
4421183286 * Changed Ld rule to allow adding resource files.
* Changed ResAttr rule to allow not deleting the file before writing the
  attributes.
* Added application signatures for the runtime_loader and zbeos, just so that
  they may have an icon, too (hint, hint) :-)
* As a side effect, this also let's FileTypes handle these two as apps (even
  though they aren't), so that I can close bug #606.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22412 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 15:22:13 +00:00
Stephan Aßmus
0064e64138 patch by Julun:
* fixed ticket #1500
	* big cleanup and removal of unused code


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22411 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 14:54:15 +00:00
Stephan Aßmus
4d1c422802 * added a way for the ServerWindow message loop to determine the required type
of locking before processing the message (single/all window lock)
  -> in most message cases, I could comment out the unlocking/locking which
  switched to the different lock, because the required lock is now already held,
  this removes some race conditions which were commented in the code already
* EventDispatcher::SetDragMessage() didn't lock the object, this would have
  been bad if multiple windows tried to set a drag bitmap at once
* the Desktop object keeps track of mouse position and pressed buttons, so
  that it doesn't need to lock the EventDispatcher for sending fake mouse
  moves to windows on show/hide of windows (solves some cases of possible
  dead locks with the new locking strategy)
* the keyboard EventFilter switches the current workspace asynchrnously from
  the Desktop thread (another source of possible deadlocks)
* the "reader is trying to become writer" check in MultiLocker is only used
  in DEBUG mode now

As a summary: It would be nice if ServerWindow used a readlock for all messages
it processes itself, and forwards all messages for which it needs a write lock
to the Desktop thread. All cases where either the Desktop or the ServerWindow
mess with the EventDispatcher are possible sources of deadlocks. This is solved
right now by making sure that the lock is released before using the
EventDispatcher.

I have not observed any deadlocks while switching workspaces and launching
many apps anymore, neither crashes. But I have not tested extensively except
for in the test environment. That being said, I could reproduce the problems
on first try before in Haiku.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 14:09:11 +00:00
Axel Dörfler
2760c4cd73 * load_program() (and probably others) could call delete_image() with a NULL
pointer - which it now handles gracefully.
* This also fixes starting the runtime loader directly: it no longer crashes
  but will just return an error.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22409 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 13:17:19 +00:00
Axel Dörfler
828d9454da * Fixed module leak in case there was an error during init when used on BeOS.
* Check safemode settings only when it's not already disabled (doesn't make
  sense to check those then).
* Minor cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22408 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 11:56:33 +00:00
Axel Dörfler
fb151b4af1 Fixed initialization threading issues I introduced yesterday.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22407 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 10:54:32 +00:00
Stefano Ceccherini
9c16019f62 Patch by Rene Gollent which fixes displaying of current time. I've used
snprintf instead of sprintf and reduced the size of the char array, 
though. Hope you don't mind, Rene.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22406 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 09:37:41 +00:00
Axel Dörfler
b5b11466b2 If opening the net_stack driver failed because there was no stack, opening it
a second time would magically work, as it skipped its initialization then...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22405 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 01:01:01 +00:00
Axel Dörfler
9f0d226c72 The no-swap store shouldn't fool the page writer into believing that its pages
could be written back. This should stop the page thief from stealing active
pages that cannot be recreated easily :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22404 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-02 00:01:18 +00:00
Ingo Weinhold
3c3674113f Fixed a race condition on thread exit: There was a gap between releasing
the death stack and reacquiring the thread lock in which another thread
could snatch our stack that we were still going to use for the
scheduler. Now we've got a second spinlock that we can hold while
releasing a semaphore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22403 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 22:46:56 +00:00
Ingo Weinhold
8609f5a242 * Increased condition variable hash size.
* Renamed condition variable debugger commands to cvar and cvars.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22402 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 22:28:54 +00:00
Ingo Weinhold
d0c2af7713 Addressed a deadlock race condition: Acquiration of condition variable
and thread spinlock was reverse in Wait() and Notify(). The thread lock
is now the outer lock -- this way it is still possible to call Notify()
with the thread lock being held.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 22:24:42 +00:00
Ingo Weinhold
1c118ebc62 * Added a handy FDGetter AutoLocker-style class.
* In select_fd(): First get the file descriptor, then check whether any
  events have to be selected at all. This has the advantage that the
  caller can interpret an error return code as invalid FD. Consequently
  common_poll() no longer checks FD validity separately -- this was a
  race condition.
* common_poll() always selects POLLERR and POLLHUP now, which it has to
  do according to the specs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22400 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 18:48:52 +00:00
Axel Dörfler
10194ebc8a Minor build fix - it still doesn't link, though.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22395 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 15:43:45 +00:00
Marcus Overhagen
c134c7b07c disable some debug output
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22394 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 10:28:24 +00:00
Axel Dörfler
7746846941 * The ProgressWindow now starts centered over the reference window on every
open.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22393 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 10:21:12 +00:00
Ingo Weinhold
eb138dc9c4 Moved the select_sync_pool from tty_cookie to tty. No need to have one
per cookie.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22392 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 01:41:46 +00:00
Ingo Weinhold
66c03dc3a9 * fd.c -> fd.cpp
* Reworked the select support:
  - The io_context additionally stores a table of lists of select_infos,
    which enables it to deselect events of a pending select() when
    closing a FD. This prevents a race condition potentially causing a
    write to stale memory.
  - The opaque selectsync* passed to FSs is now actually a select_info*.
    This was necessary, since the FDs deselect() hook (unlike the
    select() hook) doesn't take a "ref" argument and deselecting a
    single info (e.g. caused by a premature close()) was not possible.
    The select() hook's "ref" argument has become superfluous.
  - It should now be relatively easy to implement a poll_on_steroids()
    that can also wait for objects other than FDs (e.g. semaphores,
    ports, threads etc.). 
* Set/reset the signal mask in common_select(). This makes pselect()
  work as required.
* Reorganized vfs_resize_fd_table().



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22391 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 01:37:28 +00:00
Ingo Weinhold
f5ede4ec02 Added two small select() test programs. select_check select()s
stdin/out/err according the what was specified via arguments.
select_close_test select()s a file descriptor that is closed a little
later by another thread.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22390 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-01 00:39:38 +00:00
Axel Dörfler
e2693621b6 Correctly implemented the missing BBitmap::GetOverlayRestrictions() on the
client and the server. This should fix bug #1490, but I haven't tested it yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22388 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-30 16:03:53 +00:00
Marcus Overhagen
bfd9a59f77 This enable write support. The driver should be useable now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22387 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-30 15:54:35 +00:00
Marcus Overhagen
a2a169feab Improved interrupt handling
Removed DBC_I interrupt
Reduce debug output


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22386 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-30 15:12:39 +00:00
Marcus Overhagen
ea44575a31 Cleanup, improved error handling, fix setting of DBC_I bit
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-30 14:02:04 +00:00
Axel Dörfler
083de48a4b * Rewrote the trigger selection mechanism: it now searches for uppercase
characters first, and then falls back to take everything. fTrigger is now
  uint32 and works with all unicode characters; unlike in BeOS, the
  MenuTriggerTest application now works correctly in Haiku.
* fTriggerIndex is now a character position, not a byte position of the label;
  this allows BMenuItem::DrawContent() to draw the trigger at the correct
  position, even if there are multi-byte UTF-8 characters.
* The above fixed bug #1506; triggers are still not working, though.
* Rewrote Menu.h header.
* Renamed all private methods (that are not called by BWindow) to have the
  underscore prefix.
* Removed unused methods.
* Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22384 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-30 10:52:45 +00:00
Axel Dörfler
b15c9adec7 * Decoupled the page_thief() from the low memory handler chain. This is
necessary because low memory handlers might need to wait for other services
  while we need to make sure the page thief can always steal pages.
* Made the page thief more aggressive when memory is critical: added a third
  run where it will also steal a small amount of active pages to keep things
  going.
* The page thief did not maintain the cache's reference correctly in all
  situations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22382 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-30 09:36:28 +00:00
Ingo Weinhold
f0c668a83a Notifying readers and select() takes canonical input processing into
account when checking for the number of readable bytes. For readers
it doesn't make a difference, since they were looping anyway, but
select() would report read-availability incorrectly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22379 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-30 00:52:06 +00:00
Ingo Weinhold
d5cbcd91b7 * Use condition variables instead of semaphores for blocking readers and
writers.
* Removed the optimization for piping data between two threads of the
  same team. This greatly simplifies the code. It seems to me the case
  is very uncommon; it could be added back later, though.
* Basically rewrote reading from and writing to the pipe:
  - A blockable writer can now write more than what is currently
    available in the ring buffer.
  - Writing respects the PIPE_BUF non-interleaving limit, though our
    headers don't seem to define PIPE_BUF anywhere.
  - Unblock writers, when the last reader is gone and send those that
    haven't written anything yet a SIGPIPE. Fixes bug #1476.
* Correctly implemented select() support. We were only notifying
  writers. We manage two separate select sync pools per pipe now: one
  for the reader end and one for the writer end.
* Reading/writing from the root dir does no longer end in KDL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22378 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 23:52:23 +00:00
Axel Dörfler
16da0b3cdd Added test application for menu triggers.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22377 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 18:17:40 +00:00
Marcus Overhagen
0845746bf7 Cleanup, device present detection improved.
Added support for non-48-bit LBA, added write support.
Proper error handling still missing, write support disabled for your protection.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22376 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 17:11:24 +00:00
Axel Dörfler
3392e9bcd6 * Added some more debug output.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22375 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 15:48:11 +00:00
Axel Dörfler
b062823d81 * register_low_memory_handler() was called too early by several kernel
components - now, we divide the initialization of that service into two parts
  which allows this (before, most handlers were gone after boot).
* Added debugger command that dumps the low memory handlers.
* The slab allocator now registers its low memory handler with a higher
  priority, so that it'll run before the potentially heavier ones.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 15:46:40 +00:00
Stephan Aßmus
2a88281a61 * check for possible division by zero (just had a crash with divide error
on another machine, don't know if this was really the cause, but it should
  be checked nevertheless I guess)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22373 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 14:06:19 +00:00
Axel Dörfler
ab88b095f2 * bfs_{read|write}_pages() now only try to lock - this fixes a possible
deadlock whenever someone without a lock (like the page_writer()) is calling
  this function.
* Added a new ReadWriteLock::TryLock() method.
* Renamed bfs_read_vnode() and bfs_release_vnode() to bfs_get_vnode() and
  bfs_put_vnode() just like those functions are called in fs_interface.h.
* Fixed a warning in BPlusTree::_SplitNode().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22372 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 14:06:04 +00:00
Stephan Aßmus
5b06c4ae51 * improvement to checkmark and submenu indicator layout and drawing (layout
takes menu margins into account, drawing is now fully scalable)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22371 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 13:00:24 +00:00
Stephan Aßmus
a788be674b * some simplifications in the code, I'm not sure if it supported NULL texts as
the BeBook mentions it does
* make sure the view is invalidated on resize
* needs more fixes (for example GetPreferredSize() does not take everything
  into account)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 12:58:59 +00:00
Stephan Aßmus
917870d2ba * slight code style fix, but that file would need a complete cleanup to be
style compliant...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22369 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 12:55:19 +00:00
Stephan Aßmus
ded80ae491 * very minor cosmetic change
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 12:54:19 +00:00
Marcus Overhagen
55d356bd98 check for device presence before executing commands
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22367 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 12:14:45 +00:00
Stephan Aßmus
f691c77a30 * don't know which option to pass to fopen() in order to create a file if it
doesn't exist, so I just used a BFile instead... this should fix part of
  ticket #1423, if someone wants to look into the gateway retrieval
  (settings.cpp) to fix the other half of the bug, that would be great


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 07:22:18 +00:00
Stephan Aßmus
c96bc8d3f1 * removed unnecessary whitespaces, small style cleanups
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22365 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 07:19:32 +00:00
Stephan Aßmus
b1836934f8 * when selecting objects in the list view, the controls will adapt to the
object properties


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22364 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 06:46:29 +00:00
Marcus Overhagen
21b4398f6a don't set the "clear on RX_OK" bits
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22363 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 00:34:09 +00:00
Marcus Overhagen
f5ea6b32a5 added debugging code
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 00:23:21 +00:00
Marcus Overhagen
6b8c1c2ad7 improved prd table handling
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22361 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 00:22:19 +00:00
Marcus Overhagen
2bf99ebdee Added byte swapping of identify device strings.
Added capacity reporting.
Wait for interrupts to finish transfers.
Added lba 48-bit read support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22360 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 23:44:03 +00:00
Axel Dörfler
a3fc7b4b33 The "priority" of a handler is no longer ignored: the handlers are now
inserted into the list according to their priority; higher priority
handlers are now called first.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22359 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:47:31 +00:00
Ingo Weinhold
2f6b4f3e1a * When canonical input processing is enabled reads should only return
anything, if a line is available. Fixes bug #1483.
* Replaced the request owner waiting semaphore by a condition variable
  and removed the now no longer needed SemaphorePool.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22357 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:37:31 +00:00
Marcus Overhagen
ece77b379a renamed SCSI_OP_TUR into SCSI_OP_TEST_UNIT_READY
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:30:53 +00:00
Marcus Overhagen
a79249de5b add missing file
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:24:26 +00:00
Marcus Overhagen
2ae9d56421 added scatter gather prd table setup, implement scsi inquiry command and emulate test unit ready
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22354 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:22:25 +00:00
Axel Dörfler
5036d66c8f vm_cache_resize() did not care about busy pages - now it does.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22353 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:20:57 +00:00
Marcus Overhagen
747c1927fd removed conditional testing code
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:20:46 +00:00
Marcus Overhagen
91f867e016 added sg_memcpy to copy data into a scatter-gather table (inspired by IDE device manager)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 21:19:14 +00:00
Ingo Weinhold
cfed176e68 * I just saw the page writer passing a free page to write_page().
Apparently not everyone checks the page state for PAGE_STATE_BUSY.
  vm_page_write_modified_pages() does now at least.
* Fixed typos in comments.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 18:48:09 +00:00
Axel Dörfler
a6778735f9 bonefish+axeld:
* We now have a page writer that takes some pages from the modified queue
  and writes it back every few seconds. It can be triggered by the page
  scanner to do that more often, though. That mechanism can be greatly
  improved once we have our I/O scheduler working.
* Removed vm_page_write_modified_page() again - it was all "eaten up" by
  the page writer.
* Reworked vm_page_write_modified_pages() a bit: it now uses
  vm_test_map_modification() and vm_clear_map_flags() instead of the
  iterating over all areas which wouldn't even work correctly.
  The code is much simpler now, too.
* You usually put something to the tail of a queue, and remove the contents
  from the head, not vice versa - changed queue implementation to reflect this.
* Additionally, there is now a enqueue_page_to_head() if you actually want the
  opposite.
* vm_page_requeue() allows you to move a page in a queue to the head or tail.
* Replaced vm_clear_map_activation() with vm_clear_map_flags() which allows
  you to clear other flags than PAGE_ACCESSED.
* The page scanner dumps now some arguments with each run.
* Removed the old disabled pageout_daemon() from NewOS.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 15:50:26 +00:00
Marcus Overhagen
8ce98e44cc convert files to new include file locations
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22347 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 14:53:42 +00:00
Marcus Overhagen
a1a086067d cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22346 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 14:52:11 +00:00
Marcus Overhagen
41a3048db5 added missing include file (probably gcc4 only build fix)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22345 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 14:51:31 +00:00
Ingo Weinhold
8bced38bb2 * Renamed fLayoutValid to fMinMaxValid.
* Clear fMinMaxValid when a new constraint is added. "Height for width"
  constraints are therefore no longer ignored.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 14:13:34 +00:00
Ingo Weinhold
b59629bef8 They way we were initializing the maximal sizes, maximum constraints could
be considered redundant, although they weren't. We do now use smaller
"unlimited" sizes which we can add without risking overflow, and can thus
correctly identify redundant constraints. This fixes the
SplitterGridLayoutTest1 in the LayoutTest1 app.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22337 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 00:27:24 +00:00
Ingo Weinhold
d2bb3c4350 The new row/column info items were not added, so that setting column or row
properties (like the weight or min/max) would be ignored, besides memory
being leaked.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22336 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-28 00:20:51 +00:00
Ingo Weinhold
8c2647695a * Removed the qoca library and the layouter implementation using it.
* Use the new ComplexLayouter for the more complex layouting tasks.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22335 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 22:48:20 +00:00
Ingo Weinhold
c29edec13e * Cleanup in ComplexLayouter and LayoutOptimizer: Removed debug output or
made it conditional, added/modified comments documenting the maths and
  algorithms.
* Refactored quite a bit in ComplexLayouter and added special handling for
  the case that the desired solution is already feasible.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22334 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 22:44:21 +00:00
Marcus Overhagen
2745621c91 use defines from PCI.h
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22333 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 13:50:48 +00:00
Marcus Overhagen
5aa7b7b6da Fix broken build and the compiler warning "enumeral mismatch in conditional expression".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22332 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 13:33:47 +00:00
Axel Dörfler
5c4ed86b56 * Moved some definitions from vm_types.h that functions in vm.h need as
arguments into vm.h.
* This should fix the broken build from earlier - thanks Stefano for the note!
* That also allowed to clean some other includes a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22331 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 13:01:18 +00:00
Axel Dörfler
9ef250072b * Don't use the private vm_map_physical_memory() but just
map_physical_memory().
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 12:45:11 +00:00
Axel Dörfler
e6dc7903e4 * vm.h no longer includes vm_types.h - only those that actually need access
to the private VM types are including vm_types.h now.
* Removed vm_page, vm_area, vm_cache, and vm_address_space typedefs; it's
  cleaner this way, and the actual types are only used in C++ files now,
  anyway.
* And that caused changes in many files...
* Made commpage.h self-containing.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22329 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 12:21:33 +00:00
Axel Dörfler
f98d60ae04 * Removed the automatic release of the "modified_pages_available" semaphore
in enqueue_page() - it doesn't really belong there.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22328 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 12:12:24 +00:00
Axel Dörfler
6e03805fb2 Forget to actually delete some old C files.
For some reason, shell wildcards do not include deleted files... :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22327 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 12:10:06 +00:00
Axel Dörfler
393fceb5a0 * Cleaned up vm_types.h a bit, and made vm_page, vm_cache, and vm_area
opaque types for C.
* As a result, I've renamed some more source files to .cpp, and fixed
  all warnings caused by that.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22326 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 10:29:05 +00:00
Stefano Ceccherini
e96b202311 Patch from Ioan Molnar:
If a Tab is partially out of the window, clicking on it to make it the 
active tab will scroll it to be completely visible.
The best solution would probably be having a way to scroll through the 
whole list of tabs, or something like this. But for now, at least, makes 
the tabbed terminal a bit more useful.
Thanks!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22325 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-27 08:26:15 +00:00
Axel Dörfler
8692ec023c * Renamed vm_page_write_modified() to vm_page_write_modifed_pages() and
introduced a new vm_page_write_modified_page().
* Resolved a TODO: vm_page_write_modified_pages() did not mark a to be
  written page busy but unlocked its cache which could let someone else
  steal that page in the mean time.
* Moved the logic when to move a page to the active or inactive queue to
  a new function move_page_to_active_or_inactive_queue().
* Moved page_state_to_string() to vm_page(); it's now also used by the
  "page" and "page_queue" KDL commands.
* Made the output of the "page_queue list" command more useful.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 20:19:51 +00:00
Marcus Overhagen
20c8bc80d5 The Jmicron AHCI controller on my machine is always in PATA emulation mode,
despite using the "AHCI native" setting in the BIOS. 
Added switching to AHCI mode during init, this makes it work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22322 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 18:55:29 +00:00
Marcus Overhagen
63f9ffef37 make sure PCI command register is setup correctly
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22321 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 18:09:42 +00:00
Axel Dörfler
44e2fd093c Actually, it's not a good idea to increase the usage_count, since every access
is tracked while the page scanner runs much slower. Now, we just set it to a
fixed positive, so that they can easily age in case they are actually unused.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 18:00:45 +00:00
Axel Dörfler
8e0f884c71 * Since the page scanner and thief can work more effectively when no vm_caches
are locked, there is now a vm_page_reserve_pages() call to ensure upfront that
  there is a page for me when I need it, and may have locked some caches.
* The vm_soft_fault() routine now makes use of that feature.
* vm_page_allocate_page() now resets the vm_page::usage_count, so that the file
  cache does not need to do this in read_chunk_into_cache() and
  write_chunk_to_cache().
* In cache_io() however, it need to update the usage_count - and it does that
  now. Since non-mapped caches don't have mappings, the page scanner will punish
  the cache pages stronger than other pages which is accidently just what we
  want.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 17:42:25 +00:00
Axel Dörfler
8a25e1293b Implemented a part of block_cache_set_dirty() so that it can gracefully exit
in case there is nothing to do.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22318 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 14:01:28 +00:00
Axel Dörfler
e97e022aa7 * block_cache_set_dirty() was used incorrectly; I wonder why I write any
documentation... when you ask the block cache for a writable block, it's
  automatically dirty.
* This fixes bug #1330.
* Minor style cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22317 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 13:19:57 +00:00
Axel Dörfler
42cd7306a8 Renamed "dos" file system to "fat".
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22316 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 09:43:58 +00:00
Axel Dörfler
6d4aea4796 bonefish+axeld:
* Removed the vm_cache/vm_store ref_count duality that besides being a bit ugly
  also created the page dameon cache retrieval problem: now, only areas (and
  cache consumers) retrieve a reference to the store (and therefore, the vnode).
  The page daemon doesn't need to care about this at all anymore, and the pseudo
  references of the vm_cache could be removed again.
* Rearranged deletion of vnodes such that its ID can be reused directly after
  fs_remove_vnode() has been called.
* vm_page_allocate_page() no longer panics when it runs out of pages, but just
  waits for new pages to become available using the new sFreeCondition condition
  variable - to make sure this happens in an acceptable time frame, it'll
  trigger a run of the low memory handlers.
* Implemented a page_thief() that steals inactive pages from caches and puts
  them into the free queue. It runs as a low memory handler.
* The file cache now sets the usage count on the pages it inserts into the
  cache (needs some rework though, cache_io() doesn't do it yet).
* Instead of panicking, the kernel will currently dead lock in low memory
  situations, since BFS does a bit too much in bfs_release_vnode().
* Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22315 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 00:20:23 +00:00
Axel Dörfler
f9057a35a0 bonefish+axeld:
* The page daemon now runs independently from the low memory state.
* It now also increases its frequency and scanned pages, as well as decreases
  the interval between runs with increasing memory pressure.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22314 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-26 00:06:18 +00:00
Axel Dörfler
3cd731ada3 * The low memory handler now runs more often in more critical situations.
* vm_low_memory() no longer calls call_handlers() directly, but just triggers
  a run immediately.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22313 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 23:58:31 +00:00
Marcus Overhagen
4af29ec0bd Implemented a identify device command for further testing, works on Intel, doesn't work on Jmicron.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 21:33:15 +00:00
Jérôme Duval
e4bbf18b3f added an implementation for nanosleep() based on snooze()
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22311 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 19:18:27 +00:00
Jérôme Duval
4bf50c9bc4 updated ctags to 5.7
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22310 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 17:42:11 +00:00
Jérôme Duval
4d97d99317 changed pci to gPci, plus some clean
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22309 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 17:41:26 +00:00
Axel Dörfler
2b14cdd11c * Added a mutex_trylock() function.
* Replaced release_sem() with release_sem_etc() for future addition of the
  B_DO_NOT_RESCHEDULE flag.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22308 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 16:41:52 +00:00
Marcus Overhagen
2c76601709 Cleanup of hard reset, works on Intel, doesn't work on Jmicron.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22307 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 15:37:56 +00:00
Axel Dörfler
8c657126cd * Removed unused vm_page::busy_{reading|writing} fields.
* Fixed vm_page_allocate_page_run(): it did not take the pageState into account,
  and would therefore return uninitialized memory (ie. B_CONTIGUOUS areas would
  contain garbage).
  Now, it stores if a page is cleared in a new vm_page::is_cleared field.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22306 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-25 15:04:29 +00:00