Commit Graph

4275 Commits

Author SHA1 Message Date
François Revol
f2b7a266d7 Add an ExecDevice class to handle devices using Exec's IORequest calls. Subclass it as KeyboardDevice to use keyboard.device.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39108 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-24 01:16:36 +00:00
Clemens Zeidler
d63309cf5e Store the volume watcher in a separate hash table to not collide with
normal nodes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39107 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-24 00:49:48 +00:00
Ithamar R. Adema
3164579353 * ARM: Map full page directory, instead of just the first page
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39092 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 20:28:49 +00:00
François Revol
22d81b6c8e Implement proper console color handling.
Don't draw over the screen title.
Oddly the menu doesn't seem to clear the screen.
Looks much better now:
http://revolf.free.fr/beos/shots/shot_haiku_loader_amiga_m68k_003.png


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39076 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 19:13:55 +00:00
François Revol
bf6cf21094 Fix AmigaOS calls : a6 is required to point to the library base, but our gcc uses it as frame pointer, so we must save it before calling.
Fix the console and remove test panics. We now display the menu, although not in the best colors :
http://revolf.free.fr/beos/shots/shot_haiku_loader_amiga_m68k_002.png
(Yes, the mouse moves too :p)
Amiga !!!!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39074 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 15:53:51 +00:00
Ithamar R. Adema
e8b7cfe80e * ARM: print memory map before starting kernel
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-23 08:51:09 +00:00
François Revol
04fc737059 Start of implementation for the console. dprintf() now uses one of the console handles for simplicity.
It crashes for now though, seems we have a stack alignment issue or maybe mangled registers. Or maybe it's due to non-static initializers not being done.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-22 21:09:10 +00:00
François Revol
2be003bc1e Add missing packed attributes.
Add needed TextFont struct.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39052 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-22 21:06:25 +00:00
François Revol
5a0d2097fe - DisplayAlert() already waits for a mouse click.
- Implement dprintf() with DisplayAlert() for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39050 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-22 19:19:03 +00:00
François Revol
51bac633cf More of the needed AmigaOS APIs.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39049 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-22 19:16:43 +00:00
Ithamar R. Adema
29ce3dedd9 * Remove references to vectors, they are not at physical address 0, but on either virtual address 0 or (in case of high vectors) on 0xffff0000....
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-22 15:57:57 +00:00
Clemens Zeidler
33d9a03d72 Add a watch_volume method to the node monitor to be able to watch node changes on a whole volume and not only for one node.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39020 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-20 12:31:53 +00:00
Ithamar R. Adema
18b48221c9 * don't mess with the stack before storing the register state :$
This finally makes KDL fully usuable on the ARM port!



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39015 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-19 23:11:57 +00:00
Ithamar R. Adema
22e3bbdf9b * Implement ARM TLB/cache functions
* General code cleanup...



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39010 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-19 12:26:38 +00:00
Rene Gollent
ad47c011b8 More fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39009 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 20:32:46 +00:00
Rene Gollent
c7b27349ee Another build fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39008 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 20:30:12 +00:00
Rene Gollent
1f0b0045c2 Fix build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39007 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 20:26:33 +00:00
Ithamar R. Adema
7889c39de4 * Fixup longjump too... One step closer to a working KDL...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39002 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 14:00:17 +00:00
Ithamar R. Adema
4795b05a88 * Fixup trace message
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39001 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 13:03:59 +00:00
Ithamar R. Adema
a9de9aea54 * Fix atomic_get :$
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 12:39:59 +00:00
Ithamar R. Adema
60beb9c01e * Fixup atomic calls; currently only minimally tested on __ARM_ARCH__ < 6
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 12:10:16 +00:00
Ithamar R. Adema
c395771a69 * Force GCC to align sInitialHeap on 8-byte boundary, otherwise Free() will complain (hit on ARM)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38997 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 09:42:59 +00:00
Ithamar R. Adema
fb2cbc781e * Fix incorrect class name in kprintfs
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38995 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 01:43:47 +00:00
Ithamar R. Adema
cd4265c803 * For ARM, we now always read from the serial for KDL input.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38994 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 01:15:13 +00:00
Ithamar R. Adema
a85c91d6f0 * Fix setjmp/jmpbuf_t size so we can finally get to the KDL prompt
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38993 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-18 00:50:59 +00:00
Ithamar R. Adema
ce30d635e3 * fix outdated commented dprintf (still useful for local debugging)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38990 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-17 20:00:21 +00:00
Ithamar R. Adema
1ca7a3536c * let arch_debug_call_with_fault_handler() at least do the call, though without fault handler for now
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38989 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-17 19:58:14 +00:00
Ithamar R. Adema
2d3913afba * Pass through physical RAM area to kernel.
* More code cleanup....

Currently working on getting the MMU code on the kernel side to function correctly, some progress already there, will follow in later commits...



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38988 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-17 15:27:36 +00:00
Matt Madia
ead0844514 Created some pseudo targets, to make jamming easier. For example,
jam -q -sHAIKU_BOOT_BOARD=verdex haiku-arm-image
will build "haiku_verdex_flash_image_raw.img"


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38984 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-16 17:08:22 +00:00
Matt Madia
fc9a8806b1 Automatic whitespace cleanup. No functional change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38983 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-16 16:44:29 +00:00
Ithamar R. Adema
71b60eaf35 Remove leftover debug code. Thanks François!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38973 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 11:16:18 +00:00
Ithamar R. Adema
1a6a5dc39d Minor code cleanup. No functional changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38972 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 10:20:21 +00:00
Ithamar R. Adema
ecaa4c2990 * Incorporate ARM board name in flash/mmc image names; Fixes ticket #5213.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38971 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-15 09:48:43 +00:00
François Revol
4cbffbf53f Style is overrated.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38957 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-12 10:24:49 +00:00
François Revol
14016c7ce9 Add some simplified structure definitions the way NetBSD does.
Implement cpu detection using Exec's AttnFlags.
Now panics a little later.

Note you need to tell UAE to emulate a 040 now (020 not supported) with -C4 to boot.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38956 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-12 10:11:04 +00:00
François Revol
0128537395 Cleanup leftover atari code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38954 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-12 09:12:59 +00:00
François Revol
7171eb5907 Actually it seems using HD ADF image is what is causing this issue with 6 sectors. Using DD images seems to work fine.
Fix panic(). Now panic() in _start.

To try it, do :

TARGET_BOOT_PLATFORM=amiga_m68k jam -j1 -q haiku_loader
dd if=/dev/zero of=haiku.adf count=1760
dd if=generated/objects/haiku/m68k/release/system/boot/haiku_loader of=haiku.adf conv=notrunc
uae -s floppy0=haiku.adf -s cpu_type=68020/68881 -s chipmem_size=8 -i


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-12 00:20:53 +00:00
François Revol
52d6ea00ea Adapt the putx routine from atari code to update the string for the alert with a code. Use it to indicate remaining sectors to read on error.
It seems DoIO() fails after 6 sectors. Could it have something to do with side handling ? I hope I won't have to dig trackdisk.device specific stuff...
Anyway even with 6 sectors read, the boot code now calls _start() successfully. Use _floppy_err_alert() to assert this until the copying is fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38951 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-11 23:33:01 +00:00
Philippe Houdoin
89fa2a8573 Move the boot images conditional selection in one place, to remove
possible mismatch images info between loader and kernel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-11 12:54:21 +00:00
François Revol
7ddba3d2ad s/amicalls/rom_calls/
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38944 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 20:44:33 +00:00
François Revol
4543fd0ef6 Define the needed Library Vector Offsets in the header and use them from the asm.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38943 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 20:41:41 +00:00
François Revol
396a612a64 Better error codes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38942 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 20:27:46 +00:00
François Revol
1d4497a8f6 The Coding Style Police is much more efficient than the HADOPI...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38941 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 20:18:07 +00:00
François Revol
aed95f3c6c Also checksum the bootsector in the Atari version of haiku_loader.
Remove duplicate of the checksum tool.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38939 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 18:28:07 +00:00
François Revol
06abf33747 Add a rule to checksum the bootblock inside haiku_loader for Amiga. It seems Jam correctly runs the action after creating the file, though I'm not sure it's correct with respect to jam -j.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38938 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 18:19:02 +00:00
Oliver Tappe
72cf60a534 * replace glibc-base wcwidth() and wcswidth() with the one from
Bruno Haible's libunistring, which seems to work just fine

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38936 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 17:49:09 +00:00
François Revol
398144a1b4 We don't need dos.library here.
Open intuition.library correctly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38935 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 16:14:58 +00:00
François Revol
3b939cb0b6 Comment out atari stuff.
Initialize SysBase and IntuitionBase that will be needed by C++ code.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38933 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 14:18:05 +00:00
François Revol
918ac85f32 Comment out atari stuff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38932 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 14:15:10 +00:00
François Revol
816efc4097 Seems gas doesn't like the syntax from the syscall macros, prefixing a6 with %% helps. Add some Exec calls and the Intuition call needed for panic().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38931 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 14:14:41 +00:00
François Revol
788565c49a Copy the Atari bootloader ldscript.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38930 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 14:10:49 +00:00
François Revol
7030ac1279 Library call macros from fd2pragma Include/inline/macros.h. The header has no copyright claims, and there is no point in rewriting this anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38929 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 13:29:27 +00:00
François Revol
7364eb8e9b Remove Atari stuff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38928 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 13:15:39 +00:00
François Revol
648d00c49c Those are C++ files now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38927 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 13:15:16 +00:00
François Revol
fb6b9ae341 Remove Commodore code and rewrite. Hate wasting time on this...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38926 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 13:03:19 +00:00
François Revol
6ed98199f1 Amiga is just an Atari clone :-P
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 12:42:18 +00:00
François Revol
acb1d6c8e0 s/tos/ami/g;s/ATARI/AMIGA/g
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38924 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:27:52 +00:00
François Revol
2231a4e6a3 Copy some more from Atari.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38923 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:22:50 +00:00
François Revol
9c720d59e3 Copy Handle stuff from Atari.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38922 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:20:55 +00:00
François Revol
4ae92968ab Stub out some more of the platform code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38921 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:16:46 +00:00
François Revol
1ae25236b2 Some useful Amiga API definitions. We'll just stuff what we need in there from all the SDK headers. More to come.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38920 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:09:51 +00:00
François Revol
b780f56676 Add some amiga code from stage1.S.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38919 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:07:14 +00:00
François Revol
92d1f05e9a Cleanup. Some more tries.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38918 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:05:05 +00:00
François Revol
f3ab95c889 Fix ROM base. On Amiga the first page is a bit special but it should still be mapped at boot time. Will need more checks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38917 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 11:04:25 +00:00
François Revol
12760a5cc9 Copy the Atari memory map for Amiga.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38916 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 09:23:09 +00:00
François Revol
7fbfbc1dac Cleanup. Offsets were wrong for dos.library.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38914 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 02:00:14 +00:00
François Revol
948720fa91 cpu-specific mmu files are in arch/m68k now. Remove leftover atari prg stuff.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38913 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-10 01:04:36 +00:00
François Revol
ca7ec01422 Use cpu-specific mmu code from arch/m68k.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38911 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 23:38:09 +00:00
François Revol
33c4ca7e1d The mmu code is almost not platform specific. Copy it to arch/m68k for now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 22:03:37 +00:00
François Revol
2830084019 More tries at doing something useful in the boot sector... For now it displays a welcome message.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38909 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 21:38:50 +00:00
François Revol
646e14e5e9 Clone the atari shell code.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38908 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 20:57:39 +00:00
François Revol
408aa82a13 Fix comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38906 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 20:55:01 +00:00
Philippe Houdoin
20e654cab0 unsetenv() should remove *any* occurence of name=value.
As with putenv() both value and name can be modified afterwise in our 
back, multiple occurence of the same name is a possibility.
Fix #6706. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38904 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 09:09:01 +00:00
Philippe Houdoin
5b2ed54046 Fix the fix: sleep() should return *remaining* seconds.
Closed #6707.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38903 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 08:28:46 +00:00
Philippe Houdoin
82539c6155 sleep() remaining time was returned in microsecond, not second.
Fix #6707.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38902 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-09 07:19:41 +00:00
Axel Dörfler
c5e2c3ec4d * Fixed a bug that would cause allocate_page_run() to be called with an out of
bounds index - the system would overwrite memory then and eventually KDL.
  This could best be reproduced with overlays after a while.
* Added a TODO comment that explains why free_cached_pages() might fail even
  though the page is actually free now.
* Added an explanation of how the sFreePageQueuesLock is to be used, thanks to
  Ingo for explaining it to me in the first place :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38895 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-08 07:40:42 +00:00
Philippe Houdoin
64141b1b74 Enable development splash logo for "official" --distro_compatibility.
The official release one stay the well-known one, just renamed to show it's trademarked images.
Fixed #6183.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-05 10:31:13 +00:00
Scott McCreary
e86eb77b1b Patch from kaliber to a the glibc strtold implentation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-18 16:42:59 +00:00
Oliver Tappe
6a5dacaa3c part1 of fixing #6599:
* protect against invocations of ctype-macros/-functions with negative
  character indices by mirroring the corresponding values at negative
  array indices (the legal access range of __ctype_b is now [-128..255])


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-18 15:55:42 +00:00
Oliver Tappe
338ddd836f Closing #6499:
* add missing getsubopt() POSIX-function
* added corresponding test


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38650 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-14 18:43:24 +00:00
Oliver Tappe
86932f41cc Try to fix #6581:
* avoid trying to overwrite values of a constant structure when
  updating the numeric locale data values used by glibc


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38623 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-12 17:24:38 +00:00
Oliver Tappe
ccee6057f0 * fix wrong signedness in values put into global 'timezone' variable,
the POSIX specs are a bit vague on this (to say the least)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-11 18:34:48 +00:00
Fredrik Holmqvist
01f964efeb Introduce a gSystemShutdown flag to be able to check if system is shutting down. ACPI Embedded Controller now uses polling when it is set to true.
This might help with ACPI shutdown issues, if not this change can be reverted. Not verified as it works on all my machines even without this.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-08 19:19:49 +00:00
Andreas Färber
3243de5750 boot_loader_openfirmware: Add iSCSI boot support
If no Haiku remote disk server is found, try an iSCSI discovery session on
the TFTP server, using the IP address from the boot command or OF options.
All available IPv4 targets are considered, Target Portal Groups are ignored.

RFC 4173 suggests a mechanism that avoids a discovery session by using DHCP;
that requires a compatibly configured DHCP server though and we wouldn't have
access to such data currently anyway. iSCSI is currently used as fallback,
and when it doesn't succeed it falls back to the menu as before.

Resolves ticket #5319.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-05 22:56:22 +00:00
Andreas Färber
5b086e27e8 boot_net: Add iSCSI initiator support
Add support for both discovery and regular iSCSI sessions. Command and status
sequence numbers do differentiate between session and connection but only
one connection per session is currently supported.

Code is Big Endian for now, so compile it for ppc only.

Based on RFC 3720 ff. Tested against OpenSolaris 2009.06.

Resolves most of ticket #5319.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38536 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-05 22:30:41 +00:00
Andreas Färber
eb5e456002 boot_net: Various TCP fixes
Don't enqueue a packet whose sequence number matches the first one in queue
or is between the next and the acknowledged on. This would lead to packet
duplication in the queue and leftovers after dequeuing.

Optimize calculation of acknowledgement number for out-of-order reception.
If a single missing packet arrived, this could have resulted in a timeout
depending on the window size.

In case the connection is closed, do dequeue remaining packets. This would
have caused a read error after a unidirectional FIN.

Prepare a dynamic window size calculation.

Do checksum calculation before attempting to trace packet contents. I have
seen a few and couldn't spot an error in the checksum calculation.

More fine-grained control over trace output.
Trace the Maximum Segment Size option if present; break after End of Options.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-05 21:02:38 +00:00
Fredrik Holmqvist
b0c5015140 If source_index is != 0 it is hardwired to a GSI (Global System Interrupt).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38532 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-05 08:20:47 +00:00
Andreas Färber
040b33980c boot_net: Prepare socket-specific TCP window size
Pass the desired window size from the socket to the service.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38530 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-04 22:36:35 +00:00
Andreas Färber
7d415c01cc boot_net: TCP and UDP style cleanup
Remove superfluous comments.
Adjust spacing and initializer indentation.
Make NULL pointer checks explicit.
Don't assign in if-clause.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-04 22:14:20 +00:00
Fredrik Holmqvist
688768804f The flag returns true if io_apic is disabled. Use the proper check so that it can be toggled while booting. (io_apic is not working though so no need to try unless you are interested in development).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38525 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-03 21:45:41 +00:00
Andreas Färber
3bc0fcc66e boot_net: Fix TCP memory leaks
In some error conditions the packet would have been leaked.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-09-01 18:19:57 +00:00
Andreas Färber
1f4a2bd985 boot_net: Disable TCP for all archs but ppc
Unbreaks the build until a better solution is found.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38485 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 22:57:33 +00:00
Andreas Färber
6c2e0f4377 boot_net: Mute some TCP debug output
Trace packet dequeing only when asked to.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38483 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 20:32:50 +00:00
Andreas Färber
6dfef7e9b2 boot_net: Use real_time_clock_usecs() for TCP
Initialize the PRNG seed for the sequence number with real_time_clock_usecs()
rather than system_time(). The remaining uses of system_time() for timeout
calculation match UDP.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38482 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 18:51:57 +00:00
Andreas Färber
58b1d4608a boot_loader_openfirmware: Implement real_time_clock_usecs()
Partially revert r38465 and move the code from system_time() into a new
real_time_clock_usecs() function. The system_time() implementation was correct
in relying on of_milliseconds(), as pointed out by Axel. Add the correct
function for the desired functionality.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 18:42:57 +00:00
Andreas Färber
a9e71a07a9 boot_loader_openfirmware: Style cleanup
Fix coding style issues and bump copyright (although there's not much anyway).

No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38480 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 17:39:06 +00:00
Andreas Färber
b7e825d6e7 boot_net: Add TCP support
Modelled after UDP, add limited TCP support to the boot net stack. The socket
works by queuing received packets as well as sent packets that have not yet
been ACK'ed. Some known issues are documented, especially there's only limited
congestion control. I.e., we send immediately and in unlimited quantity, thus
its use should be restricted to local networks, and due to a fixed window size
there is potential for our socket being overrun with data packets before they
are read. Some corner cases like wrapping sequence numbers may cause a timeout.

The TCP implementation is based on Andrew S. Tanenbaum's "Computer Networks",
4th ed., as well as lecture notes from Prof. W. Effelsberg, the relevant RFCs
and Wikipedia. The pseudo-random number Galois LFSR used for the sequence
number was suggested by Endre Varga.

Since the code is unlikely to get much smaller, better merge it now so that
subsequent changes get easier to review. No platform actively uses TCP sockets
yet, and the receiving code has been reviewed for endianness issues and should
terminate okay after verifying the checksum if no sockets are open.
Based on a version tested with custom code (#5240) as well as with iSCSI.
Compile-tested boot_loader_openfirmware, pxehaiku-loader with gcc4 and
haiku_loader with gcc2. Closes ticket #5240.

Changes from #5240 proposed patch:
* Various bug fixes related to queuing, some memory leaks fixed.
* Never bump the sequence number when dequeuing a packet. It's done afterwards.
* Don't bump the sequence number again when resending the queue or ACK'ing.
* Aggressively ACK while waiting for packets.
* Don't queue sent ACK-only packets.
* More trace output, esp. for queue inspection.
* Adapted use of TCP header flags to r38434.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-31 01:00:06 +00:00
Andreas Färber
56f837e265 boot_loader_openfirmware: Fix system_time()
system_time() was based on of_milliseconds(), which returns the number of
milliseconds since power-on. This would produce very similar or identical
results for subsequent boots due to limited clock resolution; therefore it
was unsuited as PRNG seed, e.g., for TCP ports.

Try to inquire the RTC device node with get-time to return an improved time
value, if possible.

Closes ticket #6061.

Changes from proposed patch:
* Obtain the RTC handle once and reuse it for each inquiry.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-30 21:13:10 +00:00
Axel Dörfler
506894b6a8 * Return an error on initialization error. This fixes CID 1566.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38461 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-30 20:21:06 +00:00
Axel Dörfler
73b1cb8240 * The IOCache always needs a DMAResource; it was sometimes checked, and
sometimes not.
* This fixes CIDs 1755-1756, and 1505-1506.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38460 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-30 20:06:52 +00:00