bsps/sparc: Add grlib_malloc(), grlib_calloc()

This avoids a dependency to errno in device driver code.
This commit is contained in:
Sebastian Huber
2018-11-26 15:55:38 +01:00
parent 8b59916a76
commit 11f3b9a535
38 changed files with 176 additions and 140 deletions

View File

@@ -15,6 +15,8 @@
#include <string.h>
#include <bsp/genirq.h>
#include <grlib_impl.h>
struct genirq_handler_entry {
struct genirq_handler_entry *next; /* Next ISR entry for this IRQ number */
genirq_handler isr; /* ISR function called upon IRQ */
@@ -31,21 +33,20 @@ struct genirq_priv {
/* Maximum number of interrupt */
int genirq_max;
/* IRQ Table index N reflect IRQ number N */
struct genirq_irq_entry genirq_table[1]; /* Length depends on */
struct genirq_irq_entry genirq_table[0]; /* Length depends on */
};
genirq_t genirq_init(int number_of_irqs)
{
int size;
size_t size;
struct genirq_priv *priv;
size = sizeof(int) +
number_of_irqs * sizeof(struct genirq_irq_entry);
size = sizeof(*priv) +
number_of_irqs * sizeof(priv->genirq_table[0]);
priv = (struct genirq_priv *)malloc(size);
priv = grlib_calloc(1, size);
if ( !priv )
return NULL;
memset(priv, 0, size);
priv->genirq_max = number_of_irqs - 1;
return priv;
@@ -86,7 +87,7 @@ void *genirq_alloc_handler(genirq_handler isr, void *arg)
{
struct genirq_handler_entry *newentry;
newentry = malloc(sizeof(struct genirq_handler_entry));
newentry = grlib_malloc(sizeof(*newentry));
if ( newentry ) {
/* Initialize ISR entry */
newentry->isr = isr;