Date: Sun, 7 May 2000 22:14:23 +0100 From: Nicholas Clark Subject: doors 0.9.1 on ARM Linux I've compiled doors 0.91 on ARMLinux. My system has a 2.2.14 kernel (with Russell King's patches for ARM, see http://www.arm.uk.linux.org/) and glibc 2.1.3. It's somewhat screwball as Russell's original ARM Linux port is based on old old RedHat with libc4, but I've now got an ELF toolchain and glibc built from source. libc5 has never been anywhere near here. I needed to do a bit of bodging to make things work. It appears that get_unmapped_area and find_vma are exported by 2.2.14, and the ARM doesn't use __bad_pte. I've attached a revised patch for ksyms.c libdoor failed to compile because errno wasn't defined as a result of any headers specified, and libc-lock.h isn't in the library search path. I modified libdoor.h to #include and symlinked /usr/include/bits/libc-lock.h into .. (because -I/usr/include/bits stuffs up the C library) which made things compile. Is this a glibc 2.1 thing? It all seems to work so far: [nick@Bagpuss doors-0.9.1]$ make check test_test: Testing test framework. test_test: Passed. test_small: Testing small argument passing. test_small: Passed. test_large: Testing large argument passing. test_large: Passed. test_info: Testing door_info() call. test_info: Passed. test_pass: Testing door descriptor passing. test_pass: Passed. test_unref: Testing DOOR_UNREF messages. test_unref: Passed. [nick@Bagpuss doors-0.9.1]$ date Sun May 7 20:41:06 BST 2000 [nick@Bagpuss doors-0.9.1]$ uname -a Linux Bagpuss.uk.boo.com 2.2.14-rmk6 #8 Sun May 7 19:30:32 BST 2000 armv4l I hope this is of use. Nicholas Clark *** kernel/ksyms.c.orig Sun Jan 9 21:57:36 2000 --- kernel/ksyms.c Sun May 7 18:33:13 2000 *************** *** 90,95 **** --- 90,113 ---- EXPORT_SYMBOL(exit_fs); EXPORT_SYMBOL(exit_sighand); + /* doors module needs these exported */ + EXPORT_SYMBOL(put_unused_fd); + EXPORT_SYMBOL(insert_vm_struct); + EXPORT_SYMBOL(merge_segments); + EXPORT_SYMBOL(swap_duplicate); + EXPORT_SYMBOL(vm_area_cachep); + EXPORT_SYMBOL(protection_map); + EXPORT_SYMBOL(handle_mm_fault); + EXPORT_SYMBOL(get_pte_slow); + #if !defined(__arm__) + EXPORT_SYMBOL(__bad_pte); + #endif /* __arm__ */ + #if defined(__alpha__) + EXPORT_SYMBOL(__bad_pmd); + EXPORT_SYMBOL(get_pmd_slow); + EXPORT_SYMBOL(quicklists); + #endif /* __alpha__ */ + /* internal kernel memory management */ EXPORT_SYMBOL(__get_free_pages); EXPORT_SYMBOL(free_pages);