xref: /OK3568_Linux_fs/kernel/arch/um/include/shared/irq_user.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #ifndef __IRQ_USER_H__
7*4882a593Smuzhiyun #define __IRQ_USER_H__
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <sysdep/ptrace.h>
10*4882a593Smuzhiyun #include <stdbool.h>
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun struct irq_fd {
13*4882a593Smuzhiyun 	struct irq_fd *next;
14*4882a593Smuzhiyun 	void *id;
15*4882a593Smuzhiyun 	int fd;
16*4882a593Smuzhiyun 	int type;
17*4882a593Smuzhiyun 	int irq;
18*4882a593Smuzhiyun 	int events;
19*4882a593Smuzhiyun 	bool active;
20*4882a593Smuzhiyun 	bool pending;
21*4882a593Smuzhiyun 	bool purge;
22*4882a593Smuzhiyun };
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #define IRQ_READ  0
25*4882a593Smuzhiyun #define IRQ_WRITE 1
26*4882a593Smuzhiyun #define IRQ_NONE 2
27*4882a593Smuzhiyun #define MAX_IRQ_TYPE (IRQ_NONE + 1)
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun struct siginfo;
32*4882a593Smuzhiyun extern void sigio_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs);
33*4882a593Smuzhiyun extern void free_irq_by_fd(int fd);
34*4882a593Smuzhiyun extern void deactivate_fd(int fd, int irqnum);
35*4882a593Smuzhiyun extern int deactivate_all_fds(void);
36*4882a593Smuzhiyun extern int activate_ipi(int fd, int pid);
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun #endif
39