haiku/headers/private/kernel
Ingo Weinhold 4048494ce4 axeld + bonefish:
* Implemented automatic syscall restarts:
  - A syscall can indicate that it has been interrupted and can be
    restarted by setting a respective bit in thread::flags. It can
    store parameters it wants to be preserved for the restart in
    thread::syscall_restart::parameters. Another thread::flags bit
    indicates whether it has been restarted.
  - handle_signals() clears the restart flag, if the handled signal
    has a handler function installed and SA_RESTART is not set. Another
    thread flag (THREAD_FLAGS_DONT_RESTART_SYSCALL) can prevent syscalls
    from being restarted, even if they could be (not used yet, but we
    might want to use it in resume_thread(), so that we stay
    behaviorally compatible with BeOS).
  - The architecture specific syscall handler restarts the syscall, if
    the restart flag is set. Implemented for x86 only.
  - Added some support functions in the private <syscall_restart.h> to
    simplify the syscall restart code in the syscalls.
  - Adjusted all syscalls that can potentially be restarted accordingly.
  - _user_ioctl() sets new thread flag THREAD_FLAGS_IOCTL_SYSCALL while
    calling the underlying FS's/driver's hook, so that syscall restarts
    can also be supported there.
* thread_at_kernel_exit() invokes handle_signals() in a loop now, as
  long as the latter indicates that the thread shall be suspended, so
  that after waking up signals received in the meantime will be handled
  before the thread returns to userland. Adjusted handle_signals()
  accordingly -- when encountering a suspending signal we don't check
  for further signals.
* Fixed sigsuspend(): Suspending the thread and rescheduling doesn't
  result in the correct behavior. Instead we employ a temporary
  condition variable and interruptably wait on it. The POSIX test
  suite test passes, now.
* Made the switch_sem[_etc]() behavior on interruption consistent.
  Depending on when the signal arrived (before the call or when already
  waiting) the first semaphore would or wouldn't be released. Now we
  consistently release it.
* Refactored _user_{read,write}[v]() syscalls. Use a common function for
  either pair. The iovec version doesn't fail anymore, if anything could
  be read/written at all. It also checks whether a complete vector
  could be read/written, so that we won't skip data, if the underlying
  FS/driver couldn't read/write more ATM.
* Some refactoring in the x86 syscall handler: The int 99 and sysenter
  handlers use a common subroutine to avoid code duplication.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23983 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-17 15:48:30 +00:00
..
arch axeld + bonefish: 2008-02-17 15:48:30 +00:00
boot Avoid empty struct 2008-01-06 00:40:17 +00:00
disk_device_manager On a media change, the KDiskDevice must do a bit more than it did: 2007-11-13 12:18:06 +00:00
fs Forgot the header change in the last commit. 2007-12-06 21:41:08 +00:00
platform/openfirmware Added some PPC support to the PCI bus manager. We scan the Open Firmware 2006-01-26 15:21:31 +00:00
slab * Temporarily switched to a recursive lock for the depot. 2008-02-02 12:12:54 +00:00
util * Added a new function hash_insert_grow() that grows the hash table when needed. 2008-01-21 19:57:40 +00:00
block_cache.h First step into a new block allocation strategy for the block_cache 2005-05-13 18:18:28 +00:00
boot_device.h Moved declaration of gBootDevice into its own header. 2005-12-12 16:06:33 +00:00
boot_item.h The boot item list was not initialized; this was no problem, though, as 2005-06-13 13:01:13 +00:00
cbuf.h Removed execute property that was set accidently (since CVS days). 2005-03-18 01:50:45 +00:00
commpage.h Merged branch haiku/branches/developer/bonefish/optimization revision 2008-01-11 00:36:44 +00:00
condition_variable.h Added usage message to "cvar" and "cvars" debugger commands and define 2008-01-17 23:22:29 +00:00
console.h Made the header C++ safe. 2005-05-26 09:08:54 +00:00
cpu.h yet another fix for #1018, which has at this point blossomed into a reorg of how AP cpus are initialized. 2007-02-19 00:11:24 +00:00
debug.h * Debugger modules now have two methods: enter_debugger() and exit_debugger(). 2008-01-31 12:25:43 +00:00
elf32.h * Improved kernel ELF loader (and made it more similar to the one from the boot 2006-03-26 15:58:43 +00:00
elf_priv.h * struct vnode is an opaque type now, removed void* where it was used incorrectly. 2007-10-06 15:33:12 +00:00
elf.h Added support for userland symbol lookup in "sc" and "call". Having 2008-01-19 16:33:03 +00:00
file_cache.h * struct vnode is an opaque type now, removed void* where it was used incorrectly. 2007-10-06 15:33:12 +00:00
frame_buffer_console.h Some work in progress of the MTRR support. Shouldn't do any harm yet :-) 2005-12-13 00:06:52 +00:00
generic_syscall.h As suggested by Ingo, the "subsystem" parameter is now a string. That allows 2004-12-14 17:09:06 +00:00
heap.h Complete rework of the heap implementation. Freelists are now part of the pages 2008-02-10 21:00:13 +00:00
int.h Changed the way handlers for edge triggered interrupt are called: now, we 2006-04-30 13:56:21 +00:00
kdevice_manager.h added a jam rule AddDriverRegistrationToHaikuImage to add device mappings on the image 2006-11-29 19:09:45 +00:00
kdriver_settings.h Added driver_settings support to the kernel_args structure. 2005-01-10 07:36:08 +00:00
kernel_daemon.h Added the kernel_daemon.h header which defines the init function for the 2003-01-26 17:27:42 +00:00
kernel.h Increased kernel stack size by another page. The network boot is more 2007-07-19 14:03:49 +00:00
kimage.h Added a image_debug_lookup_user_symbol_address() that one day may find symbol names 2005-11-04 17:25:58 +00:00
kmodule.h Added function prototypes for the kernel private load_module() and unload_module() calls. 2005-01-18 02:34:00 +00:00
kscheduler.h Changed the boot procedure a bit. 2005-10-25 16:59:12 +00:00
ksignal.h * Added is_signal_blocked() convenience function. 2007-09-06 02:03:43 +00:00
ksyscalls.h Also include info about the syscall return type in the 2008-02-07 16:03:00 +00:00
lock.h It is a good idea to return a value. :) 2008-02-01 23:24:10 +00:00
messaging.h Added _user_unregister_messaging_service(). Fixed second send_message() proto. 2005-01-24 01:19:03 +00:00
MessagingServiceDefs.h Removed obsolete struct. 2005-01-30 01:11:33 +00:00
Notifications.h bonefish+axeld: 2007-08-01 14:48:44 +00:00
port.h * Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of 2007-10-02 19:47:31 +00:00
real_time_clock.h Applied patch by Julun: time computations based on an algorithm by Fliegel, 2007-10-14 17:27:44 +00:00
real_time_data.h The real_time_data structure contains an architecture specific 2006-01-04 02:17:59 +00:00
safemode.h Implemented "fail_safe_video_mode" boot option; if you're using it, the app_server 2007-06-03 20:20:19 +00:00
sem.h * Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of 2007-10-02 19:47:31 +00:00
smp.h this seems to solve the 'lock up on bootup on core 2' problem. 2007-03-01 08:09:28 +00:00
syscall_process_info.h Added syscalls for various process/group/session related functions. 2004-10-14 14:31:31 +00:00
syscall_restart.h axeld + bonefish: 2008-02-17 15:48:30 +00:00
syscalls.h Added new syscall _kern_normalize_path() to normalize a path. 2008-02-08 03:06:14 +00:00
system_info.h Added Haiku revision number to the kernel (same mechanism as used for 2007-05-19 15:36:32 +00:00
team.h * We store the ID of the controlling terminal and the foreground process 2007-09-06 02:16:25 +00:00
thread_types.h axeld + bonefish: 2008-02-17 15:48:30 +00:00
thread.h Added a boolean "force" parameter to thread_yield(). When true, the 2008-02-07 11:40:31 +00:00
timer.h Removed execute property that was set accidently (since CVS days). 2005-03-18 01:50:45 +00:00
tls.h Added another argument parameter for the thread creation code. Helps 2003-04-18 09:21:22 +00:00
tracing_config.h Adding two debug features to the new heap implementation: 2008-02-12 20:20:35 +00:00
tracing.h * Removed AbstractTraceEntry::sPrintTeamID and added a flags field to 2008-02-04 17:54:40 +00:00
user_atomic.h renamed atomic_read() into atomic_get() (since we already have atomic_set(), but not a atomic_write()) 2003-08-31 01:21:56 +00:00
user_debugger.h Merged branch haiku/branches/developer/bonefish/optimization revision 2008-01-11 00:36:44 +00:00
user_runtime.h bonefish+mmlr: 2008-01-13 12:08:34 +00:00
vfs.h Added new syscall _kern_normalize_path() to normalize a path. 2008-02-08 03:06:14 +00:00
vm_address_space.h * vm.h no longer includes vm_types.h - only those that actually need access 2007-09-27 12:21:33 +00:00
vm_cache.h * vm.h no longer includes vm_types.h - only those that actually need access 2007-09-27 12:21:33 +00:00
vm_low_memory.h * register_low_memory_handler() was called too early by several kernel 2007-09-29 15:46:40 +00:00
vm_page.h * My last change to vm_page.cpp made an existing bug much more likely to 2008-01-09 18:15:28 +00:00
vm_priv.h * Reworked stealing pages: the page thief thread is gone now, 2007-10-11 08:01:18 +00:00
vm_translation_map.h * Mapping a page might actually need memory - since we usually have locks that 2007-10-06 11:18:21 +00:00
vm_types.h * Fixed (or rather, worked around) a deadlock in the VM: when a file was 2008-01-09 22:25:21 +00:00
vm.h * vm_set_area_protection() would remap the whole area instead of just the page 2007-10-09 11:05:50 +00:00
wait_for_objects.h * Renamed fs/vfs_select.cpp to wait_for_objects.cpp and got rid of 2007-10-02 19:47:31 +00:00