Lines Matching refs:shared_entry
43 struct z_shared_isr_table_entry *shared_entry; in z_isr_install() local
57 shared_entry = &z_shared_sw_isr_table[table_idx]; in z_isr_install()
63 __ASSERT(shared_entry->client_num < CONFIG_SHARED_IRQ_MAX_NUM_CLIENTS, in z_isr_install()
82 shared_entry->clients[shared_entry->client_num].isr = entry->isr; in z_isr_install()
83 shared_entry->clients[shared_entry->client_num].arg = entry->arg; in z_isr_install()
85 shared_entry->client_num++; in z_isr_install()
88 entry->arg = shared_entry; in z_isr_install()
92 for (i = 0; i < shared_entry->client_num; i++) { in z_isr_install()
93 client = &shared_entry->clients[i]; in z_isr_install()
99 shared_entry->clients[shared_entry->client_num].isr = routine; in z_isr_install()
100 shared_entry->clients[shared_entry->client_num].arg = param; in z_isr_install()
101 shared_entry->client_num++; in z_isr_install()
121 static void shared_irq_remove_client(struct z_shared_isr_table_entry *shared_entry, in shared_irq_remove_client() argument
126 shared_entry->clients[client_idx].isr = NULL; in shared_irq_remove_client()
127 shared_entry->clients[client_idx].arg = NULL; in shared_irq_remove_client()
130 for (i = client_idx; i <= (int)shared_entry->client_num - 2; i++) { in shared_irq_remove_client()
131 swap_client_data(&shared_entry->clients[i], in shared_irq_remove_client()
132 &shared_entry->clients[i + 1]); in shared_irq_remove_client()
135 shared_entry->client_num--; in shared_irq_remove_client()
138 if (shared_entry->client_num == 1) { in shared_irq_remove_client()
139 _sw_isr_table[table_idx].isr = shared_entry->clients[0].isr; in shared_irq_remove_client()
140 _sw_isr_table[table_idx].arg = shared_entry->clients[0].arg; in shared_irq_remove_client()
142 shared_entry->clients[0].isr = NULL; in shared_irq_remove_client()
143 shared_entry->clients[0].arg = NULL; in shared_irq_remove_client()
145 shared_entry->client_num--; in shared_irq_remove_client()
163 struct z_shared_isr_table_entry *shared_entry; in z_isr_uninstall() local
177 shared_entry = &z_shared_sw_isr_table[table_idx]; in z_isr_uninstall()
187 if (!shared_entry->client_num) { in z_isr_uninstall()
196 for (i = 0; i < shared_entry->client_num; i++) { in z_isr_uninstall()
197 client = &shared_entry->clients[i]; in z_isr_uninstall()
201 shared_irq_remove_client(shared_entry, i, table_idx); in z_isr_uninstall()