lkml.org 
[lkml]   [2003]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] 2.5.68 FUTEX support should be optional
    Valdis.Kletnieks@vt.edu wrote:
    >
    > > Remove kernel features for embedded systems (Y/N)
    > >
    > > its no more dangerous/hassle than the kernel debug menu
    >
    > OK.. I know I argued against making it visible to the user at all, but if it's
    > phrased like that, it will at least (hopefully) dissuade everybody who
    > doesn't know what an embedded system is.
    >
    > And after all, Linux isn't about dissuading the truly determined, nor is it
    > about making moral judgements regarding their wizardry/idiocy ratio....

    I'd agree with all that. I've updated the initial patch thusly:

    General setup --->
    [*] Remove kernel features for embedded systems
    Removable kernel features for embedded systems --->
    [ ] Enable futex support

    So enabling CONFIG_EMBEDDED causes the user to be offered CONFIG_FUTEX, and
    there are appropriate stern warnings everywhere.


    init/Kconfig | 24 +++++++++++++++++++++++-
    kernel/Makefile | 3 ++-
    kernel/compat.c | 5 +++--
    kernel/sys.c | 2 ++
    5 files changed, 32 insertions(+), 4 deletions(-)

    diff -puN init/Kconfig~CONFIG_FUTEX init/Kconfig
    --- 25/init/Kconfig~CONFIG_FUTEX 2003-05-16 19:17:34.000000000 -0700
    +++ 25-akpm/init/Kconfig 2003-05-16 19:32:43.000000000 -0700
    @@ -108,8 +108,31 @@ config LOG_BUF_SHIFT
    13 => 8 KB
    12 => 4 KB

    +
    +config EMBEDDED
    + bool "Remove kernel features for embedded systems"
    + default n
    + help
    + This option allows certain base kernel features to be removed from
    + the build. This is for specialized environments which can tolerate
    + a "non-standard" kernel. Only use this if you really know what you
    + are doing.
    +
    +menu "Removable kernel features for embedded systems"
    + depends on EMBEDDED
    +
    +config FUTEX
    + bool "Enable futex support"
    + depends on EMBEDDED
    + default y
    + help
    + Disabling this option will cause the kernel to be built without
    + support for "fast userspace mutexes". The resulting kernel may not
    + run glibc-based applications correctly.
    +
    endmenu

    +endmenu

    menu "Loadable module support"

    @@ -181,4 +204,3 @@ config KMOD
    in <file:Documentation/kmod.txt>.

    endmenu
    -
    diff -puN kernel/Makefile~CONFIG_FUTEX kernel/Makefile
    --- 25/kernel/Makefile~CONFIG_FUTEX 2003-05-16 19:17:34.000000000 -0700
    +++ 25-akpm/kernel/Makefile 2003-05-16 19:17:34.000000000 -0700
    @@ -5,9 +5,10 @@
    obj-y = sched.o fork.o exec_domain.o panic.o printk.o profile.o \
    exit.o itimer.o time.o softirq.o resource.o \
    sysctl.o capability.o ptrace.o timer.o user.o \
    - signal.o sys.o kmod.o workqueue.o futex.o pid.o \
    + signal.o sys.o kmod.o workqueue.o pid.o \
    rcupdate.o intermodule.o extable.o params.o posix-timers.o

    +obj-$(CONFIG_FUTEX) += futex.o
    obj-$(CONFIG_GENERIC_ISA_DMA) += dma.o
    obj-$(CONFIG_SMP) += cpu.o
    obj-$(CONFIG_LOCKMETER) += lockmeter.o
    diff -puN kernel/sys.c~CONFIG_FUTEX kernel/sys.c
    --- 25/kernel/sys.c~CONFIG_FUTEX 2003-05-16 19:17:34.000000000 -0700
    +++ 25-akpm/kernel/sys.c 2003-05-16 19:17:34.000000000 -0700
    @@ -228,6 +228,8 @@ cond_syscall(sys_shutdown)
    cond_syscall(sys_sendmsg)
    cond_syscall(sys_recvmsg)
    cond_syscall(sys_socketcall)
    +cond_syscall(sys_futex)
    +cond_syscall(compat_sys_futex)

    static int set_one_prio(struct task_struct *p, int niceval, int error)
    {
    diff -puN kernel/compat.c~CONFIG_FUTEX kernel/compat.c
    --- 25/kernel/compat.c~CONFIG_FUTEX 2003-05-16 19:17:34.000000000 -0700
    +++ 25-akpm/kernel/compat.c 2003-05-16 19:17:34.000000000 -0700
    @@ -18,6 +18,7 @@
    #include <linux/signal.h>
    #include <linux/sched.h> /* for MAX_SCHEDULE_TIMEOUT */
    #include <linux/futex.h> /* for FUTEX_WAIT */
    +#include <linux/unistd.h>

    #include <asm/uaccess.h>

    @@ -211,8 +212,7 @@ asmlinkage long compat_sys_sigprocmask(i
    return ret;
    }

    -extern long do_futex(unsigned long, int, int, unsigned long);
    -
    +#ifdef CONFIG_FUTEX
    asmlinkage long compat_sys_futex(u32 *uaddr, int op, int val,
    struct compat_timespec *utime)
    {
    @@ -226,6 +226,7 @@ asmlinkage long compat_sys_futex(u32 *ua
    }
    return do_futex((unsigned long)uaddr, op, val, timeout);
    }
    +#endif

    asmlinkage long sys_setrlimit(unsigned int resource, struct rlimit *rlim);

    diff -puN include/linux/futex.h~CONFIG_FUTEX include/linux/futex.h
    --- 25/include/linux/futex.h~CONFIG_FUTEX 2003-05-16 19:17:34.000000000 -0700
    +++ 25-akpm/include/linux/futex.h 2003-05-16 19:17:34.000000000 -0700
    @@ -8,4 +8,6 @@

    extern asmlinkage long sys_futex(u32 __user *uaddr, int op, int val, struct timespec __user *utime);

    +long do_futex(unsigned long uaddr, int op, int val, unsigned long timeout);
    +
    #endif
    _

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:35    [W:0.027 / U:29.824 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site