📄 kernel_patch-2.4.20-rtl3.2-pre2
字号:
+# CONFIG_NFSD_V3 is not set+# CONFIG_NFSD_TCP is not set+CONFIG_SUNRPC=y+CONFIG_LOCKD=y+CONFIG_SMB_FS=m+# CONFIG_SMB_NLS_DEFAULT is not set+CONFIG_NCP_FS=m+CONFIG_NCPFS_PACKET_SIGNING=y+CONFIG_NCPFS_IOCTL_LOCKING=y+CONFIG_NCPFS_STRONG=y+CONFIG_NCPFS_NFS_NS=y+CONFIG_NCPFS_OS2_NS=y+CONFIG_NCPFS_SMALLDOS=y+CONFIG_NCPFS_NLS=y+CONFIG_NCPFS_EXTRAS=y+# CONFIG_ZISOFS_FS is not set++#+# Partition Types+#+# CONFIG_PARTITION_ADVANCED is not set+CONFIG_MSDOS_PARTITION=y+CONFIG_SMB_NLS=y+CONFIG_NLS=y++#+# Native Language Support+#+CONFIG_NLS_DEFAULT="cp437"+CONFIG_NLS_CODEPAGE_437=y+CONFIG_NLS_CODEPAGE_737=m+CONFIG_NLS_CODEPAGE_775=m+CONFIG_NLS_CODEPAGE_850=y+CONFIG_NLS_CODEPAGE_852=m+CONFIG_NLS_CODEPAGE_855=m+CONFIG_NLS_CODEPAGE_857=m+CONFIG_NLS_CODEPAGE_860=m+CONFIG_NLS_CODEPAGE_861=m+CONFIG_NLS_CODEPAGE_862=m+CONFIG_NLS_CODEPAGE_863=m+CONFIG_NLS_CODEPAGE_864=m+CONFIG_NLS_CODEPAGE_865=m+CONFIG_NLS_CODEPAGE_866=m+CONFIG_NLS_CODEPAGE_869=m+CONFIG_NLS_CODEPAGE_936=m+CONFIG_NLS_CODEPAGE_950=m+CONFIG_NLS_CODEPAGE_932=m+CONFIG_NLS_CODEPAGE_949=m+CONFIG_NLS_CODEPAGE_874=m+CONFIG_NLS_ISO8859_8=m+# CONFIG_NLS_CODEPAGE_1250 is not set+# CONFIG_NLS_CODEPAGE_1251 is not set+CONFIG_NLS_ISO8859_1=m+CONFIG_NLS_ISO8859_2=m+CONFIG_NLS_ISO8859_3=m+CONFIG_NLS_ISO8859_4=m+CONFIG_NLS_ISO8859_5=m+CONFIG_NLS_ISO8859_6=m+CONFIG_NLS_ISO8859_7=m+CONFIG_NLS_ISO8859_9=m+# CONFIG_NLS_ISO8859_13 is not set+CONFIG_NLS_ISO8859_14=m+CONFIG_NLS_ISO8859_15=m+CONFIG_NLS_KOI8_R=m+# CONFIG_NLS_KOI8_U is not set+# CONFIG_NLS_UTF8 is not set++#+# Console drivers+#+CONFIG_VGA_CONSOLE=y+CONFIG_VIDEO_SELECT=y+# CONFIG_MDA_CONSOLE is not set++#+# Frame-buffer support+#+# CONFIG_FB is not set++#+# Sound+#+# CONFIG_SOUND is not set++#+# USB support+#+# CONFIG_USB is not set++#+# Bluetooth support+#+# CONFIG_BLUEZ is not set++#+# Kernel hacking+#+CONFIG_DEBUG_KERNEL=y+# CONFIG_DEBUG_STACKOVERFLOW is not set+# CONFIG_DEBUG_HIGHMEM is not set+# CONFIG_DEBUG_SLAB is not set+# CONFIG_DEBUG_IOVIRT is not set+CONFIG_MAGIC_SYSRQ=y+# CONFIG_DEBUG_SPINLOCK is not set+# CONFIG_FRAME_POINTER is not set++#+# Library routines+#+# CONFIG_ZLIB_INFLATE is not set+# CONFIG_ZLIB_DEFLATE is not setdiff -rbNu linux-2.4.20/drivers/acpi/include/platform/acgcc.h linux-2.4.20-rtl3.2-pre2/drivers/acpi/include/platform/acgcc.h--- linux-2.4.20/drivers/acpi/include/platform/acgcc.h 2002-11-29 00:53:12.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/drivers/acpi/include/platform/acgcc.h 2003-02-16 19:07:03.000000000 +0100@@ -99,7 +99,7 @@ #define BREAKPOINT3 #define disable() __cli() #define enable() __sti()-#define halt() __asm__ __volatile__ ("sti; hlt":::"memory")+#define halt() safe_halt() /* __asm__ __volatile__ ("sti; hlt":::"memory") */ /*! [Begin] no source code translation *Binary files linux-2.4.20/drivers/char/joystick/core.3105 and linux-2.4.20-rtl3.2-pre2/drivers/char/joystick/core.3105 differBinary files linux-2.4.20/drivers/char/joystick/core.3824 and linux-2.4.20-rtl3.2-pre2/drivers/char/joystick/core.3824 differBinary files linux-2.4.20/drivers/char/joystick/core.8394 and linux-2.4.20-rtl3.2-pre2/drivers/char/joystick/core.8394 differdiff -rbNu linux-2.4.20/include/asm-i386/apic.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/apic.h--- linux-2.4.20/include/asm-i386/apic.h 2002-08-03 02:39:45.000000000 +0200+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/apic.h 2003-04-03 11:51:47.000000000 +0200@@ -52,6 +52,9 @@ static inline void ack_APIC_irq(void) {+#ifdef CONFIG_RTLINUX+ label_ack_APIC(); /* used to generate RTLinux patch point */+#endif /* * ack_APIC_irq() actually gets compiled as a single instruction: * - a single rmw on Pentium/82489DXdiff -rbNu linux-2.4.20/include/asm-i386/floppy.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/floppy.h--- linux-2.4.20/include/asm-i386/floppy.h 2002-08-03 02:39:45.000000000 +0200+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/floppy.h 2003-04-03 12:04:13.000000000 +0200@@ -30,9 +30,11 @@ #define SW fd_routine[use_virtual_dma&1] #define CSW fd_routine[can_use_virtual_dma & 1] --#define fd_inb(port) inb_p(port)-#define fd_outb(port,value) outb_p(port,value)+/* lets see if floppies can live with outb/inb....hofrat */+//#define fd_inb(port) inb_p(port)+//#define fd_outb(port,value) outb_p(port,value)+#define fd_inb(port) inb(port)+#define fd_outb(port,value) outb(port,value) #define fd_request_dma() CSW._request_dma(FLOPPY_DMA,"floppy") #define fd_free_dma() CSW._free_dma(FLOPPY_DMA)diff -rbNu linux-2.4.20/include/asm-i386/hw_irq.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/hw_irq.h--- linux-2.4.20/include/asm-i386/hw_irq.h 2001-11-22 20:46:18.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/hw_irq.h 2003-04-03 11:51:48.000000000 +0200@@ -15,6 +15,7 @@ #include <linux/config.h> #include <asm/atomic.h> #include <asm/irq.h>+#include <asm/rtlinux.h> /* * IDT vectors usable for external interrupt sources start@@ -126,41 +127,39 @@ #define BUILD_SMP_INTERRUPT(x,v) XBUILD_SMP_INTERRUPT(x,v) #define XBUILD_SMP_INTERRUPT(x,v)\ asmlinkage void x(void); \-asmlinkage void call_##x(void); \ __asm__( \ "\n"__ALIGN_STR"\n" \ SYMBOL_NAME_STR(x) ":\n\t" \- "pushl $"#v"-256\n\t" \+ "pushl $"#v"\n\t" \ SAVE_ALL \- SYMBOL_NAME_STR(call_##x)":\n\t" \- "call "SYMBOL_NAME_STR(smp_##x)"\n\t" \+ "pushl $ret_from_intr\n\t" \+ RTLINUX_LABEL(smp_##x)\+ "jmp "SYMBOL_NAME_STR(smp_##x)"\n\t" \ "jmp ret_from_intr\n"); #define BUILD_SMP_TIMER_INTERRUPT(x,v) XBUILD_SMP_TIMER_INTERRUPT(x,v) #define XBUILD_SMP_TIMER_INTERRUPT(x,v) \ asmlinkage void x(struct pt_regs * regs); \-asmlinkage void call_##x(void); \ __asm__( \ "\n"__ALIGN_STR"\n" \ SYMBOL_NAME_STR(x) ":\n\t" \- "pushl $"#v"-256\n\t" \+ "pushl $"#v"\n\t" \ SAVE_ALL \ "movl %esp,%eax\n\t" \ "pushl %eax\n\t" \- SYMBOL_NAME_STR(call_##x)":\n\t" \+ RTLINUX_LABEL(smp_##x)\ "call "SYMBOL_NAME_STR(smp_##x)"\n\t" \ "addl $4,%esp\n\t" \ "jmp ret_from_intr\n"); #define BUILD_COMMON_IRQ() \-asmlinkage void call_do_IRQ(void); \ __asm__( \ "\n" __ALIGN_STR"\n" \ "common_interrupt:\n\t" \ SAVE_ALL \- SYMBOL_NAME_STR(call_do_IRQ)":\n\t" \- "call " SYMBOL_NAME_STR(do_IRQ) "\n\t" \- "jmp ret_from_intr\n");+ "pushl $ret_from_intr\n\t" \+ RTLINUX_LABEL(do_IRQ)"\n\t" \+ "jmp "SYMBOL_NAME_STR(do_IRQ)); /* * subtle. orig_eax is used by the signal code to distinct betweendiff -rbNu linux-2.4.20/include/asm-i386/irq.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/irq.h--- linux-2.4.20/include/asm-i386/irq.h 2002-08-03 02:39:45.000000000 +0200+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/irq.h 2003-04-03 11:51:48.000000000 +0200@@ -23,7 +23,7 @@ * Since vectors 0x00-0x1f are used/reserved for the CPU, * the usable vector space is 0x20-0xff (224 vectors) */-#ifdef CONFIG_X86_IO_APIC+#if defined( CONFIG_X86_IO_APIC ) || defined ( CONFIG_RTLINUX ) #define NR_IRQS 224 #else #define NR_IRQS 16diff -rbNu linux-2.4.20/include/asm-i386/param.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/param.h--- linux-2.4.20/include/asm-i386/param.h 2000-10-27 20:04:43.000000000 +0200+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/param.h 2003-02-16 19:07:03.000000000 +0100@@ -2,7 +2,7 @@ #define _ASMi386_PARAM_H #ifndef HZ-#define HZ 100+#define HZ 1000 #endif #define EXEC_PAGESIZE 4096diff -rbNu linux-2.4.20/include/asm-i386/pgalloc.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/pgalloc.h--- linux-2.4.20/include/asm-i386/pgalloc.h 2002-08-03 02:39:45.000000000 +0200+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/pgalloc.h 2003-04-03 11:51:48.000000000 +0200@@ -158,6 +158,33 @@ extern int do_check_pgt_cache(int, int); +extern inline void set_pgdir(unsigned long address, pgd_t entry)+{+ struct task_struct * p;+ pgd_t *pgd;+#ifdef CONFIG_SMP+ int i;+#endif++ read_lock(&tasklist_lock);+ for_each_task(p) {+ if (!p->mm)+ continue;+ *pgd_offset(p->mm,address) = entry;+ }+ read_unlock(&tasklist_lock);+#ifndef CONFIG_SMP+ for (pgd = (pgd_t *)pgd_quicklist; pgd; pgd = (pgd_t *)*(unsigned long *)pgd)+ pgd[address >> PGDIR_SHIFT] = entry;+#else+ /* To pgd_alloc/pgd_free, one holds master kernel lock and so does our callee, so we can+ modify pgd caches of other CPUs as well. -jj */+ for (i = 0; i < NR_CPUS; i++)+ for (pgd = (pgd_t *)cpu_data[i].pgd_quick; pgd; pgd = (pgd_t *)*(unsigned long *)pgd)+ pgd[address >> PGDIR_SHIFT] = entry;+#endif+}+ /* * TLB flushing: *diff -rbNu linux-2.4.20/include/asm-i386/rtlinux_cli.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/rtlinux_cli.h--- linux-2.4.20/include/asm-i386/rtlinux_cli.h 1970-01-01 01:00:00.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/rtlinux_cli.h 2003-03-04 17:35:45.000000000 +0100@@ -0,0 +1,43 @@+#ifndef RTLINUX_CLI_H+#define RTLINUX_CLI_H++/* interrupt control.. */+#define rtl_hard_save_flags_kernel(x) __asm__ __volatile__("pushfl ; popl %0":"=g" (x): /* no input */ :"memory")+#define rtl_hard_restore_flags_kernel(x) __asm__ __volatile__("pushl %0 ; popfl": /* no output */ :"g" (x):"memory")+#define rtl_hard_cli_kernel() __asm__ __volatile__("cli": : :"memory")+#define rtl_hard_sti_kernel() __asm__ __volatile__("sti": : :"memory")++/* For spinlocks etc */+#define rtl_hard_local_irq_save_kernel(x) __asm__ __volatile__("pushfl ; popl %0 ; cli":"=g" (x): /* no input */ :"memory")+#define rtl_hard_local_irq_restore_kernel(x) __asm__ __volatile__("pushl %0 ; popfl": /* no output */ :"g" (x):"memory")+#define rtl_hard_local_irq_disable_kernel() __asm__ __volatile__("cli": : :"memory")+#define rtl_hard_local_irq_enable_kernel() __asm__ __volatile__("sti": : :"memory")+struct irq_control_s {+ void (*do_save_flags)(unsigned long *);+ void (*do_restore_flags)(unsigned long);+ void (*do_cli)(void);+ void (*do_sti)(void);+ void (*do_local_irq_save)(unsigned long *);+ void (*do_local_irq_restore)(unsigned long);+};+extern struct irq_control_s irq_control;+#undef __cli+#undef __sti+#undef __save_flags+#undef __restore_flags+#undef local_irq_save+#undef local_irq_restore+#undef local_irq_disable+#undef local_irq_enable+#define __save_flags(x) irq_control.do_save_flags(&x)+#define __restore_flags(x) irq_control.do_restore_flags(x)+#define __cli() irq_control.do_cli()+#define __sti() irq_control.do_sti()+#define local_irq_save(x) irq_control.do_local_irq_save((&x))+#define local_irq_restore(x) irq_control.do_local_irq_restore(x)+#define local_irq_disable() irq_control.do_cli()+#define local_irq_enable() irq_control.do_sti()++#undef safe_halt+#define safe_halt() do { __asm__ __volatile__("cli; nop; sti; hlt": : :"memory"); irq_control.do_sti(); } while (0)+#endif /* RTLINUX_CLI_H */diff -rbNu linux-2.4.20/include/asm-i386/rtlinux.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/rtlinux.h--- linux-2.4.20/include/asm-i386/rtlinux.h 1970-01-01 01:00:00.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/rtlinux.h 2003-02-16 19:07:03.000000000 +0100@@ -0,0 +1,14 @@++/* RTLinux support for patching the running kernel.+ * (c) Victor Yodaiken 1999+*/++#define label_ack_APIC() xlabel_code(0x12344321)+#define xlabel_code(x) asm __volatile__(".section rtlinux_patch,\"a\"\n .align 4\n"\+ ".long 1f,"#x"\n" ".previous\n 1:\n" );+#define RTLINUX_LABEL(x)\+ ".section rtlinux_patch,\"a\"\n .align 4\n .long 1f,"#x"\n .previous\n 1:\n"++#define RTLINUX_EXPORT(x)\+ asm (".section rtlinux_funcs,\"a\"\n .align 4\n"\+ ".long "#x"\n .previous\n" );diff -rbNu linux-2.4.20/include/asm-i386/smp.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/smp.h--- linux-2.4.20/include/asm-i386/smp.h 2002-11-29 00:53:15.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/smp.h 2003-04-03 11:51:47.000000000 +0200@@ -11,6 +11,7 @@ #endif #ifdef CONFIG_X86_LOCAL_APIC+#include <asm/rtlinux.h> #ifndef __ASSEMBLY__ #include <asm/fixmap.h> #include <asm/bitops.h>@@ -68,6 +69,9 @@ extern volatile int cpu_to_logical_apicid[NR_CPUS]; extern volatile int logical_apicid_to_cpu[MAX_APICID]; +extern volatile int physical_apicid_2_cpu[];+#define hw_smp_processor_id() (physical_apicid_2_cpu[hard_smp_processor_id()])+ /* * General functions that each host system must provide. */@@ -111,5 +115,7 @@ #define PROC_CHANGE_PENALTY 15 /* Schedule penalty */ +#else+#define hw_smp_processor_id() (0) #endif #endifdiff -rbNu linux-2.4.20/include/asm-i386/system.h linux-2.4.20-rtl3.2-pre2/include/asm-i386/system.h--- linux-2.4.20/include/asm-i386/system.h 2002-11-29 00:53:15.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/include/asm-i386/system.h 2003-04-03 11:51:47.000000000 +0200@@ -5,6 +5,7 @@ #include <linux/kernel.h> #include <linux/init.h> #include <asm/segment.h>+#include <asm/rtlinux.h> #include <linux/bitops.h> /* for LOCK_PREFIX */ #ifdef __KERNEL__@@ -328,6 +329,9 @@ #define local_irq_disable() __cli() #define local_irq_enable() __sti() +#ifdef CONFIG_RTLINUX+#include <asm/rtlinux_cli.h>+#endif #ifdef CONFIG_SMP extern void __global_cli(void);diff -rbNu linux-2.4.20/kernel/exit.c linux-2.4.20-rtl3.2-pre2/kernel/exit.c--- linux-2.4.20/kernel/exit.c 2002-11-29 00:53:15.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/kernel/exit.c 2003-02-16 19:07:03.000000000 +0100@@ -422,10 +422,14 @@ write_unlock_irq(&tasklist_lock); } +void (*rtl_do_exit_handler)(long code) = 0; NORET_TYPE void do_exit(long code) { struct task_struct *tsk = current; + if (rtl_do_exit_handler) {+ rtl_do_exit_handler(code);+ } if (in_interrupt()) panic("Aiee, killing interrupt handler!"); if (!tsk->pid)diff -rbNu linux-2.4.20/kernel/fork.c linux-2.4.20-rtl3.2-pre2/kernel/fork.c--- linux-2.4.20/kernel/fork.c 2002-11-29 00:53:15.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/kernel/fork.c 2003-02-16 19:07:03.000000000 +0100@@ -42,8 +42,8 @@ { unsigned long flags; + wq_write_lock_irqsave(&q->lock, flags); //kabi wait->flags &= ~WQ_FLAG_EXCLUSIVE;- wq_write_lock_irqsave(&q->lock, flags); __add_wait_queue(q, wait); wq_write_unlock_irqrestore(&q->lock, flags); }@@ -52,8 +52,8 @@ { unsigned long flags; + wq_write_lock_irqsave(&q->lock, flags); //kabi wait->flags |= WQ_FLAG_EXCLUSIVE;- wq_write_lock_irqsave(&q->lock, flags); __add_wait_queue_tail(q, wait); wq_write_unlock_irqrestore(&q->lock, flags); }@@ -232,7 +232,9 @@ atomic_set(&mm->mm_count, 1); init_rwsem(&mm->mmap_sem); mm->page_table_lock = SPIN_LOCK_UNLOCKED;+ lock_kernel(); mm->pgd = pgd_alloc(mm);+ unlock_kernel(); mm->def_flags = 0; if (mm->pgd) return mm;@@ -264,7 +266,9 @@ inline void __mmdrop(struct mm_struct *mm) { BUG_ON(mm == &init_mm);+ lock_kernel(); pgd_free(mm->pgd);+ unlock_kernel(); destroy_context(mm); free_mm(mm); }diff -rbNu linux-2.4.20/Makefile linux-2.4.20-rtl3.2-pre2/Makefile--- linux-2.4.20/Makefile 2002-11-29 00:53:16.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/Makefile 2003-03-05 16:16:58.000000000 +0100@@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 20-EXTRAVERSION =+EXTRAVERSION =-rtl3.2-pre2 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff -rbNu linux-2.4.20/mm/vmalloc.c linux-2.4.20-rtl3.2-pre2/mm/vmalloc.c--- linux-2.4.20/mm/vmalloc.c 2002-11-29 00:53:15.000000000 +0100+++ linux-2.4.20-rtl3.2-pre2/mm/vmalloc.c 2003-02-16 19:07:03.000000000 +0100@@ -148,6 +148,7 @@ spin_lock(&init_mm.page_table_lock); do { pmd_t *pmd;+ pgd_t olddir = *dir; pmd = pmd_alloc(&init_mm, dir, address); ret = -ENOMEM;@@ -157,6 +158,10 @@ ret = -ENOMEM; if (alloc_area_pmd(pmd, address, end - address, gfp_mask, prot)) break;+#if defined(__i386__)+ if (pgd_val(olddir) != pgd_val(*dir))+ set_pgdir(address, *dir);+#endif /* __i386__ */ address = (address + PGDIR_SIZE) & PGDIR_MASK; dir++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -