blob: a7a6120f19d55ae505114e419d1b841ea7f90cee [file] [log] [blame]
Jeff Dike63ae2a92006-03-27 01:14:30 -08001/*
Jeff Dikeba180fd2007-10-16 01:27:00 -07002 * Copyright (C) 2001 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 * Licensed under the GPL
4 */
5
6#ifndef __IRQ_USER_H__
7#define __IRQ_USER_H__
8
Al Viro37185b32012-10-08 03:27:32 +01009#include <sysdep/ptrace.h>
Anton Ivanovff6a1792017-11-20 21:17:58 +000010#include <stdbool.h>
Jeff Dike8ae43ff2006-07-10 04:45:09 -070011
Jeff Dike63ae2a92006-03-27 01:14:30 -080012struct irq_fd {
13 struct irq_fd *next;
14 void *id;
15 int fd;
16 int type;
17 int irq;
Jeff Dike63ae2a92006-03-27 01:14:30 -080018 int events;
Anton Ivanovff6a1792017-11-20 21:17:58 +000019 bool active;
20 bool pending;
21 bool purge;
Jeff Dike63ae2a92006-03-27 01:14:30 -080022};
23
Anton Ivanovff6a1792017-11-20 21:17:58 +000024#define IRQ_READ 0
25#define IRQ_WRITE 1
26#define IRQ_NONE 2
27#define MAX_IRQ_TYPE (IRQ_NONE + 1)
28
29
Linus Torvalds1da177e2005-04-16 15:20:36 -070030
Martin Pärteld3c1cfc2012-08-02 00:49:17 +020031struct siginfo;
32extern void sigio_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs);
Linus Torvalds1da177e2005-04-16 15:20:36 -070033extern void free_irq_by_fd(int fd);
34extern void reactivate_fd(int fd, int irqnum);
35extern void deactivate_fd(int fd, int irqnum);
36extern int deactivate_all_fds(void);
Linus Torvalds1da177e2005-04-16 15:20:36 -070037extern int activate_ipi(int fd, int pid);
Linus Torvalds1da177e2005-04-16 15:20:36 -070038
Jeff Dike165dc592006-01-06 00:18:57 -080039#endif