All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5] [RFC] early_malloc for DM added.
Date: Sat, 22 Sep 2012 02:28:23 +0200	[thread overview]
Message-ID: <201209220228.23341.marex@denx.de> (raw)
In-Reply-To: <1348273502-23171-1-git-send-email-tmshlvck@gmail.com>

Dear Tomas Hlavacek,

> early_malloc for DM with support for more heaps and lightweight
> first heap in the same memory as an early stack.
> 
> Adaptation layer for seamless calling of early_malloc or dlmalloc from
> DM based on init stage added (dmmalloc() and related functions).
> 
> Signed-off-by: Tomas Hlavacek <tmshlvck@gmail.com>
[...]
>  31 files changed, 363 insertions(+)
>  create mode 100644 common/dmmalloc.c
>  create mode 100644 include/dmmalloc.h

What exactly changed in this version? Changelog is missing.

[...]

> +static int early_malloc_active(void)
> +{
> +	if ((gd->flags & GD_FLG_RELOC) == GD_FLG_RELOC)
> +		return 0;

Did you completely ignore the comments?

> +	return 1;
> +}
> +#endif /* CONFIG_SYS_EARLY_MALLOC */
> +
> +#ifdef CONFIG_SYS_EARLY_MALLOC
> +void *dmmalloc(size_t size)
> +{
> +	if (early_malloc_active())
> +		return early_malloc(size);
> +	return malloc(size);
> +}
> +#else /* CONFIG_SYS_EARLY_MALLOC */
> +#define dmmalloc malloc

How is this actually supposed to work?

> +#endif /* CONFIG_SYS_EARLY_MALLOC */
> +
> +#ifdef CONFIG_SYS_EARLY_MALLOC
> +void dmfree(void *ptr)
> +{
> +	if (early_malloc_active())
> +		return;
> +	free(ptr);
> +}
> +#else /* CONFIG_SYS_EARLY_MALLOC */
> +#define dmfree free
> +#endif /* CONFIG_SYS_EARLY_MALLOC */
> +
> +#ifdef CONFIG_SYS_EARLY_MALLOC
> +void *dmcalloc(size_t n, size_t elem_size)
> +{
> +	if (early_malloc_active())
> +		return NULL;
> +	return calloc(n, elem_size);
> +}
> +#else /* CONFIG_SYS_EARLY_MALLOC */
> +#define dmcalloc calloc
> +#endif /* CONFIG_SYS_EARLY_MALLOC */
> +
> +#ifdef CONFIG_SYS_EARLY_MALLOC
> +void *dmrealloc(void *oldmem, size_t bytes)
> +{
> +	if (early_malloc_active())
> +		return NULL;
> +	return dmrealloc(oldmem, bytes);
> +}
> +#else /* CONFIG_SYS_EARLY_MALLOC */
> +#define dmrealloc realloc
> +#endif /* CONFIG_SYS_EARLY_MALLOC */
> +
> diff --git a/include/dmmalloc.h b/include/dmmalloc.h
> new file mode 100644
> index 0000000..726c6c9
> --- /dev/null
> +++ b/include/dmmalloc.h
> @@ -0,0 +1,56 @@
> +/*
> + * (C) Copyright 2012
> + * Tomas Hlavacek (tmshlvck at gmail.com)
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * 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.
> + *
> + * 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, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#ifndef __INCLUDE_DMMALLOC_H
> +#define __INCLUDE_DMMALLOC_H
> +
> +#include <config.h>
> +#include <linux/stddef.h> /* for size_t */
> +
> +#if (!defined(CONFIG_SYS_EARLY_HEAP_ADDR)) || \
> +	(!defined(CONFIG_SYS_EARLY_HEAP_SIZE))
> +#undef CONFIG_SYS_EARLY_MALLOC
> +#endif /* CONFIG_SYS_EARLY_HEAP_ADDR */
> +
> +#ifdef CONFIG_SYS_EARLY_MALLOC
> +struct early_heap_header {
> +	void *free_space_pointer;
> +	size_t free_bytes;
> +	void *next_early_heap;
> +};
> +
> +struct early_heap_header *early_brk(size_t size);
> +void *early_malloc(size_t size);
> +
> +#endif /* CONFIG_SYS_EARLY_MALLOC */
> +
> +#ifdef CONFIG_SYS_DM

Isn't it CONFIG_DM ?

> +void *dmmalloc(size_t size);
> +void dmfree(void *ptr);
> +void *dmcalloc(size_t n, size_t elem_size);
> +void *dmrealloc(void *oldmem, size_t bytes);
> +#endif /* CONFIG_SYS_DM */
> +
> +
> +#endif /* __INCLUDE_DMMALLOC_H */
> +

  reply	other threads:[~2012-09-22  0:28 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-27 12:12 [U-Boot] [PATCH 1/1] [RFC] DM: early_malloc for DM added Tomas Hlavacek
2012-08-27 12:18 ` Marek Vasut
2012-08-27 12:37   ` Tomas Hlavacek
2012-08-27 12:42 ` [U-Boot] [PATCHv2 " Tomas Hlavacek
2012-08-27 23:02   ` Graeme Russ
2012-08-28  0:11     ` Graeme Russ
2012-08-28  0:18     ` Graeme Russ
2012-09-18  7:13 ` [U-Boot] [PATCHv4] " Tomas Hlavacek
2012-09-18 10:57   ` Marek Vasut
2012-09-18 23:29     ` Graeme Russ
2012-09-18 23:33       ` Marek Vasut
2012-09-18 23:44         ` Graeme Russ
2012-09-18 23:53           ` Marek Vasut
2012-09-19 18:29       ` Tom Rini
2012-09-22  0:37       ` Tomas Hlavacek
2012-09-18 23:25   ` Graeme Russ
2012-09-22  0:25 ` [U-Boot] [PATCH v5] [RFC] " Tomas Hlavacek
2012-09-22  0:28   ` Marek Vasut [this message]
2012-09-22  7:52     ` Tomas Hlavacek
2012-09-22 13:19       ` Marek Vasut
2012-09-22 22:09 ` [U-Boot] [PATCH v6] " Tomas Hlavacek
2012-09-23 13:06   ` Graeme Russ
2012-09-23 15:30     ` Tomas Hlavacek
2012-09-23 15:38 ` [U-Boot] [PATCH v7] " Tomas Hlavacek
2012-09-23 16:15 ` [U-Boot] [PATCH v8] " Tomas Hlavacek
2012-09-23 16:32   ` Wolfgang Denk
2012-09-23 16:47     ` Tomas Hlavacek
2012-09-24 21:48       ` Tom Rini
2012-09-23 23:11   ` Marek Vasut
2012-09-24 14:16     ` Tomas Hlavacek
2012-09-24 14:19       ` Marek Vasut
2012-09-25  0:37         ` Graeme Russ
2012-09-25  8:43           ` Tomas Hlavacek
2012-09-25  9:09             ` Graeme Russ
2012-09-25 23:04               ` Graeme Russ
2012-09-26 10:16                 ` Tomas Hlavacek
2012-09-26 23:03                   ` Graeme Russ
2012-09-24  0:00   ` Graeme Russ
2012-09-24  0:35     ` Tomas Hlavacek
2012-09-24  0:46       ` Graeme Russ
2012-10-24 23:49 ` [U-Boot] [PATCH v9] [RFC] Add dmmalloc module for DM Tomas Hlavacek
2012-10-25  1:40   ` Graeme Russ
2012-10-25 19:16     ` Tomas Hlavacek
2012-10-25 23:04       ` Graeme Russ
2012-10-28 23:20 ` [U-Boot] [PATCH v10] " Tomas Hlavacek
2013-11-05 15:26   ` Mateusz Zalega
2013-11-05 17:17     ` Tom Rini
2013-11-05 17:26       ` Mateusz Zalega

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201209220228.23341.marex@denx.de \
    --to=marex@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.