io-layer: Fix process helper functions for Haiku
authorAndreas Färber <afaerber@mono-cvs.ximian.com>
Sat, 10 Apr 2010 09:06:28 +0000 (09:06 -0000)
committerAndreas Färber <afaerber@mono-cvs.ximian.com>
Sat, 10 Apr 2010 09:06:28 +0000 (09:06 -0000)
commit9185fcc305e43428d0f40f3ee37c8a405d41c9ae
treeab8667cf2a4bdf3801a3b81840dfd1ddbead4d46
parentc8d15975e1a43f77bbcfb809814593f185534f70
io-layer: Fix process helper functions for Haiku

Haiku has neither makedev nor /proc. Enumerate processes, process modules
and retrieve the process name via Kernel Kit. Fixes build on Haiku.

Adjust _WAPI_PROCESS_UNHANDLED_PID_MASK to cope with Haiku's 32-bit pid_t.
Fixes exception trying to obtain the ProcessName of pids >= 2^15.

  Be did not have /proc
  For Mono to build without
  Resort to Be's root
                         -- Andreas F.

* processes.c (EnumProcesses, load_modules): Add implementations
for Haiku. Fixes build on Haiku.
(OpenProcess, EnumProcessModules, get_process_name_from_proc):
Tweak implementations for Haiku.
* process-private.h: Fix _WAPI_PROCESS_UNHANDLED_PID_MASK for
32-bit pids (Haiku).
* ChangeLog: Fix UTF-8 encoding

v4 -> v5:
* Resolve conflicts with more OpenBSD changes.

v3 -> v4:
* Rebase against OpenBSD changes.

v2 -> v3:
* Fix get_process_name_from_proc implementation to use get_next_image_info.
* Add new implementation of EnumProcesses.
* Fix OpenProcess' check whether pid is available.
* Fix _WAPI_PROCESS_UNHANDLED_PID_MASK to handle Haiku's 32-bit pid_t.
* Fix module addresses in load_modules by considering the text segment, too.
  Suggested by Ingo Weinhold.
* Add ChangeLog entry, fix file encoding.

v1 -> v2:
* Instead of providing a dummy makedev macro, avoid its use.
* Don't try to parse /proc.
* Add new implementations of load_modules and get_process_name_from_proc
  based on libroot's Kernel Kit, suggested by François Revol.

This commit is licensed under the MIT X11 license;
the Haiku poem is licensed under the CC Attribution 3.0 license.

svn path=/trunk/mono/; revision=155191
mono/io-layer/ChangeLog
mono/io-layer/process-private.h
mono/io-layer/processes.c