mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH v2] defaultenv: use a compressed version when embedded in barebox
@ 2011-12-14 17:47 Jean-Christophe PLAGNIOL-VILLARD
  2011-12-14 19:10 ` Eric Bénard
  2011-12-14 20:01 ` Sascha Hauer
  0 siblings, 2 replies; 4+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-12-14 17:47 UTC (permalink / raw)
  To: barebox

with using gzip and the default env we can save 5.2KiB (5,352 bytes)

tested on sam9g20ek
before
-rwxr-xr-x  1 root root 265748 Dec 14 00:42 barebox.bin
after
-rwxr-xr-x  1 root root 260396 Dec 14 00:42 barebox.bin

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
v2:

	fix the comment

Best Regards,
J.
 common/Kconfig   |    1 +
 common/Makefile  |    6 +++++-
 common/startup.c |   23 +++++++++++++++++++++--
 3 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/common/Kconfig b/common/Kconfig
index 27464d1..ef5bba7 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -423,6 +423,7 @@ config PARTITION_DISK_DOS
 config DEFAULT_ENVIRONMENT
 	bool
 	default y
+	select ZLIB
 	prompt "Compile in default environment"
 	help
 	  Enabling this option will give you a default environment when
diff --git a/common/Makefile b/common/Makefile
index 9bce479..5cbaa1d 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -52,5 +52,9 @@ endif # ifdef CONFIG_DEFAULT_ENVIRONMENT
 barebox_default_env: $(ENV_FILES)
 	$(Q)$(srctree)/scripts/genenv $(srctree) $(objtree) $(DEFAULT_ENVIRONMENT_PATH)
 
-include/generated/barebox_default_env.h: barebox_default_env
+barebox_default_env.gz: barebox_default_env FORCE
+	$(call if_changed,gzip)
+
+include/generated/barebox_default_env.h: barebox_default_env.gz
 	$(Q)cat $< | $(objtree)/scripts/bin2c default_environment > $@
+	echo "const int default_environment_uncompress_size=`stat -c%s barebox_default_env`;" >> $@
diff --git a/common/startup.c b/common/startup.c
index 13783fb..c68ac8b 100644
--- a/common/startup.c
+++ b/common/startup.c
@@ -63,11 +63,30 @@ static void display_meminfo(void)
 
 #ifdef CONFIG_DEFAULT_ENVIRONMENT
 #include <generated/barebox_default_env.h>
+#include <uncompress.h>
+
+void *defaultenv;
 
 static int register_default_env(void)
 {
-	add_mem_device("defaultenv", (unsigned long)default_environment,
-		       sizeof(default_environment),
+	int ret;
+	void *tmp;
+
+	tmp = xzalloc(default_environment_size);
+	memcpy(tmp, default_environment, default_environment_size);
+
+	defaultenv = xzalloc(default_environment_uncompress_size);
+
+	ret = uncompress(tmp, default_environment_size, NULL, NULL,
+			 defaultenv, NULL, uncompress_err_stdout);
+
+	free(tmp);
+
+	if (ret)
+		return ret;
+
+	add_mem_device("defaultenv", (unsigned long)defaultenv,
+		       default_environment_uncompress_size,
 		       IORESOURCE_MEM_WRITEABLE);
 	return 0;
 }
-- 
1.7.7


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] defaultenv: use a compressed version when embedded in barebox
  2011-12-14 17:47 [PATCH v2] defaultenv: use a compressed version when embedded in barebox Jean-Christophe PLAGNIOL-VILLARD
@ 2011-12-14 19:10 ` Eric Bénard
  2011-12-15 13:52   ` Jean-Christophe PLAGNIOL-VILLARD
  2011-12-14 20:01 ` Sascha Hauer
  1 sibling, 1 reply; 4+ messages in thread
From: Eric Bénard @ 2011-12-14 19:10 UTC (permalink / raw)
  To: barebox

Hi,

Le 14/12/2011 18:47, Jean-Christophe PLAGNIOL-VILLARD a écrit :
> with using gzip and the default env we can save 5.2KiB (5,352 bytes)
>
> tested on sam9g20ek
> before
> -rwxr-xr-x  1 root root 265748 Dec 14 00:42 barebox.bin
> after
> -rwxr-xr-x  1 root root 260396 Dec 14 00:42 barebox.bin
>
what is the consequence on the boottime ?

Eric

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] defaultenv: use a compressed version when embedded in barebox
  2011-12-14 17:47 [PATCH v2] defaultenv: use a compressed version when embedded in barebox Jean-Christophe PLAGNIOL-VILLARD
  2011-12-14 19:10 ` Eric Bénard
@ 2011-12-14 20:01 ` Sascha Hauer
  1 sibling, 0 replies; 4+ messages in thread
From: Sascha Hauer @ 2011-12-14 20:01 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox

On Wed, Dec 14, 2011 at 06:47:21PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> with using gzip and the default env we can save 5.2KiB (5,352 bytes)
> 
> tested on sam9g20ek
> before
> -rwxr-xr-x  1 root root 265748 Dec 14 00:42 barebox.bin
> after
> -rwxr-xr-x  1 root root 260396 Dec 14 00:42 barebox.bin
> 
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> v2:
> 
> 	fix the comment

Appearently you haven't read my mail. So to repeat myself:

> zlib is bigger than the uncompressed defaultenv.

This means that this step is only worth doing when zlib is selected
anyway. Otherwise you end up with 5Kb more: 10Kb zlib binary space + 3Kb
compressed env is bigger than 8Kb uncompressed defaultenv.

So my suggestion was:

> How about a
> config DEFAULT_ENVIRONMENT_COMPRESSED
>         default y if ZLIB
> instead?


>  
> -include/generated/barebox_default_env.h: barebox_default_env
> +barebox_default_env.gz: barebox_default_env FORCE

And also I asked:

> Do we need this FORCE? It triggers a new build everytime even when
> nothing has changed.

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2] defaultenv: use a compressed version when embedded in barebox
  2011-12-14 19:10 ` Eric Bénard
@ 2011-12-15 13:52   ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 4+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-12-15 13:52 UTC (permalink / raw)
  To: Eric Bénard; +Cc: barebox

On 20:10 Wed 14 Dec     , Eric Bénard wrote:
> Hi,
> 
> Le 14/12/2011 18:47, Jean-Christophe PLAGNIOL-VILLARD a écrit :
> >with using gzip and the default env we can save 5.2KiB (5,352 bytes)
> >
> >tested on sam9g20ek
> >before
> >-rwxr-xr-x  1 root root 265748 Dec 14 00:42 barebox.bin
> >after
> >-rwxr-xr-x  1 root root 260396 Dec 14 00:42 barebox.bin
> >
> what is the consequence on the boottime ?
no difference nearly I've seen the same boot time

I've seen over 10 boots sometime 100ms differences (3 times)

but it manual check and my chrono can not be more preceise than 100ms

I've no scope to be more precise

Best Regards,
J.

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-12-15 13:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-14 17:47 [PATCH v2] defaultenv: use a compressed version when embedded in barebox Jean-Christophe PLAGNIOL-VILLARD
2011-12-14 19:10 ` Eric Bénard
2011-12-15 13:52   ` Jean-Christophe PLAGNIOL-VILLARD
2011-12-14 20:01 ` Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox