Index: uspace/lib/c/generic/irc.c
===================================================================
--- uspace/lib/c/generic/irc.c	(revision 2fd26bbb5577f592b70747a25fba122b01bb9559)
+++ uspace/lib/c/generic/irc.c	(revision d75dc0561c7ce077e18de03f15c1afa664e05d5e)
@@ -61,4 +61,6 @@
 /** Enable interrupt.
  *
+ * Allow interrupt delivery.
+ *
  * @param irq	IRQ number
  */
@@ -80,10 +82,35 @@
 }
 
-
 /** Disable interrupt.
+ *
+ * Disallow interrupt delivery.
  *
  * @param irq	IRQ number
  */
 int irc_disable_interrupt(int irq)
+{
+	int rc;
+
+	if (irc_sess == NULL) {
+		rc = irc_init();
+		if (rc != EOK)
+			return rc;
+	}
+
+	async_exch_t *exch = async_exchange_begin(irc_sess);
+	rc = async_req_1_0(exch, IRC_DISABLE_INTERRUPT, irq);
+	async_exchange_end(exch);
+
+	return rc;
+}
+
+/** Clear interrupt.
+ *
+ * Clear/acknowledge interrupt in interrupt controller so that
+ * another interrupt can be delivered.
+ *
+ * @param irq	IRQ number
+ */
+int irc_clear_interrupt(int irq)
 {
 	int rc;
Index: uspace/lib/c/include/ipc/irc.h
===================================================================
--- uspace/lib/c/include/ipc/irc.h	(revision 2fd26bbb5577f592b70747a25fba122b01bb9559)
+++ uspace/lib/c/include/ipc/irc.h	(revision d75dc0561c7ce077e18de03f15c1afa664e05d5e)
@@ -40,4 +40,5 @@
 typedef enum {
 	IRC_ENABLE_INTERRUPT = IPC_FIRST_USER_METHOD,
+	IRC_DISABLE_INTERRUPT,
 	IRC_CLEAR_INTERRUPT
 } irc_request_t;
Index: uspace/lib/c/include/irc.h
===================================================================
--- uspace/lib/c/include/irc.h	(revision 2fd26bbb5577f592b70747a25fba122b01bb9559)
+++ uspace/lib/c/include/irc.h	(revision d75dc0561c7ce077e18de03f15c1afa664e05d5e)
@@ -38,4 +38,5 @@
 extern int irc_enable_interrupt(int);
 extern int irc_disable_interrupt(int);
+extern int irc_clear_interrupt(int);
 
 #endif
