From: Livio B. S. <li...@im...> - 2002-12-26 02:35:29
|
Howdy! I've been wanting to use UML in a 2.4.20 kernel and couldn't find any patch on the list archives, so I scraped one up myself today. It's small and (hopefully) straightforward. I'm sending it here, cause maybe someone else may find it useful. Changes: [1] Define CONFIG_X86_CMPXCHG in config.in. In 2.4.20 __down_write_trylock uses cmpxchg, which doesn't get defined correctly in the UML arch. [2] Add lib/Config.in in UML's config.in so that zlib_{in,de}flate are defined. Without this, stuff like JFFS2, cramfs, ppp_deflate, and zisofs all break. Particularly JFFS2 in on UML's config.release, that's why I noticed the problem in the first place. [3] sys_sched_yield is not defined int <linux/sched.h> any longer, so I declare it extern and be done. This fixes the compile failure that Bill Stearns reported: [http://sourceforge.net/mailarchive/message.php?msg_id=2406249] [4] vxtime_{un}lock are used in kernel/time.c and kernel/timer.c. Almost every arch seems to declare it empty, except x86_64. Oops, the explanation became longer than the patch :-/ Sorry. The patch follows below. Cheers! -- Livio <li...@im...> diff -pru linux-2.4.20.uml/arch/um/config.in linux-2.4.20.kfs/arch/um/config.in --- linux-2.4.20.uml/arch/um/config.in Wed Dec 25 13:52:51 2002 +++ linux-2.4.20.kfs/arch/um/config.in Thu Dec 26 00:10:09 2002 @@ -10,6 +10,8 @@ define_bool CONFIG_UID16 y define_bool CONFIG_RWSEM_XCHGADD_ALGORITHM y +define_bool CONFIG_X86_CMPXCHG y + mainmenu_option next_comment comment 'Code maturity level options' bool 'Prompt for development and/or incomplete code/drivers' CONFIG_EXPERIMENTAL @@ -92,3 +94,5 @@ fi dep_bool 'Enable gprof support' CONFIG_GPROF $CONFIG_DEBUGSYM dep_bool 'Enable gcov support' CONFIG_GCOV $CONFIG_DEBUGSYM endmenu + +source lib/Config.in diff -pru linux-2.4.20.uml/arch/um/kernel/sys_call_table.c linux-2.4.20.kfs/arch/um/kernel/sys_call_table.c --- linux-2.4.20.uml/arch/um/kernel/sys_call_table.c Wed Dec 25 13:52:51 2002 +++ linux-2.4.20.kfs/arch/um/kernel/sys_call_table.c Wed Dec 25 12:50:36 2002 @@ -153,6 +153,7 @@ extern syscall_handler_t sys_sched_setpa extern syscall_handler_t sys_sched_getparam; extern syscall_handler_t sys_sched_setscheduler; extern syscall_handler_t sys_sched_getscheduler; +extern syscall_handler_t sys_sched_yield; extern syscall_handler_t sys_sched_get_priority_max; extern syscall_handler_t sys_sched_get_priority_min; extern syscall_handler_t sys_sched_rr_get_interval; diff -pru linux-2.4.20.uml/include/asm-um/timex.h linux-2.4.20.kfs/include/asm-um/timex.h --- linux-2.4.20.uml/include/asm-um/timex.h Wed Dec 25 13:52:51 2002 +++ linux-2.4.20.kfs/include/asm-um/timex.h Wed Dec 25 16:49:58 2002 @@ -12,4 +12,7 @@ static inline cycles_t get_cycles (void) return 0; } +#define vxtime_lock() do {} while (0) +#define vxtime_unlock() do {} while (0) + #endif |