[PATCH v2 5/7] um: irq: reduce irq_reg allocation
Anton Ivanov
anton.ivanov at kot-begemot.co.uk
Wed Dec 2 09:14:43 EST 2020
On 02/12/2020 11:59, Johannes Berg wrote:
> From: Johannes Berg <johannes.berg at intel.com>
>
> We don't need an array of 4 entries to capture three and the
> name 'MAX_IRQ_TYPE' really gets confusing as well. Remove it
> and add a correct NUM_IRQ_TYPES, and use that correctly.
>
> Signed-off-by: Johannes Berg <johannes.berg at intel.com>
> ---
> arch/um/include/shared/irq_user.h | 2 +-
> arch/um/kernel/irq.c | 12 ++++++------
> 2 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/arch/um/include/shared/irq_user.h b/arch/um/include/shared/irq_user.h
> index 2dd5fd7d9443..5e975a9e8354 100644
> --- a/arch/um/include/shared/irq_user.h
> +++ b/arch/um/include/shared/irq_user.h
> @@ -12,7 +12,7 @@
> #define IRQ_READ 0
> #define IRQ_WRITE 1
> #define IRQ_NONE 2
> -#define MAX_IRQ_TYPE (IRQ_NONE + 1)
> +#define NUM_IRQ_TYPES (IRQ_NONE + 1)
>
> struct siginfo;
> extern void sigio_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs);
> diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
> index 923a80c9808a..93eb742ecafe 100644
> --- a/arch/um/kernel/irq.c
> +++ b/arch/um/kernel/irq.c
> @@ -43,7 +43,7 @@ struct irq_reg {
> struct irq_entry {
> struct irq_entry *next;
> int fd;
> - struct irq_reg *irq_array[MAX_IRQ_TYPE + 1];
> + struct irq_reg *irq_array[NUM_IRQ_TYPES];
> };
>
> static struct irq_entry *active_fds;
> @@ -101,7 +101,7 @@ void sigio_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs)
> */
> irq_entry = (struct irq_entry *)
> os_epoll_get_data_pointer(i);
> - for (j = 0; j < MAX_IRQ_TYPE ; j++) {
> + for (j = 0; j < NUM_IRQ_TYPES ; j++) {
> irq = irq_entry->irq_array[j];
> if (irq == NULL)
> continue;
> @@ -124,7 +124,7 @@ static int assign_epoll_events_to_irq(struct irq_entry *irq_entry)
> int events = 0;
> struct irq_reg *irq;
>
> - for (i = 0; i < MAX_IRQ_TYPE ; i++) {
> + for (i = 0; i < NUM_IRQ_TYPES ; i++) {
> irq = irq_entry->irq_array[i];
> if (irq != NULL)
> events = irq->events | events;
> @@ -172,7 +172,7 @@ static int activate_fd(int irq, int fd, int type, void *dev_id)
> goto out_unlock;
> }
> irq_entry->fd = fd;
> - for (i = 0; i < MAX_IRQ_TYPE; i++)
> + for (i = 0; i < NUM_IRQ_TYPES; i++)
> irq_entry->irq_array[i] = NULL;
> irq_entry->next = active_fds;
> active_fds = irq_entry;
> @@ -244,7 +244,7 @@ static void garbage_collect_irq_entries(void)
> walk = active_fds;
> while (walk != NULL) {
> reap = true;
> - for (i = 0; i < MAX_IRQ_TYPE ; i++) {
> + for (i = 0; i < NUM_IRQ_TYPES ; i++) {
> if (walk->irq_array[i] != NULL) {
> reap = false;
> break;
> @@ -301,7 +301,7 @@ static void do_free_by_irq_and_dev(
> int i;
> struct irq_reg *to_free;
>
> - for (i = 0; i < MAX_IRQ_TYPE ; i++) {
> + for (i = 0; i < NUM_IRQ_TYPES ; i++) {
> if (irq_entry->irq_array[i] != NULL) {
> if (
> ((flags & IGNORE_IRQ) ||
>
Acked-By: Anton Ivanov <anton.ivanov at cambridgegreys.com>
--
Anton R. Ivanov
https://www.kot-begemot.co.uk/
More information about the linux-um
mailing list