Commit Graph

540 Commits

Author SHA1 Message Date
Axel Dörfler
89ae57ba77 Removed sysctl(), there is no need for this BSD-ish call.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17954 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-29 09:37:06 +00:00
Axel Dörfler
9150d65c83 Removed some unused old networking stuff, cleaned syscalls.c.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17946 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-28 14:54:58 +00:00
Axel Dörfler
f62d3b77aa Added a list_get_last_item() call - one day we should make most of them inline.
Or use the C++ list implementation where possible.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17901 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-21 16:13:34 +00:00
Axel Dörfler
0ba0370464 Use B_MAX_SYMLINKS instead of SYMLINKS_MAX (which also fixes the build, btw).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17900 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-21 15:44:46 +00:00
Axel Dörfler
cce6f8d05f * Changed the kernel build rules, so that the executables can have resources
files, too.
* Added a temporary icon for the kernel until Stephan comes up with a better
  one (hint hint!) :-))
* This even fixes bug #648.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-13 16:08:55 +00:00
Axel Dörfler
d51ce54011 * Added the opportunity to add temporary debug interrupt handlers for
arch dependent code (they will be removed as soon as someone else
  asks for these interrupt lines).
* Added an interrupt driven keyboard handler to the kernel that uses
  this technique. As a result, you can now press F12 to enter the kernel
  debugger before the input_server has been started, and Control-Alt-Delete
  should reboot the system (actually I did not test the latter yet).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17806 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-12 22:24:53 +00:00
Axel Dörfler
d367028c04 Fixed warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17801 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-12 21:53:00 +00:00
Axel Dörfler
8265e1210c Implemented mandatory file locking, BeOS style. BNode::Lock() and BNode::Unlock()
are now working as expected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17697 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-02 14:16:13 +00:00
Axel Dörfler
acac7c6834 _vm_map_file() did in fact not work correctly, but the main problem was
vfs_get_vnode_cache() which did not acquire an extra reference to the
cache_ref when the cache had to be created.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17693 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-01 18:21:21 +00:00
Axel Dörfler
a9fa017d82 map_backing_store() did not acquire a cache ref in case it created a private
mapping, but it connected the vm_cache objects, so if it failed later, and
thus called vm_cache_release_ref() the object could have been freed accidently.
Most uses of map_backing_store() explicetly acquired a cache_ref *after* the
call was successful, but _vm_map_file() did not do this.
_vm_map_file() might still not work correctly, though, need to have a closer
look at it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17692 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-01 18:14:59 +00:00
François Revol
84aae13f6d Fix null deref; include \0 when copying paths
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17662 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-31 00:01:01 +00:00
François Revol
8be1739f45 - change the check_pending_repeats from a thread to a kernel_daemon, one less.
- add loading of kernel debugger/ modules
- add a kgets() exported func for use by nasty modules =)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17657 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 19:54:37 +00:00
François Revol
b3baad129f - reordered ioctls cases to match Driver.h
- implemented B_GET_PATH_FOR_DEVICE
- reject 3 legacy ioctls from R5 (*FIXED_DRIVER, NEXT_OPEN)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17656 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 19:52:32 +00:00
Axel Dörfler
974533ab5a * Fixed a big race condition that could leave threads waiting infinitely and
let them eat death stack entries: after setting the next thread state to
  THREAD_STATE_FREE_ON_RESCHED, interrupts were enabled again, which could
  cause the thread to be rescheduled before having called put_death_stack().
  This fixes bug #434.
* Note that the above change pretty much reverts revision 7865 that was supposed
  to fix interrupt problem on thread exit (patch by Jack Burton almost 2 years
  ago, that's how long this problem existed!).
* Made get_death_stack() and put_death_stack() symmetrical in that they don't
  change interrupts. Also pulled out rescheduling from put_death_stack[_and_reschedule]()
  and put it back into thread_exit2().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17652 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 14:17:09 +00:00
Axel Dörfler
c8882988b7 The kernel's struct team now has a field to remember where the arguments of a
running team to be able to fill in the team_info::args field. Currently, only
the path is stored, there, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17646 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 00:21:22 +00:00
Axel Dörfler
f0ed203a59 * B_GET_GEOMETRY is now intercepted and corrected for partitions - this fixes bug
#603.
* Moved devfs_get_partition_info() into the devfs_ioctl() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17622 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-28 15:30:51 +00:00
Axel Dörfler
20914efdcf Made _user_open_entry_ref() a bit more relaxed and return B_BAD_VALUE on some
obvious errors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17586 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-25 13:03:13 +00:00
Axel Dörfler
69c86c993d A stupid typo that caused Haiku to crash when there was no CPU module.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17581 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-24 23:30:30 +00:00
Axel Dörfler
1283fc6e42 No longer call init_mtrrs() if there are no MTRRs, also made generic_init_mtrrs()
no longer try to access any MSRs when there are no MTRRs. Got it? :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17574 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-24 10:18:49 +00:00
Axel Dörfler
517dfdf48b The cache did not correctly retrieve the file map when the file was fragmented
into more than MAX_FILE_IO_VECS pieces. This could have very weird consequences
like overwriting data outside the file (but on that same partition only).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17536 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-22 16:36:20 +00:00
Jérôme Duval
f506eea587 NULL signal should be handled as others, except it has no effect
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-22 10:30:32 +00:00
Stephan Aßmus
bd5ed534cf a fix to the file cache (done by Axel), that prevents a crash when
reading the file map of certain files (hope I got that more or less
right)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-22 09:59:07 +00:00
Axel Dörfler
4b25b1b99a common_lock_node() now pretends to be successful - this should fix Vision not being
able to store its settings for now (bug #589).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17505 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-19 08:54:50 +00:00
Axel Dörfler
01fdd314e5 Some GCC 4.1.0 related build fixes (under Linux/PPC).
Doesn't build yet, though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-17 20:54:12 +00:00
Jérôme Duval
0f22d7cfa8 seems we reversed the timezone offset when setting the hw clock
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17440 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-13 15:41:33 +00:00
Axel Dörfler
2bbc6df8dc * The kernel now remembers the signal that killed a thread (if it was killed).
* As suggested by Korli, the signal is now encoded in the "reason" field of
  wait_for_child().
* waitpid() now sets the status passed in so that the signal can be read out
  (but it still doesn't do it's full job).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17338 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-05 15:33:34 +00:00
Axel Dörfler
3cb039fffa When you try to mount a file image, BFS now only sees the normalized path instead
of the one supplied to fs_mount() (but not the /dev/disk/virtual/... entry, as that
wouldn't be that clear to the user).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17335 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-05 11:17:08 +00:00
Axel Dörfler
65bd831cbb * KDiskDeviceManager::_ScanPartition() can now run synchronously (and execute the
scan job in the calling thread).
* KDiskDeviceManager::InitialDeviceScan() now runs synchronously, so that
  get_boot_partitions() doesn't need to do this ugly wait hack.
* KDiskDeviceManager::CreateFileDevice() can now run synchronously as well, which
  fixes a deadlock in fs_mount() - note, mounting file devices still doesn't work,
  though as Haiku's BFS doesn't allow this right now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17334 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-05 10:54:10 +00:00
Axel Dörfler
b02b72c448 Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17333 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-05 10:44:07 +00:00
Axel Dörfler
dde52de872 * _NewReadLockInfo() can no longer crash in case the allocation failed.
* _ReadLock() will now fail with B_NO_MEMORY in case the ReadLockInfo couldn't
  be created.
* Note, due to a design bug, we cannot guarantee that a previous read lock
  can be reestablished after releasing a write lock in case of low memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17332 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-05 10:10:05 +00:00
Axel Dörfler
573c4336a3 Implemented quite a hack to solve the lockless get_memory_map() problem (bug #349):
when called with interrupts turned off, get_memory_map() will now call the new
vm_translation_map_ops::query_interrupt() call.
Under PPC, this is trivial (at least right now), but on x86 we need to make sure
we have access to the page table entry, ie. we need to create an area that points
to its own page table entry, so that we can map in the page table entry containing
the address we're looking for. It's not really nice, feel free to come up with
a cleaner solution :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17280 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-30 17:45:33 +00:00
Axel Dörfler
77a08c68e8 Changed the way handlers for edge triggered interrupt are called: now, we
always call all handlers in this case, but we still try to return the correct
return code (ie. B_HANDLED_INTERRUPT and B_INVOKE_SCHEDULER).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17278 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-30 13:56:21 +00:00
Axel Dörfler
f7a446f46f Oops, actually forgot to press "save" in the editor to include the real thing...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17277 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-30 13:44:24 +00:00
Axel Dörfler
99df69077c For level triggered interrupts, we now acknowledge the interrupt after having called
the interrupt handlers, not before (like we do for edge triggered ones).
This should prevent hardware from issuing a second interrupt when the software driver
is still busy handling the first.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17276 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-30 13:43:05 +00:00
Axel Dörfler
5886ae3213 Finally (!) fixed that stupid bug that prevented at least some Pentium-M laptops to
work correctly when on power supply (ie. when running at full speed). Turns out we
misdetected a spurious interrupt on line 15 - we now ignore them completely which
seems to fix that problem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17275 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-30 13:35:53 +00:00
Michael Lotz
17fee3eab7 Removed the extra info struct in the cpu_ent union and made said union a struct instead. Same as r1137 in NewOS.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17273 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-29 22:38:19 +00:00
Michael Lotz
2a03240eb1 Reverted my last change as it turned out that the lazy FPU state handling was not SMP safe afterall and the performance gain is questionable. Maybe it'll be implemented correctly in the future. Sorry for any inconvenience this may have cost.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-29 22:10:04 +00:00
Michael Lotz
7eee76e65a Implemented lazy FPU state save/restore. In the end mostly ported from NewOS. SMP safe.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-27 22:02:48 +00:00
Axel Dörfler
11add5a5d7 First baby step towards a lockless get_memory_map(): vm_get_current_user_address_space()
no longer needs to lock address space hash table - that also makes the lookup much
faster, too (and a direct pointer is used instead of a hash lookup).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17246 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-27 17:46:19 +00:00
Axel Dörfler
4827dbe47a Fixed a bug in the VFS that could cause BFS to corrupt an inode:
dir_remove() did not normalize the path, and thus, could forward a "." as
name for the removed directory - which BFS didn't catch because it assumed
our VFS would work correctly...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-18 17:40:27 +00:00
Axel Dörfler
a88c592fb3 Instead of ending up in an endless loop, fs_sync() will now bail out in
case get_vnode() fails.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17162 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-18 14:50:36 +00:00
Axel Dörfler
fde87a1094 Instead of waiting forever, get_vnode() will now fail after 3 seconds if the
vnode is not becoming unbusy (right now it even panics, but that can be removed
later on).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17161 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-18 13:55:47 +00:00
Axel Dörfler
80fda87e9c find_thread() now returns B_NAME_NOT_FOUND when it doesn't find the thread
as stated in the BeBook - this fixes bug #458 as Tracker directly compared
with that error code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17144 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-16 17:53:10 +00:00
Axel Dörfler
b2536cb5d6 Fixed bug #483:
* vfs_get_fs_node_from_path() now also work for absolute paths again (but
  still for relative ones from the volume root) - it just tests if the
  mount IDs fit, so it only returns successful if the path really is on
  the desired mount.
* the Disk Device Manager publish functions now call devfs_publish_*()
  correctly (by omitting the "/dev/" mount point).
* devfs_publish_partition() now accepts absolute device paths but relative
  partition paths.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17138 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-16 11:44:54 +00:00
Michael Lotz
b026647574 Changed the temporary buffer to be static to avoid using that much stack. Replaced wrong maximum buffer length (oops).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17137 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-16 10:56:00 +00:00
Michael Lotz
1df23ecc52 Should finally fix the eaten up messages. We obviously must not use the output buffer to write the repeat count as the output buffer already contains the new message...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17131 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-14 12:38:31 +00:00
Axel Dörfler
9a11448fbd vfs_get_fs_node_from_path() didn't work correctly and ignored the mount_id
(ie. it only worked for absolute paths, but it shouldn't work for those at
all).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17127 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-13 18:06:30 +00:00
Axel Dörfler
97e069713b Added a "reenter" parameter to the {read|write}_pages() functions to give file
systems a chance to know if they have locked already.
This fixes a locking problem in BFS where one thread tried to acquire two read
locks (where someone else trying to acquire a write lock would have caused a
dead lock).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-12 13:34:04 +00:00
Michael Lotz
2f5143505b Another try at removing the "Last message repeated 1 times.", this time with locking.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17099 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-11 21:11:50 +00:00
Michael Lotz
6ac6b512a0 Reverted my last change as it causes a segfault with syslog output enabled.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17094 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-11 19:40:49 +00:00
Axel Dörfler
8645479b36 * cache_io() could insert a second page at the same position in the vm_cache
since it unlocked the cache while waiting on a busy page. Now, we're filling
  the pending request before unlocking the cache.
* Fixed the deadlock I mentioned in the last commit: if a page fault happens
  at the same time we're trying to read/write from/to a page, we no longer
  fight for the BFS inode lock, but eventually doing the job twice if needed.
  Will need to go over the "write modified" functions to make sure they are
  behaving as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-11 18:48:04 +00:00
Axel Dörfler
be891a5e5d No longer counts "\n" as repeated string - this seems to fix at least the cases
where I noticed missing debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17090 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-11 18:40:46 +00:00
Michael Lotz
d7faea3f20 Replaced "Last message repeated 1 times." with just reprinting the message (requested by Jerome Duval).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-10 21:28:43 +00:00
Axel Dörfler
675c19c9cf * fs_sync() and free_vnode() now use the file system's fsync() hook to write back
changes made to a file instead of directly using vm_cache_write_modified() -
  besides making the file system more independent from the file cache, this also
  works around a possible dead lock (that is to be fixed in a later commit).
* fs_sync() no longer uses vnodes from the mount's vnode list directly to write
  back the changes made to them, but gets them via ID instead - this makes sure
  the vnode is in a valid state and fixes a race condition with free_vnode().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17059 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-10 21:22:24 +00:00
Michael Lotz
f51fb4696c Corrected the repeat checks (did not compare the right buffers) and added a length argument to debug_puts() to safe the strlen in the syslog case. Also removed some leftover.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16991 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-03 20:48:30 +00:00
Michael Lotz
3647d70ded Replaced the hash based approach to repeat detection with the probably more efficient strncmp.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16970 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-02 16:45:04 +00:00
Michael Lotz
3352a462a7 Implemented the "Last message repeated x times." thing in the kernel (hash based).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16968 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-02 16:23:47 +00:00
Axel Dörfler
af3e5cd947 Renamed our runtime loader from rld.so to runtime_loader, and moved it into beos/system/.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16936 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-30 18:08:51 +00:00
Axel Dörfler
2a62d0d6c5 Added a second pass to the boot device retrieval in case nothing has been found.
Right now, the size of the device is ignored in the second pass. Maybe this helps
with bug #357.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16917 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-29 00:16:57 +00:00
Axel Dörfler
606e0d364e * Factored out the vnode disconnection code from fs_unmount() to a separate
function, and added a vfs_disconnect_vnode() for other kernel components.
* devfs_unpublish_device() can now optionally make use of this call.
* Fixed the type check of devfs' unpublish_node().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16907 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-28 01:13:12 +00:00
Axel Dörfler
065aa7f66c Added a basic unpublishing function for drivers, not yet tested, though (and even
though it looks so simple, I see no reason why it shouldn't work 8-)).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-28 00:13:44 +00:00
Axel Dörfler
fabe8c62ff The kernel boot code now supports the unknown bus/device method to identify the
boot volume. The other (better) methods are now disabled in the boot loader.
This fixes bug #241.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16895 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-27 17:01:10 +00:00
Axel Dörfler
d140fed68f Turned off some debug output, the device tree is no longer dumped (was a partial
tree only, anyway, as it was dumped before the recognition of any devices).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16893 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-27 15:14:30 +00:00
Axel Dörfler
c918a987a0 * Removed my old doubly linked list implementation, and stay with Ingo's.
* Adapt other sources where needed (the boot loader's RootFileSystem still
  used the old implementation).
* Implemented RootFileSystem::Rewind().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-27 10:27:05 +00:00
Axel Dörfler
7d2fafcac5 Forgot even more debug output...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-26 18:45:54 +00:00
Axel Dörfler
61106f7e86 Forgot to remove some debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-26 17:11:43 +00:00
Axel Dörfler
c14a34a65f * Improved kernel ELF loader (and made it more similar to the one from the boot
loader): it now supports holes between segments, and accepts any segment order.
* Renamed elf.c to elf.cpp and fixed warnings.
* Renamed elf_image_info::dynamic_ptr and eheader to dynamic_section and elf_header.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-26 15:58:43 +00:00
Axel Dörfler
342c2a73ab Improved debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-24 21:27:01 +00:00
Axel Dörfler
5ba2a3839d Improved the filter capabilities of the "ports", "port", "sems", and "areas" debugger commands.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-24 12:59:23 +00:00
Axel Dörfler
db823da57e * Even though our current heap is a temporary solution, the heap size depends
now on the amount of memory installed in the system. Ie. if you have only
  128 MB the kernel heap will be only half in size.
* Minor cleanup in vm_page.c, renamed some variables to match our style guide.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16838 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-19 15:02:21 +00:00
Axel Dörfler
5f0bf2a3e1 We now track how many pages are in a vm_cache. Therefore, the area_info.ram_size
now reflects the number of pages in the areas cache, instead of just the size of the
area.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16834 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 20:17:31 +00:00
Axel Dörfler
66b7a0f477 Renamed the _kern_init_heap_address_range() syscall to _kern_reserve_heap_address_range()
and made it more powerful.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16825 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 12:52:01 +00:00
Axel Dörfler
c864c43bab Fixed warning I just introduced.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16793 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-14 20:29:50 +00:00
Axel Dörfler
baf7b0adf0 Broke the build once more: didn't remember that gettimeofday() was built
for the kernel as well, and thus we need to export _kern_get_timezone(),
too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16792 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-14 20:22:50 +00:00
Axel Dörfler
f46bdd1c9a Added a _kern_get_timezone() syscall that can be used without needing to
re-evaluate the timezone file over and over.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16785 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-14 14:29:56 +00:00
Axel Dörfler
33dd85501f Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16784 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-14 14:27:59 +00:00
Axel Dörfler
5d35aa2833 I don't think kill_thread() is actually supposed to wait for the thread
to be killed. Reverted ShutdownProcess.cpp to continue to use kill_team()
instead of sending a signal.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16780 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-14 01:54:49 +00:00
Axel Dörfler
51aacbbb39 * open_module_list() put the wrong base path length onto the stack, and thus,
no on-disk modules could be found... (since revision 16584).
* iterator_get_next_module() now makes use of the KPath features, and doesn't
  build the new path manually anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16745 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-12 19:48:28 +00:00
Axel Dörfler
b0976eac74 * Reduced the effects of "priority boost on sem release" to a minimum;
the thread priority is now increased by one, we'll see how that turns
  out for real (I'm not even convinced that this feature is a good idea
  at all yet).
* Enabled debugging the last semaphore acquirer by default.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16744 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-12 17:24:31 +00:00
Axel Dörfler
6d24fdc557 Better means to debug apps that try to acquire kernel semaphores.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-10 23:55:50 +00:00
Axel Dörfler
abb84c7d51 Removing the nodes from the unused list in fs_unmount() had the side effect that
the root vnode was tried to be removed as well (which resulted in a crash).
Since playing with the root node reference count is a bad idea anyway and opens
a big race condition (with regards to the unused list), we no longer do that
now, until it's safe.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16665 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-08 22:57:53 +00:00
Axel Dörfler
17372b761e * If there are no free ranges left, the block cache will now reuse older
blocks - this is not enough, though as it would also need to ask other
  volumes to free ranges.
* Increased the number of blocks to free in case of low memory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16663 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-08 21:43:45 +00:00
Axel Dörfler
f951ca0e6a Fixed a couple of bugs:
* fs_unmount() freed vnodes, but didn't remove them from the unused list if
  needed.
* vfs_get_module_path() could put a vnode twice under several situations.
* vnode_path_to_vnode() now always puts the dir vnode, even if the provided
  path is NULL. Documented the fact that it does eat the ref, too.
* Added a to-do item in vfs_get_vnode_cache() about a possible problem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16662 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-08 21:42:14 +00:00
Axel Dörfler
4d664f91ca * Closing a port now also deletes the port's semaphores, so that a pending write_port(),
read_port() or port_buffer_size() will fail immediately.
* Made the functions above plus port_count() support this new way of closing
  a port.
* All of Marcus's port tests now succeed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16655 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-08 17:09:20 +00:00
Axel Dörfler
33a9adb376 * Added a wait_for_thread_etc() function that allows specifying semaphore flags
and a timeout.
* _user_wait_for_thread() was not interruptible before, ie. Control-C wouldn't
  work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-08 16:41:03 +00:00
Axel Dörfler
457c814fdc read_port() and port_buffer_size() will now fail with B_BAD_PORT_ID when called
on a closed port with no messages left.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16647 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-08 15:08:48 +00:00
Axel Dörfler
311bcf391f Fixed a possible deadlock I've introduced earlier (since create_sem() calls
vfs_free_unused_vnodes()); the vnode mutex is now hold for much shorter times
only:
* Rewrote advisory_locking creation/maintenance to hold the vnode mutex only
  for very short times.
* the vnode mutex is no longer held during file cache construction; instead,
  the vnode is marked busy.
* Implemented an (incorrect for now) get_advisory_lock()


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-07 20:40:38 +00:00
Axel Dörfler
b4499305c7 vm_cache_resize() could remove one page too many, and thus eventually free
a modified page that mustn't be removed. This fixes bug #110.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16613 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-06 22:28:40 +00:00
Axel Dörfler
9f6376a0c7 * get_vnode() did not decrease the sUnusedVnodes counter when taking one node
of that list.
* Added a vfs_free_unused_vnodes() function that calls the low memory handler
  directly.
* create_sem_etc() now calls the above function in case there are no semaphores
  available anymore; this usually frees up to 2 semaphores per node (one from
  the cache if there is a file cache attached, and eventually one from the
  file system).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-06 16:18:52 +00:00
Axel Dörfler
d3fbce573c * Added a debugger command "info" that dumps some basic system usage info.
* Renamed OBOS_ARCH macro to HAIKU_ARCH.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-06 13:40:36 +00:00
Axel Dörfler
d98d96e9e5 Added debugger command that dumps info about the vnode usage.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16607 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-06 13:39:04 +00:00
Axel Dörfler
611b96cd42 Fixed "strange" debugger commands in help listing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-06 13:38:16 +00:00
Axel Dörfler
b420ef6461 * Many VM area creation functions just panicked when a vm_store, vm_cache,
or vm_cache_ref couldn't be created, instead of cleaning up and returning
  an appropriate error.
* vm_cache_ref_create() no returns a status_t instead of the vm_cache_ref
  (as that's part of the vm_cache anyway).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16602 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-06 13:06:10 +00:00
Axel Dörfler
8413da2383 Like the comment above said, vfs_lookup_vnode() doesn't grab a ref to the vnode,
so we better shouldn't release it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-05 20:55:35 +00:00
Axel Dörfler
0254f09df2 It's not so problematic if a busy vnode was released; what is problematic is
if that was the last ref.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16590 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-05 20:54:17 +00:00
Axel Dörfler
0d4c16e0c0 * Reduced the stack usage of most of the I/O paths - there were several places
that put one or more full paths on the stack before, which could cause some
  problems under certain conditions.
* Cleaned up KPath, ie. use size_t instead of int32 where appropriate, added
  license.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-05 18:11:59 +00:00
Axel Dörfler
5d13c758d1 * Reduced stack usage for iterator_get_next_module() quite a bit by no
longer pushing a whole path on the stack.
* open_module_list() now adds the prefix to the paths it puts on the
  stack to reduce the amount of searching to do (this probably wasn't
  done before because of the earlier boot method via bootfs which
  didn't allow for deep path names).
* module.c is now module.cpp (for KPath usage).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-05 18:09:19 +00:00
Axel Dörfler
bb674499f8 * Finally implemented B_WATCH_MOUNT, ie. Tracker now shows newly mounted volumes
(mounting still only works from the Terminal).
* Shuffled functions in node_monitor.cpp around to clearly differentiate between
  private, private kernel, and public kernel functions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16575 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-03 11:48:49 +00:00
Axel Dörfler
d5062208bb * Added a new list_insert_item_before() function that inserts a new item
before another one in the list.
* The video modes in the boot loader are now sorted (by resolution, larger
  resolution comes first). Doubled entries are automatically removed; this
  fixes bug #192.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16572 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-02 22:48:47 +00:00
Axel Dörfler
f94b06f992 Implemented SSE2/3 support (tested with VLC).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16569 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-02 17:12:56 +00:00
Ingo Weinhold
e68c6184ca user_debug_exception_occurred() now checks whether a non-default signal
action has been set for the signal. If so, it doesn't try to install a
debugger, but simply lets the caller deliver the signal.
Fixes bug #237 (VLC entering the debugger when checking for processor
extensions).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16556 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-28 23:03:06 +00:00
Marcus Overhagen
89d76e508d changed get_cached_block() to no longer use a reference argument
modified to panic when an invalid block is requested (to find fs errors)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-27 18:03:42 +00:00
Axel Dörfler
3ea7d1fcbe Minor cleanup, now returns B_NAME_TOO_LONG if the query string or mount parameters were
longer than 64k.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-27 13:23:29 +00:00
Stephan Aßmus
fb39ecb534 * Added an "iospace" debugger command.
* Fixed broken "full sem" mechanism.
* Fixed recycling of previously mapped IO space chunks. Should avoid the
  panic() call earlier introduced by Marcus.

(tracked down by axeld and bonefish over the course of three days
(in between skiing) and finally nailed on the bus back home)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16511 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-26 17:44:27 +00:00
Stephan Aßmus
b270799715 * read_chunk_into_cache() might not have put back physical pages
in case of a read error.

(coded by axeld)



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16510 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-26 17:41:38 +00:00
Jérôme Duval
5a2ad00cab fix a TODO in _user_mount : added an argsLength parameter
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-20 18:04:27 +00:00
Axel Dörfler
333dcda418 The kernel debugger now only puts printable characters into the input buffer.
This should eliminate the cases where commands doesn't seem to be accepted (but look fine on screen).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16453 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-17 12:21:28 +00:00
Axel Dörfler
1be006f2cf No longer says "unknown command" to an empty input string in the debugger.
This fixes bug #189.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16452 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-17 11:43:47 +00:00
Marcus Overhagen
e87d23b1a7 added a panic into a loop that often causes a deadlock here
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-13 17:52:35 +00:00
Axel Dörfler
3cd6e76965 /dev/dprintf and _kern_debug_output() weren't dumped to the syslog before, even
if "syslog_debug_output" was set to "true". Reported by Jerome!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16290 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-07 23:45:44 +00:00
Axel Dörfler
d31d9974ba Slightly improved debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16288 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-07 16:55:06 +00:00
Ingo Weinhold
f4b0f67cf6 Added [arch_]int_post_device_manager() which is invoked after
the device manager is initialized. For x86 it does nothing, but
for PPC it searches for a supported interrupt controller and
remembers it for later use.
arch_int_{enable,disable}_io_interrupt() are implemented as
well as handling of external exceptions (aka as I/O interrupts).
We'll see later how well that works.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-07 02:50:32 +00:00
Ingo Weinhold
3277aade49 * Added get_root() to device_manager_info. Surprisingly enough, it
returns the root device node. Now its actually possible to
  traverse the device node tree without a node to start with.
* Fixed execution order problem in dm_get_next_child_node(). The
  supplied node was put first (which could cause its immediate
  deletion), but was still accessed thereafter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16268 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-07 02:29:14 +00:00
Axel Dörfler
811ada6cae Fixed wait_for_resources() locking, reported by Ingo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-03 17:12:34 +00:00
Axel Dörfler
d14aab0dca Changed the way how CPU activity is monitored: instead of taking the active
time of the idle thread as a measure, we now compute the CPU activity on
each thread switch - the time the CPU worked is the total of user and kernel
time a thread spent during its quantum.
Unlike before, this mechanism works correctly on SMP machines. I hope this
works as expected :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-01 20:03:55 +00:00
Axel Dörfler
df213cedbc * CPUs can now be disabled - that is, they will keep idling.
* Added syscalls _kern_set_cpu_enabled() and _kern_cpu_enabled().
* scheduler.c::sRunQueue::tail was not maintained at all; changed sRunQueue to
  be a simple thread pointer instead of a struct thread_queue.
* Turns out we're monitoring CPU activity incorrectly when we've got more
  than one CPU.
* Renamed the global CPU array from "cpu" to gCPU.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16186 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-01 16:09:05 +00:00
Axel Dörfler
99085d6771 Added an extra debug function that dumps all iframes in case the stack crawl
doesn't work correctly for some reason.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16180 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-01 12:35:10 +00:00
Axel Dörfler
562c5a27d9 Make sure the compiler knows what we want.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16179 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-01 12:34:03 +00:00
Axel Dörfler
f1d806fe5d Fixed call_all_cpus(): it shouldn't call the function synchronously; inter-CPU
synchronization as done in init_mtrrs() failed because of that (let the system
hang).
Unfortunately, MTRR still doesn't work on my dual PIII with SMP enabled; that
was just one reason it didn't work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16173 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-31 18:30:34 +00:00
Axel Dörfler
204131dc97 Added a real yield function to the kernel (using the next_priority approach).
The test application lets run a thread at the highest priority that calls
yield all the time - the system stays responsible when it runs, so it seems
to work fine :)
Changed the malloc implementation to use _kern_thread_yield() instead of
snoozing.
We should think about making this call public, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16166 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-31 02:29:02 +00:00
Axel Dörfler
d14af9fde6 Introduced a next_priority field to struct thread that will be used when
enqueueing a thread to the run queue.
This mechanism is now used for the thread priority boost on semaphore
release. Also, those threads are no longer made real time threads, they
now get a temporary priority of B_FIRST_REAL_TIME_PRIORITY - 1.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16165 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-31 01:58:49 +00:00
Axel Dörfler
5d16441307 Now usually ignores the length of the data segment as well.
It now works fine on my P4 system as well :-)
But since the BIOS area is not identity mapped, it might work on fewer systems
than it does in BeOS R5.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16154 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-30 16:32:47 +00:00
Axel Dörfler
afef4f3fff The syslog_daemon now ignores zero length messages, and the kernel's syslog
mechanism doesn't send them out any longer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16153 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-30 16:09:24 +00:00
Axel Dörfler
bd610d2fcd * Added kernel settings for APM - defaults to disabled (since it doesn't work
on at least one of my systems, it only works on 3 of them...).
* Added APM safemode setting.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16152 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-30 14:43:38 +00:00
Axel Dörfler
8a1f6775b9 * You can now specify a thread when using the "unreal" debugger command.
* Added a thread priority column to the thread list.
* Added "realtime" command that lists all real-time threads.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16141 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-29 19:50:00 +00:00
Axel Dörfler
5da68569d0 The APM now successfully shuts down my IBM ThinkPad T40. It's still disabled
for more testing on other machines.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16136 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-29 15:51:33 +00:00
Axel Dörfler
036b999b54 Unbroke the build (ps2.h was suddenly missing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16121 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-28 18:48:50 +00:00
Axel Dörfler
afd6dfc8b4 Implemented first basic APM driver. Only tested with QEMU so far, that's why
it's currently disabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16120 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-28 18:11:20 +00:00
Axel Dörfler
1bb74eb185 This fixes the work-around made in r16105, and some more:
* cached_block::parent_data can be NULL in a sub transaction in case the
  block wasn't part of the parent transaction (but not in low memory
  situations). cache_abort_sub_transaction() and cache_detach_sub_transaction()
  didn't account for this, though, ie. the block data could end up
  corrupted.
* Renamed cached_block::original in original_data.
* Renamed cached_block::data in current_data.
* Added some comments.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-26 21:02:53 +00:00
Jérôme Duval
2e5ac35292 fixed some traces
cache_abort_sub_transaction now doesn't crash if parent_cache is NULL (happens in low memory situations)
Axel, please review and fix if needed


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16105 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-26 16:42:12 +00:00
Ingo Weinhold
f602da2b72 * Turned the kernel platform support from a library into an object.
* Moved the Open Firmware function platform_get_next_device() from
  the boot loader into the kernel (renamed to of_get_next_device()).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16101 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-26 15:06:59 +00:00
Ingo Weinhold
6cdd45a94b Added enum to PPCPlatform to identify the platform.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16099 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-26 14:59:16 +00:00
Axel Dörfler
924479179b Implemented on screen debug output during boot - to be enabled in the boot loader
safemode menu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16081 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-25 16:12:10 +00:00
Axel Dörfler
979aeaf71c Fixed bug #97:
* BEntry::Remove() now uses _kern_remove_dir() for directories.
* Added fd parameter to _kern_remove_dir().
* Fixed LibBeAdapter's _kern_unlink() to only work on files, and
  added _kern_remove_dir() for directories.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16078 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-25 11:12:21 +00:00
Axel Dörfler
7f370a1f89 * Fixed settings evaluation.
* exchanged sBlueScreenEnabled and sBlueScreenOutput (so that they better
  match the sSerialDebugEnabled and sSyslogDebugEnabled variables).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16077 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-24 21:52:53 +00:00
Axel Dörfler
ad4afa7409 Added unused ring_buffer_write_to_port() implementation - we might never use it,
but it shouldn't hurt to have it in SVN.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16076 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-24 21:50:41 +00:00
Axel Dörfler
eb2fc29abd Implemented syslog support for the kernel debug output. Not fancy at all yet, but
it seems to be working fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16073 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-24 20:28:52 +00:00
Axel Dörfler
d97476d155 The userland stack trace no longer accesses the stack of the crashed application unsafe.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16071 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-24 17:22:50 +00:00
Jérôme Duval
e947a6d02f improbed tabbing
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-24 10:56:10 +00:00
Axel Dörfler
627e4043a8 Improved debug output.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16042 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-23 11:41:07 +00:00
Axel Dörfler
7817211a38 Allow only root to look at other team's file descriptors.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15992 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-17 01:44:18 +00:00
Axel Dörfler
0e382a4667 Implemented a syscall to get information about the open file descriptors of all teams.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15991 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-17 01:29:18 +00:00
Axel Dörfler
ddb7d0b6a6 Implemented force unmounting - by passing the "-f" option to "unmount" you
can now safely unmount volumes that are still in use by some applications.
Minor fixes to the FD disconnection implementation:
* put_fd() checked the condition for being able to disconnect a descriptor
  incorrectly (causing the FD to never be disconnected).
* remove_fd() would hand out disconnected descriptors (but should have
  returned NULL for them).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-15 19:26:42 +00:00
Axel Dörfler
60e5ea42e0 Quick fix for a crashing bug I just introduced.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15951 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-15 18:30:07 +00:00
Axel Dörfler
128165101a Implemented disconnecting file descriptors: this will be used by the
force unmounting code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15949 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-15 17:11:48 +00:00
Marcus Overhagen
7c446ef048 In wait_for_thread allow userReturnCode to be NULL regardless whether NULL is a valid IS_USER_ADDRESS
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15946 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-15 13:26:18 +00:00
Ingo Weinhold
7afc16f059 * Fixed a bug regarding storing/restoring FPSCR in the interrupt
code. The stack pointer was not adjusted, hence we were
  overwriting the previous register value. But it looks like I
  missed to check in the arch_cpu.h with the iframe structure
  including the floating point registers anyway.
* Backported the ELF PPC relocation code from the boot loader to
  the kernel.
* Fixed the PPC version of arch_thread_switch_kstack_and_call().
  Apparently the signature had changed, but the assembly
  implementation was not adjusted accordingly.
* sc prints more registers now (LR, CR, CTR, XER,...).
* Fixed several occurences of not-working fault handlers.
  Apparently the compiler realized, that the "error" label was
  never jumped to (by the code it knew), and optimized the
  respective code away. Now we use a trick to make it think the
  error label might actually be jumped to. I wonder whether the
  x86 version has the same problem when being compiled with GCC4.
* Adopted the x86 page fault handling interrupt code.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15933 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-13 00:49:13 +00:00
Ingo Weinhold
71848dd62f arch_elf.c -> arch_elf.cpp
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-11 14:26:15 +00:00
Ingo Weinhold
b33f1804ea Faster/shorter way of aligning something.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15909 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-11 14:14:50 +00:00
Ingo Weinhold
b7ba8a182f We enable the FPU now, store the non-volatile FPU registers on
context switches and all FPU registers in an iframe. We might want
to rethink this, though.
The kernel initialization runs to the end now. No boot volume is
found yet, but that is expected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-11 13:51:38 +00:00