mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-25 00:22:02 +00:00

The existing sigio workaround implementation removes FDs from the poll when events are triggered, requiring users to re-add them via add_sigio_fd() after processing. This introduces a potential race condition between FD removal in write_sigio_thread() and next_poll update in __add_sigio_fd(), and is inefficient due to frequent FD removal and re-addition. Rewrite the implementation based on epoll and tgkill for improved efficiency and reliability. Signed-off-by: Tiwei Bie <tiwei.btw@antgroup.com> Link: https://patch.msgid.link/20250315161910.4082396-2-tiwei.btw@antgroup.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
23 lines
426 B
C
23 lines
426 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (C) 2002 - 2007 Jeff Dike (jdike@{linux.intel,addtoit}.com)
|
|
*/
|
|
|
|
#include <linux/interrupt.h>
|
|
#include <irq_kern.h>
|
|
#include <os.h>
|
|
#include <sigio.h>
|
|
|
|
/* These are called from os-Linux/sigio.c to protect its pollfds arrays. */
|
|
static DEFINE_MUTEX(sigio_mutex);
|
|
|
|
void sigio_lock(void)
|
|
{
|
|
mutex_lock(&sigio_mutex);
|
|
}
|
|
|
|
void sigio_unlock(void)
|
|
{
|
|
mutex_unlock(&sigio_mutex);
|
|
}
|