Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
727a68b8
Commit
727a68b8
authored
May 19, 2017
by
davidcunado-arm
Committed by
GitHub
May 19, 2017
Browse files
Merge pull request #936 from antonio-nino-diaz-arm/an/assert-mem
Simplify assert() to reduce memory usage
parents
4fd4af26
0da2fe7e
Changes
3
Hide whitespace changes
Inline
Side-by-side
docs/porting-guide.md
View file @
727a68b8
...
@@ -535,6 +535,17 @@ optionally be defined:
...
@@ -535,6 +535,17 @@ optionally be defined:
PLAT_PARTITION_MAX_ENTRIES
:= 12
PLAT_PARTITION_MAX_ENTRIES
:= 12
$(eval $(call add_define,PLAT_PARTITION_MAX_ENTRIES))
$(eval $(call add_define,PLAT_PARTITION_MAX_ENTRIES))
The following constant is optional. It should be defined to override the default
behaviour of the
`assert()`
function (for example, to save memory).
*
**PLAT_LOG_LEVEL_ASSERT**
If
`PLAT_LOG_LEVEL_ASSERT`
is higher or equal than
`LOG_LEVEL_VERBOSE`
,
`assert()`
prints the name of the file, the line number and the asserted
expression. Else if it is higher than
`LOG_LEVEL_INFO`
, it prints the file
name and the line number. Else if it is lower than
`LOG_LEVEL_INFO`
, it
doesn't print anything to the console. If
`PLAT_LOG_LEVEL_ASSERT`
isn't
defined, it defaults to
`LOG_LEVEL`
.
### File : plat_macros.S [mandatory]
### File : plat_macros.S [mandatory]
...
...
include/lib/stdlib/assert.h
View file @
727a68b8
...
@@ -42,19 +42,36 @@
...
@@ -42,19 +42,36 @@
#ifndef _ASSERT_H_
#ifndef _ASSERT_H_
#define _ASSERT_H_
#define _ASSERT_H_
#include <debug.h>
#include <platform_def.h>
#include <sys/cdefs.h>
#include <sys/cdefs.h>
#ifndef PLAT_LOG_LEVEL_ASSERT
#define PLAT_LOG_LEVEL_ASSERT LOG_LEVEL
#endif
#if ENABLE_ASSERTIONS
#if ENABLE_ASSERTIONS
#define _assert(e) assert(e)
#define _assert(e) assert(e)
#define assert(e) ((e) ? (void)0 : __assert(__func__, __FILE__, \
# if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
__LINE__, #e))
# define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
# elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
# define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__))
# else
# define assert(e) ((e) ? (void)0 : __assert())
# endif
#else
#else
#define assert(e) ((void)0)
#define assert(e) ((void)0)
#define _assert(e) ((void)0)
#define _assert(e) ((void)0)
#endif
/* ENABLE_ASSERTIONS */
#endif
/* ENABLE_ASSERTIONS */
__BEGIN_DECLS
__BEGIN_DECLS
void
__assert
(
const
char
*
,
const
char
*
,
int
,
const
char
*
)
__dead2
;
#if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
void
__assert
(
const
char
*
,
unsigned
int
,
const
char
*
)
__dead2
;
#elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
void
__assert
(
const
char
*
,
unsigned
int
)
__dead2
;
#else
void
__assert
(
void
)
__dead2
;
#endif
__END_DECLS
__END_DECLS
#endif
/* !_ASSERT_H_ */
#endif
/* !_ASSERT_H_ */
lib/stdlib/assert.c
View file @
727a68b8
...
@@ -4,22 +4,33 @@
...
@@ -4,22 +4,33 @@
* SPDX-License-Identifier: BSD-3-Clause
* SPDX-License-Identifier: BSD-3-Clause
*/
*/
#include <assert.h>
#include <console.h>
#include <console.h>
#include <debug.h>
#include <debug.h>
#include <platform.h>
#include <platform.h>
void
__assert
(
const
char
*
function
,
const
char
*
file
,
unsigned
int
line
,
/*
const
char
*
assertion
)
* Only print the output if PLAT_LOG_LEVEL_ASSERT is higher or equal to
{
* LOG_LEVEL_INFO, which is the default value for builds with DEBUG=1.
#if LOG_LEVEL >= LOG_LEVEL_INFO
*/
/*
* Only print the output if LOG_LEVEL is higher or equal to
* LOG_LEVEL_INFO, which is the default value for builds with DEBUG=1.
*/
tf_printf
(
"ASSERT: %s <%d> : %s
\n
"
,
function
,
line
,
assertion
);
#if PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_VERBOSE
void
__assert
(
const
char
*
file
,
unsigned
int
line
,
const
char
*
assertion
)
{
tf_printf
(
"ASSERT: %s <%d> : %s
\n
"
,
file
,
line
,
assertion
);
console_flush
();
console_flush
();
#endif
plat_panic_handler
();
plat_panic_handler
();
}
}
#elif PLAT_LOG_LEVEL_ASSERT >= LOG_LEVEL_INFO
void
__assert
(
const
char
*
file
,
unsigned
int
line
)
{
tf_printf
(
"ASSERT: %s <%d>
\n
"
,
file
,
line
);
console_flush
();
plat_panic_handler
();
}
#else
void
__assert
(
void
)
{
plat_panic_handler
();
}
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment