lkml.org 
[lkml]   [2005]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] Use .incbin for config_data.gz
    Instead of creating config_data.h, use .incbin in inline assembly to
    directly include config_data.gz.

    Signed-off-by: Brian Gerst <bgerst@didntduck.org>
    Subject: [PATCH] Use .incbin for config_data.gz

    Instead of creating config_data.h, use .incbin in inline assembly to
    directly include config_data.gz.

    Signed-off-by: Brian Gerst <bgerst@didntduck.org>

    ---

    kernel/Makefile | 9 +--------
    kernel/configs.c | 18 +++++++++++++-----
    2 files changed, 14 insertions(+), 13 deletions(-)

    5674a0222370187dbe3401cb7a380c491a13f167
    diff --git a/kernel/Makefile b/kernel/Makefile
    --- a/kernel/Makefile
    +++ b/kernel/Makefile
    @@ -41,16 +41,9 @@ ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_P
    CFLAGS_sched.o := $(PROFILING) -fno-omit-frame-pointer
    endif

    -$(obj)/configs.o: $(obj)/config_data.h
    +$(obj)/configs.o: $(obj)/config_data.gz

    -# config_data.h contains the same information as ikconfig.h but gzipped.
    # Info from config_data can be extracted from /proc/config*
    targets += config_data.gz
    $(obj)/config_data.gz: .config FORCE
    $(call if_changed,gzip)
    -
    -quiet_cmd_ikconfiggz = IKCFG $@
    - cmd_ikconfiggz = (echo "static const char kernel_config_data[] = MAGIC_START"; cat $< | scripts/bin2c; echo "MAGIC_END;") > $@
    -targets += config_data.h
    -$(obj)/config_data.h: $(obj)/config_data.gz FORCE
    - $(call if_changed,ikconfiggz)
    diff --git a/kernel/configs.c b/kernel/configs.c
    --- a/kernel/configs.c
    +++ b/kernel/configs.c
    @@ -46,12 +46,20 @@
    */
    #define MAGIC_START "IKCFG_ST"
    #define MAGIC_END "IKCFG_ED"
    -#include "config_data.h"

    +asm(
    +".data\n"
    +" .ascii \"" MAGIC_START "\"\n"
    +"kernel_config_data:\n"
    +" .incbin \"kernel/config_data.gz\"\n"
    +"kernel_config_data_end:\n"
    +" .ascii \"" MAGIC_END "\"\n"
    +".previous\n"
    +);

    -#define MAGIC_SIZE (sizeof(MAGIC_START) - 1)
    -#define kernel_config_data_size \
    - (sizeof(kernel_config_data) - 1 - MAGIC_SIZE * 2)
    +extern const char kernel_config_data[], kernel_config_data_end[];
    +
    +#define kernel_config_data_size (kernel_config_data_end - kernel_config_data)

    #ifdef CONFIG_IKCONFIG_PROC

    @@ -69,7 +77,7 @@ ikconfig_read_current(struct file *file,
    return 0;

    count = min(len, (size_t)(kernel_config_data_size - pos));
    - if (copy_to_user(buf, kernel_config_data + MAGIC_SIZE + pos, count))
    + if (copy_to_user(buf, kernel_config_data + pos, count))
    return -EFAULT;

    *offset += count;
    \
     
     \ /
      Last update: 2005-09-24 20:32    [W:0.037 / U:30.820 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site