runnix-commits Mailing List for Runnix (Page 3)
Status: Alpha
Brought to you by:
krisk84
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(18) |
May
(11) |
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
|
Nov
(8) |
Dec
|
2008 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2010 |
Jan
(1) |
Feb
(2) |
Mar
(5) |
Apr
|
May
|
Jun
|
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(47) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
(6) |
May
(9) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
From: <abe...@us...> - 2010-12-13 02:03:46
|
Revision: 120 http://runnix.svn.sourceforge.net/runnix/?rev=120&view=rev Author: abelbeck Date: 2010-12-13 02:03:41 +0000 (Mon, 13 Dec 2010) Log Message: ----------- Enable 'bash' in default config Modified Paths: -------------- trunk/runnix.config Modified: trunk/runnix.config =================================================================== --- trunk/runnix.config 2010-12-13 01:57:32 UTC (rev 119) +++ trunk/runnix.config 2010-12-13 02:03:41 UTC (rev 120) @@ -127,6 +127,7 @@ # Other stuff # # BR2_PACKAGE_ACPID is not set +BR2_PACKAGE_BASH=y # BR2_PACKAGE_BISON is not set # BR2_PACKAGE_BRIDGE is not set # BR2_PACKAGE_CUSTOMIZE is not set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-13 01:57:40
|
Revision: 119 http://runnix.svn.sourceforge.net/runnix/?rev=119&view=rev Author: abelbeck Date: 2010-12-13 01:57:32 +0000 (Mon, 13 Dec 2010) Log Message: ----------- Add support for bash 3.2, yes it's bulky, but it is more robust than an old-ish ash, and plays a very important part of the system Modified Paths: -------------- trunk/package/Config.in trunk/package/bash/bash.mk Removed Paths: ------------- trunk/package/bash/bash30-001 trunk/package/bash/bash30-002 trunk/package/bash/bash30-003 trunk/package/bash/bash30-004 trunk/package/bash/bash30-005 trunk/package/bash/bash30-006 trunk/package/bash/bash30-007 trunk/package/bash/bash30-008 trunk/package/bash/bash30-009 trunk/package/bash/bash30-010 trunk/package/bash/bash30-011 trunk/package/bash/bash30-012 trunk/package/bash/bash30-013 trunk/package/bash/bash30-014 trunk/package/bash/bash30-015 trunk/package/bash/bash30-016 trunk/package/bash/bash30-050-signames Modified: trunk/package/Config.in =================================================================== --- trunk/package/Config.in 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/Config.in 2010-12-13 01:57:32 UTC (rev 119) @@ -6,6 +6,7 @@ comment "Other stuff" source "package/acpid/Config.in" +source "package/bash/Config.in" source "package/bison/Config.in" source "package/bridge/Config.in" source "package/customize/Config.in" Modified: trunk/package/bash/bash.mk =================================================================== --- trunk/package/bash/bash.mk 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash.mk 2010-12-13 01:57:32 UTC (rev 119) @@ -3,7 +3,7 @@ # bash # ############################################################# -BASH_VER:=3.0 +BASH_VER:=3.2 BASH_SOURCE:=bash-$(BASH_VER).tar.gz BASH_SITE:=ftp://ftp.gnu.org/gnu/bash BASH_CAT:=zcat @@ -11,23 +11,31 @@ BASH_BINARY:=bash BASH_TARGET_BINARY:=bin/bash +BASH_PREREQS:= + +#If both bash and busybox are selected, make certain bash wins +#the fight over who gets to own the /bin/sh symlink +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +BASH_PREREQS+=busybox +endif + $(DL_DIR)/$(BASH_SOURCE): $(WGET) -P $(DL_DIR) $(BASH_SITE)/$(BASH_SOURCE) -bash-source: $(DL_DIR)/$(BASH_SOURCE) - $(BASH_DIR)/.unpacked: $(DL_DIR)/$(BASH_SOURCE) $(BASH_CAT) $(DL_DIR)/$(BASH_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) - toolchain/patch-kernel.sh $(BASH_DIR) package/bash/ bash??-* # This is broken when -lintl is added to LIBS $(SED) 's,LIBS_FOR_BUILD =.*,LIBS_FOR_BUILD =,g' \ $(BASH_DIR)/builtins/Makefile.in - touch $(BASH_DIR)/.unpacked + touch $@ -$(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked +$(BASH_DIR)/.configured: $(BASH_DIR)/.unpacked | ncurses $(BASH_PREREQS) # ac_cv_func_setvbuf_reversed=no # bash_cv_have_mbstate_t=yes - (cd $(BASH_DIR); rm -rf config.cache; \ + (cd $(BASH_DIR); \ + rm -rf config.cache; \ + bash_cv_job_control_missing=present \ $(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \ CFLAGS="$(TARGET_CFLAGS)" \ ./configure \ @@ -48,9 +56,29 @@ $(DISABLE_LARGEFILE) \ --with-curses \ --enable-alias \ + --enable-arith-for-command \ + --enable-array-variables \ + --enable-bang-history \ + --enable-brace-expansion \ + --enable-command-timing \ + --enable-cond-command \ + --enable-cond-regexp \ + --enable-debugger \ + --enable-directory-stack \ + --enable-disabled-builtins \ + --enable-dparen-arithmetic \ + --enable-extended-glob \ + --enable-help-builtin \ + --enable-history \ + --enable-job-control \ + --enable-net-redirections \ + --enable-process-substitution \ + --enable-progcomp \ + --enable-string-decoding \ + --enable-select \ --without-bash-malloc \ - ); - touch $(BASH_DIR)/.configured + ) + touch $@ $(BASH_DIR)/$(BASH_BINARY): $(BASH_DIR)/.configured $(MAKE) CC=$(TARGET_CC) CC_FOR_BUILD=$(HOSTCC) -C $(BASH_DIR) @@ -64,16 +92,12 @@ $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc $(STRIP) $(TARGET_DIR)/bin/bash -#If both bash and busybox are selected, make certain bash wins -#the fight over who gets to own the /bin/sh symlink -ifeq ($(BR2_PACKAGE_BUSYBOX),y) -bash: ncurses uclibc busybox $(TARGET_DIR)/$(BASH_TARGET_BINARY) -else -bash: ncurses uclibc $(TARGET_DIR)/$(BASH_TARGET_BINARY) -endif +bash: $(TARGET_DIR)/$(BASH_TARGET_BINARY) +bash-source: $(BASH_DIR)/.unpacked + bash-clean: - $(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(BASH_DIR) uninstall + -$(MAKE) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(BASH_DIR) uninstall -$(MAKE) -C $(BASH_DIR) clean bash-dirclean: Deleted: trunk/package/bash/bash30-001 =================================================================== --- trunk/package/bash/bash30-001 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-001 2010-12-13 01:57:32 UTC (rev 119) @@ -1,139 +0,0 @@ -*** bash-3.0/arrayfunc.c Fri Dec 19 00:03:09 2003 ---- bash/arrayfunc.c Sun Aug 1 20:43:00 2004 -*************** -*** 612,616 **** - - free (t); -! return var; - } - ---- 612,616 ---- - - free (t); -! return (var == 0 || invisible_p (var)) ? (SHELL_VAR *)0 : var; - } - - -*** bash-3.0/subst.c Sun Jul 4 13:56:13 2004 ---- bash/subst.c Thu Aug 12 13:36:17 2004 -*************** -*** 4983,4987 **** - return -1; - } -! else if ((v = find_variable (varname)) && array_p (v)) - { - vtype = VT_ARRAYMEMBER; ---- 5003,5007 ---- - return -1; - } -! else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && array_p (v)) - { - vtype = VT_ARRAYMEMBER; - -*** bash-3.0/variables.c Sun Jul 4 13:57:26 2004 ---- bash/variables.c Wed Aug 4 15:28:04 2004 -*************** -*** 1420,1428 **** - - # if defined (DEBUGGER) -! v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, (att_invisible|att_noassign)); -! v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, (att_invisible|att_noassign)); - # endif /* DEBUGGER */ -! v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, (att_invisible|att_noassign)); -! v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, (att_invisible|att_noassign)); - #endif - ---- 1420,1428 ---- - - # if defined (DEBUGGER) -! v = init_dynamic_array_var ("BASH_ARGC", get_self, null_array_assign, att_noassign); -! v = init_dynamic_array_var ("BASH_ARGV", get_self, null_array_assign, att_noassign); - # endif /* DEBUGGER */ -! v = init_dynamic_array_var ("BASH_SOURCE", get_self, null_array_assign, att_noassign); -! v = init_dynamic_array_var ("BASH_LINENO", get_self, null_array_assign, att_noassign); - #endif - -*************** -*** 1600,1604 **** - old_var = find_variable (name); - if (old_var && local_p (old_var) && old_var->context == variable_context) -! return (old_var); - - was_tmpvar = old_var && tempvar_p (old_var); ---- 1600,1607 ---- - old_var = find_variable (name); - if (old_var && local_p (old_var) && old_var->context == variable_context) -! { -! VUNSETATTR (old_var, att_invisible); -! return (old_var); -! } - - was_tmpvar = old_var && tempvar_p (old_var); -*** bash-3.0/pcomplete.c Thu Jan 8 10:36:17 2004 ---- bash/pcomplete.c Tue Aug 3 23:15:41 2004 -*************** -*** 864,867 **** ---- 864,869 ---- - v = convert_var_to_array (v); - v = assign_array_var_from_word_list (v, lwords); -+ -+ VUNSETATTR (v, att_invisible); - return v; - } -*************** -*** 1022,1025 **** ---- 1024,1029 ---- - if (array_p (v) == 0) - v = convert_var_to_array (v); -+ -+ VUNSETATTR (v, att_invisible); - - a = array_cell (v); -*** bash-3.0/array.c Thu May 6 08:24:13 2004 ---- bash/array.c Wed Aug 25 15:50:42 2004 -*************** -*** 452,456 **** - array_dispose_element(new); - free(element_value(ae)); -! ae->value = savestring(v); - return(0); - } else if (element_index(ae) > i) { ---- 454,458 ---- - array_dispose_element(new); - free(element_value(ae)); -! ae->value = v ? savestring(v) : (char *)NULL; - return(0); - } else if (element_index(ae) > i) { - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 0 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 1 - - #endif /* _PATCHLEVEL_H_ */ -*** bash-3.0/tests/dbg-support.tests Tue Mar 25 15:33:03 2003 ---- bash/tests/dbg-support.tests Tue Aug 3 23:09:29 2004 -*************** -*** 63,68 **** - trap 'print_return_trap $LINENO' RETURN - -! # Funcname is now an array. Vanilla Bash 2.05 doesn't have FUNCNAME array. -! echo "FUNCNAME" ${FUNCNAME[0]} - - # We should trace into the below. ---- 63,68 ---- - trap 'print_return_trap $LINENO' RETURN - -! # Funcname is now an array, but you still can't see it outside a function -! echo "FUNCNAME" ${FUNCNAME[0]:-main} - - # We should trace into the below. Deleted: trunk/package/bash/bash30-002 =================================================================== --- trunk/package/bash/bash30-002 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-002 2010-12-13 01:57:32 UTC (rev 119) @@ -1,44 +0,0 @@ -*** bash-3.0/lib/readline/display.c Thu May 27 22:57:51 2004 ---- bash/lib/readline/display.c Wed Jul 28 13:48:04 2004 -*************** -*** 352,356 **** - &prompt_last_invisible, - (int *)NULL, -! (int *)NULL); - c = *t; *t = '\0'; - /* The portion of the prompt string up to and including the ---- 352,356 ---- - &prompt_last_invisible, - (int *)NULL, -! &prompt_physical_chars); - c = *t; *t = '\0'; - /* The portion of the prompt string up to and including the -*************** -*** 359,363 **** - (int *)NULL, - &prompt_invis_chars_first_line, -! &prompt_physical_chars); - *t = c; - return (prompt_prefix_length); ---- 359,363 ---- - (int *)NULL, - &prompt_invis_chars_first_line, -! (int *)NULL); - *t = c; - return (prompt_prefix_length); - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 1 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 2 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-003 =================================================================== --- trunk/package/bash/bash30-003 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-003 2010-12-13 01:57:32 UTC (rev 119) @@ -1,107 +0,0 @@ -*** bash-3.0/builtins/trap.def Thu May 27 22:26:19 2004 ---- bash/builtins/trap.def Thu Aug 5 08:55:43 2004 -*************** -*** 24,28 **** - $BUILTIN trap - $FUNCTION trap_builtin -! $SHORT_DOC trap [-lp] [[arg] signal_spec ...] - The command ARG is to be read and executed when the shell receives - signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC ---- 24,28 ---- - $BUILTIN trap - $FUNCTION trap_builtin -! $SHORT_DOC trap [-lp] [arg signal_spec ...] - The command ARG is to be read and executed when the shell receives - signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC -*************** -*** 88,92 **** - WORD_LIST *list; - { -! int list_signal_names, display, result, opt; - - list_signal_names = display = 0; ---- 88,92 ---- - WORD_LIST *list; - { -! int list_signal_names, display, result, opt, first_signal; - - list_signal_names = display = 0; -*************** -*** 119,130 **** - { - char *first_arg; -! int operation, sig; - - operation = SET; - first_arg = list->word->word; - /* When in posix mode, the historical behavior of looking for a - missing first argument is disabled. To revert to the original - signal handling disposition, use `-' as the first argument. */ -! if (posixly_correct == 0 && first_arg && *first_arg && - (*first_arg != '-' || first_arg[1]) && - signal_object_p (first_arg, opt) && list->next == 0) ---- 119,135 ---- - { - char *first_arg; -! int operation, sig, first_signal; - - operation = SET; - first_arg = list->word->word; -+ first_signal = first_arg && *first_arg && all_digits (first_arg) && signal_object_p (first_arg, opt); -+ -+ /* Backwards compatibility */ -+ if (first_signal) -+ operation = REVERT; - /* When in posix mode, the historical behavior of looking for a - missing first argument is disabled. To revert to the original - signal handling disposition, use `-' as the first argument. */ -! else if (posixly_correct == 0 && first_arg && *first_arg && - (*first_arg != '-' || first_arg[1]) && - signal_object_p (first_arg, opt) && list->next == 0) -*** bash-3.0/doc/bashref.texi Sat Jun 26 14:26:07 2004 ---- bash/doc/bashref.texi Fri Aug 27 12:33:46 2004 -*************** -*** 5954,5958 **** - The @code{trap} builtin doesn't check the first argument for a possible - signal specification and revert the signal handling to the original -! disposition if it is. If users want to reset the handler for a given - signal to the original disposition, they should use @samp{-} as the - first argument. ---- 5967,5972 ---- - The @code{trap} builtin doesn't check the first argument for a possible - signal specification and revert the signal handling to the original -! disposition if it is, unless that argument consists solely of digits and -! is a valid signal number. If users want to reset the handler for a given - signal to the original disposition, they should use @samp{-} as the - first argument. - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 2 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 3 - - #endif /* _PATCHLEVEL_H_ */ -*** bash-3.0/tests/errors.right Thu May 27 22:26:03 2004 ---- bash/tests/errors.right Sat Aug 7 22:35:10 2004 -*************** -*** 86,90 **** - ./errors.tests: line 216: trap: NOSIG: invalid signal specification - ./errors.tests: line 219: trap: -s: invalid option -! trap: usage: trap [-lp] [[arg] signal_spec ...] - ./errors.tests: line 225: return: can only `return' from a function or sourced script - ./errors.tests: line 229: break: 0: loop count out of range ---- 86,90 ---- - ./errors.tests: line 216: trap: NOSIG: invalid signal specification - ./errors.tests: line 219: trap: -s: invalid option -! trap: usage: trap [-lp] [arg signal_spec ...] - ./errors.tests: line 225: return: can only `return' from a function or sourced script - ./errors.tests: line 229: break: 0: loop count out of range Deleted: trunk/package/bash/bash30-004 =================================================================== --- trunk/package/bash/bash30-004 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-004 2010-12-13 01:57:32 UTC (rev 119) @@ -1,128 +0,0 @@ -*** bash-3.0/subst.c Sun Jul 4 13:56:13 2004 ---- bash/subst.c Thu Aug 12 13:36:17 2004 -*************** -*** 4692,4695 **** ---- 4692,4715 ---- - } - -+ #if defined (HANDLE_MULTIBYTE) -+ size_t -+ mbstrlen (s) -+ const char *s; -+ { -+ size_t clen, nc; -+ mbstate_t mbs; -+ -+ nc = 0; -+ memset (&mbs, 0, sizeof (mbs)); -+ while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && (MB_INVALIDCH(clen) == 0)) -+ { -+ s += clen; -+ nc++; -+ } -+ return nc; -+ } -+ #endif -+ -+ - /* Handle the parameter brace expansion that requires us to return the - length of a parameter. */ -*************** -*** 4747,4758 **** - { - t = get_dollar_var_value (arg_index); -! number = STRLEN (t); - FREE (t); - } - #if defined (ARRAY_VARS) -! else if ((var = find_variable (name + 1)) && array_p (var)) - { - t = array_reference (array_cell (var), 0); -! number = STRLEN (t); - } - #endif ---- 4767,4778 ---- - { - t = get_dollar_var_value (arg_index); -! number = MB_STRLEN (t); - FREE (t); - } - #if defined (ARRAY_VARS) -! else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && array_p (var)) - { - t = array_reference (array_cell (var), 0); -! number = MB_STRLEN (t); - } - #endif -*************** -*** 4767,4771 **** - dispose_words (list); - -! number = STRLEN (t); - FREE (t); - } ---- 4787,4791 ---- - dispose_words (list); - -! number = MB_STRLEN (t); - FREE (t); - } -*************** -*** 4872,4876 **** - case VT_VARIABLE: - case VT_ARRAYMEMBER: -! len = strlen (value); - break; - case VT_POSPARMS: ---- 4892,4896 ---- - case VT_VARIABLE: - case VT_ARRAYMEMBER: -! len = MB_STRLEN (value); - break; - case VT_POSPARMS: -*** bash-3.0/include/shmbutil.h Mon Apr 19 09:59:42 2004 ---- bash/include/shmbutil.h Thu Sep 2 15:20:47 2004 -*************** -*** 32,35 **** ---- 32,37 ---- - extern size_t xdupmbstowcs __P((wchar_t **, char ***, const char *)); - -+ extern size_t mbstrlen __P((const char *)); -+ - extern char *xstrchr __P((const char *, int)); - -*************** -*** 39,42 **** ---- 41,47 ---- - #endif - -+ #define MBSLEN(s) (((s) && (s)[0]) ? ((s)[1] ? mbstrlen (s) : 1) : 0) -+ #define MB_STRLEN(s) ((MB_CUR_MAX > 1) ? MBSLEN (s) : STRLEN (s)) -+ - #else /* !HANDLE_MULTIBYTE */ - -*************** -*** 54,57 **** ---- 59,64 ---- - #define MB_NULLWCH(x) (0) - #endif -+ -+ #define MB_STRLEN(s) (STRLEN(s)) - - #endif /* !HANDLE_MULTIBYTE */ - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 3 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 4 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-005 =================================================================== --- trunk/package/bash/bash30-005 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-005 2010-12-13 01:57:32 UTC (rev 119) @@ -1,46 +0,0 @@ -*** bash-3.0/lib/readline/misc.c Wed Jul 7 08:56:32 2004 ---- bash/lib/readline/misc.c Sat Aug 7 22:38:53 2004 -*************** -*** 277,286 **** - _rl_saved_line_for_history->data = (char *)rl_undo_list; - } -- else if (STREQ (rl_line_buffer, _rl_saved_line_for_history->line) == 0) -- { -- free (_rl_saved_line_for_history->line); -- _rl_saved_line_for_history->line = savestring (rl_line_buffer); -- _rl_saved_line_for_history->data = (char *)rl_undo_list; /* XXX possible memleak */ -- } - - return 0; ---- 277,280 ---- -*** bash-3.0/lib/readline/vi_mode.c Tue Jul 13 14:08:27 2004 ---- bash/lib/readline/vi_mode.c Tue Aug 17 00:12:09 2004 -*************** -*** 273,280 **** ---- 273,282 ---- - { - case '?': -+ _rl_free_saved_history_line (); - rl_noninc_forward_search (count, key); - break; - - case '/': -+ _rl_free_saved_history_line (); - rl_noninc_reverse_search (count, key); - break; - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 4 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 5 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-006 =================================================================== --- trunk/package/bash/bash30-006 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-006 2010-12-13 01:57:32 UTC (rev 119) @@ -1,145 +0,0 @@ -*** bash-3.0/lib/readline/display.c Thu May 27 22:57:51 2004 ---- bash/lib/readline/display.c Mon Aug 30 11:55:02 2004 -*************** -*** 202,206 **** - { - char *r, *ret, *p; -! int l, rl, last, ignoring, ninvis, invfl, ind, pind, physchars; - - /* Short-circuit if we can. */ ---- 202,206 ---- - { - char *r, *ret, *p; -! int l, rl, last, ignoring, ninvis, invfl, invflset, ind, pind, physchars; - - /* Short-circuit if we can. */ -*************** -*** 223,226 **** ---- 223,227 ---- - - invfl = 0; /* invisible chars in first line of prompt */ -+ invflset = 0; /* we only want to set invfl once */ - - for (rl = ignoring = last = ninvis = physchars = 0, p = pmt; p && *p; p++) -*************** -*** 250,254 **** - *r++ = *p++; - if (!ignoring) -! rl += ind - pind; - else - ninvis += ind - pind; ---- 251,258 ---- - *r++ = *p++; - if (!ignoring) -! { -! rl += ind - pind; -! physchars += _rl_col_width (pmt, pind, ind); -! } - else - ninvis += ind - pind; -*************** -*** 260,273 **** - *r++ = *p; - if (!ignoring) -! rl++; /* visible length byte counter */ - else - ninvis++; /* invisible chars byte counter */ - } - -! if (rl >= _rl_screenwidth) -! invfl = ninvis; -! -! if (ignoring == 0) -! physchars++; - } - } ---- 264,280 ---- - *r++ = *p; - if (!ignoring) -! { -! rl++; /* visible length byte counter */ -! physchars++; -! } - else - ninvis++; /* invisible chars byte counter */ - } - -! if (invflset == 0 && rl >= _rl_screenwidth) -! { -! invfl = ninvis; -! invflset = 1; -! } - } - } -*************** -*** 418,422 **** - register char *line; - int c_pos, inv_botlin, lb_botlin, lb_linenum; -! int newlines, lpos, temp, modmark; - char *prompt_this_line; - #if defined (HANDLE_MULTIBYTE) ---- 425,429 ---- - register char *line; - int c_pos, inv_botlin, lb_botlin, lb_linenum; -! int newlines, lpos, temp, modmark, n0, num; - char *prompt_this_line; - #if defined (HANDLE_MULTIBYTE) -*************** -*** 574,577 **** ---- 581,585 ---- - #if defined (HANDLE_MULTIBYTE) - memset (_rl_wrapped_line, 0, vis_lbsize); -+ num = 0; - #endif - -*************** -*** 592,596 **** ---- 600,619 ---- - prompts that exceed two physical lines? - Additional logic fix from Edward Catmur <ed...@ca...> */ -+ #if defined (HANDLE_MULTIBYTE) -+ n0 = num; -+ temp = local_prompt ? strlen (local_prompt) : 0; -+ while (num < temp) -+ { -+ if (_rl_col_width (local_prompt, n0, num) > _rl_screenwidth) -+ { -+ num = _rl_find_prev_mbchar (local_prompt, num, MB_FIND_ANY); -+ break; -+ } -+ num++; -+ } -+ temp = num + -+ #else - temp = ((newlines + 1) * _rl_screenwidth) + -+ #endif /* !HANDLE_MULTIBYTE */ - ((local_prompt_prefix == 0) ? ((newlines == 0) ? prompt_invis_chars_first_line - : ((newlines == 1) ? wrap_offset : 0)) -*************** -*** 598,602 **** ---- 621,629 ---- - - inv_lbreaks[++newlines] = temp; -+ #if defined (HANDLE_MULTIBYTE) -+ lpos -= _rl_col_width (local_prompt, n0, num); -+ #else - lpos -= _rl_screenwidth; -+ #endif - } - - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 5 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 6 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-007 =================================================================== --- trunk/package/bash/bash30-007 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-007 2010-12-13 01:57:32 UTC (rev 119) @@ -1,41 +0,0 @@ -*** bash-3.0/braces.c Thu Dec 4 11:09:52 2003 ---- bash/braces.c Wed Aug 4 14:34:33 2004 -*************** -*** 341,346 **** - if (lhs_t == ST_CHAR) - { -! lhs_v = lhs[0]; -! rhs_v = rhs[0]; - } - else ---- 341,346 ---- - if (lhs_t == ST_CHAR) - { -! lhs_v = (unsigned char)lhs[0]; -! rhs_v = (unsigned char)rhs[0]; - } - else -*************** -*** 403,406 **** ---- 403,407 ---- - pass_next = 1; - i++; -+ level++; - continue; - } - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 6 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 7 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-008 =================================================================== --- trunk/package/bash/bash30-008 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-008 2010-12-13 01:57:32 UTC (rev 119) @@ -1,31 +0,0 @@ -*** bash-3.0/subst.c Sun Jul 4 13:56:13 2004 ---- bash/subst.c Thu Aug 12 13:36:17 2004 -*************** -*** 4892,4896 **** - *e1p += len; - -! if (*e1p >= len || *e1p < 0) - return (-1); - ---- 4912,4916 ---- - *e1p += len; - -! if (*e1p > len || *e1p < 0) - return (-1); - - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 7 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 8 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-009 =================================================================== --- trunk/package/bash/bash30-009 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-009 2010-12-13 01:57:32 UTC (rev 119) @@ -1,82 +0,0 @@ -*** bash-3.0/lib/readline/vi_mode.c Tue Jul 13 14:08:27 2004 ---- bash/lib/readline/vi_mode.c Tue Aug 17 00:12:09 2004 -*************** -*** 691,695 **** - wchar_t wc; - char mb[MB_LEN_MAX+1]; -! int mblen; - mbstate_t ps; - ---- 693,697 ---- - wchar_t wc; - char mb[MB_LEN_MAX+1]; -! int mblen, p; - mbstate_t ps; - -*************** -*** 714,722 **** - if (wc) - { - mblen = wcrtomb (mb, wc, &ps); - if (mblen >= 0) - mb[mblen] = '\0'; - rl_begin_undo_group (); -! rl_delete (1, 0); - rl_insert_text (mb); - rl_end_undo_group (); ---- 716,727 ---- - if (wc) - { -+ p = rl_point; - mblen = wcrtomb (mb, wc, &ps); - if (mblen >= 0) - mb[mblen] = '\0'; - rl_begin_undo_group (); -! rl_vi_delete (1, 0); -! if (rl_point < p) /* Did we retreat at EOL? */ -! rl_point++; /* XXX - should we advance more than 1 for mbchar? */ - rl_insert_text (mb); - rl_end_undo_group (); -*************** -*** 1311,1320 **** - #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) -! while (_rl_insert_char (1, c)) -! { -! RL_SETSTATE (RL_STATE_MOREINPUT); -! c = rl_read_key (); -! RL_UNSETSTATE (RL_STATE_MOREINPUT); -! } - else - #endif ---- 1316,1329 ---- - #if defined (HANDLE_MULTIBYTE) - if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) -! { -! if (rl_point < p) /* Did we retreat at EOL? */ -! rl_point++; -! while (_rl_insert_char (1, c)) -! { -! RL_SETSTATE (RL_STATE_MOREINPUT); -! c = rl_read_key (); -! RL_UNSETSTATE (RL_STATE_MOREINPUT); -! } -! } - else - #endif - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 8 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 9 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-010 =================================================================== --- trunk/package/bash/bash30-010 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-010 2010-12-13 01:57:32 UTC (rev 119) @@ -1,95 +0,0 @@ -*** bash-3.0/bashline.c Mon Jul 5 23:22:12 2004 ---- bash/bashline.c Thu Sep 2 16:00:12 2004 -*************** -*** 101,104 **** ---- 101,105 ---- - - /* Helper functions for Readline. */ -+ static int bash_directory_expansion __P((char **)); - static int bash_directory_completion_hook __P((char **)); - static int filename_completion_ignore __P((char **)); -*************** -*** 293,297 **** - at = strchr (rl_completer_word_break_characters, '@'); - if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0)) -! return; - - /* We have something to do. Do it. */ ---- 294,298 ---- - at = strchr (rl_completer_word_break_characters, '@'); - if ((at == 0 && on_or_off == 0) || (at != 0 && on_or_off != 0)) -! return old_value; - - /* We have something to do. Do it. */ -*************** -*** 1407,1414 **** - if (*hint_text == '~') - { -! int l, tl, vl; - vl = strlen (val); - tl = strlen (hint_text); - l = vl - hint_len; /* # of chars added */ - temp = (char *)xmalloc (l + 2 + tl); - strcpy (temp, hint_text); ---- 1408,1424 ---- - if (*hint_text == '~') - { -! int l, tl, vl, dl; -! char *rd; - vl = strlen (val); - tl = strlen (hint_text); -+ #if 0 - l = vl - hint_len; /* # of chars added */ -+ #else -+ rd = savestring (filename_hint); -+ bash_directory_expansion (&rd); -+ dl = strlen (rd); -+ l = vl - dl; /* # of chars added */ -+ free (rd); -+ #endif - temp = (char *)xmalloc (l + 2 + tl); - strcpy (temp, hint_text); -*************** -*** 2188,2191 **** ---- 2198,2222 ---- - } - -+ /* Simulate the expansions that will be performed by -+ rl_filename_completion_function. This must be called with the address of -+ a pointer to malloc'd memory. */ -+ static int -+ bash_directory_expansion (dirname) -+ char **dirname; -+ { -+ char *d; -+ -+ d = savestring (*dirname); -+ -+ if (rl_directory_rewrite_hook) -+ (*rl_directory_rewrite_hook) (&d); -+ -+ if (rl_directory_completion_hook && (*rl_directory_completion_hook) (&d)) -+ { -+ free (*dirname); -+ *dirname = d; -+ } -+ } -+ - /* Handle symbolic link references and other directory name - expansions while hacking completion. */ - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 9 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 10 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-011 =================================================================== --- trunk/package/bash/bash30-011 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-011 2010-12-13 01:57:32 UTC (rev 119) @@ -1,39 +0,0 @@ -*** bash-3.0/lib/readline/mbutil.c Wed Jan 14 09:44:52 2004 ---- bash/lib/readline/mbutil.c Wed Aug 18 22:25:57 2004 -*************** -*** 127,135 **** - { - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); -! while (wcwidth (wc) == 0) - { - point += tmp; - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); -! if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2)) - break; - } ---- 127,135 ---- - { - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); -! while (tmp > 0 && wcwidth (wc) == 0) - { - point += tmp; - tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); -! if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp)) - break; - } - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 10 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 11 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-012 =================================================================== --- trunk/package/bash/bash30-012 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-012 2010-12-13 01:57:32 UTC (rev 119) @@ -1,38 +0,0 @@ -*** bash-3.0/jobs.c Fri Apr 23 16:28:25 2004 ---- bash/jobs.c Wed Aug 18 11:15:07 2004 -*************** -*** 1779,1784 **** - { - fail = 0; -! for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next) -! if (p->status != EXECUTION_SUCCESS) fail = p->status; - return fail; - } ---- 1779,1789 ---- - { - fail = 0; -! p = jobs[job]->pipe; -! do -! { -! if (p->status != EXECUTION_SUCCESS) fail = p->status; -! p = p->next; -! } -! while (p != jobs[job]->pipe); - return fail; - } - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 11 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 12 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-013 =================================================================== --- trunk/package/bash/bash30-013 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-013 2010-12-13 01:57:32 UTC (rev 119) @@ -1,69 +0,0 @@ -*** bash-3.0/bashline.c Mon Jul 5 23:22:12 2004 ---- bash/bashline.c Thu Sep 2 16:00:12 2004 -*************** -*** 2514,2518 **** - static int ind; - int glen; -! char *ret; - - if (state == 0) ---- 2545,2549 ---- - static int ind; - int glen; -! char *ret, *ttext; - - if (state == 0) -*************** -*** 2524,2538 **** - FREE (globtext); - - if (rl_explicit_arg) - { -! globorig = savestring (text); -! glen = strlen (text); - globtext = (char *)xmalloc (glen + 2); -! strcpy (globtext, text); - globtext[glen] = '*'; - globtext[glen+1] = '\0'; - } - else -! globtext = globorig = savestring (text); - - matches = shell_glob_filename (globtext); ---- 2555,2574 ---- - FREE (globtext); - -+ ttext = bash_tilde_expand (text, 0); -+ - if (rl_explicit_arg) - { -! globorig = savestring (ttext); -! glen = strlen (ttext); - globtext = (char *)xmalloc (glen + 2); -! strcpy (globtext, ttext); - globtext[glen] = '*'; - globtext[glen+1] = '\0'; - } - else -! globtext = globorig = savestring (ttext); -! -! if (ttext != text) -! free (ttext); - - matches = shell_glob_filename (globtext); - -*** bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 12 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 13 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-014 =================================================================== --- trunk/package/bash/bash30-014 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-014 2010-12-13 01:57:32 UTC (rev 119) @@ -1,52 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 3.0 -Patch-ID: bash30-014 - -Bug-Reported-by: agr...@ge... -Bug-Reference-ID: <200...@pi...> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-09/msg00250.html - -Bug-Description: - - # - # BROKEN case: variable with braces inside quotes - # - - $ D=W - $ echo "${D}"{illy,onka} => W{illy,onka} - -Patch: - -*** ../bash-3.0-patched/braces.c Wed Sep 8 11:07:53 2004 ---- bash/braces.c Fri Sep 17 18:42:36 2004 -*************** -*** 403,407 **** - pass_next = 1; - i++; -! level++; - continue; - } ---- 403,408 ---- - pass_next = 1; - i++; -! if (quoted == 0) -! level++; - continue; - } -*** ../bash-3.0-patched/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 13 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 14 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-015 =================================================================== --- trunk/package/bash/bash30-015 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-015 2010-12-13 01:57:32 UTC (rev 119) @@ -1,56 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 3.0 -Patch-ID: bash30-015 - -Bug-Reported-by: ope...@ya... -Bug-Reference-ID: <200...@no...> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-10/msg00297.html - -Bug-Description: - - Shell variable can start with number and can even be printed with - 'declare', as in - 1=aaa - 1a=bbb - declare -p 1 1a - - But, they can't be removed, as in - unset 1 1a --> ...: not a valid identifier - - Bash-2.05b correctly gives me error, however. - -Patch: - -*** ../bash-3.0-patched/general.c Wed Apr 14 23:20:13 2004 ---- bash/general.c Wed Oct 20 16:59:59 2004 -*************** -*** 268,272 **** - - #if defined (ARRAY_VARS) -! if ((legal_variable_starter (c) == 0) && (flags && c != '[')) /* ] */ - #else - if (legal_variable_starter (c) == 0) ---- 268,272 ---- - - #if defined (ARRAY_VARS) -! if ((legal_variable_starter (c) == 0) && (flags == 0 || c != '[')) /* ] */ - #else - if (legal_variable_starter (c) == 0) - -*** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 ---- bash/patchlevel.h Thu Sep 2 15:04:32 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 14 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 15 - - #endif /* _PATCHLEVEL_H_ */ Deleted: trunk/package/bash/bash30-016 =================================================================== --- trunk/package/bash/bash30-016 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-016 2010-12-13 01:57:32 UTC (rev 119) @@ -1,84 +0,0 @@ - BASH PATCH REPORT - ================= - -Bash-Release: 3.0 -Patch-ID: bash30-016 - -Bug-Reported-by: William Park <ope...@ya...> -Bug-Reference-ID: <200...@no...> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-11/msg00017.html - -Bug-Description: - - Offset from the end of array in ${var: -n} is still off by 1. Eg. - x=( {0..9} ) - echo ${x[*]: -1} --> 8 9 - -Patch: - -*** ../bash-3.0-patched/subst.c Wed Sep 8 11:07:55 2004 ---- bash/subst.c Tue Nov 9 16:26:59 2004 -*************** -*** 4900,4905 **** - case VT_ARRAYVAR: - a = (ARRAY *)value; -! /* For arrays, the first value deals with array indices. */ -! len = array_max_index (a); /* arrays index from 0 to n - 1 */ - break; - #endif ---- 4900,4906 ---- - case VT_ARRAYVAR: - a = (ARRAY *)value; -! /* For arrays, the first value deals with array indices. Negative -! offsets count from one past the array's maximum index. */ -! len = array_max_index (a) + (*e1p < 0); /* arrays index from 0 to n - 1 */ - break; - #endif -*** ../bash-3.0-patched/tests/array.tests Sat Oct 4 23:25:00 2003 ---- bash/tests/array.tests Tue Nov 9 16:36:29 2004 -*************** -*** 323,327 **** - echo positive offset - expect five seven - echo ${av[@]:5:2} -! echo negative offset - expect five seven - echo ${av[@]: -2:2} - ---- 323,327 ---- - echo positive offset - expect five seven - echo ${av[@]:5:2} -! echo negative offset to unset element - expect seven - echo ${av[@]: -2:2} - -*** ../bash-3.0-patched/tests/array.right Sat Oct 4 23:25:10 2003 ---- bash/tests/array.right Tue Nov 9 16:37:25 2004 -*************** -*** 171,176 **** - positive offset - expect five seven - five seven -! negative offset - expect five seven -! five seven - positive offset 2 - expect seven - seven ---- 171,176 ---- - positive offset - expect five seven - five seven -! negative offset to unset element - expect seven -! seven - positive offset 2 - expect seven - seven -*** ../bash-3.0-patched/patchlevel.h Tue Oct 26 17:13:29 2004 ---- bash/patchlevel.h Tue Nov 9 16:31:24 2004 -*************** -*** 26,30 **** - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 15 - - #endif /* _PATCHLEVEL_H_ */ ---- 26,30 ---- - looks for to find the patch level (for the sccs version string). */ - -! #define PATCHLEVEL 16 - - #endif /* _PATCHLEVEL_H_ */ - Deleted: trunk/package/bash/bash30-050-signames =================================================================== --- trunk/package/bash/bash30-050-signames 2010-12-12 23:00:21 UTC (rev 118) +++ trunk/package/bash/bash30-050-signames 2010-12-13 01:57:32 UTC (rev 119) @@ -1,692 +0,0 @@ ---- /dev/null 2005-06-20 00:31:57.000000000 -0600 -+++ bash-3.0/signames.h 2005-08-02 16:57:21.000000000 -0600 -@@ -0,0 +1,202 @@ -+/* A translation list so we can be polite to our users. */ -+char *signal_names[NSIG + 4] = { -+ "EXIT", -+#ifdef SIGHUP -+ [SIGHUP] "SIGHUP", -+#endif -+#ifdef SIGINT -+ [SIGINT] "SIGINT", -+#endif -+#ifdef SIGQUIT -+ [SIGQUIT] "SIGQUIT", -+#endif -+#ifdef SIGILL -+ [SIGILL] "SIGILL", -+#endif -+#ifdef SIGTRAP -+ [SIGTRAP] "SIGTRAP", -+#endif -+#ifdef SIGABRT -+ [SIGABRT] "SIGABRT", -+#endif -+#ifdef SIGBUS -+ [SIGBUS] "SIGBUS", -+#endif -+#ifdef SIGFPE -+ [SIGFPE] "SIGFPE", -+#endif -+#ifdef SIGKILL -+ [SIGKILL] "SIGKILL", -+#endif -+#ifdef SIGUSR1 -+ [SIGUSR1] "SIGUSR1", -+#endif -+#ifdef SIGSEGV -+ [SIGSEGV] "SIGSEGV", -+#endif -+#ifdef SIGUSR2 -+ [SIGUSR2] "SIGUSR2", -+#endif -+#ifdef SIGPIPE -+ [SIGPIPE] "SIGPIPE", -+#endif -+#ifdef SIGALRM -+ [SIGALRM] "SIGALRM", -+#endif -+#ifdef SIGTERM -+ [SIGTERM] "SIGTERM", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(16)", -+#endif -+#ifdef SIGCHLD -+ [SIGCHLD] "SIGCHLD", -+#endif -+#ifdef SIGCONT -+ [SIGCONT] "SIGCONT", -+#endif -+#ifdef SIGSTOP -+ [SIGSTOP] "SIGSTOP", -+#endif -+#ifdef SIGTSTP -+ [SIGTSTP] "SIGTSTP", -+#endif -+#ifdef SIGTTIN -+ [SIGTTIN] "SIGTTIN", -+#endif -+#ifdef SIGTTOU -+ [SIGTTOU] "SIGTTOU", -+#endif -+#ifdef SIGURG -+ [SIGURG] "SIGURG", -+#endif -+#ifdef SIGXCPU -+ [SIGXCPU] "SIGXCPU", -+#endif -+#ifdef SIGXFSZ -+ [SIGXFSZ] "SIGXFSZ", -+#endif -+#ifdef SIGVTALRM -+ [SIGVTALRM] "SIGVTALRM", -+#endif -+#ifdef SIGPROF -+ [SIGPROF] "SIGPROF", -+#endif -+#ifdef SIGWINCH -+ [SIGWINCH] "SIGWINCH", -+#endif -+#ifdef SIGIO -+ [SIGIO] "SIGIO", -+#endif -+#ifdef SIGPWR -+ [SIGPWR] "SIGPWR", -+#endif -+#ifdef SIGSYS -+ [SIGSYS] "SIGSYS", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(32)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(33)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(34)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(35)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(36)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(37)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(38)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(39)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(40)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(41)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(42)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(43)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(44)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(45)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(46)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(47)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(48)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(49)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(50)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(51)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(52)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(53)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(54)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(55)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(56)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(57)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(58)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(59)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(60)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(61)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(62)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(63)", -+#endif -+#ifdef SIGJUNK -+ [SIGJUNK] "SIGJUNK(64)", -+#endif -+ [NSIG] "DEBUG", -+ -+ [NSIG + 1] "ERR", -+ -+ [NSIG + 2] (char *)0x0 -+}; -+ ---- bash-3.0.orig/Makefile.in 2004-03-17 06:34:39.000000000 -0700 -+++ bash-3.0/Makefile.in 2005-08-02 16:44:29.000000000 -0600 -@@ -410,9 +410,6 @@ - - SOURCES = $(CSOURCES) $(HSOURCES) $(BUILTIN_DEFS) - --# header files chosen based on running of configure --SIGNAMES_H = @SIGNAMES_H@ -- - # object files chosen based on running of configure - JOBS_O = @JOBS_O@ - SIGLIST_O = @SIGLIST_O@ -@@ -483,15 +480,12 @@ - PO_SRC = $(srcdir)/po/ - PO_DIR = $(dot)/po/ - --SIGNAMES_SUPPORT = $(SUPPORT_SRC)mksignames.c -- - SUPPORT_SRC = $(srcdir)/support/ - SDIR = $(dot)/support/ - - TESTS_SUPPORT = recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) - CREATED_SUPPORT = signames.h recho$(EXEEXT) zecho$(EXEEXT) printenv$(EXEEXT) \ -- tests/recho$(EXEEXT) tests/zecho$(EXEEXT) \ -- tests/printenv$(EXEEXT) mksignames$(EXEEXT) lsignames.h \ -+ tests/recho$(EXEEXT) tests/zecho$(EXEEXT) tests/printenv$(EXEEXT) \ - mksyntax${EXEEXT} syntax.c $(VERSPROG) $(VERSOBJ) \ - buildversion.o - CREATED_CONFIGURE = config.h config.cache config.status config.log \ -@@ -607,22 +601,9 @@ - - ${LIBINTL_H}: ${INTL_LIBRARY} - --mksignames$(EXEEXT): $(SUPPORT_SRC)mksignames.c -- $(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -o $@ $(SUPPORT_SRC)mksignames.c -- - mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h - ${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c - --# make a list of signals for the local system -- this is done when we're --# *not* cross-compiling --lsignames.h: mksignames$(EXEEXT) -- $(RM) $@ -- ./mksignames $@ -- --# copy the correct signames header file to signames.h --signames.h: $(SIGNAMES_H) -- -if cmp -s $(SIGNAMES_H) $@ ; then :; else $(RM) $@ ; $(CP) $(SIGNAMES_H) $@ ; fi -- - syntax.c: mksyntax${EXEEXT} $(srcdir)/syntax.h - $(RM) $@ - ./mksyntax -o $@ ---- bash-3.0.orig/support/mksignames.c 2003-03-24 15:11:38.000000000 -0700 -+++ bash-3.0/support/mksignames.c 2005-06-20 00:31:57.000000000 -0600 -@@ -1,432 +0,0 @@ --/* signames.c -- Create and write `signames.h', which contains an array of -- signal names. */ -- --/* Copyright (C) 1992-2003 Free Software Foundation, Inc. -- -- This file is part of GNU Bash, the Bourne Again SHell. -- -- Bash is free software; you can redistribute it and/or modify it under -- the terms of the GNU General Public License as published by the Free -- Software Foundation; either version 2, or (at your option) any later -- version. -- -- Bash is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or -- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- for more details. -- -- You should have received a copy of the GNU General Public License along -- with Bash; see the file COPYING. If not, write to the Free Software -- Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ -- --#include <config.h> -- --#include <stdio.h> --#include <sys/types.h> --#include <signal.h> --#if defined (HAVE_STDLIB_H) --# include <stdlib.h> --#else --# include "ansi_stdlib.h" --#endif /* HAVE_STDLIB_H */ -- --#if !defined (NSIG) --# define NSIG 64 --#endif -- --/* -- * Special traps: -- * EXIT == 0 -- * DEBUG == NSIG -- * ERR == NSIG+1 -- * RETURN == NSIG+2 -- */ --#define LASTSIG NSIG+2 -- --char *signal_names[2 * (LASTSIG)]; -- --#define signal_names_size (sizeof(signal_names)/sizeof(signal_names[0])) -- --char *progname; -- --/* AIX 4.3 defines SIGRTMIN and SIGRTMAX as 888 and 999 respectively. -- I don't want to allocate so much unused space for the intervening signal -- numbers, so we just punt if SIGRTMAX is past the bounds of the -- signal_names array (handled in configure). */ --#if defined (SIGRTMAX) && defined (UNUSABLE_RT_SIGNALS) --# undef SIGRTMAX --# undef SIGRTMIN --#endif -- --#if defined (SIGRTMAX) || defined (SIGRTMIN) --# define RTLEN 14 --# define RTLIM 256 --#endif -- --void --initialize_signames () --{ -- register int i; --#if defined (SIGRTMAX) || defined (SIGRTMIN) -- int rtmin, rtmax, rtcnt; --#endif -- -- for (i = 1; i < signal_names_size; i++) -- signal_names[i] = (char *)NULL; -- -- /* `signal' 0 is what we do on exit. */ -- signal_names[0] = "EXIT"; -- -- /* Place signal names which can be aliases for more common signal -- names first. This allows (for example) SIGABRT to overwrite SIGLOST. */ -- -- /* POSIX 1003.1b-1993 real time signals, but take care of incomplete -- implementations. Acoording to the standard, both, SIGRTMIN and -- SIGRTMAX must be defined, SIGRTMIN must be stricly less than -- SIGRTMAX, and the difference must be at least 7, that is, there -- must be at least eight distinct real time signals. */ -- -- /* The generated signal names are SIGRTMIN, SIGRTMIN+1, ..., -- SIGRTMIN+x, SIGRTMAX-x, ..., SIGRTMAX-1, SIGRTMAX. If the number -- of RT signals is odd, there is an extra SIGRTMIN+(x+1). -- These names are the ones used by ksh and /usr/xpg4/bin/sh on SunOS5. */ -- --#if defined (SIGRTMIN) -- rtmin = SIGRTMIN; -- signal_names[rtmin] = "SIGRTMIN"; --#endif -- --#if defined (SIGRTMAX) -- rtmax = SIGRTMAX; -- signal_names[rtmax] = "SIGRTMAX"; --#endif -- --#if defined (SIGRTMAX) && defined (SIGRTMIN) -- if (rtmax > rtmin) -- { -- rtcnt = (rtmax - rtmin - 1) / 2; -- /* croak if there are too many RT signals */ -- if (rtcnt >= RTLIM/2) -- { -- rtcnt = RTLIM/2-1; -- fprintf(stderr, "%s: error: more than %i real time signals, fix `%s'\n", -- progname, RTLIM, progname); -- } -- -- for (i = 1; i <= rtcnt; i++) -- { -- signal_names[rtmin+i] = (char *)malloc(RTLEN); -- if (signal_names[rtmin+i]) -- sprintf (signal_names[rtmin+i], "SIGRTMIN+%d", i); -- signal_names[rtmax-i] = (char *)malloc(RTLEN); -- if (signal_names[rtmax-i]) -- sprintf (signal_names[rtmax-i], "SIGRTMAX-%d", i); -- } -- -- if (rtcnt < RTLIM/2-1 && rtcnt != (rtmax-rtmin)/2) -- { -- /* Need an extra RTMIN signal */ -- signal_names[rtmin+rtcnt+1] = (char *)malloc(RTLEN); -- if (signal_names[rtmin+rtcnt+1]) -- sprintf (signal_names[rtmin+rtcnt+1], "SIGRTMIN+%d", rtcnt+1); -- } -- } --#endif /* SIGRTMIN && SIGRTMAX */ -- --/* AIX */ --#if defined (SIGLOST) /* resource lost (eg, record-lock lost) */ -- signal_names[SIGLOST] = "SIGLOST"; --#endif -- --#if defined (SIGMSG) /* HFT input data pending */ -- signal_names[SIGMSG] = "SIGMSG"; --#endif -- --#if defined (SIGDANGER) /* system crash imminent */ -- signal_names[SIGDANGER] = "SIGDANGER"; --#endif -- --#if defined (SIGMIGRATE) /* migrate process to another CPU */ -- signal_names[SIGMIGRATE] = "SIGMIGRATE"; --#endif -- --#if defined (SIGPRE) /* programming error */ -- signal_names[SIGPRE] = "SIGPRE"; --#endif -- --#if defined (SIGVIRT) /* AIX virtual time alarm */ -- signal_names[SIGVIRT] = "SIGVIRT"; --#endif -- --#if defined (SIGALRM1) /* m:n condition variables */ -- signal_names[SIGALRM1] = "SIGALRM1"; --#endif -- --#if defined (SIGWAITING) /* m:n scheduling */ -- signal_names[SIGWAITING] = "SIGWAITING"; --#endif -- --#if defined (SIGGRANT) /* HFT monitor mode granted */ -- signal_names[SIGGRANT] = "SIGGRANT"; --#endif -- --#if defined (SIGKAP) /* keep alive poll from native keyboard */ -- signal_names[SIGKAP] = "SIGKAP"; --#endif -- --#if defined (SIGRETRACT) /* HFT monitor mode retracted */ -- signal_names[SIGRETRACT] = "SIGRETRACT"; --#endif -- --#if defined (SIGSOUND) /* HFT sound sequence has completed */ -- signal_names[SIGSOUND] = "SIGSOUND"; --#endif -- --#if defined (SIGSAK) /* Secure Attention Key */ -- signal_names[SIGSAK] = "SIGSAK"; --#endif -- --/* SunOS5 */ --#if defined (SIGLWP) /* special signal used by thread library */ -- signal_names[SIGLWP] = "SIGLWP"; --#endif -- --#if defined (SIGFREEZE) /* special signal used by CPR */ -- signal_names[SIGFREEZE] = "SIGFREEZE"; --#endif -- --#if defined (SIGTHAW) /* special signal used by CPR */ -- signal_names[SIGTHAW] = "SIGTHAW"; --#endif -- --#if defined (SIGCANCEL) /* thread cancellation signal used by libthread */ -- signal_names[SIGCANCEL] = "SIGCANCEL"; --#endif -- --/* HP-UX */ --#if defined (SIGDIL) /* DIL signal (?) */ -- signal_names[SIGDIL] = "SIGDIL"; --#endif -- --/* System V */ --#if defined (SIGCLD) /* Like SIGCHLD. */ -- signal_names[SIGCLD] = "SIGCLD"; --#endif -- --#if defined (SIGPWR) /* power state indication */ -- signal_names[SIGPWR] = "SIGPWR"; --#endif -- --#if defined (SIGPOLL) /* Pollable event (for streams) */ -- signal_names[SIGPOLL] = "SIGPOLL"; --#endif -- --/* Unknown */ --#if defined (SIGWINDOW) -- signal_names[SIGWINDOW] = "SIGWINDOW"; --#endif -- --/* Common */ --#if defined (SIGHUP) /* hangup */ -- signal_names[SIGHUP] = "SIGHUP"; --#endif -- --#if defined (SIGINT) /* interrupt */ -- signal_names[SIGINT] = "SIGINT"; --#endif -- --#if defined (SIGQUIT) /* quit */ -- signal_names[SIGQUIT] = "SIGQUIT"; --#endif -- --#if defined (SIGILL) /* illegal instruction (not reset when caught) */ -- signal_names[SIGILL] = "SIGILL"; --#endif -- --#if defined (SIGTRAP) /* trace trap (not reset when caught) */ -- signal_names[SIGTRAP] = "SIGTRAP"; --#endif -- --#if defined (SIGIOT) /* IOT instruction */ -- signal_names[SIGIOT] = "SIGIOT"; --#endif -- --#if defined (SIGABRT) /* Cause current process to dump core. */ -- signal_names[SIGABRT] = "SIGABRT"; --#endif -- --#if defined (SIGEMT) /* EMT instruction */ -- signal_names[SIGEMT] = "SIGEMT"; --#endif -- --#if defined (SIGFPE) /* floating point exception */ -- signal_names[SIGFPE] = "SIGFPE"; --#endif -- --#if defined (SIGKILL) /* kill (cannot be caught or ignored) */ -- signal_names[SIGKILL] = "SIGKILL"; --#endif -- --#if defined (SIGBUS) /* bus error */ -- signal_names[SIGBUS] = "SIGBUS"; --#endif -- --#if defined (SIGSEGV) /* segmentation violation */ -- signal_names[SIGSEGV] = "SIGSEGV"; --#endif -- --#if defined (SIGSYS) /* bad argument to system call */ -- signal_names[SIGSYS] = "SIGSYS"; --#endif -- --#if defined (SIGPIPE) /* write on a pipe with no one to read it */ -- signal_names[SIGPIPE] = "SIGPIPE"; --#endif -- --#if defined (SIGALRM) /* alarm clock */ -- signal_names[SIGALRM] = "SIGALRM"; --#endif -- --#if defined (SIGTERM) /* software termination signal from kill */ -- signal_names[SIGTERM] = "SIGTERM"; --#endif -- --#if defined (SIGURG) /* urgent condition on IO channel */ -- signal_names[SIGURG] = "SIGURG"; --#endif -- --#if defined (SIGSTOP) /* sendable stop signal not from tty */ -- signal_names[SIGSTOP] = "SIGSTOP"; --#endif -- --#if defined (SIGTSTP) /* stop signal from tty */ -- signal_names[SIGTSTP] = "SIGTSTP"; --#endif -- --#if defined (SIGCONT) /* continue a stopped process */ -- signal_names[SIGCONT] = "SIGCONT"; --#endif -- --#if defined (SIGCHLD) /* to parent on child stop or exit */ -- signal_names[SIGCHLD] = "SIGCHLD"; --#endif -- --#if defined (SIGTTIN) /* to readers pgrp upon background tty read */ -- signal_names[SIGTTIN] = "SIGTTIN"; --#endif -- --#if defined (SIGTTOU) /* like TTIN for output if (tp->t_local<OSTOP) */ -- signal_names[SIGTTOU] = "SIGTTOU"; --#endif -- --#if defined (SIGIO) /* input/output possible signal */ -- signal_names[SIGIO] = "SIGIO"; --#endif -- --#if defined (SIGXCPU) /* exceeded CPU time limit */ -- signal_names[SIGXCPU] = "SIGXCPU"; --#endif -- --#if defined (SIGXFSZ) /* exceeded file size limit */ -- signal_names[SIGXFSZ] = "SIGXFSZ"; --#endif -- --#if defined (SIGVTALRM) /* virtual time alarm */ -- signal_names[SIGVTALRM] = "SIGVTALRM"; --#endif -- --#if defined (SIGPROF) /* profiling time alarm */ -- signal_names[SIGPROF] = "SIGPROF"; --#endif -- --#if defined (SIGWINCH) /* window changed */ -- signal_names[SIGWINCH] = "SIGWINCH"; --#endif -- --/* 4.4 BSD */ --#if defined (SIGINFO) && !defined (_SEQUENT_) /* information request */ -- signal_names[SIGINFO] = "SIGINFO"; --#endif -- --#if defined (SIGUSR1) /* user defined signal 1 */ -- signal_names[SIGUSR1] = "SIGUSR1"; --#endif -- --#if defined (SIGUSR2) /* user defined signal 2 */ -- signal_names[SIGUSR2] = "SIGUSR2"; --#endif -- --#if defined (SIGKILLTHR) /* BeOS: Kill Thread */ -- signal_names[SIGKILLTHR] = "SIGKILLTHR"; --#endif -- -- for (i = 0; i < NSIG; i++) -- if (signal_names[i] == (char *)NULL) -- { -- signal_names[i] = (char *)malloc (18); -- if (signal_names[i]) -- sprintf (signal_names[i], "SIGJUNK(%d)", i); -- } -- -- signal_names[NSIG] = "DEBUG"; -- signal_names[NSIG+1] = "ERR"; -- signal_names[NSIG+2] = "RETURN"; --} -- --void --write_signames (stream) -- FILE *stream; --{ -- register int i; -- -- fprintf (stream, "/* This file was automatically created by %s.\n", -- progname); -- fprintf (stream, " Do not edit. Edit support/mksignames.c instead. */\n\n"); -- fprintf (stream, -- "/* A translation list so we can be polite to our users. */\n"); -- fprintf (stream, "char *signal_names[NSIG + 4] = {\n"); -- -- for (i = 0; i <= LASTSIG; i++) -- fprintf (stream, " \"%s\",\n", signal_names[i]); -- -- fprintf (stream, " (char *)0x0\n"); -- fprintf (stream, "};\n"); --} -- --int --main (argc, argv) -- int argc; -- char **argv; --{ -- char *stream_name; -- FILE *stream; -- -- progname = argv[0]; -- -- if (argc == 1) -- { -- stream_name = "stdout"; -- stream = stdout; -- } -- else if (argc == 2) -- { -- stream_name = argv[1]; -- stream = fopen (stream_name, "w"); -- } -- else -- { -- fprintf (s... [truncated message content] |
From: <abe...@us...> - 2010-12-12 23:00:27
|
Revision: 118 http://runnix.svn.sourceforge.net/runnix/?rev=118&view=rev Author: abelbeck Date: 2010-12-12 23:00:21 +0000 (Sun, 12 Dec 2010) Log Message: ----------- kexectools, version bump to 2.0.2 Modified Paths: -------------- trunk/package/kexectools/kexectools-static-hack.patch trunk/package/kexectools/kexectools.mk Removed Paths: ------------- trunk/package/kexectools/kexectools-1.101-fix-real-mode-entry-vivek.patch Deleted: trunk/package/kexectools/kexectools-1.101-fix-real-mode-entry-vivek.patch =================================================================== --- trunk/package/kexectools/kexectools-1.101-fix-real-mode-entry-vivek.patch 2010-12-12 21:32:15 UTC (rev 117) +++ trunk/package/kexectools/kexectools-1.101-fix-real-mode-entry-vivek.patch 2010-12-12 23:00:21 UTC (rev 118) @@ -1,25 +0,0 @@ -diff -puN kexec/arch/i386/kexec-bzImage.c~kexec-x86-fix-bzImage-real-mode-entry kexec/arch/i386/kexec-bzImage.c ---- kexec-tools-1.101-fix-real-mode-entry/kexec/arch/i386/kexec-bzImage.c~kexec-x86-fix-bzImage-real-mode-entry 2005-09-02 11:12:38.000000000 +0530 -+++ kexec-tools-1.101-fix-real-mode-entry-vivek/kexec/arch/i386/kexec-bzImage.c 2005-09-02 11:14:18.000000000 +0530 -@@ -182,7 +182,7 @@ int do_bzImage_load(struct kexec_info *i - /* - * Initialize the 16bit start information. - */ -- regs16.cs = setup_base + 0x20; -+ regs16.cs = (setup_base >> 4) + 0x20; - regs16.ip = 0; - regs16.ss = (elf_rel_get_addr(&info->rhdr, "stack_end") - 64*1024) >> 4; - regs16.esp = 0xFFFC; -diff -puN purgatory/arch/i386/entry32-16.S~kexec-x86-fix-bzImage-real-mode-entry purgatory/arch/i386/entry32-16.S ---- kexec-tools-1.101-fix-real-mode-entry/purgatory/arch/i386/entry32-16.S~kexec-x86-fix-bzImage-real-mode-entry 2005-09-02 11:14:31.000000000 +0530 -+++ kexec-tools-1.101-fix-real-mode-entry-vivek/purgatory/arch/i386/entry32-16.S 2005-09-02 11:31:12.000000000 +0530 -@@ -25,7 +25,7 @@ - entry16: - .code32 - /* Compute where I am running at */ -- movl $entry16_debug, %ebx -+ movl $entry16, %ebx - - /* Fixup my real mode segment */ - movl %ebx, %eax - Modified: trunk/package/kexectools/kexectools-static-hack.patch =================================================================== --- trunk/package/kexectools/kexectools-static-hack.patch 2010-12-12 21:32:15 UTC (rev 117) +++ trunk/package/kexectools/kexectools-static-hack.patch 2010-12-12 23:00:21 UTC (rev 118) @@ -1,8 +1,11 @@ ---- kexec-tools-1.101/util/Makefile 2006-06-04 19:00:00.000000000 -0400 -+++ kexec-tools-1.101/util/Makefile.orig 2006-06-04 18:59:51.000000000 -0400 -@@ -1,4 +1,4 @@ - BIN_TO_HEX:= $(OBJDIR)/bin/bin-to-hex - $(BIN_TO_HEX): util/bin-to-hex.c - mkdir -p $(@D) -- $(BUILD_CC) $(BUILD_CFLAGS) $< -o $@ -+ $(BUILD_CC) $(BUILD_CFLAGS) -static $< -o $@ +--- kexec-tools-2.0.0/util/Makefile.orig 2010-12-12 15:52:26.000000000 -0600 ++++ kexec-tools-2.0.0/util/Makefile 2010-12-12 15:54:34.000000000 -0600 +@@ -5,7 +5,7 @@ + $(LINK.o) $(CFLAGS) -o $@ $^ + + $(BIN_TO_HEX): CC=$(BUILD_CC) +-$(BIN_TO_HEX): CFLAGS=$(BUILD_CFLAGS) ++$(BIN_TO_HEX): CFLAGS=$(BUILD_CFLAGS) -static + $(BIN_TO_HEX): LDFLAGS= + + dist += util/Makefile util/bin-to-hex.c Modified: trunk/package/kexectools/kexectools.mk =================================================================== --- trunk/package/kexectools/kexectools.mk 2010-12-12 21:32:15 UTC (rev 117) +++ trunk/package/kexectools/kexectools.mk 2010-12-12 23:00:21 UTC (rev 118) @@ -3,12 +3,12 @@ # kexectools # ############################################################# -KEXECTOOLS_VER:=1.101 +KEXECTOOLS_VER:=2.0.2 KEXECTOOLS_SOURCE:=kexec-tools-$(KEXECTOOLS_VER).tar.gz -KEXECTOOLS_SITE:=http://www.xmission.com/~ebiederm/files/kexec/ +KEXECTOOLS_SITE:=http://kernel.org/pub/linux/utils/kernel/kexec/ KEXECTOOLS_DIR:=$(BUILD_DIR)/kexec-tools-$(KEXECTOOLS_VER) KEXECTOOLS_CAT:=zcat -KEXECTOOLS_BINARY:=objdir-$(ARCH)-linux/build/sbin/kexec +KEXECTOOLS_BINARY:=build/sbin/kexec KEXECTOOLS_TARGET_BINARY:=sbin/kexec $(DL_DIR)/$(KEXECTOOLS_SOURCE): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-12 21:32:21
|
Revision: 117 http://runnix.svn.sourceforge.net/runnix/?rev=117&view=rev Author: abelbeck Date: 2010-12-12 21:32:15 +0000 (Sun, 12 Dec 2010) Log Message: ----------- /runnix script tweak, use -f to test for files instead of -r Modified Paths: -------------- trunk/target/generic/target_skeleton/runnix Modified: trunk/target/generic/target_skeleton/runnix =================================================================== --- trunk/target/generic/target_skeleton/runnix 2010-12-12 20:00:16 UTC (rev 116) +++ trunk/target/generic/target_skeleton/runnix 2010-12-12 21:32:15 UTC (rev 117) @@ -272,7 +272,7 @@ if [ -n "$INITRD" ]; then - if [ -r "$INITRD" ]; then + if [ -f "$INITRD" ]; then echo "Custom initrd $INITRD found" else INITRD=$BASE/os/initrd.img @@ -286,7 +286,7 @@ if [ -n "$KERN" ]; then - if [ -r "$KERN" ]; then + if [ -f "$KERN" ]; then echo "Custom kernel $KERN found" else KERN=$ROOT/boot/bzImage @@ -298,7 +298,7 @@ KERN=$ROOT/boot/bzImage fi -if [ -r "$INITRD" -a -r "$KERN" ]; then +if [ -f "$INITRD" -a -f "$KERN" ]; then echo "Copying kernel and initrd to ramdisk..." mount -t tmpfs none /mnt/tmp cp "$INITRD" /mnt/tmp/initrd.img This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-12 20:00:23
|
Revision: 116 http://runnix.svn.sourceforge.net/runnix/?rev=116&view=rev Author: abelbeck Date: 2010-12-12 20:00:16 +0000 (Sun, 12 Dec 2010) Log Message: ----------- Add ssh boot option to the configs Modified Paths: -------------- trunk/toolchain/runrelease/files/configs/alix.cfg trunk/toolchain/runrelease/files/configs/default-serial.cfg trunk/toolchain/runrelease/files/configs/default.cfg trunk/toolchain/runrelease/files/configs/wrap.cfg trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg Modified: trunk/toolchain/runrelease/files/configs/alix.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/alix.cfg 2010-12-12 19:42:43 UTC (rev 115) +++ trunk/toolchain/runrelease/files/configs/alix.cfg 2010-12-12 20:00:16 UTC (rev 116) @@ -13,6 +13,10 @@ kernel runnix append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 doshell +label ssh + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 doshell_ssh + label xrunnix kernel Xrunnix append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 Modified: trunk/toolchain/runrelease/files/configs/default-serial.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/default-serial.cfg 2010-12-12 19:42:43 UTC (rev 115) +++ trunk/toolchain/runrelease/files/configs/default-serial.cfg 2010-12-12 20:00:16 UTC (rev 116) @@ -13,6 +13,10 @@ kernel runnix append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,19200n8 doshell +label ssh + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,19200n8 doshell_ssh + label xrunnix kernel Xrunnix append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,19200n8 Modified: trunk/toolchain/runrelease/files/configs/default.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/default.cfg 2010-12-12 19:42:43 UTC (rev 115) +++ trunk/toolchain/runrelease/files/configs/default.cfg 2010-12-12 20:00:16 UTC (rev 116) @@ -13,6 +13,10 @@ kernel runnix append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 doshell +label ssh + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 doshell_ssh + label xrunnix kernel Xrunnix append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 Modified: trunk/toolchain/runrelease/files/configs/wrap.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/wrap.cfg 2010-12-12 19:42:43 UTC (rev 115) +++ trunk/toolchain/runrelease/files/configs/wrap.cfg 2010-12-12 20:00:16 UTC (rev 116) @@ -13,6 +13,10 @@ kernel runnix append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 doshell +label ssh + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 doshell_ssh + label xrunnix kernel Xrunnix append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 Modified: trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg 2010-12-12 19:42:43 UTC (rev 115) +++ trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg 2010-12-12 20:00:16 UTC (rev 116) @@ -7,6 +7,8 @@ shell) Run shell instead of booting + ssh) Run shell and enable ssh instead of booting + xrunnix) Use previous RUNNIX image (if any) memtest) Run Memtest86 Modified: trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg 2010-12-12 19:42:43 UTC (rev 115) +++ trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg 2010-12-12 20:00:16 UTC (rev 116) @@ -13,6 +13,10 @@ kernel runnix append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 doshell +label ssh + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 doshell_ssh + label xrunnix kernel Xrunnix append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-12 19:42:50
|
Revision: 115 http://runnix.svn.sourceforge.net/runnix/?rev=115&view=rev Author: abelbeck Date: 2010-12-12 19:42:43 +0000 (Sun, 12 Dec 2010) Log Message: ----------- More /runnix tweaks, rename 'dofail' command line option to 'doshell_ssh', better organize with functions Modified Paths: -------------- trunk/target/generic/target_skeleton/runnix Modified: trunk/target/generic/target_skeleton/runnix =================================================================== --- trunk/target/generic/target_skeleton/runnix 2010-12-12 16:36:57 UTC (rev 114) +++ trunk/target/generic/target_skeleton/runnix 2010-12-12 19:42:43 UTC (rev 115) @@ -11,11 +11,55 @@ DRIVES="hda hdb hdc hdd hde hdf hdg hdh sda sdb sdc sdd" -do_failure () { +setup_network () { + + if [ -z "$NDEV" -a -n "$1" ]; then + NDEV="$1" + fi + + #VLANS + for i in $VLANS; do + IF=`echo $i | cut -d. -f1` + VID=`echo $i | cut -d. -f2` + ifconfig $IF up + vconfig add $IF $VID > /dev/null + done + + if [ -n "$NDEV" ]; then + ifconfig lo up 127.0.0.1 + + if [ -n "$MAC" ]; then + ifconfig "$NDEV" hw ether "$MAC" + fi + + if [ "$IP" = "dhcp" ]; then + echo "Configuring $NDEV with DHCP..." + udhcpc -nq -s /etc/udhcpc.script -i "$NDEV" + else + ifconfig "$NDEV" inet "$IP" netmask "$NM" + route add -net default gw "$GW" + + for i in $DNS; do + echo "nameserver $i" >> /tmp/etc/resolv.conf + done + + fi + return 0 + fi + + return 1 +} + +setup_ssh () { + + if [ -z "$SSHPORT" -a -n "$1" ]; then + SSHPORT="$1" + fi + if [ -n "$SSHPORT" ]; then mount -t devpts devpts /dev/pts - echo "Generating keys" + echo "Generating keys..." dropbearkey -t rsa -f /tmp/rsa_key -s 1024 dropbearkey -t dss -f /tmp/dss_key -s 1024 @@ -35,10 +79,17 @@ touch /var/log/lastlog touch /var/log/wtmp - echo "Starting dropbear" + echo "Starting ssh..." dropbear -d /tmp/dss_key -r /tmp/rsa_key -E -P /tmp/dropbear.pid -p $SSHPORT fi + return 1 +} + +do_failure () { + + setup_ssh + do_shell } @@ -90,6 +141,7 @@ if [ -z "$DEVICE" ]; then echo "Runnix device not found" do_shell + # reboot fi # get image name @@ -106,47 +158,22 @@ fi if echo "$CMDLINE" | grep -q doshell; then + if echo "$CMDLINE" | grep -q doshell_ssh; then + if setup_network eth0; then + setup_ssh 2222 + fi + fi do_shell + # reboot fi -if echo "$CMDLINE" | grep -q dofail; then - do_failure -fi - if [ -z "$RUNIMG" ]; then RUNIMG="auto" fi #Network support - yikes -#VLANS -for i in $VLANS; do - IF=`echo $i | cut -d. -f1` - VID=`echo $i | cut -d. -f2` - ifconfig $IF up - vconfig add $IF $VID > /dev/null -done - -if [ -n "$NDEV" ]; then - ifconfig lo up 127.0.0.1 - - if [ -n "$MAC" ]; then - ifconfig "$NDEV" hw ether "$MAC" - fi - - if [ "$IP" = "dhcp" ]; then - echo "Configuring $NDEV with DHCP..." - udhcpc -nq -s /etc/udhcpc.script -i "$NDEV" - else - ifconfig "$NDEV" inet "$IP" netmask "$NM" - route add -net default gw "$GW" - - for i in $DNS; do - echo "nameserver $i" >> /tmp/etc/resolv.conf - done - - fi - +if setup_network; then if [ -n "$URL" ]; then echo "Checking for updates..." This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-12 16:37:03
|
Revision: 114 http://runnix.svn.sourceforge.net/runnix/?rev=114&view=rev Author: abelbeck Date: 2010-12-12 16:36:57 +0000 (Sun, 12 Dec 2010) Log Message: ----------- dropbear version bump to 0.52 Modified Paths: -------------- trunk/package/dropbear/dropbear.mk Modified: trunk/package/dropbear/dropbear.mk =================================================================== --- trunk/package/dropbear/dropbear.mk 2010-12-10 00:19:31 UTC (rev 113) +++ trunk/package/dropbear/dropbear.mk 2010-12-12 16:36:57 UTC (rev 114) @@ -3,7 +3,7 @@ # dropbear # ############################################################# -DROPBEAR_VER:=0.50 +DROPBEAR_VER:=0.52 DROPBEAR_SOURCE:=dropbear-$(DROPBEAR_VER).tar.bz2 DROPBEAR_SITE:=http://matt.ucc.asn.au/dropbear/releases/ DROPBEAR_DIR:=$(BUILD_DIR)/dropbear-$(DROPBEAR_VER) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-10 00:19:37
|
Revision: 113 http://runnix.svn.sourceforge.net/runnix/?rev=113&view=rev Author: abelbeck Date: 2010-12-10 00:19:31 +0000 (Fri, 10 Dec 2010) Log Message: ----------- Add VERIFY_LOCAL variable to os/default.conf to verify local run images on every boot, disabled by default Note: this is a change from the previous default behavior Modified Paths: -------------- trunk/target/generic/target_skeleton/runnix trunk/toolchain/runrelease/files/rootfs_vfat/os/default.conf Modified: trunk/target/generic/target_skeleton/runnix =================================================================== --- trunk/target/generic/target_skeleton/runnix 2010-12-09 14:57:00 UTC (rev 112) +++ trunk/target/generic/target_skeleton/runnix 2010-12-10 00:19:31 UTC (rev 113) @@ -55,7 +55,7 @@ echo " -Runnix version $RUNVER starting" +Runnix version '$RUNVER' starting..." mount -t proc none /proc mount -t tmpfs none /tmp @@ -208,15 +208,18 @@ fi if [ -z "$IMGVER" ]; then - echo "Verifying $RUNIMG..." + if [ "$VERIFY_LOCAL" = "yes" ]; then + echo "Verifying $RUNIMG..." - if sha1sum -cs $RUNIMG.sha1; then - echo "$RUNIMG verified" - IMGVER=1 + if sha1sum -cs $RUNIMG.sha1; then + echo "$RUNIMG verified" + IMGVER=1 + else + echo "$RUNIMG not verified" + fi else - echo "$RUNIMG not verified" + echo "Skip Verifying $RUNIMG" fi - fi if [ -f $BASE/os/$RUNIMG.conf ]; then Modified: trunk/toolchain/runrelease/files/rootfs_vfat/os/default.conf =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/os/default.conf 2010-12-09 14:57:00 UTC (rev 112) +++ trunk/toolchain/runrelease/files/rootfs_vfat/os/default.conf 2010-12-10 00:19:31 UTC (rev 113) @@ -37,4 +37,9 @@ # Sometimes we need to sleep after upgrade # This is a hack that you should not use -# USLEEP="10" +#USLEEP="10" + +# Set to "yes" to verify local run images on every boot +# Note: Upgrades via a URL are always verified +#VERIFY_LOCAL="yes" + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-09 14:57:07
|
Revision: 112 http://runnix.svn.sourceforge.net/runnix/?rev=112&view=rev Author: abelbeck Date: 2010-12-09 14:57:00 +0000 (Thu, 09 Dec 2010) Log Message: ----------- enable Busybox 'vi' so we can edit stuff with do_shell Modified Paths: -------------- trunk/package/busybox/busybox-runnix.config Modified: trunk/package/busybox/busybox-runnix.config =================================================================== --- trunk/package/busybox/busybox-runnix.config 2010-12-09 04:45:19 UTC (rev 111) +++ trunk/package/busybox/busybox-runnix.config 2010-12-09 14:57:00 UTC (rev 112) @@ -278,17 +278,17 @@ # CONFIG_ED is not set # CONFIG_PATCH is not set CONFIG_SED=y -# CONFIG_VI is not set -# CONFIG_FEATURE_VI_COLON is not set -# CONFIG_FEATURE_VI_YANKMARK is not set -# CONFIG_FEATURE_VI_SEARCH is not set -# CONFIG_FEATURE_VI_USE_SIGNALS is not set -# CONFIG_FEATURE_VI_DOT_CMD is not set -# CONFIG_FEATURE_VI_READONLY is not set -# CONFIG_FEATURE_VI_SETOPTS is not set -# CONFIG_FEATURE_VI_SET is not set -# CONFIG_FEATURE_VI_WIN_RESIZE is not set -# CONFIG_FEATURE_VI_OPTIMIZE_CURSOR is not set +CONFIG_VI=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y CONFIG_FEATURE_ALLOW_EXEC=y # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-09 04:45:25
|
Revision: 111 http://runnix.svn.sourceforge.net/runnix/?rev=111&view=rev Author: abelbeck Date: 2010-12-09 04:45:19 +0000 (Thu, 09 Dec 2010) Log Message: ----------- enable IDE support in the kernel Modified Paths: -------------- trunk/target/device/geni586/linux.config Modified: trunk/target/device/geni586/linux.config =================================================================== --- trunk/target/device/geni586/linux.config 2010-12-09 02:41:19 UTC (rev 110) +++ trunk/target/device/geni586/linux.config 2010-12-09 04:45:19 UTC (rev 111) @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.26.8 -# Wed Mar 3 15:26:16 2010 +# Wed Dec 8 22:15:40 2010 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -465,7 +465,83 @@ # CONFIG_MISC_DEVICES is not set CONFIG_HAVE_IDE=y CONFIG_IDE=y -# CONFIG_BLK_DEV_IDE is not set +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_IDEDISK=y +CONFIG_IDEDISK_MULTI_MODE=y +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +# CONFIG_BLK_DEV_PLATFORM is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_IDEPNP is not set +CONFIG_BLK_DEV_IDEDMA_SFF=y + +# +# PCI IDE chipsets support +# +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_PCIBUS_ORDER is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_BLK_DEV_ATIIXP=y +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CS5535 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_JMICRON is not set +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_PIIX=y +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +CONFIG_BLK_DEV_PDC202XX_OLD=y +CONFIG_BLK_DEV_PDC202XX_NEW=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_BLK_DEV_TC86C001 is not set + +# +# Other IDE chipsets support +# + +# +# Note: most of these also require special kernel boot parameters +# +# CONFIG_BLK_DEV_4DRIVES is not set +# CONFIG_BLK_DEV_ALI14XX is not set +# CONFIG_BLK_DEV_DTC2278 is not set +# CONFIG_BLK_DEV_HT6560B is not set +# CONFIG_BLK_DEV_QD65XX is not set +# CONFIG_BLK_DEV_UMC8672 is not set +CONFIG_BLK_DEV_IDEDMA=y # CONFIG_BLK_DEV_HD_ONLY is not set # CONFIG_BLK_DEV_HD is not set @@ -1158,6 +1234,7 @@ # CONFIG_LEDS_TRIGGERS=y # CONFIG_LEDS_TRIGGER_TIMER is not set +# CONFIG_LEDS_TRIGGER_IDE_DISK is not set # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set # CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set # CONFIG_ACCESSIBILITY is not set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-09 02:41:25
|
Revision: 110 http://runnix.svn.sourceforge.net/runnix/?rev=110&view=rev Author: abelbeck Date: 2010-12-09 02:41:19 +0000 (Thu, 09 Dec 2010) Log Message: ----------- add configs directory to vFAT image for upgrade-RUNNIX-image script in AstLinux Modified Paths: -------------- trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg Added Paths: ----------- trunk/toolchain/runrelease/files/configs/ trunk/toolchain/runrelease/files/configs/alix.cfg trunk/toolchain/runrelease/files/configs/default-serial.cfg trunk/toolchain/runrelease/files/configs/default.cfg trunk/toolchain/runrelease/files/configs/wrap.cfg Added: trunk/toolchain/runrelease/files/configs/alix.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/alix.cfg (rev 0) +++ trunk/toolchain/runrelease/files/configs/alix.cfg 2010-12-09 02:41:19 UTC (rev 110) @@ -0,0 +1,23 @@ +serial 0 38400 +console 0 +default runnix +timeout 50 +prompt 1 +display boot.msg + +label runnix + kernel runnix + append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 + +label shell + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 doshell + +label xrunnix + kernel Xrunnix + append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 + +label memtest + kernel memtest + append console=ttyS0,38400n8 + Added: trunk/toolchain/runrelease/files/configs/default-serial.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/default-serial.cfg (rev 0) +++ trunk/toolchain/runrelease/files/configs/default-serial.cfg 2010-12-09 02:41:19 UTC (rev 110) @@ -0,0 +1,23 @@ +serial 0 19200 +console 0 +default runnix +timeout 50 +prompt 1 +display boot.msg + +label runnix + kernel runnix + append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,19200n8 + +label shell + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,19200n8 doshell + +label xrunnix + kernel Xrunnix + append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,19200n8 + +label memtest + kernel memtest + append console=ttyS0,19200n8 + Added: trunk/toolchain/runrelease/files/configs/default.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/default.cfg (rev 0) +++ trunk/toolchain/runrelease/files/configs/default.cfg 2010-12-09 02:41:19 UTC (rev 110) @@ -0,0 +1,22 @@ +# serial 0 19200 +# console 1 +default runnix +timeout 50 +prompt 1 +display boot.msg + +label runnix + kernel runnix + append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 + +label shell + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 doshell + +label xrunnix + kernel Xrunnix + append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 + +label memtest + kernel memtest + Added: trunk/toolchain/runrelease/files/configs/wrap.cfg =================================================================== --- trunk/toolchain/runrelease/files/configs/wrap.cfg (rev 0) +++ trunk/toolchain/runrelease/files/configs/wrap.cfg 2010-12-09 02:41:19 UTC (rev 110) @@ -0,0 +1,23 @@ +serial 0 38400 +console 0 +default runnix +timeout 50 +prompt 1 +display boot.msg + +label runnix + kernel runnix + append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 + +label shell + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 doshell + +label xrunnix + kernel Xrunnix + append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 console=ttyS0,38400n8 + +label memtest + kernel memtest + append console=ttyS0,38400n8 + Modified: trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg 2010-12-09 00:16:13 UTC (rev 109) +++ trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg 2010-12-09 02:41:19 UTC (rev 110) @@ -1,4 +1,14 @@ -runnix SVN-TRUNK - http://www.runnix.org +################################## +# RUNNIX - AstLinux bootloader # +################################## + runnix) RUNNIX boot (default) + shell) Run shell instead of booting + +xrunnix) Use previous RUNNIX image (if any) + +memtest) Run Memtest86 + + Modified: trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg 2010-12-09 00:16:13 UTC (rev 109) +++ trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg 2010-12-09 02:41:19 UTC (rev 110) @@ -7,8 +7,16 @@ label runnix kernel runnix - append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto rootdelay=10 quiet + append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 -label rescue +label shell kernel runnix - append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto rootdelay=10 doshell + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto ide=nodma rootdelay=10 doshell + +label xrunnix + kernel Xrunnix + append initrd=Xrunnix.img root=/dev/ram0 rw init=/runnix runimg=auto ide=nodma rootdelay=10 + +label memtest + kernel memtest + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-09 00:16:19
|
Revision: 109 http://runnix.svn.sourceforge.net/runnix/?rev=109&view=rev Author: abelbeck Date: 2010-12-09 00:16:13 +0000 (Thu, 09 Dec 2010) Log Message: ----------- remove pset svn:executable, the hard way Added Paths: ----------- trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg Added: trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg (rev 0) +++ trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg 2010-12-09 00:16:13 UTC (rev 109) @@ -0,0 +1,4 @@ +runnix SVN-TRUNK - http://www.runnix.org + + + Added: trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg (rev 0) +++ trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg 2010-12-09 00:16:13 UTC (rev 109) @@ -0,0 +1,14 @@ +# serial 0 19200 +# console 1 +default runnix +timeout 50 +prompt 1 +display boot.msg + +label runnix + kernel runnix + append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto rootdelay=10 quiet + +label rescue + kernel runnix + append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto rootdelay=10 doshell This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <abe...@us...> - 2010-12-09 00:13:24
|
Revision: 108 http://runnix.svn.sourceforge.net/runnix/?rev=108&view=rev Author: abelbeck Date: 2010-12-09 00:13:18 +0000 (Thu, 09 Dec 2010) Log Message: ----------- remove pset svn:executable, the hard way Removed Paths: ------------- trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg Deleted: trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg 2010-12-08 23:10:44 UTC (rev 107) +++ trunk/toolchain/runrelease/files/rootfs_vfat/boot.msg 2010-12-09 00:13:18 UTC (rev 108) @@ -1,4 +0,0 @@ -runnix SVN-TRUNK - http://www.runnix.org - - - Deleted: trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg =================================================================== --- trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg 2010-12-08 23:10:44 UTC (rev 107) +++ trunk/toolchain/runrelease/files/rootfs_vfat/syslinux.cfg 2010-12-09 00:13:18 UTC (rev 108) @@ -1,14 +0,0 @@ -# serial 0 19200 -# console 1 -default runnix -timeout 50 -prompt 1 -display boot.msg - -label runnix - kernel runnix - append initrd=runnix.img root=/dev/ram0 rw init=/runnix runimg=auto rootdelay=10 quiet - -label rescue - kernel runnix - append initrd=runnix.img root=/dev/ram0 ro init=/runnix runimg=auto rootdelay=10 doshell This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ppr...@us...> - 2010-07-14 20:23:43
|
Revision: 105 http://runnix.svn.sourceforge.net/runnix/?rev=105&view=rev Author: pprindeville Date: 2010-07-14 20:23:36 +0000 (Wed, 14 Jul 2010) Log Message: ----------- Newer kernel requires newer compiler. Modified Paths: -------------- trunk/runnix.config Modified: trunk/runnix.config =================================================================== --- trunk/runnix.config 2010-07-11 22:56:42 UTC (rev 104) +++ trunk/runnix.config 2010-07-14 20:23:36 UTC (rev 105) @@ -70,7 +70,7 @@ # # BR2_GCC_VERSION_3_3_5 is not set # BR2_GCC_VERSION_3_3_6 is not set -BR2_GCC_VERSION_3_4_2=y +# BR2_GCC_VERSION_3_4_2 is not set # BR2_GCC_VERSION_3_4_3 is not set # BR2_GCC_VERSION_3_4_4 is not set # BR2_GCC_VERSION_3_4_5 is not set @@ -78,8 +78,8 @@ # BR2_GCC_VERSION_4_0_1 is not set # BR2_GCC_VERSION_4_0_2 is not set # BR2_GCC_VERSION_4_1_0 is not set -# BR2_GCC_VERSION_4_2_0 is not set -BR2_GCC_VERSION="3.4.2" +BR2_GCC_VERSION_4_2_0=y +BR2_GCC_VERSION="4.2.0" # BR2_GCC_USE_SJLJ_EXCEPTIONS is not set BR2_EXTRA_GCC_CONFIG_OPTIONS="" # BR2_INSTALL_LIBSTDCPP is not set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ppr...@us...> - 2010-07-11 22:56:48
|
Revision: 104 http://runnix.svn.sourceforge.net/runnix/?rev=104&view=rev Author: pprindeville Date: 2010-07-11 22:56:42 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Handle 'doshell' better; reboot when shell exits; hide useless error messages. Modified Paths: -------------- trunk/target/generic/target_skeleton/runnix Modified: trunk/target/generic/target_skeleton/runnix =================================================================== --- trunk/target/generic/target_skeleton/runnix 2010-07-11 21:49:15 UTC (rev 103) +++ trunk/target/generic/target_skeleton/runnix 2010-07-11 22:56:42 UTC (rev 104) @@ -7,7 +7,7 @@ # ROOT is where the .run partition is mounted ROOT=/mnt/root -RUNVER=`cat /etc/runnix-release` +RUNVER="`cat /etc/runnix-release`" DRIVES="hda hdb hdc hdd hde hdf hdg hdh sda sdb sdc sdd" @@ -23,7 +23,7 @@ ifconfig $FAILDEV $FAILIP netmask $FAILNM if [ -n "$FAILGW" ]; then - route del -net default 2> /dev/null + route del -net default 2>/dev/null route add -net default gw $FAILGW fi @@ -39,8 +39,18 @@ dropbear -d /tmp/dss_key -r /tmp/rsa_key -E -P /tmp/dropbear.pid -p $SSHPORT fi + do_shell +} + +do_shell () { echo "Dropping to shell" - exec /bin/sh + + # need to get rid of message: + # /bin/sh: can't access tty; job control turned off + /bin/sh -i </dev/console >/dev/console 2>/dev/console + + # and reboot when done + reboot -f } echo " @@ -51,10 +61,10 @@ mount -t tmpfs none /tmp mkdir /tmp/etc -CMDLINE=`cat /proc/cmdline` +CMDLINE="`cat /proc/cmdline`" for x in $DRIVES; do - if mount -t iso9660 -o ro /dev/${x} $BASE >/dev/null; then + if mount -t iso9660 -o ro /dev/${x} $BASE 2>/dev/null; then if [ -f $BASE/runnix ]; then DEVICE=${x} RODEV=yes @@ -65,7 +75,7 @@ done for x in $DRIVES; do - if mount -t vfat /dev/${x}1 $BASE >/dev/null; then + if mount -t vfat /dev/${x}1 $BASE 2>/dev/null; then if [ -f $BASE/runnix ]; then DEVICE=${x} else @@ -79,7 +89,7 @@ # Loader not found if [ -z "$DEVICE" ]; then echo "Runnix device not found" - exec /bin/sh -i </dev/console + do_shell fi # get image name @@ -95,12 +105,11 @@ . $BASE/os/default.conf fi -if grep -q doshell /proc/cmdline; then - echo "Dropping to shell" - exec /bin/sh -i </dev/console +if echo "$CMDLINE" | grep -q doshell; then + do_shell fi -if grep -q dofail /proc/cmdline; then +if echo "$CMDLINE" | grep -q dofail; then do_failure fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ppr...@us...> - 2010-07-11 21:49:22
|
Revision: 103 http://runnix.svn.sourceforge.net/runnix/?rev=103&view=rev Author: pprindeville Date: 2010-07-11 21:49:15 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Update patches for 2.6.27 Modified Paths: -------------- trunk/target/device/geni586/linux.config Added Paths: ----------- trunk/target/device/kernel-patches/linux-2.6.27-15-routes.patch trunk/target/device/kernel-patches/linux-2.6.27-rc4-squash3.4.patch trunk/target/device/kernel-patches/linux-2.6.27.21-imq.patch trunk/target/device/kernel-patches/linux-2.6.27.34-unionfs-2.5.3.patch Removed Paths: ------------- trunk/target/device/kernel-patches/linux-2.6.25-imq5.patch trunk/target/device/kernel-patches/linux-2.6.25-squashfs3.4.patch trunk/target/device/kernel-patches/linux-2.6.26-15-routes.patch trunk/target/device/kernel-patches/linux-2.6.26.8-unionfs2.5.1.patch trunk/target/device/kernel-patches/linux-wanpipe.patch Modified: trunk/target/device/geni586/linux.config =================================================================== --- trunk/target/device/geni586/linux.config 2010-07-11 21:30:22 UTC (rev 102) +++ trunk/target/device/geni586/linux.config 2010-07-11 21:49:15 UTC (rev 103) @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.26.8 -# Wed Mar 3 15:26:16 2010 +# Linux kernel version: 2.6.27.48 +# Sun Jul 11 15:46:31 2010 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -23,7 +23,7 @@ CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_HWEIGHT=y -# CONFIG_GENERIC_GPIO is not set +CONFIG_GENERIC_GPIO=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y # CONFIG_RWSEM_GENERIC_SPINLOCK is not set CONFIG_RWSEM_XCHGADD_ALGORITHM=y @@ -33,6 +33,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y # CONFIG_GENERIC_TIME_VSYSCALL is not set CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set # CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set @@ -91,7 +92,6 @@ # CONFIG_EMBEDDED is not set CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y -CONFIG_SYSCTL_SYSCALL_CHECK=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y @@ -115,10 +115,16 @@ # CONFIG_PROFILING is not set # CONFIG_MARKERS is not set CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y +# CONFIG_HAVE_ARCH_TRACEHOOK is not set # CONFIG_HAVE_DMA_ATTRS is not set +# CONFIG_USE_GENERIC_SMP_HELPERS is not set +# CONFIG_HAVE_CLK is not set CONFIG_PROC_PAGE_MONITOR=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y CONFIG_SLABINFO=y CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set @@ -129,6 +135,7 @@ # CONFIG_BLK_DEV_IO_TRACE is not set CONFIG_LSF=y # CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set # # IO Schedulers @@ -155,16 +162,12 @@ CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set # CONFIG_X86_VOYAGER is not set -# CONFIG_X86_NUMAQ is not set -# CONFIG_X86_SUMMIT is not set -# CONFIG_X86_BIGSMP is not set -# CONFIG_X86_VISWS is not set # CONFIG_X86_GENERICARCH is not set -# CONFIG_X86_ES7000 is not set +# CONFIG_X86_VSMP is not set # CONFIG_X86_RDC321X is not set -# CONFIG_X86_VSMP is not set CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y # CONFIG_PARAVIRT_GUEST is not set +CONFIG_MEMTEST=y # CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set @@ -203,7 +206,6 @@ CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_X86_ALIGNMENT_16=y -CONFIG_X86_GOOD_APIC=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_TSC=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 @@ -246,7 +248,9 @@ CONFIG_ZONE_DMA_FLAG=1 CONFIG_BOUNCE=y CONFIG_VIRT_TO_BUS=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 # CONFIG_HIGHPTE is not set +CONFIG_X86_RESERVE_LOW_64K=y # CONFIG_MATH_EMULATION is not set # CONFIG_MTRR is not set CONFIG_SECCOMP=y @@ -307,10 +311,6 @@ CONFIG_BINFMT_ELF=y # CONFIG_BINFMT_AOUT is not set # CONFIG_BINFMT_MISC is not set - -# -# Networking -# CONFIG_NET=y # @@ -359,6 +359,7 @@ # CONFIG_ATM is not set # CONFIG_BRIDGE is not set CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set # CONFIG_DECNET is not set # CONFIG_LLC2 is not set # CONFIG_IPX is not set @@ -430,6 +431,8 @@ CONFIG_STANDALONE=y CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y +# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_EXTRA_FIRMWARE="" # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set # CONFIG_MTD is not set @@ -462,12 +465,11 @@ # CONFIG_BLK_DEV_XIP is not set # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_HD is not set # CONFIG_MISC_DEVICES is not set CONFIG_HAVE_IDE=y CONFIG_IDE=y # CONFIG_BLK_DEV_IDE is not set -# CONFIG_BLK_DEV_HD_ONLY is not set -# CONFIG_BLK_DEV_HD is not set # # SCSI device support @@ -564,6 +566,7 @@ # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_SRP is not set +# CONFIG_SCSI_DH is not set CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set # CONFIG_SATA_PMP is not set @@ -643,7 +646,6 @@ # CONFIG_I2O is not set # CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=y -# CONFIG_NETDEVICES_MULTIQUEUE is not set # CONFIG_DUMMY is not set # CONFIG_BONDING is not set # CONFIG_MACVLAN is not set @@ -707,9 +709,7 @@ CONFIG_NET_PCI=y CONFIG_PCNET32=y CONFIG_AMD8111_ETH=y -# CONFIG_AMD8111E_NAPI is not set CONFIG_ADAPTEC_STARFIRE=y -# CONFIG_ADAPTEC_STARFIRE_NAPI is not set # CONFIG_AC3200 is not set # CONFIG_APRICOT is not set CONFIG_B44=y @@ -737,24 +737,21 @@ CONFIG_TLAN=y CONFIG_VIA_RHINE=y CONFIG_VIA_RHINE_MMIO=y -# CONFIG_VIA_RHINE_NAPI is not set # CONFIG_SC92031 is not set CONFIG_NETDEV_1000=y CONFIG_ACENIC=y # CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=y CONFIG_E1000=y -# CONFIG_E1000_NAPI is not set # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set CONFIG_E1000E=y -CONFIG_E1000E_ENABLED=y CONFIG_IP1000=y CONFIG_IGB=y +# CONFIG_IGB_LRO is not set CONFIG_NS83820=y CONFIG_HAMACHI=y CONFIG_YELLOWFIN=y CONFIG_R8169=y -# CONFIG_R8169_NAPI is not set CONFIG_R8169_VLAN=y CONFIG_SIS190=y CONFIG_SKGE=y @@ -766,6 +763,7 @@ CONFIG_BNX2=y CONFIG_QLA3XXX=y # CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set # CONFIG_NETDEV_10000 is not set # CONFIG_TR is not set @@ -824,6 +822,7 @@ # CONFIG_KEYBOARD_XTKBD is not set # CONFIG_KEYBOARD_NEWTON is not set # CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_GPIO is not set # CONFIG_INPUT_MOUSE is not set # CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_TABLET is not set @@ -854,6 +853,7 @@ # Character devices # CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y # CONFIG_VT_HW_CONSOLE_BINDING is not set @@ -914,6 +914,22 @@ CONFIG_DEVPORT=y # CONFIG_I2C is not set # CONFIG_SPI is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y + +# +# I2C GPIO expanders: +# + +# +# PCI GPIO expanders: +# +# CONFIG_GPIO_BT8XX is not set + +# +# SPI GPIO expanders: +# # CONFIG_W1 is not set CONFIG_POWER_SUPPLY=y # CONFIG_POWER_SUPPLY_DEBUG is not set @@ -940,8 +956,10 @@ # # Multifunction device drivers # +# CONFIG_MFD_CORE is not set # CONFIG_MFD_SM501 is not set # CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_TMIO is not set # # Multimedia devices @@ -982,10 +1000,6 @@ # CONFIG_VIDEO_SELECT is not set # CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y - -# -# Sound -# # CONFIG_SOUND is not set CONFIG_HID_SUPPORT=y CONFIG_HID=y @@ -1014,6 +1028,7 @@ CONFIG_USB_DEVICE_CLASS=y # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_OTG is not set +# CONFIG_USB_MON is not set # # USB Host Controller Drivers @@ -1068,7 +1083,6 @@ # # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set -# CONFIG_USB_MON is not set # # USB port drivers @@ -1078,7 +1092,6 @@ # CONFIG_USB_EZUSB is not set # CONFIG_USB_SERIAL_GENERIC is not set # CONFIG_USB_SERIAL_AIRCABLE is not set -# CONFIG_USB_SERIAL_AIRPRIME is not set # CONFIG_USB_SERIAL_ARK3116 is not set # CONFIG_USB_SERIAL_BELKIN is not set # CONFIG_USB_SERIAL_CH341 is not set @@ -1125,7 +1138,6 @@ # CONFIG_USB_EMI62 is not set # CONFIG_USB_EMI26 is not set # CONFIG_USB_ADUTUX is not set -# CONFIG_USB_AUERSWALD is not set # CONFIG_USB_RIO500 is not set # CONFIG_USB_LEGOTOWER is not set # CONFIG_USB_LCD is not set @@ -1171,6 +1183,7 @@ # Firmware Drivers # # CONFIG_EDD is not set +CONFIG_FIRMWARE_MEMMAP=y # CONFIG_DELL_RBU is not set # CONFIG_DCDBAS is not set CONFIG_DMIID=y @@ -1254,6 +1267,7 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_VXFS_FS is not set # CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set # CONFIG_HPFS_FS is not set # CONFIG_QNX4FS_FS is not set # CONFIG_ROMFS_FS is not set @@ -1322,11 +1336,22 @@ # CONFIG_HEADERS_CHECK is not set # CONFIG_DEBUG_KERNEL is not set CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_HAVE_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +# CONFIG_FTRACE is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_CONTEXT_SWITCH_TRACER is not set # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set # CONFIG_SAMPLES is not set CONFIG_HAVE_ARCH_KGDB=y -# CONFIG_NONPROMISC_DEVMEM is not set +# CONFIG_STRICT_DEVMEM is not set +CONFIG_X86_VERBOSE_BOOTUP=y CONFIG_EARLY_PRINTK=y # CONFIG_4KSTACKS is not set CONFIG_DOUBLEFAULT=y @@ -1339,6 +1364,7 @@ # CONFIG_IO_DELAY_UDELAY is not set # CONFIG_IO_DELAY_NONE is not set CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_OPTIMIZE_INLINING is not set # # Security options @@ -1392,6 +1418,10 @@ # CONFIG_CRYPTO_MD4 is not set CONFIG_CRYPTO_MD5=y CONFIG_CRYPTO_MICHAEL_MIC=y +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y @@ -1444,6 +1474,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_CRC_CCITT=y CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set CONFIG_CRC_ITU_T=y CONFIG_CRC32=y # CONFIG_CRC7 is not set Deleted: trunk/target/device/kernel-patches/linux-2.6.25-imq5.patch =================================================================== --- trunk/target/device/kernel-patches/linux-2.6.25-imq5.patch 2010-07-11 21:30:22 UTC (rev 102) +++ trunk/target/device/kernel-patches/linux-2.6.25-imq5.patch 2010-07-11 21:49:15 UTC (rev 103) @@ -1,914 +0,0 @@ ---- linux-2.6.25.7/drivers/net/imq.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/drivers/net/imq.c 2008-06-17 15:03:01.000000000 +0300 -@@ -0,0 +1,474 @@ -+/* -+ * Pseudo-driver for the intermediate queue device. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ * -+ * Authors: Patrick McHardy, <ka...@tr...> -+ * -+ * The first version was written by Martin Devera, <de...@cd...> -+ * -+ * Credits: Jan Rafaj <im...@ce...> -+ * - Update patch to 2.4.21 -+ * Sebastian Strollo <sst...@no...> -+ * - Fix "Dead-loop on netdevice imq"-issue -+ * Marcel Sebek <se...@po...> -+ * - Update to 2.6.2-rc1 -+ * -+ * After some time of inactivity there is a group taking care -+ * of IMQ again: http://www.linuximq.net -+ * -+ * -+ * 2004/06/30 - New version of IMQ patch to kernels <=2.6.7 -+ * including the following changes: -+ * -+ * - Correction of ipv6 support "+"s issue (Hasso Tepper) -+ * - Correction of imq_init_devs() issue that resulted in -+ * kernel OOPS unloading IMQ as module (Norbert Buchmuller) -+ * - Addition of functionality to choose number of IMQ devices -+ * during kernel config (Andre Correa) -+ * - Addition of functionality to choose how IMQ hooks on -+ * PRE and POSTROUTING (after or before NAT) (Andre Correa) -+ * - Cosmetic corrections (Norbert Buchmuller) (Andre Correa) -+ * -+ * -+ * 2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were -+ * released with almost no problems. 2.6.14-x was released -+ * with some important changes: nfcache was removed; After -+ * some weeks of trouble we figured out that some IMQ fields -+ * in skb were missing in skbuff.c - skb_clone and copy_skb_header. -+ * These functions are correctly patched by this new patch version. -+ * -+ * Thanks for all who helped to figure out all the problems with -+ * 2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX, -+ * Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully -+ * I didn't forget anybody). I apologize again for my lack of time. -+ * -+ * -+ * 2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead -+ * of qdisc_restart() and moved qdisc_run() to tasklet to avoid -+ * recursive locking. New initialization routines to fix 'rmmod' not -+ * working anymore. Used code from ifb.c. (Jussi Kivilinna) -+ * -+ * Also, many thanks to pablo Sebastian Greco for making the initial -+ * patch and to those who helped the testing. -+ * -+ * More info at: http://www.linuximq.net/ (Andre Correa) -+ */ -+ -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/moduleparam.h> -+#include <linux/skbuff.h> -+#include <linux/netdevice.h> -+#include <linux/rtnetlink.h> -+#include <linux/if_arp.h> -+#include <linux/netfilter.h> -+#include <linux/netfilter_ipv4.h> -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+ #include <linux/netfilter_ipv6.h> -+#endif -+#include <linux/imq.h> -+#include <net/pkt_sched.h> -+#include <net/netfilter/nf_queue.h> -+ -+struct imq_private { -+ struct tasklet_struct tasklet; -+ int tasklet_pending; -+}; -+ -+static nf_hookfn imq_nf_hook; -+ -+static struct nf_hook_ops imq_ingress_ipv4 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET, -+ .hooknum = NF_INET_PRE_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ .priority = NF_IP_PRI_MANGLE + 1 -+#else -+ .priority = NF_IP_PRI_NAT_DST + 1 -+#endif -+}; -+ -+static struct nf_hook_ops imq_egress_ipv4 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET, -+ .hooknum = NF_INET_POST_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA) -+ .priority = NF_IP_PRI_LAST -+#else -+ .priority = NF_IP_PRI_NAT_SRC - 1 -+#endif -+}; -+ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+static struct nf_hook_ops imq_ingress_ipv6 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET6, -+ .hooknum = NF_INET_PRE_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ .priority = NF_IP6_PRI_MANGLE + 1 -+#else -+ .priority = NF_IP6_PRI_NAT_DST + 1 -+#endif -+}; -+ -+static struct nf_hook_ops imq_egress_ipv6 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET6, -+ .hooknum = NF_INET_POST_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA) -+ .priority = NF_IP6_PRI_LAST -+#else -+ .priority = NF_IP6_PRI_NAT_SRC - 1 -+#endif -+}; -+#endif -+ -+#if defined(CONFIG_IMQ_NUM_DEVS) -+static unsigned int numdevs = CONFIG_IMQ_NUM_DEVS; -+#else -+static unsigned int numdevs = IMQ_MAX_DEVS; -+#endif -+ -+static struct net_device *imq_devs_cache[IMQ_MAX_DEVS]; -+ -+static struct net_device_stats *imq_get_stats(struct net_device *dev) -+{ -+ return &dev->stats; -+} -+ -+/* called for packets kfree'd in qdiscs at places other than enqueue */ -+static void imq_skb_destructor(struct sk_buff *skb) -+{ -+ struct nf_queue_entry *entry = skb->nf_queue_entry; -+ -+ if (entry) { -+ if (entry->indev) -+ dev_put(entry->indev); -+ if (entry->outdev) -+ dev_put(entry->outdev); -+ kfree(entry); -+ } -+} -+ -+static int imq_dev_xmit(struct sk_buff *skb, struct net_device *dev) -+{ -+ dev->stats.tx_bytes += skb->len; -+ dev->stats.tx_packets++; -+ -+ skb->imq_flags = 0; -+ skb->destructor = NULL; -+ -+ dev->trans_start = jiffies; -+ nf_reinject(skb->nf_queue_entry, NF_ACCEPT); -+ return 0; -+} -+ -+static int imq_nf_queue(struct nf_queue_entry *entry, unsigned queue_num) -+{ -+ struct net_device *dev; -+ struct imq_private *priv; -+ struct sk_buff *skb2 = NULL; -+ struct Qdisc *q; -+ unsigned int index = entry->skb->imq_flags & IMQ_F_IFMASK; -+ int ret = -1; -+ -+ if (index > numdevs) -+ return -1; -+ -+ /* check for imq device by index from cache */ -+ dev = imq_devs_cache[index]; -+ if (!dev) { -+ char buf[8]; -+ -+ /* get device by name and cache result */ -+ snprintf(buf, sizeof(buf), "imq%d", index); -+ dev = dev_get_by_name(&init_net, buf); -+ if (!dev) { -+ /* not found ?!*/ -+ BUG(); -+ return -1; -+ } -+ -+ imq_devs_cache[index] = dev; -+ } -+ -+ priv = netdev_priv(dev); -+ if (!(dev->flags & IFF_UP)) { -+ entry->skb->imq_flags = 0; -+ nf_reinject(entry, NF_ACCEPT); -+ return 0; -+ } -+ dev->last_rx = jiffies; -+ -+ if (entry->skb->destructor) { -+ skb2 = entry->skb; -+ entry->skb = skb_clone(entry->skb, GFP_ATOMIC); -+ if (!entry->skb) -+ return -1; -+ } -+ entry->skb->nf_queue_entry = entry; -+ -+ dev->stats.rx_bytes += entry->skb->len; -+ dev->stats.rx_packets++; -+ -+ spin_lock_bh(&dev->queue_lock); -+ q = dev->qdisc; -+ if (q->enqueue) { -+ q->enqueue(skb_get(entry->skb), q); -+ if (skb_shared(entry->skb)) { -+ entry->skb->destructor = imq_skb_destructor; -+ kfree_skb(entry->skb); -+ ret = 0; -+ } -+ } -+ if (!test_and_set_bit(1, &priv->tasklet_pending)) -+ tasklet_schedule(&priv->tasklet); -+ spin_unlock_bh(&dev->queue_lock); -+ -+ if (skb2) -+ kfree_skb(ret ? entry->skb : skb2); -+ -+ return ret; -+} -+ -+static struct nf_queue_handler nfqh = { -+ .name = "imq", -+ .outfn = imq_nf_queue, -+}; -+ -+static void qdisc_run_tasklet(unsigned long arg) -+{ -+ struct net_device *dev = (struct net_device *)arg; -+ struct imq_private *priv = netdev_priv(dev); -+ -+ spin_lock(&dev->queue_lock); -+ qdisc_run(dev); -+ clear_bit(1, &priv->tasklet_pending); -+ spin_unlock(&dev->queue_lock); -+} -+ -+static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb, -+ const struct net_device *indev, -+ const struct net_device *outdev, -+ int (*okfn)(struct sk_buff *)) -+{ -+ if (pskb->imq_flags & IMQ_F_ENQUEUE) -+ return NF_QUEUE; -+ -+ return NF_ACCEPT; -+} -+ -+static int imq_close(struct net_device *dev) -+{ -+ struct imq_private *priv = netdev_priv(dev); -+ -+ tasklet_kill(&priv->tasklet); -+ netif_stop_queue(dev); -+ -+ return 0; -+} -+ -+static int imq_open(struct net_device *dev) -+{ -+ struct imq_private *priv = netdev_priv(dev); -+ -+ tasklet_init(&priv->tasklet, qdisc_run_tasklet, (unsigned long)dev); -+ netif_start_queue(dev); -+ -+ return 0; -+} -+ -+static void imq_setup(struct net_device *dev) -+{ -+ dev->hard_start_xmit = imq_dev_xmit; -+ dev->open = imq_open; -+ dev->get_stats = imq_get_stats; -+ dev->stop = imq_close; -+ dev->type = ARPHRD_VOID; -+ dev->mtu = 16000; -+ dev->tx_queue_len = 11000; -+ dev->flags = IFF_NOARP; -+} -+ -+static struct rtnl_link_ops imq_link_ops __read_mostly = { -+ .kind = "imq", -+ .priv_size = sizeof(struct imq_private), -+ .setup = imq_setup, -+}; -+ -+static int __init imq_init_hooks(void) -+{ -+ int err; -+ -+ err = nf_register_queue_handler(PF_INET, &nfqh); -+ if (err) -+ goto err1; -+ -+ err = nf_register_hook(&imq_ingress_ipv4); -+ if (err) -+ goto err2; -+ -+ err = nf_register_hook(&imq_egress_ipv4); -+ if (err) -+ goto err3; -+ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+ err = nf_register_queue_handler(PF_INET6, &nfqh); -+ if (err) -+ goto err4; -+ -+ err = nf_register_hook(&imq_ingress_ipv6); -+ if (err) -+ goto err5; -+ -+ err = nf_register_hook(&imq_egress_ipv6); -+ if (err) -+ goto err6; -+#endif -+ -+ return 0; -+ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+err6: -+ nf_unregister_hook(&imq_ingress_ipv6); -+err5: -+ nf_unregister_queue_handler(PF_INET6, &nfqh); -+err4: -+ nf_unregister_hook(&imq_egress_ipv4); -+#endif -+err3: -+ nf_unregister_hook(&imq_ingress_ipv4); -+err2: -+ nf_unregister_queue_handler(PF_INET, &nfqh); -+err1: -+ return err; -+} -+ -+static int __init imq_init_one(int index) -+{ -+ struct net_device *dev; -+ int ret; -+ -+ dev = alloc_netdev(sizeof(struct imq_private), "imq%d", imq_setup); -+ if (!dev) -+ return -ENOMEM; -+ -+ ret = dev_alloc_name(dev, dev->name); -+ if (ret < 0) -+ goto fail; -+ -+ dev->rtnl_link_ops = &imq_link_ops; -+ ret = register_netdevice(dev); -+ if (ret < 0) -+ goto fail; -+ -+ return 0; -+fail: -+ free_netdev(dev); -+ return ret; -+} -+ -+static int __init imq_init_devs(void) -+{ -+ int err, i; -+ -+ if (!numdevs || numdevs > IMQ_MAX_DEVS) { -+ printk(KERN_ERR "IMQ: numdevs has to be betweed 1 and %u\n", -+ IMQ_MAX_DEVS); -+ return -EINVAL; -+ } -+ -+ rtnl_lock(); -+ err = __rtnl_link_register(&imq_link_ops); -+ -+ for (i = 0; i < numdevs && !err; i++) -+ err = imq_init_one(i); -+ -+ if (err) { -+ __rtnl_link_unregister(&imq_link_ops); -+ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); -+ } -+ rtnl_unlock(); -+ -+ return err; -+} -+ -+static int __init imq_init_module(void) -+{ -+ int err; -+ -+ err = imq_init_devs(); -+ if (err) { -+ printk(KERN_ERR "IMQ: Error trying imq_init_devs(net)\n"); -+ return err; -+ } -+ -+ err = imq_init_hooks(); -+ if (err) { -+ printk(KERN_ERR "IMQ: Error trying imq_init_hooks()\n"); -+ rtnl_link_unregister(&imq_link_ops); -+ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); -+ return err; -+ } -+ -+ printk(KERN_INFO "IMQ driver loaded successfully.\n"); -+ -+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ printk(KERN_INFO "\tHooking IMQ before NAT on PREROUTING.\n"); -+#else -+ printk(KERN_INFO "\tHooking IMQ after NAT on PREROUTING.\n"); -+#endif -+#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ printk(KERN_INFO "\tHooking IMQ before NAT on POSTROUTING.\n"); -+#else -+ printk(KERN_INFO "\tHooking IMQ after NAT on POSTROUTING.\n"); -+#endif -+ -+ return 0; -+} -+ -+static void __exit imq_unhook(void) -+{ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+ nf_unregister_hook(&imq_ingress_ipv6); -+ nf_unregister_hook(&imq_egress_ipv6); -+ nf_unregister_queue_handler(PF_INET6, &nfqh); -+#endif -+ nf_unregister_hook(&imq_ingress_ipv4); -+ nf_unregister_hook(&imq_egress_ipv4); -+ nf_unregister_queue_handler(PF_INET, &nfqh); -+} -+ -+static void __exit imq_cleanup_devs(void) -+{ -+ rtnl_link_unregister(&imq_link_ops); -+ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); -+} -+ -+static void __exit imq_exit_module(void) -+{ -+ imq_unhook(); -+ imq_cleanup_devs(); -+ printk(KERN_INFO "IMQ driver unloaded successfully.\n"); -+} -+ -+module_init(imq_init_module); -+module_exit(imq_exit_module); -+ -+module_param(numdevs, int, 0); -+MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will " -+ "be created)"); -+MODULE_AUTHOR("http://www.linuximq.net"); -+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See " -+ "http://www.linuximq.net/ for more information."); -+MODULE_LICENSE("GPL"); -+MODULE_ALIAS_RTNL_LINK("imq"); -+ ---- linux-2.6.25.7/drivers/net/Kconfig 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/drivers/net/Kconfig 2008-06-17 15:03:21.000000000 +0300 -@@ -117,6 +117,129 @@ - To compile this driver as a module, choose M here: the module - will be called eql. If unsure, say N. - -+config IMQ -+ tristate "IMQ (intermediate queueing device) support" -+ depends on NETDEVICES && NETFILTER -+ ---help--- -+ The IMQ device(s) is used as placeholder for QoS queueing -+ disciplines. Every packet entering/leaving the IP stack can be -+ directed through the IMQ device where it's enqueued/dequeued to the -+ attached qdisc. This allows you to treat network devices as classes -+ and distribute bandwidth among them. Iptables is used to specify -+ through which IMQ device, if any, packets travel. -+ -+ More information at: http://www.linuximq.net/ -+ -+ To compile this driver as a module, choose M here: the module -+ will be called imq. If unsure, say N. -+ -+choice -+ prompt "IMQ behavior (PRE/POSTROUTING)" -+ depends on IMQ -+ default IMQ_BEHAVIOR_AB -+ help -+ -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ IMQ can work in any of the following ways: -+ -+ PREROUTING | POSTROUTING -+ -----------------|------------------- -+ #1 After NAT | After NAT -+ #2 After NAT | Before NAT -+ #3 Before NAT | After NAT -+ #4 Before NAT | Before NAT -+ -+ The default behavior is to hook before NAT on PREROUTING -+ and after NAT on POSTROUTING (#3). -+ -+ This settings are specially usefull when trying to use IMQ -+ to shape NATed clients. -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_AA -+ bool "IMQ AA" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: After NAT -+ POSTROUTING: After NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_AB -+ bool "IMQ AB" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: After NAT -+ POSTROUTING: Before NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_BA -+ bool "IMQ BA" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: Before NAT -+ POSTROUTING: After NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_BB -+ bool "IMQ BB" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: Before NAT -+ POSTROUTING: Before NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+endchoice -+ -+config IMQ_NUM_DEVS -+ -+ int "Number of IMQ devices" -+ range 2 16 -+ depends on IMQ -+ default "16" -+ help -+ -+ This settings defines how many IMQ devices will be -+ created. -+ -+ The default value is 16. -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ - config TUN - tristate "Universal TUN/TAP device driver support" - select CRC32 ---- linux-2.6.25.7/drivers/net/Makefile 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/drivers/net/Makefile 2008-06-17 14:56:58.000000000 +0300 -@@ -143,6 +143,7 @@ - obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o - - obj-$(CONFIG_DUMMY) += dummy.o -+obj-$(CONFIG_IMQ) += imq.o - obj-$(CONFIG_IFB) += ifb.o - obj-$(CONFIG_MACVLAN) += macvlan.o - obj-$(CONFIG_DE600) += de600.o ---- linux-2.6.25.7/include/linux/imq.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/include/linux/imq.h 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,9 @@ -+#ifndef _IMQ_H -+#define _IMQ_H -+ -+#define IMQ_MAX_DEVS 16 -+ -+#define IMQ_F_IFMASK 0x7f -+#define IMQ_F_ENQUEUE 0x80 -+ -+#endif /* _IMQ_H */ ---- linux-2.6.25.7/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/include/linux/netfilter_ipv4/ipt_IMQ.h 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,8 @@ -+#ifndef _IPT_IMQ_H -+#define _IPT_IMQ_H -+ -+struct ipt_imq_info { -+ unsigned int todev; /* target imq device */ -+}; -+ -+#endif /* _IPT_IMQ_H */ ---- linux-2.6.25.7/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/include/linux/netfilter_ipv6/ip6t_IMQ.h 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,8 @@ -+#ifndef _IP6T_IMQ_H -+#define _IP6T_IMQ_H -+ -+struct ip6t_imq_info { -+ unsigned int todev; /* target imq device */ -+}; -+ -+#endif /* _IP6T_IMQ_H */ ---- linux-2.6.25.7/include/linux/skbuff.h 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/include/linux/skbuff.h 2008-06-17 14:56:58.000000000 +0300 -@@ -296,6 +296,10 @@ - struct nf_conntrack *nfct; - struct sk_buff *nfct_reasm; - #endif -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+ unsigned char imq_flags; -+ struct nf_queue_entry *nf_queue_entry; -+#endif - #ifdef CONFIG_BRIDGE_NETFILTER - struct nf_bridge_info *nf_bridge; - #endif -@@ -1736,6 +1740,10 @@ - dst->nfct_reasm = src->nfct_reasm; - nf_conntrack_get_reasm(src->nfct_reasm); - #endif -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+ dst->imq_flags = src->imq_flags; -+ dst->nf_queue_entry = src->nf_queue_entry; -+#endif - #ifdef CONFIG_BRIDGE_NETFILTER - dst->nf_bridge = src->nf_bridge; - nf_bridge_get(src->nf_bridge); ---- linux-2.6.25.7/net/core/dev.c 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/core/dev.c 2008-06-17 14:56:58.000000000 +0300 -@@ -95,6 +95,9 @@ - #include <net/net_namespace.h> - #include <net/sock.h> - #include <linux/rtnetlink.h> -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+#include <linux/imq.h> -+#endif - #include <linux/proc_fs.h> - #include <linux/seq_file.h> - #include <linux/stat.h> -@@ -1537,7 +1540,11 @@ - int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) - { - if (likely(!skb->next)) { -- if (!list_empty(&ptype_all)) -+ if (!list_empty(&ptype_all) -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+ && !(skb->imq_flags & IMQ_F_ENQUEUE) -+#endif -+ ) - dev_queue_xmit_nit(skb, dev); - - if (netif_needs_gso(dev, skb)) { ---- linux-2.6.25.7/net/ipv4/netfilter/ipt_IMQ.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/net/ipv4/netfilter/ipt_IMQ.c 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,69 @@ -+/* -+ * This target marks packets to be enqueued to an imq device -+ */ -+#include <linux/module.h> -+#include <linux/skbuff.h> -+#include <linux/netfilter_ipv4/ip_tables.h> -+#include <linux/netfilter_ipv4/ipt_IMQ.h> -+#include <linux/imq.h> -+ -+static unsigned int imq_target(struct sk_buff *pskb, -+ const struct net_device *in, -+ const struct net_device *out, -+ unsigned int hooknum, -+ const struct xt_target *target, -+ const void *targinfo) -+{ -+ struct ipt_imq_info *mr = (struct ipt_imq_info *)targinfo; -+ -+ pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE; -+ -+ return XT_CONTINUE; -+} -+ -+static bool imq_checkentry(const char *tablename, -+ const void *e, -+ const struct xt_target *target, -+ void *targinfo, -+ unsigned int hook_mask) -+{ -+ struct ipt_imq_info *mr; -+ -+ mr = (struct ipt_imq_info *)targinfo; -+ -+ if (mr->todev > IMQ_MAX_DEVS) { -+ printk(KERN_WARNING -+ "IMQ: invalid device specified, highest is %u\n", -+ IMQ_MAX_DEVS); -+ return 0; -+ } -+ -+ return 1; -+} -+ -+static struct xt_target ipt_imq_reg = { -+ .name = "IMQ", -+ .family = AF_INET, -+ .target = imq_target, -+ .targetsize = sizeof(struct ipt_imq_info), -+ .checkentry = imq_checkentry, -+ .me = THIS_MODULE, -+ .table = "mangle" -+}; -+ -+static int __init init(void) -+{ -+ return xt_register_target(&ipt_imq_reg); -+} -+ -+static void __exit fini(void) -+{ -+ xt_unregister_target(&ipt_imq_reg); -+} -+ -+module_init(init); -+module_exit(fini); -+ -+MODULE_AUTHOR("http://www.linuximq.net"); -+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); -+MODULE_LICENSE("GPL"); ---- linux-2.6.25.7/net/ipv4/netfilter/Kconfig 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv4/netfilter/Kconfig 2008-06-17 14:56:58.000000000 +0300 -@@ -123,6 +123,17 @@ - - To compile it as a module, choose M here. If unsure, say N. - -+config IP_NF_TARGET_IMQ -+ tristate "IMQ target support" -+ depends on IP_NF_MANGLE -+ help -+ This option adds a `IMQ' target which is used to specify if and -+ to which IMQ device packets should get enqueued/dequeued. -+ -+ For more information visit: http://www.linuximq.net/ -+ -+ To compile it as a module, choose M here. If unsure, say N. -+ - config IP_NF_TARGET_REJECT - tristate "REJECT target support" - depends on IP_NF_FILTER ---- linux-2.6.25.7/net/ipv4/netfilter/Makefile 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv4/netfilter/Makefile 2008-06-17 14:56:58.000000000 +0300 -@@ -51,6 +51,7 @@ - obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o - obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o - obj-$(CONFIG_IP_NF_TARGET_LOG) += ipt_LOG.o -+obj-$(CONFIG_IP_NF_TARGET_IMQ) += ipt_IMQ.o - obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o - obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o - obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o ---- linux-2.6.25.7/net/ipv6/netfilter/ip6t_IMQ.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/net/ipv6/netfilter/ip6t_IMQ.c 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,69 @@ -+/* -+ * This target marks packets to be enqueued to an imq device -+ */ -+#include <linux/module.h> -+#include <linux/skbuff.h> -+#include <linux/netfilter_ipv6/ip6_tables.h> -+#include <linux/netfilter_ipv6/ip6t_IMQ.h> -+#include <linux/imq.h> -+ -+static unsigned int imq_target(struct sk_buff *pskb, -+ const struct net_device *in, -+ const struct net_device *out, -+ unsigned int hooknum, -+ const struct xt_target *target, -+ const void *targinfo) -+{ -+ struct ip6t_imq_info *mr = (struct ip6t_imq_info *)targinfo; -+ -+ pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE; -+ -+ return XT_CONTINUE; -+} -+ -+static bool imq_checkentry(const char *tablename, -+ const void *entry, -+ const struct xt_target *target, -+ void *targinfo, -+ unsigned int hook_mask) -+{ -+ struct ip6t_imq_info *mr; -+ -+ mr = (struct ip6t_imq_info *)targinfo; -+ -+ if (mr->todev > IMQ_MAX_DEVS) { -+ printk(KERN_WARNING -+ "IMQ: invalid device specified, highest is %u\n", -+ IMQ_MAX_DEVS); -+ return 0; -+ } -+ -+ return 1; -+} -+ -+static struct xt_target ip6t_imq_reg = { -+ .name = "IMQ", -+ .family = AF_INET6, -+ .target = imq_target, -+ .targetsize = sizeof(struct ip6t_imq_info), -+ .table = "mangle", -+ .checkentry = imq_checkentry, -+ .me = THIS_MODULE -+}; -+ -+static int __init init(void) -+{ -+ return xt_register_target(&ip6t_imq_reg); -+} -+ -+static void __exit fini(void) -+{ -+ xt_unregister_target(&ip6t_imq_reg); -+} -+ -+module_init(init); -+module_exit(fini); -+ -+MODULE_AUTHOR("http://www.linuximq.net"); -+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); -+MODULE_LICENSE("GPL"); ---- linux-2.6.25.7/net/ipv6/netfilter/Kconfig 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv6/netfilter/Kconfig 2008-06-17 14:56:58.000000000 +0300 -@@ -179,6 +179,15 @@ - - To compile it as a module, choose M here. If unsure, say N. - -+config IP6_NF_TARGET_IMQ -+ tristate "IMQ target support" -+ depends on IP6_NF_MANGLE -+ help -+ This option adds a `IMQ' target which is used to specify if and -+ to which imq device packets should get enqueued/dequeued. -+ -+ To compile it as a module, choose M here. If unsure, say N. -+ - config IP6_NF_TARGET_HL - tristate 'HL (hoplimit) target support' - depends on IP6_NF_MANGLE ---- linux-2.6.25.7/net/ipv6/netfilter/Makefile 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv6/netfilter/Makefile 2008-06-17 14:56:58.000000000 +0300 -@@ -6,6 +6,7 @@ - obj-$(CONFIG_IP6_NF_IPTABLES) += ip6_tables.o - obj-$(CONFIG_IP6_NF_FILTER) += ip6table_filter.o - obj-$(CONFIG_IP6_NF_MANGLE) += ip6table_mangle.o -+obj-$(CONFIG_IP6_NF_TARGET_IMQ) += ip6t_IMQ.o - obj-$(CONFIG_IP6_NF_QUEUE) += ip6_queue.o - obj-$(CONFIG_IP6_NF_RAW) += ip6table_raw.o - ---- linux-2.6.25.7/net/sched/sch_generic.c 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/sched/sch_generic.c 2008-06-17 14:56:58.000000000 +0300 -@@ -203,6 +203,7 @@ - - clear_bit(__LINK_STATE_QDISC_RUNNING, &dev->state); - } -+EXPORT_SYMBOL(__qdisc_run); - - static void dev_watchdog(unsigned long arg) - { Deleted: trunk/target/device/kernel-patches/linux-2.6.25-squashfs3.4.patch =================================================================== --- trunk/target/device/kernel-patches/linux-2.6.25-squashfs3.4.patch 2010-07-11 21:30:22 UTC (rev 102) +++ trunk/target/device/kernel-patches/linux-2.6.25-squashfs3.4.patch 2010-07-11 21:49:15 UTC (rev 103) @@ -1,4218 +0,0 @@ -diff -x .gitignore -Nurp linux-2.6.25/fs/Kconfig linux-2.6.25-squashfs3.4/fs/Kconfig ---- linux-2.6.25/fs/Kconfig 2008-04-17 03:49:44.000000000 +0100 -+++ linux-2.6.25-squashfs3.4/fs/Kconfig 2008-08-18 16:44:29.000000000 +0100 -@@ -1367,6 +1367,56 @@ config CRAMFS - - If unsure, say N. - -+config SQUASHFS -+ tristate "SquashFS 3.4 - Squashed file system support" -+ select ZLIB_INFLATE -+ help -+ Saying Y here includes support for SquashFS 3.4 (a Compressed -+ Read-Only File System). Squashfs is a highly compressed read-only -+ filesystem for Linux. It uses zlib compression to compress both -+ files, inodes and directories. Inodes in the system are very small -+ and all blocks are packed to minimise data overhead. Block sizes -+ greater than 4K are supported up to a maximum of 1 Mbytes (default -+ block size 128K). SquashFS 3.3 supports 64 bit filesystems and files -+ (larger than 4GB), full uid/gid information, hard links and timestamps. -+ -+ Squashfs is intended for general read-only filesystem use, for -+ archival use (i.e. in cases where a .tar.gz file may be used), and in -+ embedded systems where low overhead is needed. Further information -+ and filesystem tools are available from http://squashfs.sourceforge.net. -+ -+ If you want to compile this as a module ( = code which can be -+ inserted in and removed from the running kernel whenever you want), -+ say M here and read <file:Documentation/modules.txt>. The module -+ will be called squashfs. Note that the root file system (the one -+ containing the directory /) cannot be compiled as a module. -+ -+ If unsure, say N. -+ -+config SQUASHFS_EMBEDDED -+ -+ bool "Additional option for memory-constrained systems" -+ depends on SQUASHFS -+ default n -+ help -+ Saying Y here allows you to specify cache size. -+ -+ If unsure, say N. -+ -+config SQUASHFS_FRAGMENT_CACHE_SIZE -+ int "Number of fragments cached" if SQUASHFS_EMBEDDED -+ depends on SQUASHFS -+ default "3" -+ help -+ By default SquashFS caches the last 3 fragments read from -+ the filesystem. Increasing this amount may mean SquashFS -+ has to re-read fragments less often from disk, at the expense -+ of extra system memory. Decreasing this amount will mean -+ SquashFS uses less memory at the expense of extra reads from disk. -+ -+ Note there must be at least one cached fragment. Anything -+ much more than three will probably not make much difference. -+ - config VXFS_FS - tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" - depends on BLOCK -diff -x .gitignore -Nurp linux-2.6.25/fs/Makefile linux-2.6.25-squashfs3.4/fs/Makefile ---- linux-2.6.25/fs/Makefile 2008-04-17 03:49:44.000000000 +0100 -+++ linux-2.6.25-squashfs3.4/fs/Makefile 2008-08-18 16:44:29.000000000 +0100 -@@ -73,6 +73,7 @@ obj-$(CONFIG_JBD) += jbd/ - obj-$(CONFIG_JBD2) += jbd2/ - obj-$(CONFIG_EXT2_FS) += ext2/ - obj-$(CONFIG_CRAMFS) += cramfs/ -+obj-$(CONFIG_SQUASHFS) += squashfs/ - obj-y += ramfs/ - obj-$(CONFIG_HUGETLBFS) += hugetlbfs/ - obj-$(CONFIG_CODA_FS) += coda/ -diff -x .gitignore -Nurp linux-2.6.25/fs/squashfs/inode.c linux-2.6.25-squashfs3.4/fs/squashfs/inode.c ---- linux-2.6.25/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.25-squashfs3.4/fs/squashfs/inode.c 2008-08-26 08:24:58.000000000 +0100 -@@ -0,0 +1,2173 @@ -+/* -+ * Squashfs - a compressed read only filesystem for Linux -+ * -+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 -+ * Phillip Lougher <ph...@lo...> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2, -+ * or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ * -+ * inode.c -+ */ -+ -+#include <linux/squashfs_fs.h> -+#include <linux/module.h> -+#include <linux/zlib.h> -+#include <linux/fs.h> -+#include <linux/squashfs_fs_sb.h> -+#include <linux/squashfs_fs_i.h> -+#include <linux/buffer_head.h> -+#include <linux/vfs.h> -+#include <linux/vmalloc.h> -+#include <linux/spinlock.h> -+#include <linux/smp_lock.h> -+#include <linux/exportfs.h> -+ -+#include "squashfs.h" -+ -+static struct dentry *squashfs_fh_to_dentry(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type); -+static struct dentry *squashfs_fh_to_parent(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type); -+static struct dentry *squashfs_get_parent(struct dentry *child); -+static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode); -+static int squashfs_statfs(struct dentry *, struct kstatfs *); -+static int squashfs_symlink_readpage(struct file *file, struct page *page); -+static long long read_blocklist(struct inode *inode, int index, -+ int readahead_blks, char *block_list, -+ unsigned short **block_p, unsigned int *bsize); -+static int squashfs_readpage(struct file *file, struct page *page); -+static int squashfs_readdir(struct file *, void *, filldir_t); -+static struct dentry *squashfs_lookup(struct inode *, struct dentry *, -+ struct nameidata *); -+static int squashfs_remount(struct super_block *s, int *flags, char *data); -+static void squashfs_put_super(struct super_block *); -+static int squashfs_get_sb(struct file_system_type *,int, const char *, void *, -+ struct vfsmount *); -+static struct inode *squashfs_alloc_inode(struct super_block *sb); -+static void squashfs_destroy_inode(struct inode *inode); -+static int init_inodecache(void); -+static void destroy_inodecache(void); -+ -+static struct file_system_type squashfs_fs_type = { -+ .owner = THIS_MODULE, -+ .name = "squashfs", -+ .get_sb = squashfs_get_sb, -+ .kill_sb = kill_block_super, -+ .fs_flags = FS_REQUIRES_DEV -+}; -+ -+static const unsigned char squashfs_filetype_table[] = { -+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK -+}; -+ -+static struct super_operations squashfs_super_ops = { -+ .alloc_inode = squashfs_alloc_inode, -+ .destroy_inode = squashfs_destroy_inode, -+ .statfs = squashfs_statfs, -+ .put_super = squashfs_put_super, -+ .remount_fs = squashfs_remount -+}; -+ -+static struct export_operations squashfs_export_ops = { -+ .fh_to_dentry = squashfs_fh_to_dentry, -+ .fh_to_parent = squashfs_fh_to_parent, -+ .get_parent = squashfs_get_parent -+}; -+ -+SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = { -+ .readpage = squashfs_symlink_readpage -+}; -+ -+SQSH_EXTERN const struct address_space_operations squashfs_aops = { -+ .readpage = squashfs_readpage -+}; -+ -+static const struct file_operations squashfs_dir_ops = { -+ .read = generic_read_dir, -+ .readdir = squashfs_readdir -+}; -+ -+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = { -+ .lookup = squashfs_lookup -+}; -+ -+ -+static struct buffer_head *get_block_length(struct super_block *s, -+ int *cur_index, int *offset, int *c_byte) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ unsigned short temp; -+ struct buffer_head *bh; -+ -+ if (!(bh = sb_bread(s, *cur_index))) -+ goto out; -+ -+ if (msblk->devblksize - *offset == 1) { -+ if (msblk->swap) -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ else -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ brelse(bh); -+ if (!(bh = sb_bread(s, ++(*cur_index)))) -+ goto out; -+ if (msblk->swap) -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ bh->b_data); -+ else -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ bh->b_data); -+ *c_byte = temp; -+ *offset = 1; -+ } else { -+ if (msblk->swap) { -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ (bh->b_data + *offset + 1)); -+ } else { -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ (bh->b_data + *offset + 1)); -+ } -+ *c_byte = temp; -+ *offset += 2; -+ } -+ -+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) { -+ if (*offset == msblk->devblksize) { -+ brelse(bh); -+ if (!(bh = sb_bread(s, ++(*cur_index)))) -+ goto out; -+ *offset = 0; -+ } -+ if (*((unsigned char *) (bh->b_data + *offset)) != -+ SQUASHFS_MARKER_BYTE) { -+ ERROR("Metadata block marker corrupt @ %x\n", -+ *cur_index); -+ brelse(bh); -+ goto out; -+ } -+ (*offset)++; -+ } -+ return bh; -+ -+out: -+ return NULL; -+} -+ -+ -+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer, -+ long long index, unsigned int length, -+ long long *next_index, int srclength) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ struct squashfs_super_block *sblk = &msblk->sblk; -+ struct buffer_head **bh; -+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1); -+ unsigned int cur_index = index >> msblk->devblksize_log2; -+ int bytes, avail_bytes, b = 0, k = 0; -+ unsigned int compressed; -+ unsigned int c_byte = length; -+ -+ bh = kmalloc(((sblk->block_size >> msblk->devblksize_log2) + 1) * -+ sizeof(struct buffer_head *), GFP_KERNEL); -+ if (bh == NULL) -+ goto read_failure; -+ -+ if (c_byte) { -+ bytes = -offset; -+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte); -+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte); -+ -+ TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, -+ compressed ? "" : "un", (unsigned int) c_byte, srclength); -+ -+ if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used) -+ goto read_failure; -+ -+ for (b = 0; bytes < (int) c_byte; b++, cur_index++) { -+ bh[b] = sb_getblk(s, cur_index); -+ if (bh[b] == NULL) -+ goto block_release; -+ bytes += msblk->devblksize; -+ } -+ ll_rw_block(READ, b, bh); -+ } else { -+ if (index < 0 || (index + 2) > sblk->bytes_used) -+ goto read_failure; -+ -+ bh[0] = get_block_length(s, &cur_index, &offset, &c_byte); -+ if (bh[0] == NULL) -+ goto read_failure; -+ b = 1; -+ -+ bytes = msblk->devblksize - offset; -+ compressed = SQUASHFS_COMPRESSED(c_byte); -+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte); -+ -+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed -+ ? "" : "un", (unsigned int) c_byte); -+ -+ if (c_byte > srclength || (index + c_byte) > sblk->bytes_used) -+ goto block_release; -+ -+ for (; bytes < c_byte; b++) { -+ bh[b] = sb_getblk(s, ++cur_index); -+ if (bh[b] == NULL) -+ goto block_release; -+ bytes += msblk->devblksize; -+ } -+ ll_rw_block(READ, b - 1, bh + 1); -+ } -+ -+ if (compressed) { -+ int zlib_err = 0; -+ -+ /* -+ * uncompress block -+ */ -+ -+ mutex_lock(&msblk->read_data_mutex); -+ -+ msblk->stream.next_out = buffer; -+ msblk->stream.avail_out = srclength; -+ -+ for (bytes = 0; k < b; k++) { -+ avail_bytes = min(c_byte - bytes, msblk->devblksize - offset); -+ -+ wait_on_buffer(bh[k]); -+ if (!buffer_uptodate(bh[k])) -+ goto release_mutex; -+ -+ msblk->stream.next_in = bh[k]->b_data + offset; -+ msblk->stream.avail_in = avail_bytes; -+ -+ if (k == 0) { -+ zlib_err = zlib_inflateInit(&msblk->stream); -+ if (zlib_err != Z_OK) { -+ ERROR("zlib_inflateInit returned unexpected result 0x%x," -+ " srclength %d\n", zlib_err, srclength); -+ goto release_mutex; -+ } -+ -+ if (avail_bytes == 0) { -+ offset = 0; -+ brelse(bh[k]); -+ continue; -+ } -+ } -+ -+ zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH); -+ if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) { -+ ERROR("zlib_inflate returned unexpected result 0x%x," -+ " srclength %d, avail_in %d, avail_out %d\n", zlib_err, -+ srclength, msblk->stream.avail_in, msblk->stream.avail_out); -+ goto release_mutex; -+ } -+ -+ bytes += avail_bytes; -+ offset = 0; -+ brelse(bh[k]); -+ } -+ -+ if (zlib_err != Z_STREAM_END) -+ goto release_mutex; -+ -+ zlib_err = zlib_inflateEnd(&msblk->stream); -+ if (zlib_err != Z_OK) { -+ ERROR("zlib_inflateEnd returned unexpected result 0x%x," -+ " srclength %d\n", zlib_err, srclength); -+ goto release_mutex; -+ } -+ bytes = msblk->stream.total_out; -+ mutex_unlock(&msblk->read_data_mutex); -+ } else { -+ int i; -+ -+ for(i = 0; i < b; i++) { -+ wait_on_buffer(bh[i]); -+ if (!buffer_uptodate(bh[i])) -+ goto block_release; -+ } -+ -+ for (bytes = 0; k < b; k++) { -+ avail_bytes = min(c_byte - bytes, msblk->devblksize - offset); -+ -+ memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes); -+ bytes += avail_bytes; -+ offset = 0; -+ brelse(bh[k]); -+ } -+ } -+ -+ if (next_index) -+ *next_index = index + c_byte + (length ? 0 : -+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags) ? 3 : 2)); -+ -+ kfree(bh); -+ return bytes; -+ -+release_mutex: -+ mutex_unlock(&msblk->read_data_mutex); -+ -+block_release: -+ for (; k < b; k++) -+ brelse(bh[k]); -+ -+read_failure: -+ ERROR("sb_bread failed reading block 0x%x\n", cur_index); -+ kfree(bh); -+ return 0; -+} -+ -+ -+static struct squashfs_cache_entry *squashfs_cache_get(struct super_block *s, -+ struct squashfs_cache *cache, long long block, int length) -+{ -+ int i, n; -+ struct squashfs_cache_entry *entry; -+ -+ spin_lock(&cache->lock); -+ -+ while (1) { -+ for (i = 0; i < cache->entries && cache->entry[i].block != block; i++); -+ -+ if (i == cache->entries) { -+ if (cache->unused_blks == 0) { -+ cache->waiting ++; -+ spin_unlock(&cache->lock); -+ wait_event(cache->wait_queue, cache->unused_blks); -+ spin_lock(&cache->lock); -+ cache->waiting --; -+ continue; -+ } -+ -+ i = cache->next_blk; -+ for (n = 0; n < cache->entries; n++) { -+ if (cache->entry[i].locked == 0) -+ break; -+ i = (i + 1) % cache->entries; -+ } -+ -+ cache->next_blk = (i + 1) % cache->entries; -+ entry = &cache->entry[i]; -+ -+ cache->unused_blks --; -+ entry->block = block; -+ entry->locked = 1; -+ entry->pending = 1; -+ entry->waiting = 0; -+ entry->error = 0; -+ spin_unlock(&cache->lock); -+ -+ entry->length = squashfs_read_data(s, entry->data, -+ block, length, &entry->next_index, cache->block_size); -+ -+ spin_lock(&cache->lock); -+ -+ if (entry->length == 0) -+ entry->error = 1; -+ -+ entry->pending = 0; -+ spin_unlock(&cache->lock); -+ if (entry->waiting) -+ wake_up_all(&entry->wait_queue); -+ goto out; -+ } -+ -+ entry = &cache->entry[i]; -+ if (entry->locked == 0) -+ cache->unused_blks --; -+ entry->locked++; -+ -+ if (entry->pending) { -+ entry->waiting ++; -+ spin_unlock(&cache->lock); -+ wait_event(entry->wait_queue, !entry->pending); -+ goto out; -+ } -+ -+ spin_unlock(&cache->lock); -+ goto out; -+ } -+ -+out: -+ TRACE("Got %s %d, start block %lld, locked %d, error %d\n", i, -+ cache->name, entry->block, entry->locked, entry->error); -+ if (entry->error) -+ ERROR("Unable to read %s cache entry [%llx]\n", cache->name, block); -+ return entry; -+} -+ -+ -+static void squashfs_cache_put(struct squashfs_cache *cache, -+ struct squashfs_cache_entry *entry) -+{ -+ spin_lock(&cache->lock); -+ entry->locked --; -+ if (entry->locked == 0) { -+ cache->unused_blks ++; -+ spin_unlock(&cache->lock); -+ if (cache->waiting) -+ wake_up(&cache->wait_queue); -+ } else -+ spin_unlock(&cache->lock); -+} -+ -+ -+static void squashfs_cache_delete(struct squashfs_cache *cache) -+{ -+ int i; -+ -+ if (cache == NULL) -+ return; -+ -+ for (i = 0; i < cache->entries; i++) -+ if (cache->entry[i].data) { -+ if (cache->use_vmalloc) -+ vfree(cache->entry[i].data); -+ else -+ kfree(cache->entry[i].data); -+ } -+ -+ kfree(cache); -+} -+ -+ -+static struct squashfs_cache *squashfs_cache_init(char *name, int entries, -+ int block_size, int use_vmalloc) -+{ -+ int i; -+ struct squashfs_cache *cache = kzalloc(sizeof(struct squashfs_cache) + -+ entries * sizeof(struct squashfs_cache_entry), GFP_KERNEL); -+ if (cache == NULL) { -+ ERROR("Failed to allocate %s cache\n", name); -+ goto failed; -+ } -+ -+ cache->next_blk = 0; -+ cache->unused_blks = entries; -+ cache->entries = entries; -+ cache->block_size = block_size; -+ cache->use_vmalloc = use_vmalloc; -+ cache->name = name; -+ cache->waiting = 0; -+ spin_lock_init(&cache->lock); -+ init_waitqueue_head(&cache->wait_queue); -+ -+ for (i = 0; i < entries; i++) { -+ init_waitqueue_head(&cache->entry[i].wait_queue); -+ cache->entry[i].block = SQUASHFS_INVALID_BLK; -+ cache->entry[i].data = use_vmalloc ? vmalloc(block_size) : -+ kmalloc(block_size, GFP_KERNEL); -+ if (cache->entry[i].data == NULL) { -+ ERROR("Failed to allocate %s cache entry\n", name); -+ goto cleanup; -+ } -+ } -+ -+ return cache; -+ -+cleanup: -+ squashfs_cache_delete(cache); -+failed: -+ return NULL; -+} -+ -+ -+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, void *buffer, -+ long long block, unsigned int offset, -+ int length, long long *next_block, -+ unsigned int *next_offset) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ int bytes, return_length = length; -+ struct squashfs_cache_entry *entry; -+ -+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset); -+ -+ while (1) { -+ entry = squashfs_cache_get(s, msblk->block_cache, block, 0); -+ bytes = entry->length - offset; -+ -+ if (entry->error || bytes < 1) { -+ return_length = 0; -+ goto finish; -+ } else if (bytes >= length) { -+ if (buffer) -+ memcpy(buffer, entry->data + offset, length); -+ if (entry->length - offset == length) { -+ *next_block = entry->next_index; -+ *next_offset = 0; -+ } else { -+ *next_block = block; -+ *next_offset = offset + length; -+ } -+ goto finish; -+ } else { -+ if (buffer) { -+ memcpy(buffer, entry->data + offset, bytes); -+ buffer = (char *) buffer + bytes; -+ } -+ block = entry->next_index; -+ squashfs_cache_put(msblk->block_cache, entry); -+ length -= bytes; -+ offset = 0; -+ } -+ } -+ -+finish: -+ squashfs_cache_put(msblk->block_cache, entry); -+ return return_length; -+} -+ -+ -+static int get_fragment_location(struct super_block *s, unsigned int fragment, -+ long long *fragment_start_block, -+ unsigned int *fragment_size) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ long long start_block = -+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)]; -+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment); -+ struct squashfs_fragment_entry fragment_entry; -+ -+ if (msblk->swap) { -+ struct squashfs_fragment_entry sfragment_entry; -+ -+ if (!squashfs_get_cached_block(s, &sfragment_entry, start_block, offset, -+ sizeof(sfragment_entry), &start_block, &offset)) -+ goto out; -+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry); -+ } else -+ if (!squashfs_get_cached_block(s, &fragment_entry, start_block, offset, -+ sizeof(fragment_entry), &start_block, &offset)) -+ goto out; -+ -+ *fragment_start_block = fragment_entry.start_block; -+ *fragment_size = fragment_entry.size; -+ -+ return 1; -+ -+out: -+ return 0; -+} -+ -+ -+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, -+ struct squashfs_cache_entry *fragment) -+{ -+ squashfs_cache_put(msblk->fragment_cache, fragment); -+} -+ -+ -+SQSH_EXTERN -+struct squashfs_cache_entry *get_cached_fragment(struct super_block *s, -+ long long start_block, int length) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ -+ return squashfs_cache_get(s, msblk->fragment_cache, start_block, length); -+} -+ -+ -+static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i, -+ struct squashfs_base_inode_header *inodeb) -+{ -+ i->i_ino = inodeb->inode_number; -+ i->i_mtime.tv_sec = inodeb->mtime; -+ i->i_atime.tv_sec = inodeb->mtime; -+ i->i_ctime.tv_sec = inodeb->mtime; -+ i->i_uid = msblk->uid[inodeb->uid]; -+ i->i_mode = inodeb->mode; -+ i->i_size = 0; -+ -+ if (inodeb->guid == SQUASHFS_GUIDS) -+ i->i_gid = i->i_uid; -+ else -+ i->i_gid = msblk->guid[inodeb->guid]; -+} -+ -+ -+static squashfs_inode_t squashfs_inode_lookup(struct super_block *s, int ino) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ long long start = msblk->inode_lookup_table[SQUASHFS_LOOKUP_BLOCK(ino - 1)]; -+ int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino - 1); -+ squashfs_inode_t inode; -+ -+ TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino); -+ -+ if (msblk->swap) { -+ squashfs_inode_t sinode; -+ -+ if (!squashfs_get_cached_block(s, &sinode, start, offset, -+ sizeof(sinode), &start, &offset)) -+ goto out; -+ SQUASHFS_SWAP_INODE_T((&inode), &sinode); -+ } else if (!squashfs_get_cached_block(s, &inode, start, offset, -+ sizeof(inode), &start, &offset)) -+ goto out; -+ -+ TRACE("squashfs_inode_lookup, inode = 0x%llx\n", inode); -+ -+ return inode; -+ -+out: -+ return SQUASHFS_INVALID_BLK; -+} -+ -+ -+ -+static struct dentry *squashfs_export_iget(struct super_block *s, -+ unsigned int inode_number) -+{ -+ squashfs_inode_t inode; -+ struct inode *i; -+ struct dentry *dentry; -+ -+ TRACE("Entered squashfs_export_iget\n"); -+ -+ inode = squashfs_inode_lookup(s, inode_number); -+ if(inode == SQUASHFS_INVALID_BLK) { -+ dentry = ERR_PTR(-ENOENT); -+ goto failure; -+ } -+ -+ i = squashfs_iget(s, inode, inode_number); -+ if(i == NULL) { -+ dentry = ERR_PTR(-EACCES); -+ goto failure; -+ } -+ -+ dentry = d_alloc_anon(i); -+ if (dentry == NULL) { -+ iput(i); -+ dentry = ERR_PTR(-ENOMEM); -+ } -+ -+failure: -+ return dentry; -+} -+ -+ -+static struct dentry *squashfs_fh_to_dentry(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type) -+{ -+ if((fh_type != FILEID_INO32_GEN && fh_type != FILEID_INO32_GEN_PARENT) || -+ fh_len < 2) -+ return NULL; -+ -+ return squashfs_export_iget(s, fid->i32.ino); -+} -+ -+ -+static struct dentry *squashfs_fh_to_parent(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type) -+{ -+ if(fh_type != FILEID_INO32_GEN_PARENT || fh_len < 4) -+ return NULL; -+ -+ return squashfs_export_iget(s, fid->i32.parent_ino); -+} -+ -+ -+static struct dentry *squashfs_get_parent(struct dentry *child) -+{ -+ struct inode *i = child->d_inode; -+ -+ TRACE("Entered squashfs_get_parent\n"); -+ -+ return squashfs_export_iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode); -+} -+ -+ -+SQSH_EXTERN struct inode *squashfs_iget(... [truncated message content] |
From: <ppr...@us...> - 2010-07-11 21:30:29
|
Revision: 102 http://runnix.svn.sourceforge.net/runnix/?rev=102&view=rev Author: pprindeville Date: 2010-07-11 21:30:22 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Make patches device independent. Added Paths: ----------- trunk/target/device/kernel-patches/linux-2.6.25-imq5.patch trunk/target/device/kernel-patches/linux-2.6.25-squashfs3.4.patch trunk/target/device/kernel-patches/linux-2.6.26-15-routes.patch trunk/target/device/kernel-patches/linux-2.6.26.8-unionfs2.5.1.patch trunk/target/device/kernel-patches/linux-wanpipe.patch Removed Paths: ------------- trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch trunk/target/device/geni586/kernel-patches/linux-2.6.26-15-routes.patch trunk/target/device/geni586/kernel-patches/linux-2.6.26.8-unionfs2.5.1.patch trunk/target/device/geni586/kernel-patches/linux-wanpipe.patch Deleted: trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch =================================================================== --- trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch 2010-07-11 21:15:09 UTC (rev 101) +++ trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch 2010-07-11 21:30:22 UTC (rev 102) @@ -1,914 +0,0 @@ ---- linux-2.6.25.7/drivers/net/imq.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/drivers/net/imq.c 2008-06-17 15:03:01.000000000 +0300 -@@ -0,0 +1,474 @@ -+/* -+ * Pseudo-driver for the intermediate queue device. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version -+ * 2 of the License, or (at your option) any later version. -+ * -+ * Authors: Patrick McHardy, <ka...@tr...> -+ * -+ * The first version was written by Martin Devera, <de...@cd...> -+ * -+ * Credits: Jan Rafaj <im...@ce...> -+ * - Update patch to 2.4.21 -+ * Sebastian Strollo <sst...@no...> -+ * - Fix "Dead-loop on netdevice imq"-issue -+ * Marcel Sebek <se...@po...> -+ * - Update to 2.6.2-rc1 -+ * -+ * After some time of inactivity there is a group taking care -+ * of IMQ again: http://www.linuximq.net -+ * -+ * -+ * 2004/06/30 - New version of IMQ patch to kernels <=2.6.7 -+ * including the following changes: -+ * -+ * - Correction of ipv6 support "+"s issue (Hasso Tepper) -+ * - Correction of imq_init_devs() issue that resulted in -+ * kernel OOPS unloading IMQ as module (Norbert Buchmuller) -+ * - Addition of functionality to choose number of IMQ devices -+ * during kernel config (Andre Correa) -+ * - Addition of functionality to choose how IMQ hooks on -+ * PRE and POSTROUTING (after or before NAT) (Andre Correa) -+ * - Cosmetic corrections (Norbert Buchmuller) (Andre Correa) -+ * -+ * -+ * 2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were -+ * released with almost no problems. 2.6.14-x was released -+ * with some important changes: nfcache was removed; After -+ * some weeks of trouble we figured out that some IMQ fields -+ * in skb were missing in skbuff.c - skb_clone and copy_skb_header. -+ * These functions are correctly patched by this new patch version. -+ * -+ * Thanks for all who helped to figure out all the problems with -+ * 2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX, -+ * Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully -+ * I didn't forget anybody). I apologize again for my lack of time. -+ * -+ * -+ * 2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead -+ * of qdisc_restart() and moved qdisc_run() to tasklet to avoid -+ * recursive locking. New initialization routines to fix 'rmmod' not -+ * working anymore. Used code from ifb.c. (Jussi Kivilinna) -+ * -+ * Also, many thanks to pablo Sebastian Greco for making the initial -+ * patch and to those who helped the testing. -+ * -+ * More info at: http://www.linuximq.net/ (Andre Correa) -+ */ -+ -+#include <linux/module.h> -+#include <linux/kernel.h> -+#include <linux/moduleparam.h> -+#include <linux/skbuff.h> -+#include <linux/netdevice.h> -+#include <linux/rtnetlink.h> -+#include <linux/if_arp.h> -+#include <linux/netfilter.h> -+#include <linux/netfilter_ipv4.h> -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+ #include <linux/netfilter_ipv6.h> -+#endif -+#include <linux/imq.h> -+#include <net/pkt_sched.h> -+#include <net/netfilter/nf_queue.h> -+ -+struct imq_private { -+ struct tasklet_struct tasklet; -+ int tasklet_pending; -+}; -+ -+static nf_hookfn imq_nf_hook; -+ -+static struct nf_hook_ops imq_ingress_ipv4 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET, -+ .hooknum = NF_INET_PRE_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ .priority = NF_IP_PRI_MANGLE + 1 -+#else -+ .priority = NF_IP_PRI_NAT_DST + 1 -+#endif -+}; -+ -+static struct nf_hook_ops imq_egress_ipv4 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET, -+ .hooknum = NF_INET_POST_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA) -+ .priority = NF_IP_PRI_LAST -+#else -+ .priority = NF_IP_PRI_NAT_SRC - 1 -+#endif -+}; -+ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+static struct nf_hook_ops imq_ingress_ipv6 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET6, -+ .hooknum = NF_INET_PRE_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ .priority = NF_IP6_PRI_MANGLE + 1 -+#else -+ .priority = NF_IP6_PRI_NAT_DST + 1 -+#endif -+}; -+ -+static struct nf_hook_ops imq_egress_ipv6 = { -+ .hook = imq_nf_hook, -+ .owner = THIS_MODULE, -+ .pf = PF_INET6, -+ .hooknum = NF_INET_POST_ROUTING, -+#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA) -+ .priority = NF_IP6_PRI_LAST -+#else -+ .priority = NF_IP6_PRI_NAT_SRC - 1 -+#endif -+}; -+#endif -+ -+#if defined(CONFIG_IMQ_NUM_DEVS) -+static unsigned int numdevs = CONFIG_IMQ_NUM_DEVS; -+#else -+static unsigned int numdevs = IMQ_MAX_DEVS; -+#endif -+ -+static struct net_device *imq_devs_cache[IMQ_MAX_DEVS]; -+ -+static struct net_device_stats *imq_get_stats(struct net_device *dev) -+{ -+ return &dev->stats; -+} -+ -+/* called for packets kfree'd in qdiscs at places other than enqueue */ -+static void imq_skb_destructor(struct sk_buff *skb) -+{ -+ struct nf_queue_entry *entry = skb->nf_queue_entry; -+ -+ if (entry) { -+ if (entry->indev) -+ dev_put(entry->indev); -+ if (entry->outdev) -+ dev_put(entry->outdev); -+ kfree(entry); -+ } -+} -+ -+static int imq_dev_xmit(struct sk_buff *skb, struct net_device *dev) -+{ -+ dev->stats.tx_bytes += skb->len; -+ dev->stats.tx_packets++; -+ -+ skb->imq_flags = 0; -+ skb->destructor = NULL; -+ -+ dev->trans_start = jiffies; -+ nf_reinject(skb->nf_queue_entry, NF_ACCEPT); -+ return 0; -+} -+ -+static int imq_nf_queue(struct nf_queue_entry *entry, unsigned queue_num) -+{ -+ struct net_device *dev; -+ struct imq_private *priv; -+ struct sk_buff *skb2 = NULL; -+ struct Qdisc *q; -+ unsigned int index = entry->skb->imq_flags & IMQ_F_IFMASK; -+ int ret = -1; -+ -+ if (index > numdevs) -+ return -1; -+ -+ /* check for imq device by index from cache */ -+ dev = imq_devs_cache[index]; -+ if (!dev) { -+ char buf[8]; -+ -+ /* get device by name and cache result */ -+ snprintf(buf, sizeof(buf), "imq%d", index); -+ dev = dev_get_by_name(&init_net, buf); -+ if (!dev) { -+ /* not found ?!*/ -+ BUG(); -+ return -1; -+ } -+ -+ imq_devs_cache[index] = dev; -+ } -+ -+ priv = netdev_priv(dev); -+ if (!(dev->flags & IFF_UP)) { -+ entry->skb->imq_flags = 0; -+ nf_reinject(entry, NF_ACCEPT); -+ return 0; -+ } -+ dev->last_rx = jiffies; -+ -+ if (entry->skb->destructor) { -+ skb2 = entry->skb; -+ entry->skb = skb_clone(entry->skb, GFP_ATOMIC); -+ if (!entry->skb) -+ return -1; -+ } -+ entry->skb->nf_queue_entry = entry; -+ -+ dev->stats.rx_bytes += entry->skb->len; -+ dev->stats.rx_packets++; -+ -+ spin_lock_bh(&dev->queue_lock); -+ q = dev->qdisc; -+ if (q->enqueue) { -+ q->enqueue(skb_get(entry->skb), q); -+ if (skb_shared(entry->skb)) { -+ entry->skb->destructor = imq_skb_destructor; -+ kfree_skb(entry->skb); -+ ret = 0; -+ } -+ } -+ if (!test_and_set_bit(1, &priv->tasklet_pending)) -+ tasklet_schedule(&priv->tasklet); -+ spin_unlock_bh(&dev->queue_lock); -+ -+ if (skb2) -+ kfree_skb(ret ? entry->skb : skb2); -+ -+ return ret; -+} -+ -+static struct nf_queue_handler nfqh = { -+ .name = "imq", -+ .outfn = imq_nf_queue, -+}; -+ -+static void qdisc_run_tasklet(unsigned long arg) -+{ -+ struct net_device *dev = (struct net_device *)arg; -+ struct imq_private *priv = netdev_priv(dev); -+ -+ spin_lock(&dev->queue_lock); -+ qdisc_run(dev); -+ clear_bit(1, &priv->tasklet_pending); -+ spin_unlock(&dev->queue_lock); -+} -+ -+static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb, -+ const struct net_device *indev, -+ const struct net_device *outdev, -+ int (*okfn)(struct sk_buff *)) -+{ -+ if (pskb->imq_flags & IMQ_F_ENQUEUE) -+ return NF_QUEUE; -+ -+ return NF_ACCEPT; -+} -+ -+static int imq_close(struct net_device *dev) -+{ -+ struct imq_private *priv = netdev_priv(dev); -+ -+ tasklet_kill(&priv->tasklet); -+ netif_stop_queue(dev); -+ -+ return 0; -+} -+ -+static int imq_open(struct net_device *dev) -+{ -+ struct imq_private *priv = netdev_priv(dev); -+ -+ tasklet_init(&priv->tasklet, qdisc_run_tasklet, (unsigned long)dev); -+ netif_start_queue(dev); -+ -+ return 0; -+} -+ -+static void imq_setup(struct net_device *dev) -+{ -+ dev->hard_start_xmit = imq_dev_xmit; -+ dev->open = imq_open; -+ dev->get_stats = imq_get_stats; -+ dev->stop = imq_close; -+ dev->type = ARPHRD_VOID; -+ dev->mtu = 16000; -+ dev->tx_queue_len = 11000; -+ dev->flags = IFF_NOARP; -+} -+ -+static struct rtnl_link_ops imq_link_ops __read_mostly = { -+ .kind = "imq", -+ .priv_size = sizeof(struct imq_private), -+ .setup = imq_setup, -+}; -+ -+static int __init imq_init_hooks(void) -+{ -+ int err; -+ -+ err = nf_register_queue_handler(PF_INET, &nfqh); -+ if (err) -+ goto err1; -+ -+ err = nf_register_hook(&imq_ingress_ipv4); -+ if (err) -+ goto err2; -+ -+ err = nf_register_hook(&imq_egress_ipv4); -+ if (err) -+ goto err3; -+ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+ err = nf_register_queue_handler(PF_INET6, &nfqh); -+ if (err) -+ goto err4; -+ -+ err = nf_register_hook(&imq_ingress_ipv6); -+ if (err) -+ goto err5; -+ -+ err = nf_register_hook(&imq_egress_ipv6); -+ if (err) -+ goto err6; -+#endif -+ -+ return 0; -+ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+err6: -+ nf_unregister_hook(&imq_ingress_ipv6); -+err5: -+ nf_unregister_queue_handler(PF_INET6, &nfqh); -+err4: -+ nf_unregister_hook(&imq_egress_ipv4); -+#endif -+err3: -+ nf_unregister_hook(&imq_ingress_ipv4); -+err2: -+ nf_unregister_queue_handler(PF_INET, &nfqh); -+err1: -+ return err; -+} -+ -+static int __init imq_init_one(int index) -+{ -+ struct net_device *dev; -+ int ret; -+ -+ dev = alloc_netdev(sizeof(struct imq_private), "imq%d", imq_setup); -+ if (!dev) -+ return -ENOMEM; -+ -+ ret = dev_alloc_name(dev, dev->name); -+ if (ret < 0) -+ goto fail; -+ -+ dev->rtnl_link_ops = &imq_link_ops; -+ ret = register_netdevice(dev); -+ if (ret < 0) -+ goto fail; -+ -+ return 0; -+fail: -+ free_netdev(dev); -+ return ret; -+} -+ -+static int __init imq_init_devs(void) -+{ -+ int err, i; -+ -+ if (!numdevs || numdevs > IMQ_MAX_DEVS) { -+ printk(KERN_ERR "IMQ: numdevs has to be betweed 1 and %u\n", -+ IMQ_MAX_DEVS); -+ return -EINVAL; -+ } -+ -+ rtnl_lock(); -+ err = __rtnl_link_register(&imq_link_ops); -+ -+ for (i = 0; i < numdevs && !err; i++) -+ err = imq_init_one(i); -+ -+ if (err) { -+ __rtnl_link_unregister(&imq_link_ops); -+ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); -+ } -+ rtnl_unlock(); -+ -+ return err; -+} -+ -+static int __init imq_init_module(void) -+{ -+ int err; -+ -+ err = imq_init_devs(); -+ if (err) { -+ printk(KERN_ERR "IMQ: Error trying imq_init_devs(net)\n"); -+ return err; -+ } -+ -+ err = imq_init_hooks(); -+ if (err) { -+ printk(KERN_ERR "IMQ: Error trying imq_init_hooks()\n"); -+ rtnl_link_unregister(&imq_link_ops); -+ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); -+ return err; -+ } -+ -+ printk(KERN_INFO "IMQ driver loaded successfully.\n"); -+ -+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ printk(KERN_INFO "\tHooking IMQ before NAT on PREROUTING.\n"); -+#else -+ printk(KERN_INFO "\tHooking IMQ after NAT on PREROUTING.\n"); -+#endif -+#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB) -+ printk(KERN_INFO "\tHooking IMQ before NAT on POSTROUTING.\n"); -+#else -+ printk(KERN_INFO "\tHooking IMQ after NAT on POSTROUTING.\n"); -+#endif -+ -+ return 0; -+} -+ -+static void __exit imq_unhook(void) -+{ -+#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) -+ nf_unregister_hook(&imq_ingress_ipv6); -+ nf_unregister_hook(&imq_egress_ipv6); -+ nf_unregister_queue_handler(PF_INET6, &nfqh); -+#endif -+ nf_unregister_hook(&imq_ingress_ipv4); -+ nf_unregister_hook(&imq_egress_ipv4); -+ nf_unregister_queue_handler(PF_INET, &nfqh); -+} -+ -+static void __exit imq_cleanup_devs(void) -+{ -+ rtnl_link_unregister(&imq_link_ops); -+ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); -+} -+ -+static void __exit imq_exit_module(void) -+{ -+ imq_unhook(); -+ imq_cleanup_devs(); -+ printk(KERN_INFO "IMQ driver unloaded successfully.\n"); -+} -+ -+module_init(imq_init_module); -+module_exit(imq_exit_module); -+ -+module_param(numdevs, int, 0); -+MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will " -+ "be created)"); -+MODULE_AUTHOR("http://www.linuximq.net"); -+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See " -+ "http://www.linuximq.net/ for more information."); -+MODULE_LICENSE("GPL"); -+MODULE_ALIAS_RTNL_LINK("imq"); -+ ---- linux-2.6.25.7/drivers/net/Kconfig 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/drivers/net/Kconfig 2008-06-17 15:03:21.000000000 +0300 -@@ -117,6 +117,129 @@ - To compile this driver as a module, choose M here: the module - will be called eql. If unsure, say N. - -+config IMQ -+ tristate "IMQ (intermediate queueing device) support" -+ depends on NETDEVICES && NETFILTER -+ ---help--- -+ The IMQ device(s) is used as placeholder for QoS queueing -+ disciplines. Every packet entering/leaving the IP stack can be -+ directed through the IMQ device where it's enqueued/dequeued to the -+ attached qdisc. This allows you to treat network devices as classes -+ and distribute bandwidth among them. Iptables is used to specify -+ through which IMQ device, if any, packets travel. -+ -+ More information at: http://www.linuximq.net/ -+ -+ To compile this driver as a module, choose M here: the module -+ will be called imq. If unsure, say N. -+ -+choice -+ prompt "IMQ behavior (PRE/POSTROUTING)" -+ depends on IMQ -+ default IMQ_BEHAVIOR_AB -+ help -+ -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ IMQ can work in any of the following ways: -+ -+ PREROUTING | POSTROUTING -+ -----------------|------------------- -+ #1 After NAT | After NAT -+ #2 After NAT | Before NAT -+ #3 Before NAT | After NAT -+ #4 Before NAT | Before NAT -+ -+ The default behavior is to hook before NAT on PREROUTING -+ and after NAT on POSTROUTING (#3). -+ -+ This settings are specially usefull when trying to use IMQ -+ to shape NATed clients. -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_AA -+ bool "IMQ AA" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: After NAT -+ POSTROUTING: After NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_AB -+ bool "IMQ AB" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: After NAT -+ POSTROUTING: Before NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_BA -+ bool "IMQ BA" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: Before NAT -+ POSTROUTING: After NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+config IMQ_BEHAVIOR_BB -+ bool "IMQ BB" -+ help -+ This settings defines how IMQ behaves in respect to its -+ hooking in PREROUTING and POSTROUTING. -+ -+ Choosing this option will make IMQ hook like this: -+ -+ PREROUTING: Before NAT -+ POSTROUTING: Before NAT -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ -+endchoice -+ -+config IMQ_NUM_DEVS -+ -+ int "Number of IMQ devices" -+ range 2 16 -+ depends on IMQ -+ default "16" -+ help -+ -+ This settings defines how many IMQ devices will be -+ created. -+ -+ The default value is 16. -+ -+ More information can be found at: www.linuximq.net -+ -+ If not sure leave the default settings alone. -+ - config TUN - tristate "Universal TUN/TAP device driver support" - select CRC32 ---- linux-2.6.25.7/drivers/net/Makefile 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/drivers/net/Makefile 2008-06-17 14:56:58.000000000 +0300 -@@ -143,6 +143,7 @@ - obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o - - obj-$(CONFIG_DUMMY) += dummy.o -+obj-$(CONFIG_IMQ) += imq.o - obj-$(CONFIG_IFB) += ifb.o - obj-$(CONFIG_MACVLAN) += macvlan.o - obj-$(CONFIG_DE600) += de600.o ---- linux-2.6.25.7/include/linux/imq.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/include/linux/imq.h 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,9 @@ -+#ifndef _IMQ_H -+#define _IMQ_H -+ -+#define IMQ_MAX_DEVS 16 -+ -+#define IMQ_F_IFMASK 0x7f -+#define IMQ_F_ENQUEUE 0x80 -+ -+#endif /* _IMQ_H */ ---- linux-2.6.25.7/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/include/linux/netfilter_ipv4/ipt_IMQ.h 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,8 @@ -+#ifndef _IPT_IMQ_H -+#define _IPT_IMQ_H -+ -+struct ipt_imq_info { -+ unsigned int todev; /* target imq device */ -+}; -+ -+#endif /* _IPT_IMQ_H */ ---- linux-2.6.25.7/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/include/linux/netfilter_ipv6/ip6t_IMQ.h 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,8 @@ -+#ifndef _IP6T_IMQ_H -+#define _IP6T_IMQ_H -+ -+struct ip6t_imq_info { -+ unsigned int todev; /* target imq device */ -+}; -+ -+#endif /* _IP6T_IMQ_H */ ---- linux-2.6.25.7/include/linux/skbuff.h 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/include/linux/skbuff.h 2008-06-17 14:56:58.000000000 +0300 -@@ -296,6 +296,10 @@ - struct nf_conntrack *nfct; - struct sk_buff *nfct_reasm; - #endif -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+ unsigned char imq_flags; -+ struct nf_queue_entry *nf_queue_entry; -+#endif - #ifdef CONFIG_BRIDGE_NETFILTER - struct nf_bridge_info *nf_bridge; - #endif -@@ -1736,6 +1740,10 @@ - dst->nfct_reasm = src->nfct_reasm; - nf_conntrack_get_reasm(src->nfct_reasm); - #endif -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+ dst->imq_flags = src->imq_flags; -+ dst->nf_queue_entry = src->nf_queue_entry; -+#endif - #ifdef CONFIG_BRIDGE_NETFILTER - dst->nf_bridge = src->nf_bridge; - nf_bridge_get(src->nf_bridge); ---- linux-2.6.25.7/net/core/dev.c 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/core/dev.c 2008-06-17 14:56:58.000000000 +0300 -@@ -95,6 +95,9 @@ - #include <net/net_namespace.h> - #include <net/sock.h> - #include <linux/rtnetlink.h> -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+#include <linux/imq.h> -+#endif - #include <linux/proc_fs.h> - #include <linux/seq_file.h> - #include <linux/stat.h> -@@ -1537,7 +1540,11 @@ - int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) - { - if (likely(!skb->next)) { -- if (!list_empty(&ptype_all)) -+ if (!list_empty(&ptype_all) -+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) -+ && !(skb->imq_flags & IMQ_F_ENQUEUE) -+#endif -+ ) - dev_queue_xmit_nit(skb, dev); - - if (netif_needs_gso(dev, skb)) { ---- linux-2.6.25.7/net/ipv4/netfilter/ipt_IMQ.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/net/ipv4/netfilter/ipt_IMQ.c 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,69 @@ -+/* -+ * This target marks packets to be enqueued to an imq device -+ */ -+#include <linux/module.h> -+#include <linux/skbuff.h> -+#include <linux/netfilter_ipv4/ip_tables.h> -+#include <linux/netfilter_ipv4/ipt_IMQ.h> -+#include <linux/imq.h> -+ -+static unsigned int imq_target(struct sk_buff *pskb, -+ const struct net_device *in, -+ const struct net_device *out, -+ unsigned int hooknum, -+ const struct xt_target *target, -+ const void *targinfo) -+{ -+ struct ipt_imq_info *mr = (struct ipt_imq_info *)targinfo; -+ -+ pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE; -+ -+ return XT_CONTINUE; -+} -+ -+static bool imq_checkentry(const char *tablename, -+ const void *e, -+ const struct xt_target *target, -+ void *targinfo, -+ unsigned int hook_mask) -+{ -+ struct ipt_imq_info *mr; -+ -+ mr = (struct ipt_imq_info *)targinfo; -+ -+ if (mr->todev > IMQ_MAX_DEVS) { -+ printk(KERN_WARNING -+ "IMQ: invalid device specified, highest is %u\n", -+ IMQ_MAX_DEVS); -+ return 0; -+ } -+ -+ return 1; -+} -+ -+static struct xt_target ipt_imq_reg = { -+ .name = "IMQ", -+ .family = AF_INET, -+ .target = imq_target, -+ .targetsize = sizeof(struct ipt_imq_info), -+ .checkentry = imq_checkentry, -+ .me = THIS_MODULE, -+ .table = "mangle" -+}; -+ -+static int __init init(void) -+{ -+ return xt_register_target(&ipt_imq_reg); -+} -+ -+static void __exit fini(void) -+{ -+ xt_unregister_target(&ipt_imq_reg); -+} -+ -+module_init(init); -+module_exit(fini); -+ -+MODULE_AUTHOR("http://www.linuximq.net"); -+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); -+MODULE_LICENSE("GPL"); ---- linux-2.6.25.7/net/ipv4/netfilter/Kconfig 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv4/netfilter/Kconfig 2008-06-17 14:56:58.000000000 +0300 -@@ -123,6 +123,17 @@ - - To compile it as a module, choose M here. If unsure, say N. - -+config IP_NF_TARGET_IMQ -+ tristate "IMQ target support" -+ depends on IP_NF_MANGLE -+ help -+ This option adds a `IMQ' target which is used to specify if and -+ to which IMQ device packets should get enqueued/dequeued. -+ -+ For more information visit: http://www.linuximq.net/ -+ -+ To compile it as a module, choose M here. If unsure, say N. -+ - config IP_NF_TARGET_REJECT - tristate "REJECT target support" - depends on IP_NF_FILTER ---- linux-2.6.25.7/net/ipv4/netfilter/Makefile 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv4/netfilter/Makefile 2008-06-17 14:56:58.000000000 +0300 -@@ -51,6 +51,7 @@ - obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o - obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o - obj-$(CONFIG_IP_NF_TARGET_LOG) += ipt_LOG.o -+obj-$(CONFIG_IP_NF_TARGET_IMQ) += ipt_IMQ.o - obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o - obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o - obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o ---- linux-2.6.25.7/net/ipv6/netfilter/ip6t_IMQ.c 1970-01-01 02:00:00.000000000 +0200 -+++ linux-2.6.25.7.imq/net/ipv6/netfilter/ip6t_IMQ.c 2008-06-17 14:56:58.000000000 +0300 -@@ -0,0 +1,69 @@ -+/* -+ * This target marks packets to be enqueued to an imq device -+ */ -+#include <linux/module.h> -+#include <linux/skbuff.h> -+#include <linux/netfilter_ipv6/ip6_tables.h> -+#include <linux/netfilter_ipv6/ip6t_IMQ.h> -+#include <linux/imq.h> -+ -+static unsigned int imq_target(struct sk_buff *pskb, -+ const struct net_device *in, -+ const struct net_device *out, -+ unsigned int hooknum, -+ const struct xt_target *target, -+ const void *targinfo) -+{ -+ struct ip6t_imq_info *mr = (struct ip6t_imq_info *)targinfo; -+ -+ pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE; -+ -+ return XT_CONTINUE; -+} -+ -+static bool imq_checkentry(const char *tablename, -+ const void *entry, -+ const struct xt_target *target, -+ void *targinfo, -+ unsigned int hook_mask) -+{ -+ struct ip6t_imq_info *mr; -+ -+ mr = (struct ip6t_imq_info *)targinfo; -+ -+ if (mr->todev > IMQ_MAX_DEVS) { -+ printk(KERN_WARNING -+ "IMQ: invalid device specified, highest is %u\n", -+ IMQ_MAX_DEVS); -+ return 0; -+ } -+ -+ return 1; -+} -+ -+static struct xt_target ip6t_imq_reg = { -+ .name = "IMQ", -+ .family = AF_INET6, -+ .target = imq_target, -+ .targetsize = sizeof(struct ip6t_imq_info), -+ .table = "mangle", -+ .checkentry = imq_checkentry, -+ .me = THIS_MODULE -+}; -+ -+static int __init init(void) -+{ -+ return xt_register_target(&ip6t_imq_reg); -+} -+ -+static void __exit fini(void) -+{ -+ xt_unregister_target(&ip6t_imq_reg); -+} -+ -+module_init(init); -+module_exit(fini); -+ -+MODULE_AUTHOR("http://www.linuximq.net"); -+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); -+MODULE_LICENSE("GPL"); ---- linux-2.6.25.7/net/ipv6/netfilter/Kconfig 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv6/netfilter/Kconfig 2008-06-17 14:56:58.000000000 +0300 -@@ -179,6 +179,15 @@ - - To compile it as a module, choose M here. If unsure, say N. - -+config IP6_NF_TARGET_IMQ -+ tristate "IMQ target support" -+ depends on IP6_NF_MANGLE -+ help -+ This option adds a `IMQ' target which is used to specify if and -+ to which imq device packets should get enqueued/dequeued. -+ -+ To compile it as a module, choose M here. If unsure, say N. -+ - config IP6_NF_TARGET_HL - tristate 'HL (hoplimit) target support' - depends on IP6_NF_MANGLE ---- linux-2.6.25.7/net/ipv6/netfilter/Makefile 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/ipv6/netfilter/Makefile 2008-06-17 14:56:58.000000000 +0300 -@@ -6,6 +6,7 @@ - obj-$(CONFIG_IP6_NF_IPTABLES) += ip6_tables.o - obj-$(CONFIG_IP6_NF_FILTER) += ip6table_filter.o - obj-$(CONFIG_IP6_NF_MANGLE) += ip6table_mangle.o -+obj-$(CONFIG_IP6_NF_TARGET_IMQ) += ip6t_IMQ.o - obj-$(CONFIG_IP6_NF_QUEUE) += ip6_queue.o - obj-$(CONFIG_IP6_NF_RAW) += ip6table_raw.o - ---- linux-2.6.25.7/net/sched/sch_generic.c 2008-06-16 23:24:36.000000000 +0300 -+++ linux-2.6.25.7.imq/net/sched/sch_generic.c 2008-06-17 14:56:58.000000000 +0300 -@@ -203,6 +203,7 @@ - - clear_bit(__LINK_STATE_QDISC_RUNNING, &dev->state); - } -+EXPORT_SYMBOL(__qdisc_run); - - static void dev_watchdog(unsigned long arg) - { Deleted: trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch =================================================================== --- trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch 2010-07-11 21:15:09 UTC (rev 101) +++ trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch 2010-07-11 21:30:22 UTC (rev 102) @@ -1,4218 +0,0 @@ -diff -x .gitignore -Nurp linux-2.6.25/fs/Kconfig linux-2.6.25-squashfs3.4/fs/Kconfig ---- linux-2.6.25/fs/Kconfig 2008-04-17 03:49:44.000000000 +0100 -+++ linux-2.6.25-squashfs3.4/fs/Kconfig 2008-08-18 16:44:29.000000000 +0100 -@@ -1367,6 +1367,56 @@ config CRAMFS - - If unsure, say N. - -+config SQUASHFS -+ tristate "SquashFS 3.4 - Squashed file system support" -+ select ZLIB_INFLATE -+ help -+ Saying Y here includes support for SquashFS 3.4 (a Compressed -+ Read-Only File System). Squashfs is a highly compressed read-only -+ filesystem for Linux. It uses zlib compression to compress both -+ files, inodes and directories. Inodes in the system are very small -+ and all blocks are packed to minimise data overhead. Block sizes -+ greater than 4K are supported up to a maximum of 1 Mbytes (default -+ block size 128K). SquashFS 3.3 supports 64 bit filesystems and files -+ (larger than 4GB), full uid/gid information, hard links and timestamps. -+ -+ Squashfs is intended for general read-only filesystem use, for -+ archival use (i.e. in cases where a .tar.gz file may be used), and in -+ embedded systems where low overhead is needed. Further information -+ and filesystem tools are available from http://squashfs.sourceforge.net. -+ -+ If you want to compile this as a module ( = code which can be -+ inserted in and removed from the running kernel whenever you want), -+ say M here and read <file:Documentation/modules.txt>. The module -+ will be called squashfs. Note that the root file system (the one -+ containing the directory /) cannot be compiled as a module. -+ -+ If unsure, say N. -+ -+config SQUASHFS_EMBEDDED -+ -+ bool "Additional option for memory-constrained systems" -+ depends on SQUASHFS -+ default n -+ help -+ Saying Y here allows you to specify cache size. -+ -+ If unsure, say N. -+ -+config SQUASHFS_FRAGMENT_CACHE_SIZE -+ int "Number of fragments cached" if SQUASHFS_EMBEDDED -+ depends on SQUASHFS -+ default "3" -+ help -+ By default SquashFS caches the last 3 fragments read from -+ the filesystem. Increasing this amount may mean SquashFS -+ has to re-read fragments less often from disk, at the expense -+ of extra system memory. Decreasing this amount will mean -+ SquashFS uses less memory at the expense of extra reads from disk. -+ -+ Note there must be at least one cached fragment. Anything -+ much more than three will probably not make much difference. -+ - config VXFS_FS - tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" - depends on BLOCK -diff -x .gitignore -Nurp linux-2.6.25/fs/Makefile linux-2.6.25-squashfs3.4/fs/Makefile ---- linux-2.6.25/fs/Makefile 2008-04-17 03:49:44.000000000 +0100 -+++ linux-2.6.25-squashfs3.4/fs/Makefile 2008-08-18 16:44:29.000000000 +0100 -@@ -73,6 +73,7 @@ obj-$(CONFIG_JBD) += jbd/ - obj-$(CONFIG_JBD2) += jbd2/ - obj-$(CONFIG_EXT2_FS) += ext2/ - obj-$(CONFIG_CRAMFS) += cramfs/ -+obj-$(CONFIG_SQUASHFS) += squashfs/ - obj-y += ramfs/ - obj-$(CONFIG_HUGETLBFS) += hugetlbfs/ - obj-$(CONFIG_CODA_FS) += coda/ -diff -x .gitignore -Nurp linux-2.6.25/fs/squashfs/inode.c linux-2.6.25-squashfs3.4/fs/squashfs/inode.c ---- linux-2.6.25/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.25-squashfs3.4/fs/squashfs/inode.c 2008-08-26 08:24:58.000000000 +0100 -@@ -0,0 +1,2173 @@ -+/* -+ * Squashfs - a compressed read only filesystem for Linux -+ * -+ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 -+ * Phillip Lougher <ph...@lo...> -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License -+ * as published by the Free Software Foundation; either version 2, -+ * or (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ * -+ * inode.c -+ */ -+ -+#include <linux/squashfs_fs.h> -+#include <linux/module.h> -+#include <linux/zlib.h> -+#include <linux/fs.h> -+#include <linux/squashfs_fs_sb.h> -+#include <linux/squashfs_fs_i.h> -+#include <linux/buffer_head.h> -+#include <linux/vfs.h> -+#include <linux/vmalloc.h> -+#include <linux/spinlock.h> -+#include <linux/smp_lock.h> -+#include <linux/exportfs.h> -+ -+#include "squashfs.h" -+ -+static struct dentry *squashfs_fh_to_dentry(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type); -+static struct dentry *squashfs_fh_to_parent(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type); -+static struct dentry *squashfs_get_parent(struct dentry *child); -+static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode); -+static int squashfs_statfs(struct dentry *, struct kstatfs *); -+static int squashfs_symlink_readpage(struct file *file, struct page *page); -+static long long read_blocklist(struct inode *inode, int index, -+ int readahead_blks, char *block_list, -+ unsigned short **block_p, unsigned int *bsize); -+static int squashfs_readpage(struct file *file, struct page *page); -+static int squashfs_readdir(struct file *, void *, filldir_t); -+static struct dentry *squashfs_lookup(struct inode *, struct dentry *, -+ struct nameidata *); -+static int squashfs_remount(struct super_block *s, int *flags, char *data); -+static void squashfs_put_super(struct super_block *); -+static int squashfs_get_sb(struct file_system_type *,int, const char *, void *, -+ struct vfsmount *); -+static struct inode *squashfs_alloc_inode(struct super_block *sb); -+static void squashfs_destroy_inode(struct inode *inode); -+static int init_inodecache(void); -+static void destroy_inodecache(void); -+ -+static struct file_system_type squashfs_fs_type = { -+ .owner = THIS_MODULE, -+ .name = "squashfs", -+ .get_sb = squashfs_get_sb, -+ .kill_sb = kill_block_super, -+ .fs_flags = FS_REQUIRES_DEV -+}; -+ -+static const unsigned char squashfs_filetype_table[] = { -+ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK -+}; -+ -+static struct super_operations squashfs_super_ops = { -+ .alloc_inode = squashfs_alloc_inode, -+ .destroy_inode = squashfs_destroy_inode, -+ .statfs = squashfs_statfs, -+ .put_super = squashfs_put_super, -+ .remount_fs = squashfs_remount -+}; -+ -+static struct export_operations squashfs_export_ops = { -+ .fh_to_dentry = squashfs_fh_to_dentry, -+ .fh_to_parent = squashfs_fh_to_parent, -+ .get_parent = squashfs_get_parent -+}; -+ -+SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = { -+ .readpage = squashfs_symlink_readpage -+}; -+ -+SQSH_EXTERN const struct address_space_operations squashfs_aops = { -+ .readpage = squashfs_readpage -+}; -+ -+static const struct file_operations squashfs_dir_ops = { -+ .read = generic_read_dir, -+ .readdir = squashfs_readdir -+}; -+ -+SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = { -+ .lookup = squashfs_lookup -+}; -+ -+ -+static struct buffer_head *get_block_length(struct super_block *s, -+ int *cur_index, int *offset, int *c_byte) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ unsigned short temp; -+ struct buffer_head *bh; -+ -+ if (!(bh = sb_bread(s, *cur_index))) -+ goto out; -+ -+ if (msblk->devblksize - *offset == 1) { -+ if (msblk->swap) -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ else -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ brelse(bh); -+ if (!(bh = sb_bread(s, ++(*cur_index)))) -+ goto out; -+ if (msblk->swap) -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ bh->b_data); -+ else -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ bh->b_data); -+ *c_byte = temp; -+ *offset = 1; -+ } else { -+ if (msblk->swap) { -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ (bh->b_data + *offset + 1)); -+ } else { -+ ((unsigned char *) &temp)[0] = *((unsigned char *) -+ (bh->b_data + *offset)); -+ ((unsigned char *) &temp)[1] = *((unsigned char *) -+ (bh->b_data + *offset + 1)); -+ } -+ *c_byte = temp; -+ *offset += 2; -+ } -+ -+ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) { -+ if (*offset == msblk->devblksize) { -+ brelse(bh); -+ if (!(bh = sb_bread(s, ++(*cur_index)))) -+ goto out; -+ *offset = 0; -+ } -+ if (*((unsigned char *) (bh->b_data + *offset)) != -+ SQUASHFS_MARKER_BYTE) { -+ ERROR("Metadata block marker corrupt @ %x\n", -+ *cur_index); -+ brelse(bh); -+ goto out; -+ } -+ (*offset)++; -+ } -+ return bh; -+ -+out: -+ return NULL; -+} -+ -+ -+SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer, -+ long long index, unsigned int length, -+ long long *next_index, int srclength) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ struct squashfs_super_block *sblk = &msblk->sblk; -+ struct buffer_head **bh; -+ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1); -+ unsigned int cur_index = index >> msblk->devblksize_log2; -+ int bytes, avail_bytes, b = 0, k = 0; -+ unsigned int compressed; -+ unsigned int c_byte = length; -+ -+ bh = kmalloc(((sblk->block_size >> msblk->devblksize_log2) + 1) * -+ sizeof(struct buffer_head *), GFP_KERNEL); -+ if (bh == NULL) -+ goto read_failure; -+ -+ if (c_byte) { -+ bytes = -offset; -+ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte); -+ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte); -+ -+ TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, -+ compressed ? "" : "un", (unsigned int) c_byte, srclength); -+ -+ if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used) -+ goto read_failure; -+ -+ for (b = 0; bytes < (int) c_byte; b++, cur_index++) { -+ bh[b] = sb_getblk(s, cur_index); -+ if (bh[b] == NULL) -+ goto block_release; -+ bytes += msblk->devblksize; -+ } -+ ll_rw_block(READ, b, bh); -+ } else { -+ if (index < 0 || (index + 2) > sblk->bytes_used) -+ goto read_failure; -+ -+ bh[0] = get_block_length(s, &cur_index, &offset, &c_byte); -+ if (bh[0] == NULL) -+ goto read_failure; -+ b = 1; -+ -+ bytes = msblk->devblksize - offset; -+ compressed = SQUASHFS_COMPRESSED(c_byte); -+ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte); -+ -+ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed -+ ? "" : "un", (unsigned int) c_byte); -+ -+ if (c_byte > srclength || (index + c_byte) > sblk->bytes_used) -+ goto block_release; -+ -+ for (; bytes < c_byte; b++) { -+ bh[b] = sb_getblk(s, ++cur_index); -+ if (bh[b] == NULL) -+ goto block_release; -+ bytes += msblk->devblksize; -+ } -+ ll_rw_block(READ, b - 1, bh + 1); -+ } -+ -+ if (compressed) { -+ int zlib_err = 0; -+ -+ /* -+ * uncompress block -+ */ -+ -+ mutex_lock(&msblk->read_data_mutex); -+ -+ msblk->stream.next_out = buffer; -+ msblk->stream.avail_out = srclength; -+ -+ for (bytes = 0; k < b; k++) { -+ avail_bytes = min(c_byte - bytes, msblk->devblksize - offset); -+ -+ wait_on_buffer(bh[k]); -+ if (!buffer_uptodate(bh[k])) -+ goto release_mutex; -+ -+ msblk->stream.next_in = bh[k]->b_data + offset; -+ msblk->stream.avail_in = avail_bytes; -+ -+ if (k == 0) { -+ zlib_err = zlib_inflateInit(&msblk->stream); -+ if (zlib_err != Z_OK) { -+ ERROR("zlib_inflateInit returned unexpected result 0x%x," -+ " srclength %d\n", zlib_err, srclength); -+ goto release_mutex; -+ } -+ -+ if (avail_bytes == 0) { -+ offset = 0; -+ brelse(bh[k]); -+ continue; -+ } -+ } -+ -+ zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH); -+ if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) { -+ ERROR("zlib_inflate returned unexpected result 0x%x," -+ " srclength %d, avail_in %d, avail_out %d\n", zlib_err, -+ srclength, msblk->stream.avail_in, msblk->stream.avail_out); -+ goto release_mutex; -+ } -+ -+ bytes += avail_bytes; -+ offset = 0; -+ brelse(bh[k]); -+ } -+ -+ if (zlib_err != Z_STREAM_END) -+ goto release_mutex; -+ -+ zlib_err = zlib_inflateEnd(&msblk->stream); -+ if (zlib_err != Z_OK) { -+ ERROR("zlib_inflateEnd returned unexpected result 0x%x," -+ " srclength %d\n", zlib_err, srclength); -+ goto release_mutex; -+ } -+ bytes = msblk->stream.total_out; -+ mutex_unlock(&msblk->read_data_mutex); -+ } else { -+ int i; -+ -+ for(i = 0; i < b; i++) { -+ wait_on_buffer(bh[i]); -+ if (!buffer_uptodate(bh[i])) -+ goto block_release; -+ } -+ -+ for (bytes = 0; k < b; k++) { -+ avail_bytes = min(c_byte - bytes, msblk->devblksize - offset); -+ -+ memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes); -+ bytes += avail_bytes; -+ offset = 0; -+ brelse(bh[k]); -+ } -+ } -+ -+ if (next_index) -+ *next_index = index + c_byte + (length ? 0 : -+ (SQUASHFS_CHECK_DATA(msblk->sblk.flags) ? 3 : 2)); -+ -+ kfree(bh); -+ return bytes; -+ -+release_mutex: -+ mutex_unlock(&msblk->read_data_mutex); -+ -+block_release: -+ for (; k < b; k++) -+ brelse(bh[k]); -+ -+read_failure: -+ ERROR("sb_bread failed reading block 0x%x\n", cur_index); -+ kfree(bh); -+ return 0; -+} -+ -+ -+static struct squashfs_cache_entry *squashfs_cache_get(struct super_block *s, -+ struct squashfs_cache *cache, long long block, int length) -+{ -+ int i, n; -+ struct squashfs_cache_entry *entry; -+ -+ spin_lock(&cache->lock); -+ -+ while (1) { -+ for (i = 0; i < cache->entries && cache->entry[i].block != block; i++); -+ -+ if (i == cache->entries) { -+ if (cache->unused_blks == 0) { -+ cache->waiting ++; -+ spin_unlock(&cache->lock); -+ wait_event(cache->wait_queue, cache->unused_blks); -+ spin_lock(&cache->lock); -+ cache->waiting --; -+ continue; -+ } -+ -+ i = cache->next_blk; -+ for (n = 0; n < cache->entries; n++) { -+ if (cache->entry[i].locked == 0) -+ break; -+ i = (i + 1) % cache->entries; -+ } -+ -+ cache->next_blk = (i + 1) % cache->entries; -+ entry = &cache->entry[i]; -+ -+ cache->unused_blks --; -+ entry->block = block; -+ entry->locked = 1; -+ entry->pending = 1; -+ entry->waiting = 0; -+ entry->error = 0; -+ spin_unlock(&cache->lock); -+ -+ entry->length = squashfs_read_data(s, entry->data, -+ block, length, &entry->next_index, cache->block_size); -+ -+ spin_lock(&cache->lock); -+ -+ if (entry->length == 0) -+ entry->error = 1; -+ -+ entry->pending = 0; -+ spin_unlock(&cache->lock); -+ if (entry->waiting) -+ wake_up_all(&entry->wait_queue); -+ goto out; -+ } -+ -+ entry = &cache->entry[i]; -+ if (entry->locked == 0) -+ cache->unused_blks --; -+ entry->locked++; -+ -+ if (entry->pending) { -+ entry->waiting ++; -+ spin_unlock(&cache->lock); -+ wait_event(entry->wait_queue, !entry->pending); -+ goto out; -+ } -+ -+ spin_unlock(&cache->lock); -+ goto out; -+ } -+ -+out: -+ TRACE("Got %s %d, start block %lld, locked %d, error %d\n", i, -+ cache->name, entry->block, entry->locked, entry->error); -+ if (entry->error) -+ ERROR("Unable to read %s cache entry [%llx]\n", cache->name, block); -+ return entry; -+} -+ -+ -+static void squashfs_cache_put(struct squashfs_cache *cache, -+ struct squashfs_cache_entry *entry) -+{ -+ spin_lock(&cache->lock); -+ entry->locked --; -+ if (entry->locked == 0) { -+ cache->unused_blks ++; -+ spin_unlock(&cache->lock); -+ if (cache->waiting) -+ wake_up(&cache->wait_queue); -+ } else -+ spin_unlock(&cache->lock); -+} -+ -+ -+static void squashfs_cache_delete(struct squashfs_cache *cache) -+{ -+ int i; -+ -+ if (cache == NULL) -+ return; -+ -+ for (i = 0; i < cache->entries; i++) -+ if (cache->entry[i].data) { -+ if (cache->use_vmalloc) -+ vfree(cache->entry[i].data); -+ else -+ kfree(cache->entry[i].data); -+ } -+ -+ kfree(cache); -+} -+ -+ -+static struct squashfs_cache *squashfs_cache_init(char *name, int entries, -+ int block_size, int use_vmalloc) -+{ -+ int i; -+ struct squashfs_cache *cache = kzalloc(sizeof(struct squashfs_cache) + -+ entries * sizeof(struct squashfs_cache_entry), GFP_KERNEL); -+ if (cache == NULL) { -+ ERROR("Failed to allocate %s cache\n", name); -+ goto failed; -+ } -+ -+ cache->next_blk = 0; -+ cache->unused_blks = entries; -+ cache->entries = entries; -+ cache->block_size = block_size; -+ cache->use_vmalloc = use_vmalloc; -+ cache->name = name; -+ cache->waiting = 0; -+ spin_lock_init(&cache->lock); -+ init_waitqueue_head(&cache->wait_queue); -+ -+ for (i = 0; i < entries; i++) { -+ init_waitqueue_head(&cache->entry[i].wait_queue); -+ cache->entry[i].block = SQUASHFS_INVALID_BLK; -+ cache->entry[i].data = use_vmalloc ? vmalloc(block_size) : -+ kmalloc(block_size, GFP_KERNEL); -+ if (cache->entry[i].data == NULL) { -+ ERROR("Failed to allocate %s cache entry\n", name); -+ goto cleanup; -+ } -+ } -+ -+ return cache; -+ -+cleanup: -+ squashfs_cache_delete(cache); -+failed: -+ return NULL; -+} -+ -+ -+SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, void *buffer, -+ long long block, unsigned int offset, -+ int length, long long *next_block, -+ unsigned int *next_offset) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ int bytes, return_length = length; -+ struct squashfs_cache_entry *entry; -+ -+ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset); -+ -+ while (1) { -+ entry = squashfs_cache_get(s, msblk->block_cache, block, 0); -+ bytes = entry->length - offset; -+ -+ if (entry->error || bytes < 1) { -+ return_length = 0; -+ goto finish; -+ } else if (bytes >= length) { -+ if (buffer) -+ memcpy(buffer, entry->data + offset, length); -+ if (entry->length - offset == length) { -+ *next_block = entry->next_index; -+ *next_offset = 0; -+ } else { -+ *next_block = block; -+ *next_offset = offset + length; -+ } -+ goto finish; -+ } else { -+ if (buffer) { -+ memcpy(buffer, entry->data + offset, bytes); -+ buffer = (char *) buffer + bytes; -+ } -+ block = entry->next_index; -+ squashfs_cache_put(msblk->block_cache, entry); -+ length -= bytes; -+ offset = 0; -+ } -+ } -+ -+finish: -+ squashfs_cache_put(msblk->block_cache, entry); -+ return return_length; -+} -+ -+ -+static int get_fragment_location(struct super_block *s, unsigned int fragment, -+ long long *fragment_start_block, -+ unsigned int *fragment_size) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ long long start_block = -+ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)]; -+ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment); -+ struct squashfs_fragment_entry fragment_entry; -+ -+ if (msblk->swap) { -+ struct squashfs_fragment_entry sfragment_entry; -+ -+ if (!squashfs_get_cached_block(s, &sfragment_entry, start_block, offset, -+ sizeof(sfragment_entry), &start_block, &offset)) -+ goto out; -+ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry); -+ } else -+ if (!squashfs_get_cached_block(s, &fragment_entry, start_block, offset, -+ sizeof(fragment_entry), &start_block, &offset)) -+ goto out; -+ -+ *fragment_start_block = fragment_entry.start_block; -+ *fragment_size = fragment_entry.size; -+ -+ return 1; -+ -+out: -+ return 0; -+} -+ -+ -+SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, -+ struct squashfs_cache_entry *fragment) -+{ -+ squashfs_cache_put(msblk->fragment_cache, fragment); -+} -+ -+ -+SQSH_EXTERN -+struct squashfs_cache_entry *get_cached_fragment(struct super_block *s, -+ long long start_block, int length) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ -+ return squashfs_cache_get(s, msblk->fragment_cache, start_block, length); -+} -+ -+ -+static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i, -+ struct squashfs_base_inode_header *inodeb) -+{ -+ i->i_ino = inodeb->inode_number; -+ i->i_mtime.tv_sec = inodeb->mtime; -+ i->i_atime.tv_sec = inodeb->mtime; -+ i->i_ctime.tv_sec = inodeb->mtime; -+ i->i_uid = msblk->uid[inodeb->uid]; -+ i->i_mode = inodeb->mode; -+ i->i_size = 0; -+ -+ if (inodeb->guid == SQUASHFS_GUIDS) -+ i->i_gid = i->i_uid; -+ else -+ i->i_gid = msblk->guid[inodeb->guid]; -+} -+ -+ -+static squashfs_inode_t squashfs_inode_lookup(struct super_block *s, int ino) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ long long start = msblk->inode_lookup_table[SQUASHFS_LOOKUP_BLOCK(ino - 1)]; -+ int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino - 1); -+ squashfs_inode_t inode; -+ -+ TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino); -+ -+ if (msblk->swap) { -+ squashfs_inode_t sinode; -+ -+ if (!squashfs_get_cached_block(s, &sinode, start, offset, -+ sizeof(sinode), &start, &offset)) -+ goto out; -+ SQUASHFS_SWAP_INODE_T((&inode), &sinode); -+ } else if (!squashfs_get_cached_block(s, &inode, start, offset, -+ sizeof(inode), &start, &offset)) -+ goto out; -+ -+ TRACE("squashfs_inode_lookup, inode = 0x%llx\n", inode); -+ -+ return inode; -+ -+out: -+ return SQUASHFS_INVALID_BLK; -+} -+ -+ -+ -+static struct dentry *squashfs_export_iget(struct super_block *s, -+ unsigned int inode_number) -+{ -+ squashfs_inode_t inode; -+ struct inode *i; -+ struct dentry *dentry; -+ -+ TRACE("Entered squashfs_export_iget\n"); -+ -+ inode = squashfs_inode_lookup(s, inode_number); -+ if(inode == SQUASHFS_INVALID_BLK) { -+ dentry = ERR_PTR(-ENOENT); -+ goto failure; -+ } -+ -+ i = squashfs_iget(s, inode, inode_number); -+ if(i == NULL) { -+ dentry = ERR_PTR(-EACCES); -+ goto failure; -+ } -+ -+ dentry = d_alloc_anon(i); -+ if (dentry == NULL) { -+ iput(i); -+ dentry = ERR_PTR(-ENOMEM); -+ } -+ -+failure: -+ return dentry; -+} -+ -+ -+static struct dentry *squashfs_fh_to_dentry(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type) -+{ -+ if((fh_type != FILEID_INO32_GEN && fh_type != FILEID_INO32_GEN_PARENT) || -+ fh_len < 2) -+ return NULL; -+ -+ return squashfs_export_iget(s, fid->i32.ino); -+} -+ -+ -+static struct dentry *squashfs_fh_to_parent(struct super_block *s, -+ struct fid *fid, int fh_len, int fh_type) -+{ -+ if(fh_type != FILEID_INO32_GEN_PARENT || fh_len < 4) -+ return NULL; -+ -+ return squashfs_export_iget(s, fid->i32.parent_ino); -+} -+ -+ -+static struct dentry *squashfs_get_parent(struct dentry *child) -+{ -+ struct inode *i = child->d_inode; -+ -+ TRACE("Entered squashfs_get_parent\n"); -+ -+ return squashfs_export_iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode); -+} -+ -+ -+SQSH_EXTERN struct inode *squashfs_iget(struct super_block *s, -+ squashfs_inode_t inode, unsigned int inode_number) -+{ -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ struct inode *i = iget_locked(s, inode_number); -+ -+ TRACE("Entered squashfs_iget\n"); -+ -+ if(i && (i->i_state & I_NEW)) { -+ (msblk->read_inode)(i, inode); -+ unlock_new_inode(i); -+ } -+ -+ return i; -+} -+ -+ -+static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode) -+{ -+ struct super_block *s = i->i_sb; -+ struct squashfs_sb_info *msblk = s->s_fs_info; -+ struct squashfs_super_block *sblk = &msblk->sblk; -+ long long block = SQUASHFS_INODE_BLK(inode) + sblk->inode_table_start; -+ unsigned int offset = SQUASHFS_INODE_OFFSET(inode); -+ long long next_block; -+ unsigned int next_offset; -+ union squashfs_inode_header id, sid; -+ struct squashfs_base_inode_header *inodeb = &id.base, *sinodeb = &sid.base; -+ -+ TRACE("Entered squashfs_read_inode\n"); -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodeb, block, offset, -+ sizeof(*sinodeb), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb, sizeof(*sinodeb)); -+ } else -+ if (!squashfs_get_cached_block(s, inodeb, block, offset, -+ sizeof(*inodeb), &next_block, &next_offset)) -+ goto failed_read; -+ -+ squashfs_new_inode(msblk, i, inodeb); -+ -+ switch(inodeb->inode_type) { -+ case SQUASHFS_FILE_TYPE: { -+ unsigned int frag_size; -+ long long frag_blk; -+ struct squashfs_reg_inode_header *inodep = &id.reg; -+ struct squashfs_reg_inode_header *sinodep = &sid.reg; -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodep, block, offset, -+ sizeof(*sinodep), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep); -+ } else -+ if (!squashfs_get_cached_block(s, inodep, block, offset, -+ sizeof(*inodep), &next_block, &next_offset)) -+ goto failed_read; -+ -+ frag_blk = SQUASHFS_INVALID_BLK; -+ -+ if (inodep->fragment != SQUASHFS_INVALID_FRAG) -+ if(!get_fragment_location(s, inodep->fragment, &frag_blk, -+ &frag_size)) -+ goto failed_read; -+ -+ i->i_nlink = 1; -+ i->i_size = inodep->file_size; -+ i->i_fop = &generic_ro_fops; -+ i->i_mode |= S_IFREG; -+ i->i_blocks = ((i->i_size - 1) >> 9) + 1; -+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk; -+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size; -+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset; -+ SQUASHFS_I(i)->start_block = inodep->start_block; -+ SQUASHFS_I(i)->u.s1.block_list_start = next_block; -+ SQUASHFS_I(i)->offset = next_offset; -+ i->i_data.a_ops = &squashfs_aops; -+ -+ TRACE("File inode %x:%x, start_block %llx, " -+ "block_list_start %llx, offset %x\n", -+ SQUASHFS_INODE_BLK(inode), offset, -+ inodep->start_block, next_block, -+ next_offset); -+ break; -+ } -+ case SQUASHFS_LREG_TYPE: { -+ unsigned int frag_size; -+ long long frag_blk; -+ struct squashfs_lreg_inode_header *inodep = &id.lreg; -+ struct squashfs_lreg_inode_header *sinodep = &sid.lreg; -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodep, block, offset, -+ sizeof(*sinodep), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep); -+ } else -+ if (!squashfs_get_cached_block(s, inodep, block, offset, -+ sizeof(*inodep), &next_block, &next_offset)) -+ goto failed_read; -+ -+ frag_blk = SQUASHFS_INVALID_BLK; -+ -+ if (inodep->fragment != SQUASHFS_INVALID_FRAG) -+ if (!get_fragment_location(s, inodep->fragment, &frag_blk, -+ &frag_size)) -+ goto failed_read; -+ -+ i->i_nlink = inodep->nlink; -+ i->i_size = inodep->file_size; -+ i->i_fop = &generic_ro_fops; -+ i->i_mode |= S_IFREG; -+ i->i_blocks = ((i->i_size - 1) >> 9) + 1; -+ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk; -+ SQUASHFS_I(i)->u.s1.fragment_size = frag_size; -+ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset; -+ SQUASHFS_I(i)->start_block = inodep->start_block; -+ SQUASHFS_I(i)->u.s1.block_list_start = next_block; -+ SQUASHFS_I(i)->offset = next_offset; -+ i->i_data.a_ops = &squashfs_aops; -+ -+ TRACE("File inode %x:%x, start_block %llx, " -+ "block_list_start %llx, offset %x\n", -+ SQUASHFS_INODE_BLK(inode), offset, -+ inodep->start_block, next_block, -+ next_offset); -+ break; -+ } -+ case SQUASHFS_DIR_TYPE: { -+ struct squashfs_dir_inode_header *inodep = &id.dir; -+ struct squashfs_dir_inode_header *sinodep = &sid.dir; -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodep, block, offset, -+ sizeof(*sinodep), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep); -+ } else -+ if (!squashfs_get_cached_block(s, inodep, block, offset, -+ sizeof(*inodep), &next_block, &next_offset)) -+ goto failed_read; -+ -+ i->i_nlink = inodep->nlink; -+ i->i_size = inodep->file_size; -+ i->i_op = &squashfs_dir_inode_ops; -+ i->i_fop = &squashfs_dir_ops; -+ i->i_mode |= S_IFDIR; -+ SQUASHFS_I(i)->start_block = inodep->start_block; -+ SQUASHFS_I(i)->offset = inodep->offset; -+ SQUASHFS_I(i)->u.s2.directory_index_count = 0; -+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode; -+ -+ TRACE("Directory inode %x:%x, start_block %x, offset " -+ "%x\n", SQUASHFS_INODE_BLK(inode), -+ offset, inodep->start_block, -+ inodep->offset); -+ break; -+ } -+ case SQUASHFS_LDIR_TYPE: { -+ struct squashfs_ldir_inode_header *inodep = &id.ldir; -+ struct squashfs_ldir_inode_header *sinodep = &sid.ldir; -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodep, block, offset, -+ sizeof(*sinodep), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep, sinodep); -+ } else -+ if (!squashfs_get_cached_block(s, inodep, block, offset, -+ sizeof(*inodep), &next_block, &next_offset)) -+ goto failed_read; -+ -+ i->i_nlink = inodep->nlink; -+ i->i_size = inodep->file_size; -+ i->i_op = &squashfs_dir_inode_ops; -+ i->i_fop = &squashfs_dir_ops; -+ i->i_mode |= S_IFDIR; -+ SQUASHFS_I(i)->start_block = inodep->start_block; -+ SQUASHFS_I(i)->offset = inodep->offset; -+ SQUASHFS_I(i)->u.s2.directory_index_start = next_block; -+ SQUASHFS_I(i)->u.s2.directory_index_offset = next_offset; -+ SQUASHFS_I(i)->u.s2.directory_index_count = inodep->i_count; -+ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode; -+ -+ TRACE("Long directory inode %x:%x, start_block %x, offset %x\n", -+ SQUASHFS_INODE_BLK(inode), offset, -+ inodep->start_block, inodep->offset); -+ break; -+ } -+ case SQUASHFS_SYMLINK_TYPE: { -+ struct squashfs_symlink_inode_header *inodep = &id.symlink; -+ struct squashfs_symlink_inode_header *sinodep = &sid.symlink; -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodep, block, offset, -+ sizeof(*sinodep), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep, sinodep); -+ } else -+ if (!squashfs_get_cached_block(s, inodep, block, offset, -+ sizeof(*inodep), &next_block, &next_offset)) -+ goto failed_read; -+ -+ i->i_nlink = inodep->nlink; -+ i->i_size = inodep->symlink_size; -+ i->i_op = &page_symlink_inode_operations; -+ i->i_data.a_ops = &squashfs_symlink_aops; -+ i->i_mode |= S_IFLNK; -+ SQUASHFS_I(i)->start_block = next_block; -+ SQUASHFS_I(i)->offset = next_offset; -+ -+ TRACE("Symbolic link inode %x:%x, start_block %llx, offset %x\n", -+ SQUASHFS_INODE_BLK(inode), offset, -+ next_block, next_offset); -+ break; -+ } -+ case SQUASHFS_BLKDEV_TYPE: -+ case SQUASHFS_CHRDEV_TYPE: { -+ struct squashfs_dev_inode_header *inodep = &id.dev; -+ struct squashfs_dev_inode_header *sinodep = &sid.dev; -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodep, block, offset, -+ sizeof(*sinodep), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep); -+ } else -+ if (!squashfs_get_cached_block(s, inodep, block, offset, -+ sizeof(*inodep), &next_block, &next_offset)) -+ goto failed_read; -+ -+ i->i_nlink = inodep->nlink; -+ i->i_mode |= (inodeb->inode_type == SQUASHFS_CHRDEV_TYPE) ? -+ S_IFCHR : S_IFBLK; -+ init_special_inode(i, i->i_mode, old_decode_dev(inodep->rdev)); -+ -+ TRACE("Device inode %x:%x, rdev %x\n", -+ SQUASHFS_INODE_BLK(inode), offset, inodep->rdev); -+ break; -+ } -+ case SQUASHFS_FIFO_TYPE: -+ case SQUASHFS_SOCKET_TYPE: { -+ struct squashfs_ipc_inode_header *inodep = &id.ipc; -+ struct squashfs_ipc_inode_header *sinodep = &sid.ipc; -+ -+ if (msblk->swap) { -+ if (!squashfs_get_cached_block(s, sinodep, block, offset, -+ sizeof(*sinodep), &next_block, &next_offset)) -+ goto failed_read; -+ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep); -+ } else -+ if (!squashfs_get_cached_block(s, inodep, block, offset, -+ sizeof(*inodep), &next_block, &next_offset)) -+ goto failed_... [truncated message content] |
From: <ppr...@us...> - 2010-07-11 21:15:15
|
Revision: 101 http://runnix.svn.sourceforge.net/runnix/?rev=101&view=rev Author: pprindeville Date: 2010-07-11 21:15:09 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Version bump kernel. Modified Paths: -------------- trunk/target/device/geni586/linux.mk Modified: trunk/target/device/geni586/linux.mk =================================================================== --- trunk/target/device/geni586/linux.mk 2010-07-11 21:14:41 UTC (rev 100) +++ trunk/target/device/geni586/linux.mk 2010-07-11 21:15:09 UTC (rev 101) @@ -22,7 +22,7 @@ ifneq ($(filter $(TARGETS),linux),) # Version of Linux to download and then apply patches to -DOWNLOAD_LINUX_VERSION:=2.6.26.8 +DOWNLOAD_LINUX_VERSION:=2.6.27.48 # Version of Linux AFTER patches LINUX_VERSION:=$(DOWNLOAD_LINUX_VERSION)-runnix This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ppr...@us...> - 2010-07-11 21:14:47
|
Revision: 100 http://runnix.svn.sourceforge.net/runnix/?rev=100&view=rev Author: pprindeville Date: 2010-07-11 21:14:41 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Makefile cleanup, Modified Paths: -------------- trunk/Makefile Modified: trunk/Makefile =================================================================== --- trunk/Makefile 2010-07-11 20:52:26 UTC (rev 99) +++ trunk/Makefile 2010-07-11 21:14:41 UTC (rev 100) @@ -117,15 +117,15 @@ zcat $(TARGET_SKELETON) | tar -C $(BUILD_DIR) -xf -; \ fi; if [ -d "$(TARGET_SKEL_DIR)" ] ; then \ - cp -a $(TARGET_SKEL_DIR)/* $(TARGET_DIR)/; \ + cp -a $(TARGET_SKEL_DIR)/. $(TARGET_DIR)/; \ fi; if [ -d "$(TARGET_SKEL2_DIR)" ] ; then \ - cp -af $(TARGET_SKEL2_DIR)/* $(TARGET_DIR)/; \ + cp -af $(TARGET_SKEL2_DIR)/. $(TARGET_DIR)/; \ fi; touch $(STAGING_DIR)/fakeroot.env - -find $(TARGET_DIR) -type d -name CVS | xargs rm -rf - -find $(TARGET_DIR) -type d -name .svn | xargs rm -rf + find $(TARGET_DIR) -type d \( -name CVS -o -name .svn \) -print \ + | xargs -r rm -rf source: $(TARGETS_SOURCE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ppr...@us...> - 2010-07-11 20:52:32
|
Revision: 99 http://runnix.svn.sourceforge.net/runnix/?rev=99&view=rev Author: pprindeville Date: 2010-07-11 20:52:26 +0000 (Sun, 11 Jul 2010) Log Message: ----------- Pick up a couple of the cross-building fixes from astlinux. Modified Paths: -------------- trunk/package/Makefile.in trunk/package/kexectools/kexectools.mk Modified: trunk/package/Makefile.in =================================================================== --- trunk/package/Makefile.in 2010-03-03 20:27:04 UTC (rev 98) +++ trunk/package/Makefile.in 2010-07-11 20:52:26 UTC (rev 99) @@ -15,7 +15,9 @@ ifneq ($(BR2_LARGEFILE),y) DISABLE_LARGEFILE= --disable-largefile endif + TARGET_CFLAGS=$(TARGET_OPTIMIZATION) $(TARGET_DEBUGGING) +TARGET_LDFLAGS=-L$(STAGING_DIR)/lib -L$(STAGING_DIR)/usr/lib HOSTCC:=gcc BASE_DIR:=${shell pwd} Modified: trunk/package/kexectools/kexectools.mk =================================================================== --- trunk/package/kexectools/kexectools.mk 2010-03-03 20:27:04 UTC (rev 98) +++ trunk/package/kexectools/kexectools.mk 2010-07-11 20:52:26 UTC (rev 99) @@ -22,7 +22,9 @@ $(KEXECTOOLS_DIR)/.configured: $(KEXECTOOLS_DIR)/.unpacked (cd $(KEXECTOOLS_DIR); rm -rf config.cache; \ $(TARGET_CONFIGURE_OPTS) CC_FOR_BUILD=$(HOSTCC) \ + CC=$(TARGET_CC) \ CFLAGS="$(TARGET_CFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" \ ./configure \ --target=$(GNU_TARGET_NAME) \ --host=$(GNU_TARGET_NAME) \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2010-03-03 20:27:11
|
Revision: 98 http://runnix.svn.sourceforge.net/runnix/?rev=98&view=rev Author: krisk84 Date: 2010-03-03 20:27:04 +0000 (Wed, 03 Mar 2010) Log Message: ----------- make the kernel less optimal but more generic Modified Paths: -------------- trunk/target/device/geni586/linux.config Modified: trunk/target/device/geni586/linux.config =================================================================== --- trunk/target/device/geni586/linux.config 2010-03-03 20:06:35 UTC (rev 97) +++ trunk/target/device/geni586/linux.config 2010-03-03 20:27:04 UTC (rev 98) @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.26.8 -# Wed Mar 3 15:00:40 2010 +# Wed Mar 3 15:26:16 2010 # # CONFIG_64BIT is not set CONFIG_X86_32=y @@ -13,7 +13,6 @@ CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_GENERIC_CLOCKEVENTS=y -CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_HAVE_LATENCYTOP_SUPPORT=y @@ -148,9 +147,9 @@ # # Processor type and features # -CONFIG_TICK_ONESHOT=y +# CONFIG_TICK_ONESHOT is not set # CONFIG_NO_HZ is not set -CONFIG_HIGH_RES_TIMERS=y +# CONFIG_HIGH_RES_TIMERS is not set CONFIG_GENERIC_CLOCKEVENTS_BUILD=y # CONFIG_SMP is not set CONFIG_X86_PC=y @@ -208,21 +207,16 @@ CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_TSC=y CONFIG_X86_MINIMUM_CPU_FAMILY=4 -CONFIG_HPET_TIMER=y -CONFIG_HPET_EMULATE_RTC=y +# CONFIG_HPET_TIMER is not set CONFIG_DMI=y # CONFIG_IOMMU_HELPER is not set # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y # CONFIG_PREEMPT_RCU is not set -CONFIG_X86_UP_APIC=y -CONFIG_X86_UP_IOAPIC=y -CONFIG_X86_LOCAL_APIC=y -CONFIG_X86_IO_APIC=y +# CONFIG_X86_UP_APIC is not set CONFIG_X86_MCE=y # CONFIG_X86_MCE_NONFATAL is not set -# CONFIG_X86_MCE_P4THERMAL is not set CONFIG_VM86=y # CONFIG_TOSHIBA is not set # CONFIG_I8K is not set @@ -254,16 +248,14 @@ CONFIG_VIRT_TO_BUS=y # CONFIG_HIGHPTE is not set # CONFIG_MATH_EMULATION is not set -CONFIG_MTRR=y -CONFIG_X86_PAT=y -# CONFIG_EFI is not set +# CONFIG_MTRR is not set CONFIG_SECCOMP=y # CONFIG_HZ_100 is not set # CONFIG_HZ_250 is not set # CONFIG_HZ_300 is not set CONFIG_HZ_1000=y CONFIG_HZ=1000 -CONFIG_SCHED_HRTICK=y +# CONFIG_SCHED_HRTICK is not set CONFIG_KEXEC=y # CONFIG_CRASH_DUMP is not set CONFIG_PHYSICAL_START=0x100000 @@ -275,34 +267,7 @@ # # Power management options # -CONFIG_PM=y -# CONFIG_PM_DEBUG is not set -# CONFIG_SUSPEND is not set -# CONFIG_HIBERNATION is not set -CONFIG_ACPI=y -# CONFIG_ACPI_PROCFS is not set -CONFIG_ACPI_PROCFS_POWER=y -CONFIG_ACPI_SYSFS_POWER=y -CONFIG_ACPI_PROC_EVENT=y -# CONFIG_ACPI_AC is not set -# CONFIG_ACPI_BATTERY is not set -CONFIG_ACPI_BUTTON=y -# CONFIG_ACPI_FAN is not set -CONFIG_ACPI_DOCK=y -# CONFIG_ACPI_BAY is not set -# CONFIG_ACPI_PROCESSOR is not set -# CONFIG_ACPI_WMI is not set -# CONFIG_ACPI_ASUS is not set -# CONFIG_ACPI_TOSHIBA is not set -# CONFIG_ACPI_CUSTOM_DSDT is not set -CONFIG_ACPI_BLACKLIST_YEAR=0 -# CONFIG_ACPI_DEBUG is not set -CONFIG_ACPI_EC=y -CONFIG_ACPI_POWER=y -CONFIG_ACPI_SYSTEM=y -CONFIG_X86_PM_TIMER=y -# CONFIG_ACPI_CONTAINER is not set -# CONFIG_ACPI_SBS is not set +# CONFIG_PM is not set # # CPU Frequency scaling @@ -321,17 +286,15 @@ CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y -CONFIG_PCI_MMCONFIG=y CONFIG_PCI_DOMAINS=y CONFIG_PCIEPORTBUS=y CONFIG_PCIEAER=y # CONFIG_PCIEASPM is not set -CONFIG_ARCH_SUPPORTS_MSI=y -# CONFIG_PCI_MSI is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set CONFIG_PCI_LEGACY=y -CONFIG_HT_IRQ=y CONFIG_ISA_DMA_API=y -# CONFIG_ISA is not set +CONFIG_ISA=y +# CONFIG_EISA is not set # CONFIG_MCA is not set # CONFIG_SCx200 is not set # CONFIG_OLPC is not set @@ -477,9 +440,12 @@ # # Protocols # -CONFIG_PNPACPI=y +# CONFIG_ISAPNP is not set +# CONFIG_PNPBIOS is not set +# CONFIG_PNPACPI is not set CONFIG_BLK_DEV=y # CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_XD is not set # CONFIG_BLK_CPQ_DA is not set # CONFIG_BLK_CPQ_CISS_DA is not set # CONFIG_BLK_DEV_DAC960 is not set @@ -547,7 +513,10 @@ # CONFIG_ISCSI_TCP is not set CONFIG_BLK_DEV_3W_XXXX_RAID=y CONFIG_SCSI_3W_9XXX=y +# CONFIG_SCSI_7000FASST is not set # CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set # CONFIG_SCSI_AACRAID is not set # CONFIG_SCSI_AIC7XXX is not set # CONFIG_SCSI_AIC7XXX_OLD is not set @@ -556,6 +525,7 @@ # CONFIG_AIC94XX_DEBUG is not set # CONFIG_SCSI_DPT_I2O is not set # CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_IN2000 is not set CONFIG_SCSI_ARCMSR=y # CONFIG_SCSI_ARCMSR_AER is not set # CONFIG_MEGARAID_NEWGEN is not set @@ -565,28 +535,37 @@ CONFIG_SCSI_BUSLOGIC=y # CONFIG_SCSI_FLASHPOINT is not set # CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DTC3280 is not set # CONFIG_SCSI_EATA is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set # CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set # CONFIG_SCSI_IPS is not set # CONFIG_SCSI_INITIO is not set # CONFIG_SCSI_INIA100 is not set CONFIG_SCSI_MVSAS=y +# CONFIG_SCSI_NCR53C406A is not set # CONFIG_SCSI_STEX is not set # CONFIG_SCSI_SYM53C8XX_2 is not set # CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_QLOGIC_FAS is not set # CONFIG_SCSI_QLOGIC_1280 is not set # CONFIG_SCSI_QLA_FC is not set # CONFIG_SCSI_QLA_ISCSI is not set # CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_SYM53C416 is not set # CONFIG_SCSI_DC395x is not set # CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_ULTRASTOR is not set # CONFIG_SCSI_NSP32 is not set # CONFIG_SCSI_DEBUG is not set # CONFIG_SCSI_SRP is not set CONFIG_ATA=y # CONFIG_ATA_NONSTANDARD is not set -CONFIG_ATA_ACPI=y # CONFIG_SATA_PMP is not set CONFIG_SATA_AHCI=y CONFIG_SATA_SIL24=y @@ -605,7 +584,6 @@ CONFIG_SATA_VIA=y # CONFIG_SATA_VITESSE is not set # CONFIG_SATA_INIC162X is not set -CONFIG_PATA_ACPI=y # CONFIG_PATA_ALI is not set CONFIG_PATA_AMD=y # CONFIG_PATA_ARTOP is not set @@ -626,6 +604,7 @@ # CONFIG_PATA_IT821X is not set # CONFIG_PATA_IT8213 is not set # CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_LEGACY is not set # CONFIG_PATA_TRIFLEX is not set # CONFIG_PATA_MARVELL is not set CONFIG_PATA_MPIIX=y @@ -637,6 +616,7 @@ # CONFIG_PATA_OPTI is not set # CONFIG_PATA_OPTIDMA is not set # CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_QDI is not set # CONFIG_PATA_RADISYS is not set # CONFIG_PATA_RZ1000 is not set # CONFIG_PATA_SC1200 is not set @@ -646,6 +626,7 @@ CONFIG_PATA_SIS=y CONFIG_PATA_VIA=y # CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_WINBOND_VLB is not set CONFIG_PATA_SCH=y # CONFIG_MD is not set # CONFIG_FUSION is not set @@ -694,8 +675,17 @@ # CONFIG_SUNGEM is not set # CONFIG_CASSINI is not set CONFIG_NET_VENDOR_3COM=y +# CONFIG_EL1 is not set +# CONFIG_EL2 is not set +# CONFIG_ELPLUS is not set +# CONFIG_EL16 is not set +# CONFIG_EL3 is not set +# CONFIG_3C515 is not set CONFIG_VORTEX=y CONFIG_TYPHOON=y +# CONFIG_LANCE is not set +# CONFIG_NET_VENDOR_SMC is not set +# CONFIG_NET_VENDOR_RACAL is not set CONFIG_NET_TULIP=y # CONFIG_DE2104X is not set CONFIG_TULIP=y @@ -706,7 +696,10 @@ CONFIG_WINBOND_840=y CONFIG_DM9102=y CONFIG_ULI526X=y +# CONFIG_AT1700 is not set +# CONFIG_DEPCA is not set # CONFIG_HP100 is not set +# CONFIG_NET_ISA is not set # CONFIG_IBM_NEW_EMAC_ZMII is not set # CONFIG_IBM_NEW_EMAC_RGMII is not set # CONFIG_IBM_NEW_EMAC_TAH is not set @@ -717,12 +710,15 @@ # CONFIG_AMD8111E_NAPI is not set CONFIG_ADAPTEC_STARFIRE=y # CONFIG_ADAPTEC_STARFIRE_NAPI is not set +# CONFIG_AC3200 is not set +# CONFIG_APRICOT is not set CONFIG_B44=y CONFIG_B44_PCI_AUTOSELECT=y CONFIG_B44_PCICORE_AUTOSELECT=y CONFIG_B44_PCI=y CONFIG_FORCEDETH=y CONFIG_FORCEDETH_NAPI=y +# CONFIG_CS89x0 is not set CONFIG_EEPRO100=y CONFIG_E100=y # CONFIG_FEALNX is not set @@ -835,7 +831,6 @@ CONFIG_INPUT_MISC=y CONFIG_INPUT_PCSPKR=y # CONFIG_INPUT_WISTRON_BTNS is not set -# CONFIG_INPUT_ATLAS_BTNS is not set # CONFIG_INPUT_ATI_REMOTE is not set # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set @@ -878,6 +873,11 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4 CONFIG_SERIAL_8250_EXTENDED=y CONFIG_SERIAL_8250_MANY_PORTS=y +# CONFIG_SERIAL_8250_FOURPORT is not set +# CONFIG_SERIAL_8250_ACCENT is not set +# CONFIG_SERIAL_8250_BOCA is not set +# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set +# CONFIG_SERIAL_8250_HUB6 is not set CONFIG_SERIAL_8250_SHARE_IRQ=y # CONFIG_SERIAL_8250_DETECT_IRQ is not set # CONFIG_SERIAL_8250_RSA is not set @@ -899,6 +899,7 @@ CONFIG_HW_RANDOM_VIA=y # CONFIG_NVRAM is not set CONFIG_RTC=y +# CONFIG_DTLK is not set # CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_SONYPI is not set @@ -907,7 +908,6 @@ CONFIG_NSC_GPIO=y CONFIG_CS5535_GPIO=y # CONFIG_RAW_DRIVER is not set -# CONFIG_HPET is not set # CONFIG_HANGCHECK_TIMER is not set # CONFIG_TCG_TPM is not set # CONFIG_TELCLOCK is not set @@ -980,6 +980,7 @@ CONFIG_VGA_CONSOLE=y # CONFIG_VGACON_SOFT_SCROLLBACK is not set # CONFIG_VIDEO_SELECT is not set +# CONFIG_MDA_CONSOLE is not set CONFIG_DUMMY_CONSOLE=y # @@ -1012,7 +1013,6 @@ CONFIG_USB_DEVICEFS=y CONFIG_USB_DEVICE_CLASS=y # CONFIG_USB_DYNAMIC_MINORS is not set -# CONFIG_USB_SUSPEND is not set # CONFIG_USB_OTG is not set # @@ -1329,8 +1329,6 @@ # CONFIG_NONPROMISC_DEVMEM is not set CONFIG_EARLY_PRINTK=y # CONFIG_4KSTACKS is not set -CONFIG_X86_FIND_SMP_CONFIG=y -CONFIG_X86_MPPARSE=y CONFIG_DOUBLEFAULT=y CONFIG_IO_DELAY_TYPE_0X80=0 CONFIG_IO_DELAY_TYPE_0XED=1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2010-03-03 20:06:52
|
Revision: 97 http://runnix.svn.sourceforge.net/runnix/?rev=97&view=rev Author: krisk84 Date: 2010-03-03 20:06:35 +0000 (Wed, 03 Mar 2010) Log Message: ----------- slight kernel downgrade Modified Paths: -------------- trunk/target/device/geni586/linux.config trunk/target/device/geni586/linux.mk Added Paths: ----------- trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch trunk/target/device/geni586/kernel-patches/linux-2.6.26-15-routes.patch trunk/target/device/geni586/kernel-patches/linux-2.6.26.8-unionfs2.5.1.patch trunk/target/device/geni586/kernel-patches/linux-wanpipe.patch Added: trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch =================================================================== --- trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch (rev 0) +++ trunk/target/device/geni586/kernel-patches/linux-2.6.25-imq5.patch 2010-03-03 20:06:35 UTC (rev 97) @@ -0,0 +1,914 @@ +--- linux-2.6.25.7/drivers/net/imq.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-2.6.25.7.imq/drivers/net/imq.c 2008-06-17 15:03:01.000000000 +0300 +@@ -0,0 +1,474 @@ ++/* ++ * Pseudo-driver for the intermediate queue device. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version ++ * 2 of the License, or (at your option) any later version. ++ * ++ * Authors: Patrick McHardy, <ka...@tr...> ++ * ++ * The first version was written by Martin Devera, <de...@cd...> ++ * ++ * Credits: Jan Rafaj <im...@ce...> ++ * - Update patch to 2.4.21 ++ * Sebastian Strollo <sst...@no...> ++ * - Fix "Dead-loop on netdevice imq"-issue ++ * Marcel Sebek <se...@po...> ++ * - Update to 2.6.2-rc1 ++ * ++ * After some time of inactivity there is a group taking care ++ * of IMQ again: http://www.linuximq.net ++ * ++ * ++ * 2004/06/30 - New version of IMQ patch to kernels <=2.6.7 ++ * including the following changes: ++ * ++ * - Correction of ipv6 support "+"s issue (Hasso Tepper) ++ * - Correction of imq_init_devs() issue that resulted in ++ * kernel OOPS unloading IMQ as module (Norbert Buchmuller) ++ * - Addition of functionality to choose number of IMQ devices ++ * during kernel config (Andre Correa) ++ * - Addition of functionality to choose how IMQ hooks on ++ * PRE and POSTROUTING (after or before NAT) (Andre Correa) ++ * - Cosmetic corrections (Norbert Buchmuller) (Andre Correa) ++ * ++ * ++ * 2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were ++ * released with almost no problems. 2.6.14-x was released ++ * with some important changes: nfcache was removed; After ++ * some weeks of trouble we figured out that some IMQ fields ++ * in skb were missing in skbuff.c - skb_clone and copy_skb_header. ++ * These functions are correctly patched by this new patch version. ++ * ++ * Thanks for all who helped to figure out all the problems with ++ * 2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX, ++ * Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully ++ * I didn't forget anybody). I apologize again for my lack of time. ++ * ++ * ++ * 2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead ++ * of qdisc_restart() and moved qdisc_run() to tasklet to avoid ++ * recursive locking. New initialization routines to fix 'rmmod' not ++ * working anymore. Used code from ifb.c. (Jussi Kivilinna) ++ * ++ * Also, many thanks to pablo Sebastian Greco for making the initial ++ * patch and to those who helped the testing. ++ * ++ * More info at: http://www.linuximq.net/ (Andre Correa) ++ */ ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/moduleparam.h> ++#include <linux/skbuff.h> ++#include <linux/netdevice.h> ++#include <linux/rtnetlink.h> ++#include <linux/if_arp.h> ++#include <linux/netfilter.h> ++#include <linux/netfilter_ipv4.h> ++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) ++ #include <linux/netfilter_ipv6.h> ++#endif ++#include <linux/imq.h> ++#include <net/pkt_sched.h> ++#include <net/netfilter/nf_queue.h> ++ ++struct imq_private { ++ struct tasklet_struct tasklet; ++ int tasklet_pending; ++}; ++ ++static nf_hookfn imq_nf_hook; ++ ++static struct nf_hook_ops imq_ingress_ipv4 = { ++ .hook = imq_nf_hook, ++ .owner = THIS_MODULE, ++ .pf = PF_INET, ++ .hooknum = NF_INET_PRE_ROUTING, ++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) ++ .priority = NF_IP_PRI_MANGLE + 1 ++#else ++ .priority = NF_IP_PRI_NAT_DST + 1 ++#endif ++}; ++ ++static struct nf_hook_ops imq_egress_ipv4 = { ++ .hook = imq_nf_hook, ++ .owner = THIS_MODULE, ++ .pf = PF_INET, ++ .hooknum = NF_INET_POST_ROUTING, ++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA) ++ .priority = NF_IP_PRI_LAST ++#else ++ .priority = NF_IP_PRI_NAT_SRC - 1 ++#endif ++}; ++ ++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) ++static struct nf_hook_ops imq_ingress_ipv6 = { ++ .hook = imq_nf_hook, ++ .owner = THIS_MODULE, ++ .pf = PF_INET6, ++ .hooknum = NF_INET_PRE_ROUTING, ++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) ++ .priority = NF_IP6_PRI_MANGLE + 1 ++#else ++ .priority = NF_IP6_PRI_NAT_DST + 1 ++#endif ++}; ++ ++static struct nf_hook_ops imq_egress_ipv6 = { ++ .hook = imq_nf_hook, ++ .owner = THIS_MODULE, ++ .pf = PF_INET6, ++ .hooknum = NF_INET_POST_ROUTING, ++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA) ++ .priority = NF_IP6_PRI_LAST ++#else ++ .priority = NF_IP6_PRI_NAT_SRC - 1 ++#endif ++}; ++#endif ++ ++#if defined(CONFIG_IMQ_NUM_DEVS) ++static unsigned int numdevs = CONFIG_IMQ_NUM_DEVS; ++#else ++static unsigned int numdevs = IMQ_MAX_DEVS; ++#endif ++ ++static struct net_device *imq_devs_cache[IMQ_MAX_DEVS]; ++ ++static struct net_device_stats *imq_get_stats(struct net_device *dev) ++{ ++ return &dev->stats; ++} ++ ++/* called for packets kfree'd in qdiscs at places other than enqueue */ ++static void imq_skb_destructor(struct sk_buff *skb) ++{ ++ struct nf_queue_entry *entry = skb->nf_queue_entry; ++ ++ if (entry) { ++ if (entry->indev) ++ dev_put(entry->indev); ++ if (entry->outdev) ++ dev_put(entry->outdev); ++ kfree(entry); ++ } ++} ++ ++static int imq_dev_xmit(struct sk_buff *skb, struct net_device *dev) ++{ ++ dev->stats.tx_bytes += skb->len; ++ dev->stats.tx_packets++; ++ ++ skb->imq_flags = 0; ++ skb->destructor = NULL; ++ ++ dev->trans_start = jiffies; ++ nf_reinject(skb->nf_queue_entry, NF_ACCEPT); ++ return 0; ++} ++ ++static int imq_nf_queue(struct nf_queue_entry *entry, unsigned queue_num) ++{ ++ struct net_device *dev; ++ struct imq_private *priv; ++ struct sk_buff *skb2 = NULL; ++ struct Qdisc *q; ++ unsigned int index = entry->skb->imq_flags & IMQ_F_IFMASK; ++ int ret = -1; ++ ++ if (index > numdevs) ++ return -1; ++ ++ /* check for imq device by index from cache */ ++ dev = imq_devs_cache[index]; ++ if (!dev) { ++ char buf[8]; ++ ++ /* get device by name and cache result */ ++ snprintf(buf, sizeof(buf), "imq%d", index); ++ dev = dev_get_by_name(&init_net, buf); ++ if (!dev) { ++ /* not found ?!*/ ++ BUG(); ++ return -1; ++ } ++ ++ imq_devs_cache[index] = dev; ++ } ++ ++ priv = netdev_priv(dev); ++ if (!(dev->flags & IFF_UP)) { ++ entry->skb->imq_flags = 0; ++ nf_reinject(entry, NF_ACCEPT); ++ return 0; ++ } ++ dev->last_rx = jiffies; ++ ++ if (entry->skb->destructor) { ++ skb2 = entry->skb; ++ entry->skb = skb_clone(entry->skb, GFP_ATOMIC); ++ if (!entry->skb) ++ return -1; ++ } ++ entry->skb->nf_queue_entry = entry; ++ ++ dev->stats.rx_bytes += entry->skb->len; ++ dev->stats.rx_packets++; ++ ++ spin_lock_bh(&dev->queue_lock); ++ q = dev->qdisc; ++ if (q->enqueue) { ++ q->enqueue(skb_get(entry->skb), q); ++ if (skb_shared(entry->skb)) { ++ entry->skb->destructor = imq_skb_destructor; ++ kfree_skb(entry->skb); ++ ret = 0; ++ } ++ } ++ if (!test_and_set_bit(1, &priv->tasklet_pending)) ++ tasklet_schedule(&priv->tasklet); ++ spin_unlock_bh(&dev->queue_lock); ++ ++ if (skb2) ++ kfree_skb(ret ? entry->skb : skb2); ++ ++ return ret; ++} ++ ++static struct nf_queue_handler nfqh = { ++ .name = "imq", ++ .outfn = imq_nf_queue, ++}; ++ ++static void qdisc_run_tasklet(unsigned long arg) ++{ ++ struct net_device *dev = (struct net_device *)arg; ++ struct imq_private *priv = netdev_priv(dev); ++ ++ spin_lock(&dev->queue_lock); ++ qdisc_run(dev); ++ clear_bit(1, &priv->tasklet_pending); ++ spin_unlock(&dev->queue_lock); ++} ++ ++static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb, ++ const struct net_device *indev, ++ const struct net_device *outdev, ++ int (*okfn)(struct sk_buff *)) ++{ ++ if (pskb->imq_flags & IMQ_F_ENQUEUE) ++ return NF_QUEUE; ++ ++ return NF_ACCEPT; ++} ++ ++static int imq_close(struct net_device *dev) ++{ ++ struct imq_private *priv = netdev_priv(dev); ++ ++ tasklet_kill(&priv->tasklet); ++ netif_stop_queue(dev); ++ ++ return 0; ++} ++ ++static int imq_open(struct net_device *dev) ++{ ++ struct imq_private *priv = netdev_priv(dev); ++ ++ tasklet_init(&priv->tasklet, qdisc_run_tasklet, (unsigned long)dev); ++ netif_start_queue(dev); ++ ++ return 0; ++} ++ ++static void imq_setup(struct net_device *dev) ++{ ++ dev->hard_start_xmit = imq_dev_xmit; ++ dev->open = imq_open; ++ dev->get_stats = imq_get_stats; ++ dev->stop = imq_close; ++ dev->type = ARPHRD_VOID; ++ dev->mtu = 16000; ++ dev->tx_queue_len = 11000; ++ dev->flags = IFF_NOARP; ++} ++ ++static struct rtnl_link_ops imq_link_ops __read_mostly = { ++ .kind = "imq", ++ .priv_size = sizeof(struct imq_private), ++ .setup = imq_setup, ++}; ++ ++static int __init imq_init_hooks(void) ++{ ++ int err; ++ ++ err = nf_register_queue_handler(PF_INET, &nfqh); ++ if (err) ++ goto err1; ++ ++ err = nf_register_hook(&imq_ingress_ipv4); ++ if (err) ++ goto err2; ++ ++ err = nf_register_hook(&imq_egress_ipv4); ++ if (err) ++ goto err3; ++ ++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) ++ err = nf_register_queue_handler(PF_INET6, &nfqh); ++ if (err) ++ goto err4; ++ ++ err = nf_register_hook(&imq_ingress_ipv6); ++ if (err) ++ goto err5; ++ ++ err = nf_register_hook(&imq_egress_ipv6); ++ if (err) ++ goto err6; ++#endif ++ ++ return 0; ++ ++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) ++err6: ++ nf_unregister_hook(&imq_ingress_ipv6); ++err5: ++ nf_unregister_queue_handler(PF_INET6, &nfqh); ++err4: ++ nf_unregister_hook(&imq_egress_ipv4); ++#endif ++err3: ++ nf_unregister_hook(&imq_ingress_ipv4); ++err2: ++ nf_unregister_queue_handler(PF_INET, &nfqh); ++err1: ++ return err; ++} ++ ++static int __init imq_init_one(int index) ++{ ++ struct net_device *dev; ++ int ret; ++ ++ dev = alloc_netdev(sizeof(struct imq_private), "imq%d", imq_setup); ++ if (!dev) ++ return -ENOMEM; ++ ++ ret = dev_alloc_name(dev, dev->name); ++ if (ret < 0) ++ goto fail; ++ ++ dev->rtnl_link_ops = &imq_link_ops; ++ ret = register_netdevice(dev); ++ if (ret < 0) ++ goto fail; ++ ++ return 0; ++fail: ++ free_netdev(dev); ++ return ret; ++} ++ ++static int __init imq_init_devs(void) ++{ ++ int err, i; ++ ++ if (!numdevs || numdevs > IMQ_MAX_DEVS) { ++ printk(KERN_ERR "IMQ: numdevs has to be betweed 1 and %u\n", ++ IMQ_MAX_DEVS); ++ return -EINVAL; ++ } ++ ++ rtnl_lock(); ++ err = __rtnl_link_register(&imq_link_ops); ++ ++ for (i = 0; i < numdevs && !err; i++) ++ err = imq_init_one(i); ++ ++ if (err) { ++ __rtnl_link_unregister(&imq_link_ops); ++ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); ++ } ++ rtnl_unlock(); ++ ++ return err; ++} ++ ++static int __init imq_init_module(void) ++{ ++ int err; ++ ++ err = imq_init_devs(); ++ if (err) { ++ printk(KERN_ERR "IMQ: Error trying imq_init_devs(net)\n"); ++ return err; ++ } ++ ++ err = imq_init_hooks(); ++ if (err) { ++ printk(KERN_ERR "IMQ: Error trying imq_init_hooks()\n"); ++ rtnl_link_unregister(&imq_link_ops); ++ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); ++ return err; ++ } ++ ++ printk(KERN_INFO "IMQ driver loaded successfully.\n"); ++ ++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB) ++ printk(KERN_INFO "\tHooking IMQ before NAT on PREROUTING.\n"); ++#else ++ printk(KERN_INFO "\tHooking IMQ after NAT on PREROUTING.\n"); ++#endif ++#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB) ++ printk(KERN_INFO "\tHooking IMQ before NAT on POSTROUTING.\n"); ++#else ++ printk(KERN_INFO "\tHooking IMQ after NAT on POSTROUTING.\n"); ++#endif ++ ++ return 0; ++} ++ ++static void __exit imq_unhook(void) ++{ ++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) ++ nf_unregister_hook(&imq_ingress_ipv6); ++ nf_unregister_hook(&imq_egress_ipv6); ++ nf_unregister_queue_handler(PF_INET6, &nfqh); ++#endif ++ nf_unregister_hook(&imq_ingress_ipv4); ++ nf_unregister_hook(&imq_egress_ipv4); ++ nf_unregister_queue_handler(PF_INET, &nfqh); ++} ++ ++static void __exit imq_cleanup_devs(void) ++{ ++ rtnl_link_unregister(&imq_link_ops); ++ memset(imq_devs_cache, 0, sizeof(imq_devs_cache)); ++} ++ ++static void __exit imq_exit_module(void) ++{ ++ imq_unhook(); ++ imq_cleanup_devs(); ++ printk(KERN_INFO "IMQ driver unloaded successfully.\n"); ++} ++ ++module_init(imq_init_module); ++module_exit(imq_exit_module); ++ ++module_param(numdevs, int, 0); ++MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will " ++ "be created)"); ++MODULE_AUTHOR("http://www.linuximq.net"); ++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See " ++ "http://www.linuximq.net/ for more information."); ++MODULE_LICENSE("GPL"); ++MODULE_ALIAS_RTNL_LINK("imq"); ++ +--- linux-2.6.25.7/drivers/net/Kconfig 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/drivers/net/Kconfig 2008-06-17 15:03:21.000000000 +0300 +@@ -117,6 +117,129 @@ + To compile this driver as a module, choose M here: the module + will be called eql. If unsure, say N. + ++config IMQ ++ tristate "IMQ (intermediate queueing device) support" ++ depends on NETDEVICES && NETFILTER ++ ---help--- ++ The IMQ device(s) is used as placeholder for QoS queueing ++ disciplines. Every packet entering/leaving the IP stack can be ++ directed through the IMQ device where it's enqueued/dequeued to the ++ attached qdisc. This allows you to treat network devices as classes ++ and distribute bandwidth among them. Iptables is used to specify ++ through which IMQ device, if any, packets travel. ++ ++ More information at: http://www.linuximq.net/ ++ ++ To compile this driver as a module, choose M here: the module ++ will be called imq. If unsure, say N. ++ ++choice ++ prompt "IMQ behavior (PRE/POSTROUTING)" ++ depends on IMQ ++ default IMQ_BEHAVIOR_AB ++ help ++ ++ This settings defines how IMQ behaves in respect to its ++ hooking in PREROUTING and POSTROUTING. ++ ++ IMQ can work in any of the following ways: ++ ++ PREROUTING | POSTROUTING ++ -----------------|------------------- ++ #1 After NAT | After NAT ++ #2 After NAT | Before NAT ++ #3 Before NAT | After NAT ++ #4 Before NAT | Before NAT ++ ++ The default behavior is to hook before NAT on PREROUTING ++ and after NAT on POSTROUTING (#3). ++ ++ This settings are specially usefull when trying to use IMQ ++ to shape NATed clients. ++ ++ More information can be found at: www.linuximq.net ++ ++ If not sure leave the default settings alone. ++ ++config IMQ_BEHAVIOR_AA ++ bool "IMQ AA" ++ help ++ This settings defines how IMQ behaves in respect to its ++ hooking in PREROUTING and POSTROUTING. ++ ++ Choosing this option will make IMQ hook like this: ++ ++ PREROUTING: After NAT ++ POSTROUTING: After NAT ++ ++ More information can be found at: www.linuximq.net ++ ++ If not sure leave the default settings alone. ++ ++config IMQ_BEHAVIOR_AB ++ bool "IMQ AB" ++ help ++ This settings defines how IMQ behaves in respect to its ++ hooking in PREROUTING and POSTROUTING. ++ ++ Choosing this option will make IMQ hook like this: ++ ++ PREROUTING: After NAT ++ POSTROUTING: Before NAT ++ ++ More information can be found at: www.linuximq.net ++ ++ If not sure leave the default settings alone. ++ ++config IMQ_BEHAVIOR_BA ++ bool "IMQ BA" ++ help ++ This settings defines how IMQ behaves in respect to its ++ hooking in PREROUTING and POSTROUTING. ++ ++ Choosing this option will make IMQ hook like this: ++ ++ PREROUTING: Before NAT ++ POSTROUTING: After NAT ++ ++ More information can be found at: www.linuximq.net ++ ++ If not sure leave the default settings alone. ++ ++config IMQ_BEHAVIOR_BB ++ bool "IMQ BB" ++ help ++ This settings defines how IMQ behaves in respect to its ++ hooking in PREROUTING and POSTROUTING. ++ ++ Choosing this option will make IMQ hook like this: ++ ++ PREROUTING: Before NAT ++ POSTROUTING: Before NAT ++ ++ More information can be found at: www.linuximq.net ++ ++ If not sure leave the default settings alone. ++ ++endchoice ++ ++config IMQ_NUM_DEVS ++ ++ int "Number of IMQ devices" ++ range 2 16 ++ depends on IMQ ++ default "16" ++ help ++ ++ This settings defines how many IMQ devices will be ++ created. ++ ++ The default value is 16. ++ ++ More information can be found at: www.linuximq.net ++ ++ If not sure leave the default settings alone. ++ + config TUN + tristate "Universal TUN/TAP device driver support" + select CRC32 +--- linux-2.6.25.7/drivers/net/Makefile 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/drivers/net/Makefile 2008-06-17 14:56:58.000000000 +0300 +@@ -143,6 +143,7 @@ + obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o + + obj-$(CONFIG_DUMMY) += dummy.o ++obj-$(CONFIG_IMQ) += imq.o + obj-$(CONFIG_IFB) += ifb.o + obj-$(CONFIG_MACVLAN) += macvlan.o + obj-$(CONFIG_DE600) += de600.o +--- linux-2.6.25.7/include/linux/imq.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-2.6.25.7.imq/include/linux/imq.h 2008-06-17 14:56:58.000000000 +0300 +@@ -0,0 +1,9 @@ ++#ifndef _IMQ_H ++#define _IMQ_H ++ ++#define IMQ_MAX_DEVS 16 ++ ++#define IMQ_F_IFMASK 0x7f ++#define IMQ_F_ENQUEUE 0x80 ++ ++#endif /* _IMQ_H */ +--- linux-2.6.25.7/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-2.6.25.7.imq/include/linux/netfilter_ipv4/ipt_IMQ.h 2008-06-17 14:56:58.000000000 +0300 +@@ -0,0 +1,8 @@ ++#ifndef _IPT_IMQ_H ++#define _IPT_IMQ_H ++ ++struct ipt_imq_info { ++ unsigned int todev; /* target imq device */ ++}; ++ ++#endif /* _IPT_IMQ_H */ +--- linux-2.6.25.7/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 02:00:00.000000000 +0200 ++++ linux-2.6.25.7.imq/include/linux/netfilter_ipv6/ip6t_IMQ.h 2008-06-17 14:56:58.000000000 +0300 +@@ -0,0 +1,8 @@ ++#ifndef _IP6T_IMQ_H ++#define _IP6T_IMQ_H ++ ++struct ip6t_imq_info { ++ unsigned int todev; /* target imq device */ ++}; ++ ++#endif /* _IP6T_IMQ_H */ +--- linux-2.6.25.7/include/linux/skbuff.h 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/include/linux/skbuff.h 2008-06-17 14:56:58.000000000 +0300 +@@ -296,6 +296,10 @@ + struct nf_conntrack *nfct; + struct sk_buff *nfct_reasm; + #endif ++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) ++ unsigned char imq_flags; ++ struct nf_queue_entry *nf_queue_entry; ++#endif + #ifdef CONFIG_BRIDGE_NETFILTER + struct nf_bridge_info *nf_bridge; + #endif +@@ -1736,6 +1740,10 @@ + dst->nfct_reasm = src->nfct_reasm; + nf_conntrack_get_reasm(src->nfct_reasm); + #endif ++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) ++ dst->imq_flags = src->imq_flags; ++ dst->nf_queue_entry = src->nf_queue_entry; ++#endif + #ifdef CONFIG_BRIDGE_NETFILTER + dst->nf_bridge = src->nf_bridge; + nf_bridge_get(src->nf_bridge); +--- linux-2.6.25.7/net/core/dev.c 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/net/core/dev.c 2008-06-17 14:56:58.000000000 +0300 +@@ -95,6 +95,9 @@ + #include <net/net_namespace.h> + #include <net/sock.h> + #include <linux/rtnetlink.h> ++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) ++#include <linux/imq.h> ++#endif + #include <linux/proc_fs.h> + #include <linux/seq_file.h> + #include <linux/stat.h> +@@ -1537,7 +1540,11 @@ + int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) + { + if (likely(!skb->next)) { +- if (!list_empty(&ptype_all)) ++ if (!list_empty(&ptype_all) ++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE) ++ && !(skb->imq_flags & IMQ_F_ENQUEUE) ++#endif ++ ) + dev_queue_xmit_nit(skb, dev); + + if (netif_needs_gso(dev, skb)) { +--- linux-2.6.25.7/net/ipv4/netfilter/ipt_IMQ.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-2.6.25.7.imq/net/ipv4/netfilter/ipt_IMQ.c 2008-06-17 14:56:58.000000000 +0300 +@@ -0,0 +1,69 @@ ++/* ++ * This target marks packets to be enqueued to an imq device ++ */ ++#include <linux/module.h> ++#include <linux/skbuff.h> ++#include <linux/netfilter_ipv4/ip_tables.h> ++#include <linux/netfilter_ipv4/ipt_IMQ.h> ++#include <linux/imq.h> ++ ++static unsigned int imq_target(struct sk_buff *pskb, ++ const struct net_device *in, ++ const struct net_device *out, ++ unsigned int hooknum, ++ const struct xt_target *target, ++ const void *targinfo) ++{ ++ struct ipt_imq_info *mr = (struct ipt_imq_info *)targinfo; ++ ++ pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE; ++ ++ return XT_CONTINUE; ++} ++ ++static bool imq_checkentry(const char *tablename, ++ const void *e, ++ const struct xt_target *target, ++ void *targinfo, ++ unsigned int hook_mask) ++{ ++ struct ipt_imq_info *mr; ++ ++ mr = (struct ipt_imq_info *)targinfo; ++ ++ if (mr->todev > IMQ_MAX_DEVS) { ++ printk(KERN_WARNING ++ "IMQ: invalid device specified, highest is %u\n", ++ IMQ_MAX_DEVS); ++ return 0; ++ } ++ ++ return 1; ++} ++ ++static struct xt_target ipt_imq_reg = { ++ .name = "IMQ", ++ .family = AF_INET, ++ .target = imq_target, ++ .targetsize = sizeof(struct ipt_imq_info), ++ .checkentry = imq_checkentry, ++ .me = THIS_MODULE, ++ .table = "mangle" ++}; ++ ++static int __init init(void) ++{ ++ return xt_register_target(&ipt_imq_reg); ++} ++ ++static void __exit fini(void) ++{ ++ xt_unregister_target(&ipt_imq_reg); ++} ++ ++module_init(init); ++module_exit(fini); ++ ++MODULE_AUTHOR("http://www.linuximq.net"); ++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); ++MODULE_LICENSE("GPL"); +--- linux-2.6.25.7/net/ipv4/netfilter/Kconfig 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/net/ipv4/netfilter/Kconfig 2008-06-17 14:56:58.000000000 +0300 +@@ -123,6 +123,17 @@ + + To compile it as a module, choose M here. If unsure, say N. + ++config IP_NF_TARGET_IMQ ++ tristate "IMQ target support" ++ depends on IP_NF_MANGLE ++ help ++ This option adds a `IMQ' target which is used to specify if and ++ to which IMQ device packets should get enqueued/dequeued. ++ ++ For more information visit: http://www.linuximq.net/ ++ ++ To compile it as a module, choose M here. If unsure, say N. ++ + config IP_NF_TARGET_REJECT + tristate "REJECT target support" + depends on IP_NF_FILTER +--- linux-2.6.25.7/net/ipv4/netfilter/Makefile 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/net/ipv4/netfilter/Makefile 2008-06-17 14:56:58.000000000 +0300 +@@ -51,6 +51,7 @@ + obj-$(CONFIG_IP_NF_TARGET_CLUSTERIP) += ipt_CLUSTERIP.o + obj-$(CONFIG_IP_NF_TARGET_ECN) += ipt_ECN.o + obj-$(CONFIG_IP_NF_TARGET_LOG) += ipt_LOG.o ++obj-$(CONFIG_IP_NF_TARGET_IMQ) += ipt_IMQ.o + obj-$(CONFIG_IP_NF_TARGET_MASQUERADE) += ipt_MASQUERADE.o + obj-$(CONFIG_IP_NF_TARGET_NETMAP) += ipt_NETMAP.o + obj-$(CONFIG_IP_NF_TARGET_REDIRECT) += ipt_REDIRECT.o +--- linux-2.6.25.7/net/ipv6/netfilter/ip6t_IMQ.c 1970-01-01 02:00:00.000000000 +0200 ++++ linux-2.6.25.7.imq/net/ipv6/netfilter/ip6t_IMQ.c 2008-06-17 14:56:58.000000000 +0300 +@@ -0,0 +1,69 @@ ++/* ++ * This target marks packets to be enqueued to an imq device ++ */ ++#include <linux/module.h> ++#include <linux/skbuff.h> ++#include <linux/netfilter_ipv6/ip6_tables.h> ++#include <linux/netfilter_ipv6/ip6t_IMQ.h> ++#include <linux/imq.h> ++ ++static unsigned int imq_target(struct sk_buff *pskb, ++ const struct net_device *in, ++ const struct net_device *out, ++ unsigned int hooknum, ++ const struct xt_target *target, ++ const void *targinfo) ++{ ++ struct ip6t_imq_info *mr = (struct ip6t_imq_info *)targinfo; ++ ++ pskb->imq_flags = mr->todev | IMQ_F_ENQUEUE; ++ ++ return XT_CONTINUE; ++} ++ ++static bool imq_checkentry(const char *tablename, ++ const void *entry, ++ const struct xt_target *target, ++ void *targinfo, ++ unsigned int hook_mask) ++{ ++ struct ip6t_imq_info *mr; ++ ++ mr = (struct ip6t_imq_info *)targinfo; ++ ++ if (mr->todev > IMQ_MAX_DEVS) { ++ printk(KERN_WARNING ++ "IMQ: invalid device specified, highest is %u\n", ++ IMQ_MAX_DEVS); ++ return 0; ++ } ++ ++ return 1; ++} ++ ++static struct xt_target ip6t_imq_reg = { ++ .name = "IMQ", ++ .family = AF_INET6, ++ .target = imq_target, ++ .targetsize = sizeof(struct ip6t_imq_info), ++ .table = "mangle", ++ .checkentry = imq_checkentry, ++ .me = THIS_MODULE ++}; ++ ++static int __init init(void) ++{ ++ return xt_register_target(&ip6t_imq_reg); ++} ++ ++static void __exit fini(void) ++{ ++ xt_unregister_target(&ip6t_imq_reg); ++} ++ ++module_init(init); ++module_exit(fini); ++ ++MODULE_AUTHOR("http://www.linuximq.net"); ++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information."); ++MODULE_LICENSE("GPL"); +--- linux-2.6.25.7/net/ipv6/netfilter/Kconfig 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/net/ipv6/netfilter/Kconfig 2008-06-17 14:56:58.000000000 +0300 +@@ -179,6 +179,15 @@ + + To compile it as a module, choose M here. If unsure, say N. + ++config IP6_NF_TARGET_IMQ ++ tristate "IMQ target support" ++ depends on IP6_NF_MANGLE ++ help ++ This option adds a `IMQ' target which is used to specify if and ++ to which imq device packets should get enqueued/dequeued. ++ ++ To compile it as a module, choose M here. If unsure, say N. ++ + config IP6_NF_TARGET_HL + tristate 'HL (hoplimit) target support' + depends on IP6_NF_MANGLE +--- linux-2.6.25.7/net/ipv6/netfilter/Makefile 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/net/ipv6/netfilter/Makefile 2008-06-17 14:56:58.000000000 +0300 +@@ -6,6 +6,7 @@ + obj-$(CONFIG_IP6_NF_IPTABLES) += ip6_tables.o + obj-$(CONFIG_IP6_NF_FILTER) += ip6table_filter.o + obj-$(CONFIG_IP6_NF_MANGLE) += ip6table_mangle.o ++obj-$(CONFIG_IP6_NF_TARGET_IMQ) += ip6t_IMQ.o + obj-$(CONFIG_IP6_NF_QUEUE) += ip6_queue.o + obj-$(CONFIG_IP6_NF_RAW) += ip6table_raw.o + +--- linux-2.6.25.7/net/sched/sch_generic.c 2008-06-16 23:24:36.000000000 +0300 ++++ linux-2.6.25.7.imq/net/sched/sch_generic.c 2008-06-17 14:56:58.000000000 +0300 +@@ -203,6 +203,7 @@ + + clear_bit(__LINK_STATE_QDISC_RUNNING, &dev->state); + } ++EXPORT_SYMBOL(__qdisc_run); + + static void dev_watchdog(unsigned long arg) + { Added: trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch =================================================================== --- trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch (rev 0) +++ trunk/target/device/geni586/kernel-patches/linux-2.6.25-squashfs3.4.patch 2010-03-03 20:06:35 UTC (rev 97) @@ -0,0 +1,4218 @@ +diff -x .gitignore -Nurp linux-2.6.25/fs/Kconfig linux-2.6.25-squashfs3.4/fs/Kconfig +--- linux-2.6.25/fs/Kconfig 2008-04-17 03:49:44.000000000 +0100 ++++ linux-2.6.25-squashfs3.4/fs/Kconfig 2008-08-18 16:44:29.000000000 +0100 +@@ -1367,6 +1367,56 @@ config CRAMFS + + If unsure, say N. + ++config SQUASHFS ++ tristate "SquashFS 3.4 - Squashed file system support" ++ select ZLIB_INFLATE ++ help ++ Saying Y here includes support for SquashFS 3.4 (a Compressed ++ Read-Only File System). Squashfs is a highly compressed read-only ++ filesystem for Linux. It uses zlib compression to compress both ++ files, inodes and directories. Inodes in the system are very small ++ and all blocks are packed to minimise data overhead. Block sizes ++ greater than 4K are supported up to a maximum of 1 Mbytes (default ++ block size 128K). SquashFS 3.3 supports 64 bit filesystems and files ++ (larger than 4GB), full uid/gid information, hard links and timestamps. ++ ++ Squashfs is intended for general read-only filesystem use, for ++ archival use (i.e. in cases where a .tar.gz file may be used), and in ++ embedded systems where low overhead is needed. Further information ++ and filesystem tools are available from http://squashfs.sourceforge.net. ++ ++ If you want to compile this as a module ( = code which can be ++ inserted in and removed from the running kernel whenever you want), ++ say M here and read <file:Documentation/modules.txt>. The module ++ will be called squashfs. Note that the root file system (the one ++ containing the directory /) cannot be compiled as a module. ++ ++ If unsure, say N. ++ ++config SQUASHFS_EMBEDDED ++ ++ bool "Additional option for memory-constrained systems" ++ depends on SQUASHFS ++ default n ++ help ++ Saying Y here allows you to specify cache size. ++ ++ If unsure, say N. ++ ++config SQUASHFS_FRAGMENT_CACHE_SIZE ++ int "Number of fragments cached" if SQUASHFS_EMBEDDED ++ depends on SQUASHFS ++ default "3" ++ help ++ By default SquashFS caches the last 3 fragments read from ++ the filesystem. Increasing this amount may mean SquashFS ++ has to re-read fragments less often from disk, at the expense ++ of extra system memory. Decreasing this amount will mean ++ SquashFS uses less memory at the expense of extra reads from disk. ++ ++ Note there must be at least one cached fragment. Anything ++ much more than three will probably not make much difference. ++ + config VXFS_FS + tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" + depends on BLOCK +diff -x .gitignore -Nurp linux-2.6.25/fs/Makefile linux-2.6.25-squashfs3.4/fs/Makefile +--- linux-2.6.25/fs/Makefile 2008-04-17 03:49:44.000000000 +0100 ++++ linux-2.6.25-squashfs3.4/fs/Makefile 2008-08-18 16:44:29.000000000 +0100 +@@ -73,6 +73,7 @@ obj-$(CONFIG_JBD) += jbd/ + obj-$(CONFIG_JBD2) += jbd2/ + obj-$(CONFIG_EXT2_FS) += ext2/ + obj-$(CONFIG_CRAMFS) += cramfs/ ++obj-$(CONFIG_SQUASHFS) += squashfs/ + obj-y += ramfs/ + obj-$(CONFIG_HUGETLBFS) += hugetlbfs/ + obj-$(CONFIG_CODA_FS) += coda/ +diff -x .gitignore -Nurp linux-2.6.25/fs/squashfs/inode.c linux-2.6.25-squashfs3.4/fs/squashfs/inode.c +--- linux-2.6.25/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.25-squashfs3.4/fs/squashfs/inode.c 2008-08-26 08:24:58.000000000 +0100 +@@ -0,0 +1,2173 @@ ++/* ++ * Squashfs - a compressed read only filesystem for Linux ++ * ++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 ++ * Phillip Lougher <ph...@lo...> ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2, ++ * or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ * ++ * inode.c ++ */ ++ ++#include <linux/squashfs_fs.h> ++#include <linux/module.h> ++#include <linux/zlib.h> ++#include <linux/fs.h> ++#include <linux/squashfs_fs_sb.h> ++#include <linux/squashfs_fs_i.h> ++#include <linux/buffer_head.h> ++#include <linux/vfs.h> ++#include <linux/vmalloc.h> ++#include <linux/spinlock.h> ++#include <linux/smp_lock.h> ++#include <linux/exportfs.h> ++ ++#include "squashfs.h" ++ ++static struct dentry *squashfs_fh_to_dentry(struct super_block *s, ++ struct fid *fid, int fh_len, int fh_type); ++static struct dentry *squashfs_fh_to_parent(struct super_block *s, ++ struct fid *fid, int fh_len, int fh_type); ++static struct dentry *squashfs_get_parent(struct dentry *child); ++static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode); ++static int squashfs_statfs(struct dentry *, struct kstatfs *); ++static int squashfs_symlink_readpage(struct file *file, struct page *page); ++static long long read_blocklist(struct inode *inode, int index, ++ int readahead_blks, char *block_list, ++ unsigned short **block_p, unsigned int *bsize); ++static int squashfs_readpage(struct file *file, struct page *page); ++static int squashfs_readdir(struct file *, void *, filldir_t); ++static struct dentry *squashfs_lookup(struct inode *, struct dentry *, ++ struct nameidata *); ++static int squashfs_remount(struct super_block *s, int *flags, char *data); ++static void squashfs_put_super(struct super_block *); ++static int squashfs_get_sb(struct file_system_type *,int, const char *, void *, ++ struct vfsmount *); ++static struct inode *squashfs_alloc_inode(struct super_block *sb); ++static void squashfs_destroy_inode(struct inode *inode); ++static int init_inodecache(void); ++static void destroy_inodecache(void); ++ ++static struct file_system_type squashfs_fs_type = { ++ .owner = THIS_MODULE, ++ .name = "squashfs", ++ .get_sb = squashfs_get_sb, ++ .kill_sb = kill_block_super, ++ .fs_flags = FS_REQUIRES_DEV ++}; ++ ++static const unsigned char squashfs_filetype_table[] = { ++ DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK ++}; ++ ++static struct super_operations squashfs_super_ops = { ++ .alloc_inode = squashfs_alloc_inode, ++ .destroy_inode = squashfs_destroy_inode, ++ .statfs = squashfs_statfs, ++ .put_super = squashfs_put_super, ++ .remount_fs = squashfs_remount ++}; ++ ++static struct export_operations squashfs_export_ops = { ++ .fh_to_dentry = squashfs_fh_to_dentry, ++ .fh_to_parent = squashfs_fh_to_parent, ++ .get_parent = squashfs_get_parent ++}; ++ ++SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = { ++ .readpage = squashfs_symlink_readpage ++}; ++ ++SQSH_EXTERN const struct address_space_operations squashfs_aops = { ++ .readpage = squashfs_readpage ++}; ++ ++static const struct file_operations squashfs_dir_ops = { ++ .read = generic_read_dir, ++ .readdir = squashfs_readdir ++}; ++ ++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = { ++ .lookup = squashfs_lookup ++}; ++ ++ ++static struct buffer_head *get_block_length(struct super_block *s, ++ int *cur_index, int *offset, int *c_byte) ++{ ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ unsigned short temp; ++ struct buffer_head *bh; ++ ++ if (!(bh = sb_bread(s, *cur_index))) ++ goto out; ++ ++ if (msblk->devblksize - *offset == 1) { ++ if (msblk->swap) ++ ((unsigned char *) &temp)[1] = *((unsigned char *) ++ (bh->b_data + *offset)); ++ else ++ ((unsigned char *) &temp)[0] = *((unsigned char *) ++ (bh->b_data + *offset)); ++ brelse(bh); ++ if (!(bh = sb_bread(s, ++(*cur_index)))) ++ goto out; ++ if (msblk->swap) ++ ((unsigned char *) &temp)[0] = *((unsigned char *) ++ bh->b_data); ++ else ++ ((unsigned char *) &temp)[1] = *((unsigned char *) ++ bh->b_data); ++ *c_byte = temp; ++ *offset = 1; ++ } else { ++ if (msblk->swap) { ++ ((unsigned char *) &temp)[1] = *((unsigned char *) ++ (bh->b_data + *offset)); ++ ((unsigned char *) &temp)[0] = *((unsigned char *) ++ (bh->b_data + *offset + 1)); ++ } else { ++ ((unsigned char *) &temp)[0] = *((unsigned char *) ++ (bh->b_data + *offset)); ++ ((unsigned char *) &temp)[1] = *((unsigned char *) ++ (bh->b_data + *offset + 1)); ++ } ++ *c_byte = temp; ++ *offset += 2; ++ } ++ ++ if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) { ++ if (*offset == msblk->devblksize) { ++ brelse(bh); ++ if (!(bh = sb_bread(s, ++(*cur_index)))) ++ goto out; ++ *offset = 0; ++ } ++ if (*((unsigned char *) (bh->b_data + *offset)) != ++ SQUASHFS_MARKER_BYTE) { ++ ERROR("Metadata block marker corrupt @ %x\n", ++ *cur_index); ++ brelse(bh); ++ goto out; ++ } ++ (*offset)++; ++ } ++ return bh; ++ ++out: ++ return NULL; ++} ++ ++ ++SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer, ++ long long index, unsigned int length, ++ long long *next_index, int srclength) ++{ ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ struct squashfs_super_block *sblk = &msblk->sblk; ++ struct buffer_head **bh; ++ unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1); ++ unsigned int cur_index = index >> msblk->devblksize_log2; ++ int bytes, avail_bytes, b = 0, k = 0; ++ unsigned int compressed; ++ unsigned int c_byte = length; ++ ++ bh = kmalloc(((sblk->block_size >> msblk->devblksize_log2) + 1) * ++ sizeof(struct buffer_head *), GFP_KERNEL); ++ if (bh == NULL) ++ goto read_failure; ++ ++ if (c_byte) { ++ bytes = -offset; ++ compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte); ++ c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte); ++ ++ TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, ++ compressed ? "" : "un", (unsigned int) c_byte, srclength); ++ ++ if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used) ++ goto read_failure; ++ ++ for (b = 0; bytes < (int) c_byte; b++, cur_index++) { ++ bh[b] = sb_getblk(s, cur_index); ++ if (bh[b] == NULL) ++ goto block_release; ++ bytes += msblk->devblksize; ++ } ++ ll_rw_block(READ, b, bh); ++ } else { ++ if (index < 0 || (index + 2) > sblk->bytes_used) ++ goto read_failure; ++ ++ bh[0] = get_block_length(s, &cur_index, &offset, &c_byte); ++ if (bh[0] == NULL) ++ goto read_failure; ++ b = 1; ++ ++ bytes = msblk->devblksize - offset; ++ compressed = SQUASHFS_COMPRESSED(c_byte); ++ c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte); ++ ++ TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed ++ ? "" : "un", (unsigned int) c_byte); ++ ++ if (c_byte > srclength || (index + c_byte) > sblk->bytes_used) ++ goto block_release; ++ ++ for (; bytes < c_byte; b++) { ++ bh[b] = sb_getblk(s, ++cur_index); ++ if (bh[b] == NULL) ++ goto block_release; ++ bytes += msblk->devblksize; ++ } ++ ll_rw_block(READ, b - 1, bh + 1); ++ } ++ ++ if (compressed) { ++ int zlib_err = 0; ++ ++ /* ++ * uncompress block ++ */ ++ ++ mutex_lock(&msblk->read_data_mutex); ++ ++ msblk->stream.next_out = buffer; ++ msblk->stream.avail_out = srclength; ++ ++ for (bytes = 0; k < b; k++) { ++ avail_bytes = min(c_byte - bytes, msblk->devblksize - offset); ++ ++ wait_on_buffer(bh[k]); ++ if (!buffer_uptodate(bh[k])) ++ goto release_mutex; ++ ++ msblk->stream.next_in = bh[k]->b_data + offset; ++ msblk->stream.avail_in = avail_bytes; ++ ++ if (k == 0) { ++ zlib_err = zlib_inflateInit(&msblk->stream); ++ if (zlib_err != Z_OK) { ++ ERROR("zlib_inflateInit returned unexpected result 0x%x," ++ " srclength %d\n", zlib_err, srclength); ++ goto release_mutex; ++ } ++ ++ if (avail_bytes == 0) { ++ offset = 0; ++ brelse(bh[k]); ++ continue; ++ } ++ } ++ ++ zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH); ++ if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) { ++ ERROR("zlib_inflate returned unexpected result 0x%x," ++ " srclength %d, avail_in %d, avail_out %d\n", zlib_err, ++ srclength, msblk->stream.avail_in, msblk->stream.avail_out); ++ goto release_mutex; ++ } ++ ++ bytes += avail_bytes; ++ offset = 0; ++ brelse(bh[k]); ++ } ++ ++ if (zlib_err != Z_STREAM_END) ++ goto release_mutex; ++ ++ zlib_err = zlib_inflateEnd(&msblk->stream); ++ if (zlib_err != Z_OK) { ++ ERROR("zlib_inflateEnd returned unexpected result 0x%x," ++ " srclength %d\n", zlib_err, srclength); ++ goto release_mutex; ++ } ++ bytes = msblk->stream.total_out; ++ mutex_unlock(&msblk->read_data_mutex); ++ } else { ++ int i; ++ ++ for(i = 0; i < b; i++) { ++ wait_on_buffer(bh[i]); ++ if (!buffer_uptodate(bh[i])) ++ goto block_release; ++ } ++ ++ for (bytes = 0; k < b; k++) { ++ avail_bytes = min(c_byte - bytes, msblk->devblksize - offset); ++ ++ memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes); ++ bytes += avail_bytes; ++ offset = 0; ++ brelse(bh[k]); ++ } ++ } ++ ++ if (next_index) ++ *next_index = index + c_byte + (length ? 0 : ++ (SQUASHFS_CHECK_DATA(msblk->sblk.flags) ? 3 : 2)); ++ ++ kfree(bh); ++ return bytes; ++ ++release_mutex: ++ mutex_unlock(&msblk->read_data_mutex); ++ ++block_release: ++ for (; k < b; k++) ++ brelse(bh[k]); ++ ++read_failure: ++ ERROR("sb_bread failed reading block 0x%x\n", cur_index); ++ kfree(bh); ++ return 0; ++} ++ ++ ++static struct squashfs_cache_entry *squashfs_cache_get(struct super_block *s, ++ struct squashfs_cache *cache, long long block, int length) ++{ ++ int i, n; ++ struct squashfs_cache_entry *entry; ++ ++ spin_lock(&cache->lock); ++ ++ while (1) { ++ for (i = 0; i < cache->entries && cache->entry[i].block != block; i++); ++ ++ if (i == cache->entries) { ++ if (cache->unused_blks == 0) { ++ cache->waiting ++; ++ spin_unlock(&cache->lock); ++ wait_event(cache->wait_queue, cache->unused_blks); ++ spin_lock(&cache->lock); ++ cache->waiting --; ++ continue; ++ } ++ ++ i = cache->next_blk; ++ for (n = 0; n < cache->entries; n++) { ++ if (cache->entry[i].locked == 0) ++ break; ++ i = (i + 1) % cache->entries; ++ } ++ ++ cache->next_blk = (i + 1) % cache->entries; ++ entry = &cache->entry[i]; ++ ++ cache->unused_blks --; ++ entry->block = block; ++ entry->locked = 1; ++ entry->pending = 1; ++ entry->waiting = 0; ++ entry->error = 0; ++ spin_unlock(&cache->lock); ++ ++ entry->length = squashfs_read_data(s, entry->data, ++ block, length, &entry->next_index, cache->block_size); ++ ++ spin_lock(&cache->lock); ++ ++ if (entry->length == 0) ++ entry->error = 1; ++ ++ entry->pending = 0; ++ spin_unlock(&cache->lock); ++ if (entry->waiting) ++ wake_up_all(&entry->wait_queue); ++ goto out; ++ } ++ ++ entry = &cache->entry[i]; ++ if (entry->locked == 0) ++ cache->unused_blks --; ++ entry->locked++; ++ ++ if (entry->pending) { ++ entry->waiting ++; ++ spin_unlock(&cache->lock); ++ wait_event(entry->wait_queue, !entry->pending); ++ goto out; ++ } ++ ++ spin_unlock(&cache->lock); ++ goto out; ++ } ++ ++out: ++ TRACE("Got %s %d, start block %lld, locked %d, error %d\n", i, ++ cache->name, entry->block, entry->locked, entry->error); ++ if (entry->error) ++ ERROR("Unable to read %s cache entry [%llx]\n", cache->name, block); ++ return entry; ++} ++ ++ ++static void squashfs_cache_put(struct squashfs_cache *cache, ++ struct squashfs_cache_entry *entry) ++{ ++ spin_lock(&cache->lock); ++ entry->locked --; ++ if (entry->locked == 0) { ++ cache->unused_blks ++; ++ spin_unlock(&cache->lock); ++ if (cache->waiting) ++ wake_up(&cache->wait_queue); ++ } else ++ spin_unlock(&cache->lock); ++} ++ ++ ++static void squashfs_cache_delete(struct squashfs_cache *cache) ++{ ++ int i; ++ ++ if (cache == NULL) ++ return; ++ ++ for (i = 0; i < cache->entries; i++) ++ if (cache->entry[i].data) { ++ if (cache->use_vmalloc) ++ vfree(cache->entry[i].data); ++ else ++ kfree(cache->entry[i].data); ++ } ++ ++ kfree(cache); ++} ++ ++ ++static struct squashfs_cache *squashfs_cache_init(char *name, int entries, ++ int block_size, int use_vmalloc) ++{ ++ int i; ++ struct squashfs_cache *cache = kzalloc(sizeof(struct squashfs_cache) + ++ entries * sizeof(struct squashfs_cache_entry), GFP_KERNEL); ++ if (cache == NULL) { ++ ERROR("Failed to allocate %s cache\n", name); ++ goto failed; ++ } ++ ++ cache->next_blk = 0; ++ cache->unused_blks = entries; ++ cache->entries = entries; ++ cache->block_size = block_size; ++ cache->use_vmalloc = use_vmalloc; ++ cache->name = name; ++ cache->waiting = 0; ++ spin_lock_init(&cache->lock); ++ init_waitqueue_head(&cache->wait_queue); ++ ++ for (i = 0; i < entries; i++) { ++ init_waitqueue_head(&cache->entry[i].wait_queue); ++ cache->entry[i].block = SQUASHFS_INVALID_BLK; ++ cache->entry[i].data = use_vmalloc ? vmalloc(block_size) : ++ kmalloc(block_size, GFP_KERNEL); ++ if (cache->entry[i].data == NULL) { ++ ERROR("Failed to allocate %s cache entry\n", name); ++ goto cleanup; ++ } ++ } ++ ++ return cache; ++ ++cleanup: ++ squashfs_cache_delete(cache); ++failed: ++ return NULL; ++} ++ ++ ++SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, void *buffer, ++ long long block, unsigned int offset, ++ int length, long long *next_block, ++ unsigned int *next_offset) ++{ ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ int bytes, return_length = length; ++ struct squashfs_cache_entry *entry; ++ ++ TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset); ++ ++ while (1) { ++ entry = squashfs_cache_get(s, msblk->block_cache, block, 0); ++ bytes = entry->length - offset; ++ ++ if (entry->error || bytes < 1) { ++ return_length = 0; ++ goto finish; ++ } else if (bytes >= length) { ++ if (buffer) ++ memcpy(buffer, entry->data + offset, length); ++ if (entry->length - offset == length) { ++ *next_block = entry->next_index; ++ *next_offset = 0; ++ } else { ++ *next_block = block; ++ *next_offset = offset + length; ++ } ++ goto finish; ++ } else { ++ if (buffer) { ++ memcpy(buffer, entry->data + offset, bytes); ++ buffer = (char *) buffer + bytes; ++ } ++ block = entry->next_index; ++ squashfs_cache_put(msblk->block_cache, entry); ++ length -= bytes; ++ offset = 0; ++ } ++ } ++ ++finish: ++ squashfs_cache_put(msblk->block_cache, entry); ++ return return_length; ++} ++ ++ ++static int get_fragment_location(struct super_block *s, unsigned int fragment, ++ long long *fragment_start_block, ++ unsigned int *fragment_size) ++{ ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ long long start_block = ++ msblk->fragment_index[SQUASHFS_FRAGMENT_INDEX(fragment)]; ++ int offset = SQUASHFS_FRAGMENT_INDEX_OFFSET(fragment); ++ struct squashfs_fragment_entry fragment_entry; ++ ++ if (msblk->swap) { ++ struct squashfs_fragment_entry sfragment_entry; ++ ++ if (!squashfs_get_cached_block(s, &sfragment_entry, start_block, offset, ++ sizeof(sfragment_entry), &start_block, &offset)) ++ goto out; ++ SQUASHFS_SWAP_FRAGMENT_ENTRY(&fragment_entry, &sfragment_entry); ++ } else ++ if (!squashfs_get_cached_block(s, &fragment_entry, start_block, offset, ++ sizeof(fragment_entry), &start_block, &offset)) ++ goto out; ++ ++ *fragment_start_block = fragment_entry.start_block; ++ *fragment_size = fragment_entry.size; ++ ++ return 1; ++ ++out: ++ return 0; ++} ++ ++ ++SQSH_EXTERN void release_cached_fragment(struct squashfs_sb_info *msblk, ++ struct squashfs_cache_entry *fragment) ++{ ++ squashfs_cache_put(msblk->fragment_cache, fragment); ++} ++ ++ ++SQSH_EXTERN ++struct squashfs_cache_entry *get_cached_fragment(struct super_block *s, ++ long long start_block, int length) ++{ ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ ++ return squashfs_cache_get(s, msblk->fragment_cache, start_block, length); ++} ++ ++ ++static void squashfs_new_inode(struct squashfs_sb_info *msblk, struct inode *i, ++ struct squashfs_base_inode_header *inodeb) ++{ ++ i->i_ino = inodeb->inode_number; ++ i->i_mtime.tv_sec = inodeb->mtime; ++ i->i_atime.tv_sec = inodeb->mtime; ++ i->i_ctime.tv_sec = inodeb->mtime; ++ i->i_uid = msblk->uid[inodeb->uid]; ++ i->i_mode = inodeb->mode; ++ i->i_size = 0; ++ ++ if (inodeb->guid == SQUASHFS_GUIDS) ++ i->i_gid = i->i_uid; ++ else ++ i->i_gid = msblk->guid[inodeb->guid]; ++} ++ ++ ++static squashfs_inode_t squashfs_inode_lookup(struct super_block *s, int ino) ++{ ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ long long start = msblk->inode_lookup_table[SQUASHFS_LOOKUP_BLOCK(ino - 1)]; ++ int offset = SQUASHFS_LOOKUP_BLOCK_OFFSET(ino - 1); ++ squashfs_inode_t inode; ++ ++ TRACE("Entered squashfs_inode_lookup, inode_number = %d\n", ino); ++ ++ if (msblk->swap) { ++ squashfs_inode_t sinode; ++ ++ if (!squashfs_get_cached_block(s, &sinode, start, offset, ++ sizeof(sinode), &start, &offset)) ++ goto out; ++ SQUASHFS_SWAP_INODE_T((&inode), &sinode); ++ } else if (!squashfs_get_cached_block(s, &inode, start, offset, ++ sizeof(inode), &start, &offset)) ++ goto out; ++ ++ TRACE("squashfs_inode_lookup, inode = 0x%llx\n", inode); ++ ++ return inode; ++ ++out: ++ return SQUASHFS_INVALID_BLK; ++} ++ ++ ++ ++static struct dentry *squashfs_export_iget(struct super_block *s, ++ unsigned int inode_number) ++{ ++ squashfs_inode_t inode; ++ struct inode *i; ++ struct dentry *dentry; ++ ++ TRACE("Entered squashfs_export_iget\n"); ++ ++ inode = squashfs_inode_lookup(s, inode_number); ++ if(inode == SQUASHFS_INVALID_BLK) { ++ dentry = ERR_PTR(-ENOENT); ++ goto failure; ++ } ++ ++ i = squashfs_iget(s, inode, inode_number); ++ if(i == NULL) { ++ dentry = ERR_PTR(-EACCES); ++ goto failure; ++ } ++ ++ dentry = d_alloc_anon(i); ++ if (dentry == NULL) { ++ iput(i); ++ dentry = ERR_PTR(-ENOMEM); ++ } ++ ++failure: ++ return dentry; ++} ++ ++ ++static struct dentry *squashfs_fh_to_dentry(struct super_block *s, ++ struct fid *fid, int fh_len, int fh_type) ++{ ++ if((fh_type != FILEID_INO32_GEN && fh_type != FILEID_INO32_GEN_PARENT) || ++ fh_len < 2) ++ return NULL; ++ ++ return squashfs_export_iget(s, fid->i32.ino); ++} ++ ++ ++static struct dentry *squashfs_fh_to_parent(struct super_block *s, ++ struct fid *fid, int fh_len, int fh_type) ++{ ++ if(fh_type != FILEID_INO32_GEN_PARENT || fh_len < 4) ++ return NULL; ++ ++ return squashfs_export_iget(s, fid->i32.parent_ino); ++} ++ ++ ++static struct dentry *squashfs_get_parent(struct dentry *child) ++{ ++ struct inode *i = child->d_inode; ++ ++ TRACE("Entered squashfs_get_parent\n"); ++ ++ return squashfs_export_iget(i->i_sb, SQUASHFS_I(i)->u.s2.parent_inode); ++} ++ ++ ++SQSH_EXTERN struct inode *squashfs_iget(struct super_block *s, ++ squashfs_inode_t inode, unsigned int inode_number) ++{ ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ struct inode *i = iget_locked(s, inode_number); ++ ++ TRACE("Entered squashfs_iget\n"); ++ ++ if(i && (i->i_state & I_NEW)) { ++ (msblk->read_inode)(i, inode); ++ unlock_new_inode(i); ++ } ++ ++ return i; ++} ++ ++ ++static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode) ++{ ++ struct super_block *s = i->i_sb; ++ struct squashfs_sb_info *msblk = s->s_fs_info; ++ struct squashfs_super_block *sblk = &msblk->sblk; ++ long long block = SQUASHFS_INODE_BLK(inode) + sblk->inode_table_start; ++ unsigned int offset = SQUASHFS_INODE_OFFSET(inode); ++ long long next_block; ++ unsigned int next_offset; ++ union squashfs_inode_header id, sid; ++ struct squashfs_base_inode_header *inodeb = &id.base, *sinodeb = &sid.base; ++ ++ TRACE("Entered squashfs_read_inode\n"); ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodeb, block, offset, ++ sizeof(*sinodeb), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_BASE_INODE_HEADER(inodeb, sinodeb, sizeof(*sinodeb)); ++ } else ++ if (!squashfs_get_cached_block(s, inodeb, block, offset, ++ sizeof(*inodeb), &next_block, &next_offset)) ++ goto failed_read; ++ ++ squashfs_new_inode(msblk, i, inodeb); ++ ++ switch(inodeb->inode_type) { ++ case SQUASHFS_FILE_TYPE: { ++ unsigned int frag_size; ++ long long frag_blk; ++ struct squashfs_reg_inode_header *inodep = &id.reg; ++ struct squashfs_reg_inode_header *sinodep = &sid.reg; ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodep, block, offset, ++ sizeof(*sinodep), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_REG_INODE_HEADER(inodep, sinodep); ++ } else ++ if (!squashfs_get_cached_block(s, inodep, block, offset, ++ sizeof(*inodep), &next_block, &next_offset)) ++ goto failed_read; ++ ++ frag_blk = SQUASHFS_INVALID_BLK; ++ ++ if (inodep->fragment != SQUASHFS_INVALID_FRAG) ++ if(!get_fragment_location(s, inodep->fragment, &frag_blk, ++ &frag_size)) ++ goto failed_read; ++ ++ i->i_nlink = 1; ++ i->i_size = inodep->file_size; ++ i->i_fop = &generic_ro_fops; ++ i->i_mode |= S_IFREG; ++ i->i_blocks = ((i->i_size - 1) >> 9) + 1; ++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk; ++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size; ++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset; ++ SQUASHFS_I(i)->start_block = inodep->start_block; ++ SQUASHFS_I(i)->u.s1.block_list_start = next_block; ++ SQUASHFS_I(i)->offset = next_offset; ++ i->i_data.a_ops = &squashfs_aops; ++ ++ TRACE("File inode %x:%x, start_block %llx, " ++ "block_list_start %llx, offset %x\n", ++ SQUASHFS_INODE_BLK(inode), offset, ++ inodep->start_block, next_block, ++ next_offset); ++ break; ++ } ++ case SQUASHFS_LREG_TYPE: { ++ unsigned int frag_size; ++ long long frag_blk; ++ struct squashfs_lreg_inode_header *inodep = &id.lreg; ++ struct squashfs_lreg_inode_header *sinodep = &sid.lreg; ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodep, block, offset, ++ sizeof(*sinodep), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_LREG_INODE_HEADER(inodep, sinodep); ++ } else ++ if (!squashfs_get_cached_block(s, inodep, block, offset, ++ sizeof(*inodep), &next_block, &next_offset)) ++ goto failed_read; ++ ++ frag_blk = SQUASHFS_INVALID_BLK; ++ ++ if (inodep->fragment != SQUASHFS_INVALID_FRAG) ++ if (!get_fragment_location(s, inodep->fragment, &frag_blk, ++ &frag_size)) ++ goto failed_read; ++ ++ i->i_nlink = inodep->nlink; ++ i->i_size = inodep->file_size; ++ i->i_fop = &generic_ro_fops; ++ i->i_mode |= S_IFREG; ++ i->i_blocks = ((i->i_size - 1) >> 9) + 1; ++ SQUASHFS_I(i)->u.s1.fragment_start_block = frag_blk; ++ SQUASHFS_I(i)->u.s1.fragment_size = frag_size; ++ SQUASHFS_I(i)->u.s1.fragment_offset = inodep->offset; ++ SQUASHFS_I(i)->start_block = inodep->start_block; ++ SQUASHFS_I(i)->u.s1.block_list_start = next_block; ++ SQUASHFS_I(i)->offset = next_offset; ++ i->i_data.a_ops = &squashfs_aops; ++ ++ TRACE("File inode %x:%x, start_block %llx, " ++ "block_list_start %llx, offset %x\n", ++ SQUASHFS_INODE_BLK(inode), offset, ++ inodep->start_block, next_block, ++ next_offset); ++ break; ++ } ++ case SQUASHFS_DIR_TYPE: { ++ struct squashfs_dir_inode_header *inodep = &id.dir; ++ struct squashfs_dir_inode_header *sinodep = &sid.dir; ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodep, block, offset, ++ sizeof(*sinodep), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_DIR_INODE_HEADER(inodep, sinodep); ++ } else ++ if (!squashfs_get_cached_block(s, inodep, block, offset, ++ sizeof(*inodep), &next_block, &next_offset)) ++ goto failed_read; ++ ++ i->i_nlink = inodep->nlink; ++ i->i_size = inodep->file_size; ++ i->i_op = &squashfs_dir_inode_ops; ++ i->i_fop = &squashfs_dir_ops; ++ i->i_mode |= S_IFDIR; ++ SQUASHFS_I(i)->start_block = inodep->start_block; ++ SQUASHFS_I(i)->offset = inodep->offset; ++ SQUASHFS_I(i)->u.s2.directory_index_count = 0; ++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode; ++ ++ TRACE("Directory inode %x:%x, start_block %x, offset " ++ "%x\n", SQUASHFS_INODE_BLK(inode), ++ offset, inodep->start_block, ++ inodep->offset); ++ break; ++ } ++ case SQUASHFS_LDIR_TYPE: { ++ struct squashfs_ldir_inode_header *inodep = &id.ldir; ++ struct squashfs_ldir_inode_header *sinodep = &sid.ldir; ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodep, block, offset, ++ sizeof(*sinodep), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_LDIR_INODE_HEADER(inodep, sinodep); ++ } else ++ if (!squashfs_get_cached_block(s, inodep, block, offset, ++ sizeof(*inodep), &next_block, &next_offset)) ++ goto failed_read; ++ ++ i->i_nlink = inodep->nlink; ++ i->i_size = inodep->file_size; ++ i->i_op = &squashfs_dir_inode_ops; ++ i->i_fop = &squashfs_dir_ops; ++ i->i_mode |= S_IFDIR; ++ SQUASHFS_I(i)->start_block = inodep->start_block; ++ SQUASHFS_I(i)->offset = inodep->offset; ++ SQUASHFS_I(i)->u.s2.directory_index_start = next_block; ++ SQUASHFS_I(i)->u.s2.directory_index_offset = next_offset; ++ SQUASHFS_I(i)->u.s2.directory_index_count = inodep->i_count; ++ SQUASHFS_I(i)->u.s2.parent_inode = inodep->parent_inode; ++ ++ TRACE("Long directory inode %x:%x, start_block %x, offset %x\n", ++ SQUASHFS_INODE_BLK(inode), offset, ++ inodep->start_block, inodep->offset); ++ break; ++ } ++ case SQUASHFS_SYMLINK_TYPE: { ++ struct squashfs_symlink_inode_header *inodep = &id.symlink; ++ struct squashfs_symlink_inode_header *sinodep = &sid.symlink; ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodep, block, offset, ++ sizeof(*sinodep), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_SYMLINK_INODE_HEADER(inodep, sinodep); ++ } else ++ if (!squashfs_get_cached_block(s, inodep, block, offset, ++ sizeof(*inodep), &next_block, &next_offset)) ++ goto failed_read; ++ ++ i->i_nlink = inodep->nlink; ++ i->i_size = inodep->symlink_size; ++ i->i_op = &page_symlink_inode_operations; ++ i->i_data.a_ops = &squashfs_symlink_aops; ++ i->i_mode |= S_IFLNK; ++ SQUASHFS_I(i)->start_block = next_block; ++ SQUASHFS_I(i)->offset = next_offset; ++ ++ TRACE("Symbolic link inode %x:%x, start_block %llx, offset %x\n", ++ SQUASHFS_INODE_BLK(inode), offset, ++ next_block, next_offset); ++ break; ++ } ++ case SQUASHFS_BLKDEV_TYPE: ++ case SQUASHFS_CHRDEV_TYPE: { ++ struct squashfs_dev_inode_header *inodep = &id.dev; ++ struct squashfs_dev_inode_header *sinodep = &sid.dev; ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodep, block, offset, ++ sizeof(*sinodep), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_DEV_INODE_HEADER(inodep, sinodep); ++ } else ++ if (!squashfs_get_cached_block(s, inodep, block, offset, ++ sizeof(*inodep), &next_block, &next_offset)) ++ goto failed_read; ++ ++ i->i_nlink = inodep->nlink; ++ i->i_mode |= (inodeb->inode_type == SQUASHFS_CHRDEV_TYPE) ? ++ S_IFCHR : S_IFBLK; ++ init_special_inode(i, i->i_mode, old_decode_dev(inodep->rdev)); ++ ++ TRACE("Device inode %x:%x, rdev %x\n", ++ SQUASHFS_INODE_BLK(inode), offset, inodep->rdev); ++ break; ++ } ++ case SQUASHFS_FIFO_TYPE: ++ case SQUASHFS_SOCKET_TYPE: { ++ struct squashfs_ipc_inode_header *inodep = &id.ipc; ++ struct squashfs_ipc_inode_header *sinodep = &sid.ipc; ++ ++ if (msblk->swap) { ++ if (!squashfs_get_cached_block(s, sinodep, block, offset, ++ sizeof(*sinodep), &next_block, &next_offset)) ++ goto failed_read; ++ SQUASHFS_SWAP_IPC_INODE_HEADER(inodep, sinodep); ++ } else ++ if (!squashfs_get_cached_block(s, inodep, block, offset, ++ sizeof(*inodep), &next_block, &next_offset)) ++ goto failed_read; ++ ++ i->i_nlink = inodep->nlink; ++ i->i_mode |= (inodeb->inode_type == SQUASHFS_FIFO_TYPE) ++ ? S_IFIFO : S_IFSOCK; ++ init_special_inode(i, i->i_mode, 0); ++ break; ++ } ++ default: ++ ERROR("Unknown inode type %d in squashfs_iget!\n", ++ ... [truncated message content] |
From: <kr...@us...> - 2010-03-03 20:05:26
|
Revision: 96 http://runnix.svn.sourceforge.net/runnix/?rev=96&view=rev Author: krisk84 Date: 2010-03-03 20:05:17 +0000 (Wed, 03 Mar 2010) Log Message: ----------- update squashfs Modified Paths: -------------- trunk/target/squashfs/squashfsroot.mk Added Paths: ----------- trunk/target/squashfs/target-squashfs-getnprocs.patch Modified: trunk/target/squashfs/squashfsroot.mk =================================================================== --- trunk/target/squashfs/squashfsroot.mk 2010-03-03 19:34:55 UTC (rev 95) +++ trunk/target/squashfs/squashfsroot.mk 2010-03-03 20:05:17 UTC (rev 96) @@ -3,30 +3,50 @@ # mksquashfs to build to target squashfs filesystems # ############################################################# -SQUASHFS_DIR=$(BUILD_DIR)/squashfs3.0 -SQUASHFS_SOURCE=squashfs3.0.tar.gz -SQUASHFS_SITE=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/squashfs +SQUASHFS_VERSION:=3.2-r2 +SQUASHFS_DIR:=$(BUILD_DIR)/squashfs$(SQUASHFS_VERSION) +SQUASHFS_TARGET_DIR:=$(BUILD_DIR)/squashfs$(SQUASHFS_VERSION)-target +SQUASHFS_SOURCE:=squashfs$(SQUASHFS_VERSION).tar.gz +SQUASHFS_SITE:=http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/squashfs +SQUASHFS_CAT:=zcat $(DL_DIR)/$(SQUASHFS_SOURCE): $(WGET) -P $(DL_DIR) $(SQUASHFS_SITE)/$(SQUASHFS_SOURCE) -$(SQUASHFS_DIR)/.unpacked: $(DL_DIR)/$(SQUASHFS_SOURCE) #$(SQUASHFS_PATCH) - zcat $(DL_DIR)/$(SQUASHFS_SOURCE) | tar -C $(BUILD_DIR) -xvf - +$(SQUASHFS_DIR)/.unpacked: $(DL_DIR)/$(SQUASHFS_SOURCE) + $(SQUASHFS_CAT) $(DL_DIR)/$(SQUASHFS_SOURCE) | tar -C $(BUILD_DIR) -xvf - toolchain/patch-kernel.sh $(SQUASHFS_DIR) target/squashfs/ squashfs\*.patch + cp -R $(SQUASHFS_DIR) $(SQUASHFS_TARGET_DIR) + toolchain/patch-kernel.sh $(SQUASHFS_TARGET_DIR) \ + target/squashfs/ target-squashfs\*.patch touch $(SQUASHFS_DIR)/.unpacked + touch $(SQUASHFS_TARGET_DIR)/.unpacked $(SQUASHFS_DIR)/squashfs-tools/mksquashfs: $(SQUASHFS_DIR)/.unpacked $(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools; -squashfs: $(SQUASHFS_DIR)/squashfs-tools/mksquashfs +$(SQUASHFS_TARGET_DIR)/squashfs-tools/mksquashfs: $(SQUASHFS_DIR)/.unpacked + $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(SQUASHFS_TARGET_DIR)/squashfs-tools; +$(TARGET_DIR)/sbin/mksquashfs: $(SQUASHFS_TARGET_DIR)/squashfs-tools/mksquashfs + $(INSTALL) -D -m 0755 $(SQUASHFS_TARGET_DIR)/squashfs-tools/mksquashfs \ + $(TARGET_DIR)/sbin/mksquashfs + -$(STRIP) $(TARGET_DIR)/sbin/mksquashfs + +squashfs: $(SQUASHFS_DIR)/squashfs-tools/mksquashfs $(TARGET_DIR)/sbin/mksquashfs + +squashfs-target: $(TARGET_DIR)/sbin/mksquashfs + squashfs-source: $(DL_DIR)/$(SQUASHFS_SOURCE) squashfs-clean: -$(MAKE) -C $(SQUASHFS_DIR)/squashfs-tools clean + -$(MAKE) -C $(SQUASHFS_TARGET_DIR)/squashfs-tools clean + -rm $(TARGET_DIR)/sbin/mksquashfs squashfs-dirclean: rm -rf $(SQUASHFS_DIR) + rm -rf $(SQUASHFS_TARGET_DIR) ############################################################# # @@ -53,31 +73,31 @@ SQUASHFS_ENDIANNESS=-be endif -squashfsroot: host-fakeroot makedevs $(STAGING_DIR)/fakeroot.env squashfs +SQUASHFS_TARGET:=$(IMAGE).squashfs + +squashfsroot: host-fakeroot makedevs squashfs -@find $(TARGET_DIR) -type f -perm +111 | xargs $(STRIP) 2>/dev/null || true; @rm -rf $(TARGET_DIR)/usr/man @rm -rf $(TARGET_DIR)/usr/info -/sbin/ldconfig -r $(TARGET_DIR) 2>/dev/null # Use fakeroot to pretend all target binaries are owned by root - -$(STAGING_DIR)/usr/bin/fakeroot \ - -i $(STAGING_DIR)/fakeroot.env \ - -s $(STAGING_DIR)/fakeroot.env -- \ - chown -R root:root $(TARGET_DIR) + rm -f $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) + touch $(STAGING_DIR)/.fakeroot.00000 + cat $(STAGING_DIR)/.fakeroot* > $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) + echo "chown -R 0:0 $(TARGET_DIR)" >> $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) +ifneq ($(TARGET_DEVICE_TABLE),) # Use fakeroot to pretend to create all needed device nodes - $(STAGING_DIR)/usr/bin/fakeroot \ - -i $(STAGING_DIR)/fakeroot.env \ - -s $(STAGING_DIR)/fakeroot.env -- \ - $(STAGING_DIR)/bin/makedevs \ - -d $(TARGET_DEVICE_TABLE) \ - $(TARGET_DIR) + echo "$(STAGING_DIR)/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(TARGET_DIR)" \ + >> $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) +endif # Use fakeroot so mksquashfs believes the previous fakery - $(STAGING_DIR)/usr/bin/fakeroot \ - -i $(STAGING_DIR)/fakeroot.env \ - -s $(STAGING_DIR)/fakeroot.env -- \ - $(SQUASHFS_DIR)/squashfs-tools/mksquashfs \ - $(TARGET_DIR) \ - $(IMAGE).squashfs \ - -noappend $(SQUASHFS_ENDIANNESS) + echo "$(SQUASHFS_DIR)/squashfs-tools/mksquashfs " \ + "$(TARGET_DIR) $(SQUASHFS_TARGET) " \ + "-noappend $(SQUASHFS_ENDIANNESS)" \ + >> $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) + chmod a+x $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) + $(STAGING_DIR)/usr/bin/fakeroot -- $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) + -@rm -f $(STAGING_DIR)/_fakeroot.$(notdir $(SQUASHFS_TARGET)) squashfsroot-source: squashfs-source Added: trunk/target/squashfs/target-squashfs-getnprocs.patch =================================================================== --- trunk/target/squashfs/target-squashfs-getnprocs.patch (rev 0) +++ trunk/target/squashfs/target-squashfs-getnprocs.patch 2010-03-03 20:05:17 UTC (rev 96) @@ -0,0 +1,31 @@ +# --- T2-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# T2 SDE: package/.../uclibc/patches/squashfs-tools-getnprocs.patch +# Copyright (C) 2006 - 2007 The T2 SDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- T2-COPYRIGHT-NOTE-END --- + +--- ./squashfs-tools/mksquashfs.c.orig 2006-08-31 00:07:37.000000000 +0200 ++++ ./squashfs-tools/mksquashfs.c 2006-09-01 14:20:24.000000000 +0200 +@@ -2625,8 +2625,12 @@ + processors = 1; + } + #else ++#ifdef __UCLIBC__ ++ processors = 1; ++#else + processors = get_nprocs(); + #endif ++#endif + } + + if((thread = malloc((2 + processors * 2) * sizeof(pthread_t))) == NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2010-03-03 19:35:03
|
Revision: 95 http://runnix.svn.sourceforge.net/runnix/?rev=95&view=rev Author: krisk84 Date: 2010-03-03 19:34:55 +0000 (Wed, 03 Mar 2010) Log Message: ----------- runnix default config update Modified Paths: -------------- trunk/runnix.config Modified: trunk/runnix.config =================================================================== --- trunk/runnix.config 2010-03-03 19:32:08 UTC (rev 94) +++ trunk/runnix.config 2010-03-03 19:34:55 UTC (rev 95) @@ -15,11 +15,11 @@ # BR2_sh is not set # BR2_sparc is not set # BR2_x86_64 is not set -BR2_x86_i386=y +# BR2_x86_i386 is not set # BR2_x86_i486 is not set -# BR2_x86_i586 is not set +BR2_x86_i586=y # BR2_x86_i686 is not set -BR2_ARCH="i386" +BR2_ARCH="i586" BR2_ENDIAN="LITTLE" # @@ -34,7 +34,7 @@ BR2_TOPDIR_PREFIX="" BR2_TOPDIR_SUFFIX="" BR2_GNU_BUILD_SUFFIX="pc-linux-gnu" -BR2_JLEVEL=2 +BR2_JLEVEL=8 # # Toolchain Options @@ -227,7 +227,7 @@ # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y -BR2_TARGET_ROOTFS_EXT2_BLOCKS=4096 +BR2_TARGET_ROOTFS_EXT2_BLOCKS=8192 BR2_TARGET_ROOTFS_EXT2_INODES=0 BR2_TARGET_ROOTFS_EXT2_RESBLKS=0 BR2_TARGET_ROOTFS_EXT2_SQUASH=y @@ -250,6 +250,7 @@ # # Runnix Target Device # -BR2_TARGET_GENI386=y -# BR2_TARGET_GENI386_SERIAL is not set +# BR2_TARGET_GENI386 is not set +BR2_TARGET_GENI586=y BR2_PACKAGE_LINUX=y +# BR2_TARGET_GENI586_SERIAL is not set This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2010-03-03 19:32:16
|
Revision: 94 http://runnix.svn.sourceforge.net/runnix/?rev=94&view=rev Author: krisk84 Date: 2010-03-03 19:32:08 +0000 (Wed, 03 Mar 2010) Log Message: ----------- initial update to runnix Modified Paths: -------------- trunk/target/device/Config.in trunk/target/device/Makefile.in Added Paths: ----------- trunk/target/device/geni586/ trunk/target/device/geni586/Config.in trunk/target/device/geni586/Makefile.in trunk/target/device/geni586/busybox.config trunk/target/device/geni586/kernel-patches/ trunk/target/device/geni586/linux.config trunk/target/device/geni586/linux.mk trunk/target/device/geni586/uClibc.config trunk/target/device/kernel-patches/ Modified: trunk/target/device/Config.in =================================================================== --- trunk/target/device/Config.in 2010-02-01 06:11:57 UTC (rev 93) +++ trunk/target/device/Config.in 2010-03-03 19:32:08 UTC (rev 94) @@ -10,6 +10,12 @@ depends BR2_i386 select BR2_PACKAGE_LINUX +config BR2_TARGET_GENI586 + bool "Generic i586" + depends BR2_i386 + select BR2_PACKAGE_LINUX + endchoice source target/device/geni386/Config.in +source target/device/geni586/Config.in endmenu Modified: trunk/target/device/Makefile.in =================================================================== --- trunk/target/device/Makefile.in 2010-02-01 06:11:57 UTC (rev 93) +++ trunk/target/device/Makefile.in 2010-03-03 19:32:08 UTC (rev 94) @@ -1 +1,5 @@ -include target/device/*/Makefile.in + +ifeq ($(strip $(BR2_PACKAGE_LINUX)),y) +LINUX_HEADERS_DIR=$(LINUX_DIR) +endif Added: trunk/target/device/geni586/Config.in =================================================================== --- trunk/target/device/geni586/Config.in (rev 0) +++ trunk/target/device/geni586/Config.in 2010-03-03 19:32:08 UTC (rev 94) @@ -0,0 +1,13 @@ +config BR2_TARGET_GENI586_SERIAL + bool "i586 Serial Console" + depends BR2_TARGET_GENI586 + default n + help + Serial console with your i586 - 19200 8n1 + +config BR2_PACKAGE_LINUX + bool "linux" + depends on BR2_TARGET_GENI586 + default n + help + The Linux kernel. Added: trunk/target/device/geni586/Makefile.in =================================================================== --- trunk/target/device/geni586/Makefile.in (rev 0) +++ trunk/target/device/geni586/Makefile.in 2010-03-03 19:32:08 UTC (rev 94) @@ -0,0 +1,22 @@ +# Override the default linux configuration +GENI586_PATH=target/device/geni586 + +ifeq ($(strip $(BR2_TARGET_GENI586)),y) +DEV_PATH=$(GENI586_PATH) +BR2_PACKAGE_LINUX_CONFIG=$(GENI586_PATH)/linux.config +UCLIBC_CONFIG_FILE=$(GENI586_PATH)/uClibc.config +TARGET_SKEL2_DIR=$(GENI586_PATH)/target_skeleton +BR2_PACKAGE_BUSYBOX_CONFIG:=$(GENI586_PATH)/busybox.config +TARGET_RUNNIX_DIR=$(GENI586_PATH)/runnix + +ifeq ($(strip $(BR2_TARGET_GENI586_SERIAL)),y) +TARGET_SKEL2_DIR=$(GENI586_PATH)/target_skeleton-serial +TARGET_RUNNIX_DIR=$(GENI586_PATH)/runnix-serial +endif + +ifeq ($(strip $(BR2_PACKAGE_LINUX)),y) +TARGETS+=linux +include $(GENI586_PATH)/linux.mk +endif + +endif Added: trunk/target/device/geni586/busybox.config =================================================================== --- trunk/target/device/geni586/busybox.config (rev 0) +++ trunk/target/device/geni586/busybox.config 2010-03-03 19:32:08 UTC (rev 94) @@ -0,0 +1,593 @@ +# +# Automatically generated make config: don't edit +# +HAVE_DOT_CONFIG=y + +# +# General Configuration +# +# CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set +# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set +CONFIG_FEATURE_BUFFERS_GO_IN_BSS=y +CONFIG_FEATURE_VERBOSE_USAGE=y +# CONFIG_FEATURE_INSTALLER is not set +# CONFIG_LOCALE_SUPPORT is not set +# CONFIG_FEATURE_DEVFS is not set +# CONFIG_FEATURE_DEVPTS is not set +# CONFIG_FEATURE_CLEAN_UP is not set +CONFIG_FEATURE_SUID=y +# CONFIG_FEATURE_SUID_CONFIG is not set +# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set +# CONFIG_SELINUX is not set + +# +# Build Options +# +# CONFIG_STATIC is not set +CONFIG_LFS=y +# USING_CROSS_COMPILER is not set +CROSS_COMPILER_PREFIX="" +EXTRA_CFLAGS_OPTIONS="" +CONFIG_FEATURE_SUSv2=y +CONFIG_FEATURE_SUSv2_OBSOLETE=y + +# +# Installation Options +# +# CONFIG_INSTALL_NO_USR is not set +CONFIG_INSTALL_APPLET_SYMLINKS=y +# CONFIG_INSTALL_APPLET_HARDLINKS is not set +# CONFIG_INSTALL_APPLET_DONT is not set +PREFIX="./_install" + +# +# Archival Utilities +# +# CONFIG_AR is not set +# CONFIG_FEATURE_AR_LONG_FILENAMES is not set +CONFIG_BUNZIP2=y +# CONFIG_CPIO is not set +# CONFIG_DPKG is not set +# CONFIG_DPKG_DEB is not set +# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set +CONFIG_GUNZIP=y +# CONFIG_FEATURE_GUNZIP_UNCOMPRESS is not set +CONFIG_GZIP=y +# CONFIG_RPM2CPIO is not set +# CONFIG_RPM is not set +CONFIG_TAR=y +CONFIG_FEATURE_TAR_CREATE=y +CONFIG_FEATURE_TAR_BZIP2=y +# CONFIG_FEATURE_TAR_FROM is not set +CONFIG_FEATURE_TAR_GZIP=y +# CONFIG_FEATURE_TAR_COMPRESS is not set +# CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY is not set +CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y +# CONFIG_FEATURE_TAR_LONG_OPTIONS is not set +# CONFIG_UNCOMPRESS is not set +CONFIG_UNZIP=y + +# +# Common options for cpio and tar +# +# CONFIG_FEATURE_UNARCHIVE_TAPE is not set +# CONFIG_FEATURE_DEB_TAR_GZ is not set +# CONFIG_FEATURE_DEB_TAR_BZ2 is not set + +# +# Coreutils +# +CONFIG_BASENAME=y +# CONFIG_CAL is not set +CONFIG_CAT=y +CONFIG_CHGRP=y +CONFIG_CHMOD=y +CONFIG_CHOWN=y +CONFIG_CHROOT=y +CONFIG_CMP=y +# CONFIG_COMM is not set +CONFIG_CP=y +CONFIG_CUT=y +CONFIG_DATE=y + +# +# date (forced enabled for use with watch) +# +CONFIG_FEATURE_DATE_ISOFMT=y +CONFIG_DD=y +CONFIG_DF=y +CONFIG_DIRNAME=y +CONFIG_DOS2UNIX=y +CONFIG_UNIX2DOS=y +CONFIG_DU=y +CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y +CONFIG_ECHO=y +CONFIG_FEATURE_FANCY_ECHO=y +CONFIG_ENV=y +CONFIG_EXPR=y +CONFIG_FALSE=y +# CONFIG_FOLD is not set +CONFIG_HEAD=y +# CONFIG_FEATURE_FANCY_HEAD is not set +CONFIG_HOSTID=y +CONFIG_ID=y +CONFIG_INSTALL=y +# CONFIG_LENGTH is not set +CONFIG_LN=y +CONFIG_LOGNAME=y +CONFIG_LS=y +CONFIG_FEATURE_LS_FILETYPES=y +CONFIG_FEATURE_LS_FOLLOWLINKS=y +CONFIG_FEATURE_LS_RECURSIVE=y +CONFIG_FEATURE_LS_SORTFILES=y +CONFIG_FEATURE_LS_TIMESTAMPS=y +CONFIG_FEATURE_LS_USERNAME=y +CONFIG_FEATURE_LS_COLOR=y +# CONFIG_FEATURE_LS_COLOR_IS_DEFAULT is not set +CONFIG_MD5SUM=y +CONFIG_MKDIR=y +# CONFIG_MKFIFO is not set +CONFIG_MKNOD=y +CONFIG_MV=y +CONFIG_NICE=y +CONFIG_NOHUP=y +# CONFIG_OD is not set +# CONFIG_PRINTENV is not set +# CONFIG_PRINTF is not set +CONFIG_PWD=y +CONFIG_REALPATH=y +CONFIG_RM=y +CONFIG_RMDIR=y +CONFIG_SEQ=y +CONFIG_SHA1SUM=y +CONFIG_SLEEP=y +# CONFIG_FEATURE_FANCY_SLEEP is not set +CONFIG_SORT=y +CONFIG_FEATURE_SORT_BIG=y +CONFIG_STAT=y +# CONFIG_FEATURE_STAT_FORMAT is not set +CONFIG_STTY=y +# CONFIG_SUM is not set +CONFIG_SYNC=y +CONFIG_TAIL=y +CONFIG_FEATURE_FANCY_TAIL=y +CONFIG_TEE=y +CONFIG_FEATURE_TEE_USE_BLOCK_IO=y +CONFIG_TEST=y + +# +# test (forced enabled for use with shell) +# +CONFIG_FEATURE_TEST_64=y +CONFIG_TOUCH=y +CONFIG_TR=y +# CONFIG_FEATURE_TR_CLASSES is not set +# CONFIG_FEATURE_TR_EQUIV is not set +CONFIG_TRUE=y +CONFIG_TTY=y +CONFIG_UNAME=y +CONFIG_UNIQ=y +CONFIG_USLEEP=y +CONFIG_UUDECODE=y +CONFIG_UUENCODE=y +CONFIG_WATCH=y +CONFIG_WC=y +CONFIG_WHO=y +CONFIG_WHOAMI=y +CONFIG_YES=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for ls and more +# +CONFIG_FEATURE_AUTOWIDTH=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y + +# +# Common options for md5sum, sha1sum +# +CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y + +# +# Console Utilities +# +CONFIG_CHVT=y +CONFIG_CLEAR=y +CONFIG_DEALLOCVT=y +# CONFIG_DUMPKMAP is not set +# CONFIG_LOADFONT is not set +# CONFIG_LOADKMAP is not set +CONFIG_OPENVT=y +CONFIG_RESET=y +# CONFIG_SETCONSOLE is not set +# CONFIG_SETKEYCODES is not set + +# +# Debian Utilities +# +CONFIG_MKTEMP=y +# CONFIG_PIPE_PROGRESS is not set +CONFIG_READLINK=y +# CONFIG_FEATURE_READLINK_FOLLOW is not set +CONFIG_RUN_PARTS=y +# CONFIG_START_STOP_DAEMON is not set +CONFIG_WHICH=y + +# +# Linux Ext2 FS Progs +# +# CONFIG_CHATTR is not set +CONFIG_E2FSCK=y +CONFIG_FSCK=y +CONFIG_LSATTR=y +CONFIG_MKE2FS=y +CONFIG_TUNE2FS=y +CONFIG_E2LABEL=y +CONFIG_FINDFS=y + +# +# Editors +# +CONFIG_AWK=y +CONFIG_FEATURE_AWK_MATH=y +CONFIG_PATCH=y +CONFIG_SED=y +CONFIG_VI=y +CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_YANKMARK=y +CONFIG_FEATURE_VI_SEARCH=y +CONFIG_FEATURE_VI_USE_SIGNALS=y +CONFIG_FEATURE_VI_DOT_CMD=y +CONFIG_FEATURE_VI_READONLY=y +CONFIG_FEATURE_VI_SETOPTS=y +CONFIG_FEATURE_VI_SET=y +CONFIG_FEATURE_VI_WIN_RESIZE=y +CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y + +# +# Finding Utilities +# +CONFIG_FIND=y +CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_PERM=y +CONFIG_FEATURE_FIND_TYPE=y +CONFIG_FEATURE_FIND_XDEV=y +# CONFIG_FEATURE_FIND_NEWER is not set +# CONFIG_FEATURE_FIND_INUM is not set +CONFIG_FEATURE_FIND_EXEC=y +CONFIG_GREP=y +CONFIG_FEATURE_GREP_EGREP_ALIAS=y +CONFIG_FEATURE_GREP_FGREP_ALIAS=y +CONFIG_FEATURE_GREP_CONTEXT=y +CONFIG_XARGS=y +# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set +CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y +CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y +CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y + +# +# Init Utilities +# +CONFIG_INIT=y +CONFIG_FEATURE_USE_INITTAB=y +CONFIG_FEATURE_INITRD=y +# CONFIG_FEATURE_INIT_COREDUMPS is not set +# CONFIG_FEATURE_INIT_SCTTY is not set +# CONFIG_FEATURE_EXTRA_QUIET is not set +CONFIG_HALT=y +# CONFIG_MESG is not set +CONFIG_POWEROFF=y +CONFIG_REBOOT=y + +# +# Login/Password Management Utilities +# +CONFIG_FEATURE_SHADOWPASSWDS=y +# CONFIG_USE_BB_SHADOW is not set +# CONFIG_USE_BB_PWD_GRP is not set +CONFIG_ADDGROUP=y +CONFIG_DELGROUP=y +CONFIG_ADDUSER=y +CONFIG_DELUSER=y +CONFIG_GETTY=y +CONFIG_FEATURE_UTMP=y +CONFIG_FEATURE_WTMP=y +CONFIG_LOGIN=y +# CONFIG_FEATURE_SECURETTY is not set +CONFIG_PASSWD=y +CONFIG_SU=y +CONFIG_SULOGIN=y +CONFIG_VLOCK=y + +# +# Miscellaneous Utilities +# +# CONFIG_ADJTIMEX is not set +CONFIG_BBCONFIG=y +CONFIG_CROND=y +CONFIG_FEATURE_CROND_CALL_SENDMAIL=y +CONFIG_CRONTAB=y +CONFIG_DC=y +# CONFIG_DEVFSD is not set +# CONFIG_DEVFSD_MODLOAD is not set +# CONFIG_DEVFSD_FG_NP is not set +# CONFIG_DEVFSD_VERBOSE is not set +# CONFIG_EJECT is not set +CONFIG_LAST=y +CONFIG_LESS=y +CONFIG_FEATURE_LESS_BRACKETS=y +CONFIG_FEATURE_LESS_FLAGS=y +# CONFIG_FEATURE_LESS_FLAGCS is not set +# CONFIG_FEATURE_LESS_MARKS is not set +# CONFIG_FEATURE_LESS_REGEXP is not set +CONFIG_HDPARM=y +CONFIG_FEATURE_HDPARM_GET_IDENTITY=y +CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y +CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y +# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set +# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set +CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y +CONFIG_MAKEDEVS=y +# CONFIG_FEATURE_MAKEDEVS_LEAF is not set +CONFIG_FEATURE_MAKEDEVS_TABLE=y +# CONFIG_MOUNTPOINT is not set +CONFIG_MT=y +# BB_APPLET_RUNLEVEL is not set +# CONFIG_RX is not set +CONFIG_STRINGS=y +# CONFIG_SETSID is not set +CONFIG_TIME=y +CONFIG_WATCHDOG=y + +# +# Linux Module Utilities +# +CONFIG_INSMOD=y +# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set +# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set +# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set +# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set +CONFIG_RMMOD=y +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +CONFIG_MODPROBE=y +CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y + +# +# Options common to multiple modutils +# +CONFIG_FEATURE_CHECK_TAINTED_MODULE=y +# CONFIG_FEATURE_2_4_MODULES is not set +CONFIG_FEATURE_2_6_MODULES=y +# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set + +# +# Networking Utilities +# +# CONFIG_FEATURE_IPV6 is not set +CONFIG_ARPING=y +CONFIG_ETHER_WAKE=y +CONFIG_FAKEIDENTD=y +CONFIG_FTPGET=y +CONFIG_FTPPUT=y +CONFIG_HOSTNAME=y +# CONFIG_HTTPD is not set +# CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY is not set +# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set +# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set +# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set +# CONFIG_FEATURE_HTTPD_SETUID is not set +# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set +# CONFIG_FEATURE_HTTPD_CGI is not set +# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set +# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set +CONFIG_IFCONFIG=y +CONFIG_FEATURE_IFCONFIG_STATUS=y +# CONFIG_FEATURE_IFCONFIG_SLIP is not set +CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y +CONFIG_FEATURE_IFCONFIG_HW=y +CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y +CONFIG_IFUPDOWN=y +# CONFIG_FEATURE_IFUPDOWN_IP is not set +CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y +CONFIG_FEATURE_IFUPDOWN_IPV4=y +# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set +# CONFIG_FEATURE_IFUPDOWN_IPX is not set +# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set +CONFIG_INETD=y +# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_ECHO is not set +# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DISCARD is not set +# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_TIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_DAYTIME is not set +# CONFIG_FEATURE_INETD_SUPPORT_BILTIN_CHARGEN is not set +# CONFIG_FEATURE_INETD_RPC is not set +# CONFIG_IP is not set +# CONFIG_FEATURE_IP_ADDRESS is not set +# CONFIG_FEATURE_IP_LINK is not set +# CONFIG_FEATURE_IP_ROUTE is not set +# CONFIG_FEATURE_IP_TUNNEL is not set +# CONFIG_IPCALC is not set +# CONFIG_FEATURE_IPCALC_FANCY is not set +# CONFIG_IPADDR is not set +# CONFIG_IPLINK is not set +# CONFIG_IPROUTE is not set +# CONFIG_IPTUNNEL is not set +# CONFIG_NAMEIF is not set +CONFIG_NC=y +# CONFIG_NC_GAPING_SECURITY_HOLE is not set +CONFIG_NETSTAT=y +CONFIG_NSLOOKUP=y +CONFIG_PING=y +CONFIG_FEATURE_FANCY_PING=y +# CONFIG_PING6 is not set +# CONFIG_FEATURE_FANCY_PING6 is not set +CONFIG_ROUTE=y +CONFIG_TELNET=y +CONFIG_FEATURE_TELNET_TTYPE=y +# CONFIG_FEATURE_TELNET_AUTOLOGIN is not set +CONFIG_TELNETD=y +# CONFIG_FEATURE_TELNETD_INETD is not set +CONFIG_TFTP=y +CONFIG_FEATURE_TFTP_GET=y +CONFIG_FEATURE_TFTP_PUT=y +CONFIG_FEATURE_TFTP_BLOCKSIZE=y +CONFIG_FEATURE_TFTP_DEBUG=y +CONFIG_TRACEROUTE=y +CONFIG_FEATURE_TRACEROUTE_VERBOSE=y +# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set +# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set +CONFIG_VCONFIG=y +CONFIG_WGET=y +CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_AUTHENTICATION=y +# CONFIG_FEATURE_WGET_IP6_LITERAL is not set + +# +# udhcp Server/Client +# +# CONFIG_UDHCPD is not set +CONFIG_UDHCPC=y +# CONFIG_DUMPLEASES is not set +CONFIG_FEATURE_UDHCP_SYSLOG=y +# CONFIG_FEATURE_UDHCP_DEBUG is not set +# CONFIG_ZCIP is not set + +# +# Process Utilities +# +CONFIG_FREE=y +CONFIG_FUSER=y +CONFIG_KILL=y +CONFIG_KILLALL=y +CONFIG_PIDOF=y +# CONFIG_FEATURE_PIDOF_SINGLE is not set +# CONFIG_FEATURE_PIDOF_OMIT is not set +CONFIG_PS=y +CONFIG_FEATURE_PS_WIDE=y +CONFIG_RENICE=y +CONFIG_BB_SYSCTL=y +CONFIG_TOP=y +CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y +CONFIG_UPTIME=y + +# +# Shells +# +CONFIG_FEATURE_SH_IS_ASH=y +# CONFIG_FEATURE_SH_IS_HUSH is not set +# CONFIG_FEATURE_SH_IS_LASH is not set +# CONFIG_FEATURE_SH_IS_MSH is not set +# CONFIG_FEATURE_SH_IS_NONE is not set +CONFIG_ASH=y + +# +# Ash Shell Options +# +CONFIG_ASH_JOB_CONTROL=y +# CONFIG_ASH_READ_NCHARS is not set +# CONFIG_ASH_READ_TIMEOUT is not set +CONFIG_ASH_ALIAS=y +CONFIG_ASH_MATH_SUPPORT=y +CONFIG_ASH_MATH_SUPPORT_64=y +# CONFIG_ASH_GETOPTS is not set +# CONFIG_ASH_CMDCMD is not set +# CONFIG_ASH_BUILTIN_ECHO is not set +# CONFIG_ASH_MAIL is not set +CONFIG_ASH_OPTIMIZE_FOR_SIZE=y +# CONFIG_ASH_RANDOM_SUPPORT is not set +# CONFIG_ASH_EXPAND_PRMT is not set +# CONFIG_HUSH is not set +# CONFIG_LASH is not set +# CONFIG_MSH is not set + +# +# Bourne Shell Options +# +CONFIG_FEATURE_SH_EXTRA_QUIET=y +# CONFIG_FEATURE_SH_STANDALONE_SHELL is not set +CONFIG_FEATURE_COMMAND_EDITING=y +# CONFIG_FEATURE_COMMAND_EDITING_VI is not set +CONFIG_FEATURE_COMMAND_HISTORY=100 +CONFIG_FEATURE_COMMAND_SAVEHISTORY=y +CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y +CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION=y +CONFIG_FEATURE_SH_FANCY_PROMPT=y + +# +# System Logging Utilities +# +CONFIG_SYSLOGD=y +CONFIG_FEATURE_ROTATE_LOGFILE=y +CONFIG_FEATURE_REMOTE_LOG=y +CONFIG_FEATURE_IPC_SYSLOG=y +CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 +CONFIG_LOGREAD=y +# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set +CONFIG_KLOGD=y +CONFIG_LOGGER=y + +# +# Linux System Utilities +# +CONFIG_DMESG=y +# CONFIG_FBSET is not set +# CONFIG_FEATURE_FBSET_FANCY is not set +# CONFIG_FEATURE_FBSET_READMODE is not set +# CONFIG_FDFLUSH is not set +CONFIG_FDFORMAT=y +CONFIG_FDISK=y +FDISK_SUPPORT_LARGE_DISKS=y +CONFIG_FEATURE_FDISK_WRITABLE=y +# CONFIG_FEATURE_AIX_LABEL is not set +# CONFIG_FEATURE_SGI_LABEL is not set +# CONFIG_FEATURE_SUN_LABEL is not set +# CONFIG_FEATURE_OSF_LABEL is not set +# CONFIG_FEATURE_FDISK_ADVANCED is not set +# CONFIG_FREERAMDISK is not set +# CONFIG_FSCK_MINIX is not set +# CONFIG_MKFS_MINIX is not set +# CONFIG_FEATURE_MINIX2 is not set +CONFIG_GETOPT=y +CONFIG_HEXDUMP=y +CONFIG_HWCLOCK=y +CONFIG_FEATURE_HWCLOCK_LONGOPTIONS=y +CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y +# CONFIG_IPCRM is not set +# CONFIG_IPCS is not set +CONFIG_LOSETUP=y +# CONFIG_MDEV is not set +# CONFIG_FEATURE_MDEV_CONF is not set +CONFIG_MKSWAP=y +CONFIG_MORE=y +CONFIG_FEATURE_USE_TERMIOS=y +CONFIG_PIVOT_ROOT=y +# CONFIG_SWITCH_ROOT is not set +CONFIG_RDATE=y +# CONFIG_READPROFILE is not set +CONFIG_SWAPONOFF=y +CONFIG_MOUNT=y +CONFIG_FEATURE_MOUNT_NFS=y +CONFIG_UMOUNT=y + +# +# Common options for mount/umount +# +CONFIG_FEATURE_MOUNT_LOOP=y +# CONFIG_FEATURE_MTAB_SUPPORT is not set + +# +# Debugging Options +# +# CONFIG_DEBUG is not set +# CONFIG_NO_DEBUG_LIB is not set +# CONFIG_DMALLOC is not set +# CONFIG_EFENCE is not set Added: trunk/target/device/geni586/linux.config =================================================================== --- trunk/target/device/geni586/linux.config (rev 0) +++ trunk/target/device/geni586/linux.config 2010-03-03 19:32:08 UTC (rev 94) @@ -0,0 +1,1602 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.28.10 +# Tue Mar 2 18:04:14 2010 +# +# CONFIG_64BIT is not set +CONFIG_X86_32=y +# CONFIG_X86_64 is not set +CONFIG_X86=y +CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig" +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_FAST_CMPXCHG_LOCAL=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_BUG=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +# CONFIG_GENERIC_TIME_VSYSCALL is not set +CONFIG_ARCH_HAS_CPU_RELAX=y +CONFIG_ARCH_HAS_DEFAULT_IDLE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ZONE_DMA32 is not set +CONFIG_ARCH_POPULATES_NODE_MAP=y +# CONFIG_AUDIT_ARCH is not set +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_KTIME_SCALAR=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="-astlinux" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_BSD_PROCESS_ACCT=y +# CONFIG_BSD_PROCESS_ACCT_V3 is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +# CONFIG_CGROUPS is not set +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_USER_SCHED=y +# CONFIG_CGROUP_SCHED is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +CONFIG_NAMESPACES=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_USER_NS is not set +# CONFIG_PID_NS is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +# CONFIG_EMBEDDED is not set +CONFIG_UID16=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +# CONFIG_PROFILING is not set +# CONFIG_MARKERS is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_MODULES is not set +CONFIG_BLOCK=y +# CONFIG_LBD is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_LSF=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_CLASSIC_RCU=y +# CONFIG_FREEZER is not set + +# +# Processor type and features +# +CONFIG_TICK_ONESHOT=y +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +# CONFIG_SMP is not set +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y +CONFIG_X86_PC=y +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_VSMP is not set +# CONFIG_X86_RDC321X is not set +CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y +# CONFIG_PARAVIRT_GUEST is not set +# CONFIG_MEMTEST is not set +# CONFIG_M386 is not set +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +CONFIG_M586MMX=y +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_MPSC is not set +# CONFIG_MCORE2 is not set +# CONFIG_GENERIC_CPU is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_CPU=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_F00F_BUG=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_ALIGNMENT_16=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_TSC=y +CONFIG_X86_MINIMUM_CPU_FAMILY=4 +CONFIG_CPU_SUP_INTEL=y +CONFIG_CPU_SUP_CYRIX_32=y +CONFIG_CPU_SUP_AMD=y +CONFIG_CPU_SUP_CENTAUR_32=y +CONFIG_CPU_SUP_TRANSMETA_32=y +CONFIG_CPU_SUP_UMC_32=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +# CONFIG_IOMMU_HELPER is not set +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +# CONFIG_PREEMPT_RCU is not set +CONFIG_X86_UP_APIC=y +CONFIG_X86_UP_IOAPIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_MCE=y +# CONFIG_X86_MCE_NONFATAL is not set +# CONFIG_X86_MCE_P4THERMAL is not set +CONFIG_VM86=y +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +CONFIG_X86_REBOOTFIXUPS=y +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set +# CONFIG_NOHIGHMEM is not set +CONFIG_HIGHMEM4G=y +# CONFIG_HIGHMEM64G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_HIGHMEM=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_RESOURCES_64BIT is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y +# CONFIG_HIGHPTE is not set +# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set +CONFIG_X86_RESERVE_LOW_64K=y +# CONFIG_MATH_EMULATION is not set +CONFIG_MTRR=y +# CONFIG_MTRR_SANITIZER is not set +CONFIG_X86_PAT=y +# CONFIG_EFI is not set +CONFIG_SECCOMP=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +CONFIG_HZ_1000=y +CONFIG_HZ=1000 +CONFIG_SCHED_HRTICK=y +CONFIG_KEXEC=y +# CONFIG_CRASH_DUMP is not set +CONFIG_PHYSICAL_START=0x100000 +# CONFIG_RELOCATABLE is not set +CONFIG_PHYSICAL_ALIGN=0x100000 +# CONFIG_COMPAT_VDSO is not set +# CONFIG_CMDLINE_BOOL is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y + +# +# Power management and ACPI options +# +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set +CONFIG_ACPI=y +# CONFIG_ACPI_PROCFS is not set +CONFIG_ACPI_PROCFS_POWER=y +CONFIG_ACPI_SYSFS_POWER=y +CONFIG_ACPI_PROC_EVENT=y +# CONFIG_ACPI_AC is not set +# CONFIG_ACPI_BATTERY is not set +CONFIG_ACPI_BUTTON=y +# CONFIG_ACPI_FAN is not set +CONFIG_ACPI_DOCK=y +# CONFIG_ACPI_PROCESSOR is not set +# CONFIG_ACPI_WMI is not set +# CONFIG_ACPI_ASUS is not set +# CONFIG_ACPI_TOSHIBA is not set +# CONFIG_ACPI_CUSTOM_DSDT is not set +CONFIG_ACPI_BLACKLIST_YEAR=0 +# CONFIG_ACPI_DEBUG is not set +# CONFIG_ACPI_PCI_SLOT is not set +CONFIG_ACPI_SYSTEM=y +CONFIG_X86_PM_TIMER=y +# CONFIG_ACPI_CONTAINER is not set +# CONFIG_ACPI_SBS is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set +# CONFIG_CPU_IDLE is not set + +# +# Bus options (PCI etc.) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +# CONFIG_PCI_GOOLPC is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCIEPORTBUS=y +CONFIG_PCIEAER=y +# CONFIG_PCIEASPM is not set +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_PCI_MSI is not set +CONFIG_PCI_LEGACY=y +CONFIG_HT_IRQ=y +CONFIG_ISA_DMA_API=y +# CONFIG_ISA is not set +# CONFIG_MCA is not set +# CONFIG_SCx200 is not set +# CONFIG_OLPC is not set +# CONFIG_PCCARD is not set +# CONFIG_HOTPLUG_PCI is not set + +# +# Executable file formats / Emulations +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=y +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=y +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +CONFIG_STP=y +CONFIG_GARP=y +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=y +CONFIG_VLAN_8021Q_GVRP=y +# CONFIG_DECNET is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_NETEM is not set + +# +# Classification +# +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_FW is not set +# CONFIG_NET_CLS_U32 is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set +CONFIG_NET_SCH_FIFO=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_PHONET is not set +# CONFIG_WIRELESS is not set +# CONFIG_MAC80211_RC_DEFAULT_PID is not set +# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_FIRMWARE_IN_KERNEL is not set +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +# CONFIG_MTD is not set +# CONFIG_PARPORT is not set +CONFIG_PNP=y +CONFIG_PNP_DEBUG_MESSAGES=y + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=y +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=8192 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_MISC_DEVICES is not set +CONFIG_HAVE_IDE=y +CONFIG_IDE=y + +# +# Please see Documentation/ide/ide.txt for help/info on IDE drives +# +CONFIG_IDE_TIMINGS=y +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_IDE_GD=y +CONFIG_IDE_GD_ATA=y +# CONFIG_IDE_GD_ATAPI is not set +CONFIG_BLK_DEV_IDECD=y +CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_BLK_DEV_IDEACPI is not set +# CONFIG_IDE_TASK_IOCTL is not set +CONFIG_IDE_PROC_FS=y + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +# CONFIG_BLK_DEV_PLATFORM is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_IDEPNP is not set +CONFIG_BLK_DEV_IDEDMA_SFF=y + +# +# PCI IDE chipsets support +# +CONFIG_BLK_DEV_IDEPCI=y +# CONFIG_IDEPCI_PCIBUS_ORDER is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +CONFIG_BLK_DEV_ATIIXP=y +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CS5535 is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_JMICRON is not set +# CONFIG_BLK_DEV_SC1200 is not set +CONFIG_BLK_DEV_PIIX=y +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +CONFIG_BLK_DEV_PDC202XX_OLD=y +CONFIG_BLK_DEV_PDC202XX_NEW=y +CONFIG_BLK_DEV_SVWKS=y +CONFIG_BLK_DEV_SIIMAGE=y +CONFIG_BLK_DEV_SIS5513=y +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_BLK_DEV_TC86C001 is not set +CONFIG_BLK_DEV_IDEDMA=y + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +CONFIG_SCSI_MULTI_LUN=y +CONFIG_SCSI_CONSTANTS=y +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +CONFIG_SCSI_SAS_ATTRS=y +CONFIG_SCSI_SAS_LIBSAS=y +# CONFIG_SCSI_SAS_ATA is not set +CONFIG_SCSI_SAS_HOST_SMP=y +# CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +CONFIG_BLK_DEV_3W_XXXX_RAID=y +CONFIG_SCSI_3W_9XXX=y +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +CONFIG_SCSI_AIC94XX=y +# CONFIG_AIC94XX_DEBUG is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +CONFIG_SCSI_ARCMSR=y +# CONFIG_SCSI_ARCMSR_AER is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +CONFIG_MEGARAID_SAS=y +# CONFIG_SCSI_HPTIOP is not set +CONFIG_SCSI_BUSLOGIC=y +# CONFIG_SCSI_FLASHPOINT is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +CONFIG_SCSI_MVSAS=y +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_SRP is not set +# CONFIG_SCSI_DH is not set +CONFIG_ATA=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_ACPI=y +# CONFIG_SATA_PMP is not set +CONFIG_SATA_AHCI=y +CONFIG_SATA_SIL24=y +CONFIG_ATA_SFF=y +# CONFIG_SATA_SVW is not set +CONFIG_ATA_PIIX=y +# CONFIG_SATA_MV is not set +CONFIG_SATA_NV=y +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_SATA_SIL is not set +CONFIG_SATA_SIS=y +# CONFIG_SATA_ULI is not set +CONFIG_SATA_VIA=y +# CONFIG_SATA_VITESSE is not set +# CONFIG_SATA_INIC162X is not set +CONFIG_PATA_ACPI=y +# CONFIG_PATA_ALI is not set +CONFIG_PATA_AMD=y +# CONFIG_PATA_ARTOP is not set +CONFIG_PATA_ATIIXP=y +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CS5535 is not set +# CONFIG_PATA_CS5536 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +CONFIG_ATA_GENERIC=y +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_MARVELL is not set +CONFIG_PATA_MPIIX=y +CONFIG_PATA_OLDPIIX=y +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_SC1200 is not set +CONFIG_PATA_SERVERWORKS=y +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_SIL680 is not set +CONFIG_PATA_SIS=y +CONFIG_PATA_VIA=y +# CONFIG_PATA_WINBOND is not set +CONFIG_PATA_SCH=y +# CONFIG_MD is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# Enable only one of the two stacks, unless you know what you are doing +# +# CONFIG_FIREWIRE is not set +# CONFIG_IEEE1394 is not set +# CONFIG_I2O is not set +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +# CONFIG_NET_SB1000 is not set +# CONFIG_ARCNET is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_VORTEX=y +CONFIG_TYPHOON=y +CONFIG_NET_TULIP=y +# CONFIG_DE2104X is not set +CONFIG_TULIP=y +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_NAPI is not set +# CONFIG_DE4X5 is not set +CONFIG_WINBOND_840=y +CONFIG_DM9102=y +CONFIG_ULI526X=y +# CONFIG_HP100 is not set +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +CONFIG_NET_PCI=y +CONFIG_PCNET32=y +CONFIG_AMD8111_ETH=y +CONFIG_ADAPTEC_STARFIRE=y +CONFIG_B44=y +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_FORCEDETH=y +CONFIG_FORCEDETH_NAPI=y +CONFIG_EEPRO100=y +CONFIG_E100=y +# CONFIG_FEALNX is not set +CONFIG_NATSEMI=y +CONFIG_NE2K_PCI=y +# CONFIG_8139CP is not set +CONFIG_8139TOO=y +# CONFIG_8139TOO_PIO is not set +# CONFIG_8139TOO_TUNE_TWISTER is not set +# CONFIG_8139TOO_8129 is not set +# CONFIG_8139_OLD_RX_RESET is not set +# CONFIG_R6040 is not set +CONFIG_SIS900=y +CONFIG_EPIC100=y +# CONFIG_SUNDANCE is not set +CONFIG_TLAN=y +CONFIG_VIA_RHINE=y +CONFIG_VIA_RHINE_MMIO=y +# CONFIG_SC92031 is not set +# CONFIG_ATL2 is not set +CONFIG_NETDEV_1000=y +CONFIG_ACENIC=y +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_DL2K=y +CONFIG_E1000=y +CONFIG_E1000E=y +CONFIG_IP1000=y +CONFIG_IGB=y +# CONFIG_IGB_LRO is not set +CONFIG_NS83820=y +CONFIG_HAMACHI=y +CONFIG_YELLOWFIN=y +CONFIG_R8169=y +CONFIG_R8169_VLAN=y +CONFIG_SIS190=y +CONFIG_SKGE=y +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKY2=y +# CONFIG_SKY2_DEBUG is not set +CONFIG_VIA_VELOCITY=y +CONFIG_TIGON3=y +CONFIG_BNX2=y +CONFIG_QLA3XXX=y +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_JME is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_TR is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set +# CONFIG_IWLWIFI_LEDS is not set + +# +# USB Network Adapters +# +CONFIG_USB_CATC=y +CONFIG_USB_KAWETH=y +CONFIG_USB_PEGASUS=y +CONFIG_USB_RTL8150=y +# CONFIG_USB_USBNET is not set +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NET_FC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_MISC=y +CONFIG_INPUT_PCSPKR=y +# CONFIG_INPUT_WISTRON_BTNS is not set +# CONFIG_INPUT_ATLAS_BTNS is not set +# CONFIG_INPUT_ATI_REMOTE is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_UINPUT is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +# CONFIG_SERIAL_8250_RSA is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_INTEL=y +CONFIG_HW_RANDOM_AMD=y +CONFIG_HW_RANDOM_GEODE=y +CONFIG_HW_RANDOM_VIA=y +# CONFIG_NVRAM is not set +CONFIG_RTC=y +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set +# CONFIG_MWAVE is not set +CONFIG_PC8736x_GPIO=y +CONFIG_NSC_GPIO=y +CONFIG_CS5535_GPIO=y +# CONFIG_RAW_DRIVER is not set +# CONFIG_HPET is not set +# CONFIG_HANGCHECK_TIMER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +CONFIG_DEVPORT=y +# CONFIG_I2C is not set +# CONFIG_SPI is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +# CONFIG_GPIOLIB is not set +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_BATTERY_DS2760 is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +# CONFIG_THERMAL_HWMON is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +CONFIG_SSB=y +CONFIG_SSB_SPROM=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +# CONFIG_SSB_B43_PCI_BRIDGE is not set +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_REGULATOR is not set + +# +# Multimedia devices +# + +# +# Multimedia core support +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_DVB_CORE is not set +# CONFIG_VIDEO_MEDIA is not set + +# +# Multimedia drivers +# +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +# CONFIG_FB is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_DUMMY_CONSOLE=y +# CONFIG_SOUND is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +CONFIG_HID_DEBUG=y +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +CONFIG_USB_HIDDEV=y + +# +# Special HID drivers +# +# CONFIG_HID_COMPAT is not set +CONFIG_HID_A4TECH=y +CONFIG_HID_APPLE=y +CONFIG_HID_BELKIN=y +CONFIG_HID_BRIGHT=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +CONFIG_HID_CYPRESS=y +CONFIG_HID_DELL=y +CONFIG_HID_EZKEY=y +CONFIG_HID_GYRATION=y +CONFIG_HID_LOGITECH=y +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +CONFIG_HID_PANTHERLORD=y +# CONFIG_PANTHERLORD_FF is not set +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SONY=y +CONFIG_HID_SUNPLUS=y +# CONFIG_THRUSTMASTER_FF is not set +# CONFIG_ZEROPLUS_FF is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_SUSPEND is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_HCD_SSB is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_UHCI_HCD=y +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_WHCI_HCD is not set +# CONFIG_USB_HWA_HCD is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; +# + +# +# see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_DPCM=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +CONFIG_USB_SERIAL=y +# CONFIG_USB_SERIAL_CONSOLE is not set +# CONFIG_USB_EZUSB is not set +# CONFIG_USB_SERIAL_GENERIC is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=y +# CONFIG_USB_SERIAL_CP2101 is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +CONFIG_USB_SERIAL_FTDI_SIO=y +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +CONFIG_USB_SERIAL_MCT_U232=y +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +CONFIG_USB_SERIAL_PL2303=y +CONFIG_USB_SERIAL_OTI6858=y +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_DEBUG is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +# CONFIG_USB_GADGET is not set +# CONFIG_UWB is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +# CONFIG_LEDS_CLASS is not set + +# +# LED drivers +# + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +# CONFIG_LEDS_TRIGGER_TIMER is not set +# CONFIG_LEDS_TRIGGER_IDE_DISK is not set +# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +# CONFIG_EDAC is not set +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set +# CONFIG_UIO is not set +# CONFIG_STAGING is not set + +# +# Firmware Drivers +# +# CONFIG_EDD is not set +CONFIG_FIRMWARE_MEMMAP=y +# CONFIG_DELL_RBU is not set +# CONFIG_DCDBAS is not set +CONFIG_DMIID=y +# CONFIG_ISCSI_IBFT_FIND is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_FS_XATTR is not set +# CONFIG_EXT4_FS is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +CONFIG_FILE_LOCKING=y +# CONFIG_XFS_FS is not set +# CONFIG_OCFS2_FS is not set +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Layered filesystems +# +CONFIG_UNION_FS=y +# CONFIG_UNION_FS_XATTR is not set +# CONFIG_UNION_FS_DEBUG is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_UNUSED_SYMBOLS=y +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_MEMORY_INIT=y +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y + +# +# Tracers +# +# CONFIG_SYSPROF_TRACER is not set +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_STRICT_DEVMEM=y +CONFIG_X86_VERBOSE_BOOTUP=y +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +# CONFIG_4KSTACKS is not set +CONFIG_DOUBLEFAULT=y +CONFIG_IO_DELAY_TYPE_0X80=0 +CONFIG_IO_DELAY_TYPE_0XED=1 +CONFIG_IO_DELAY_TYPE_UDELAY=2 +CONFIG_IO_DELAY_TYPE_NONE=3 +CONFIG_IO_DELAY_0X80=y +# CONFIG_IO_DELAY_0XED is not set +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +CONFIG_DEFAULT_IO_DELAY_TYPE=0 +# CONFIG_OPTIMIZE_INLINING is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +# CONFIG_CRYPTO_FIPS is not set +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_GF128MUL=y +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_AUTHENC=y + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=y +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=y + +# +# Digest +# +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=y +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_586=y +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=y +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SALSA20_586 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y +CONFIG_CRYPTO_TWOFISH_586=y + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=y +CONFIG_CRYPTO_DEV_PADLOCK_AES=y +CONFIG_CRYPTO_DEV_PADLOCK_SHA=y +CONFIG_CRYPTO_DEV_GEODE=y +CONFIG_CRYPTO_DEV_HIFN_795X=y +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +# CONFIG_CRC7 is not set +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y Added: trunk/target/device/geni586/linux.mk =================================================================== --- trunk/target/device/geni586/linux.mk (rev 0) +++ trunk/target/device/geni586/linux.mk 2010-03-03 19:32:08 UTC (rev 94) @@ -0,0 +1,148 @@ +############################################################# +# +# Linux kernel targets +# +# Note: If you have any patches to apply, create the directory +# sources/kernel-patches and put your patches in there and number +# them in the order you wish to apply them... i.e. +# +# sources/kernel-patches/001-my-special-stuff.bz2 +# sources/kernel-patches/003-gcc-Os.bz2 +# sources/kernel-patches/004_no-warnings.bz2 +# sources/kernel-patches/030-lowlatency-mini.bz2 +# sources/kernel-patches/031-lowlatency-fixes-5.bz2 +# sources/kernel-patches/099-shutup.bz2 +# etc... +# +# these patches will all be applied by the patch-kernel.sh +# script (which will also abort the build if it finds rejects) +# -Erik +# +############################################################# +ifneq ($(filter $(TARGETS),linux),) + +# Version of Linux to download and then apply patches to +DOWNLOAD_LINUX_VERSION:=2.6.28.10 +# Version of Linux AFTER patches +LINUX_VERSION:=$(DOWNLOAD_LINUX_VERSION)-runnix + +DEVICE_DIR=$(BASE_DIR)/target/device/geni586 + +LINUX_FORMAT=bzImage + +LINUX_KARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \ + -e 's/i.86/i386/' \ + -e 's/sparc.*/sparc/' \ + -e 's/arm.*/arm/g' \ + -e 's/m68k.*/m68k/' \ + -e 's/ppc/powerpc/g' \ + -e 's/v850.*/v850/g' \ + -e 's/sh[234].*/sh/' \ + -e 's/mips.*/mips/' \ + -e 's/mipsel.*/mips/' \ + -e 's/cris.*/cris/' \ + -e 's/... [truncated message content] |