summaryrefslogtreecommitdiffstats
path: root/bsps/sparc/shared/irq/genirq.c
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/sparc/shared/irq/genirq.c')
-rw-r--r--bsps/sparc/shared/irq/genirq.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/bsps/sparc/shared/irq/genirq.c b/bsps/sparc/shared/irq/genirq.c
index bba642e701..6ddd442f73 100644
--- a/bsps/sparc/shared/irq/genirq.c
+++ b/bsps/sparc/shared/irq/genirq.c
@@ -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;