To support SQs allocated to a poll group other than the controller's main poll group, we need to make sure to poll those SQs when we wake up and handle the controller interrupt. As they will be running in a separate SPDK thread, we will arrange for all poll groups to wake up when we receive an interrupt corresponding to a vfio-user message arriving. This can mean needless wakeups: we don't (yet) have a mechanism to only wake up the poll groups that correspond to a particular SQ write. Additionally, as we don't have any notion of a poll group per controller, this ends up polling all SQs in the entire poll group, not just the ones corresponding to the controller we were handling. As this has potential performance issues in many cases, it defaults to disabled. Signed-off-by: John Levon <john.levon@nutanix.com> Change-Id: I3d9f32625529455f8d55578ae9cd7b84265f67ab Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14120 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
77 lines
1.3 KiB
C
77 lines
1.3 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright (c) Intel Corporation.
|
|
* All rights reserved.
|
|
*/
|
|
|
|
/** \file
|
|
* Standard C headers
|
|
*
|
|
* This file is intended to be included first by all other SPDK files.
|
|
*/
|
|
|
|
#ifndef SPDK_STDINC_H
|
|
#define SPDK_STDINC_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Standard C */
|
|
#include <assert.h>
|
|
#include <ctype.h>
|
|
#include <errno.h>
|
|
#include <inttypes.h>
|
|
#include <limits.h>
|
|
#include <math.h>
|
|
#include <stdarg.h>
|
|
#include <stdbool.h>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <strings.h>
|
|
#include <time.h>
|
|
|
|
/* POSIX */
|
|
#include <arpa/inet.h>
|
|
#include <dirent.h>
|
|
#include <fcntl.h>
|
|
#include <ifaddrs.h>
|
|
#include <netdb.h>
|
|
#include <poll.h>
|
|
#include <pthread.h>
|
|
#include <semaphore.h>
|
|
#include <signal.h>
|
|
#include <syslog.h>
|
|
#include <termios.h>
|
|
#include <unistd.h>
|
|
#include <net/if.h>
|
|
#include <netinet/in.h>
|
|
#include <netinet/tcp.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/mman.h>
|
|
#include <sys/resource.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/uio.h>
|
|
#include <sys/un.h>
|
|
#include <sys/user.h>
|
|
#include <sys/wait.h>
|
|
#include <regex.h>
|
|
|
|
/* GNU extension */
|
|
#include <getopt.h>
|
|
|
|
/* Linux */
|
|
#ifdef __linux__
|
|
#include <sys/eventfd.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* SPDK_STDINC_H */
|