Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/hv/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  mshv_eventfd.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * irqfd: Allows an fd to be used to inject an interrupt to the guest.
 * ioeventfd: Allow an fd to be used to receive a signal from the guest.
 * All credit goes to kvm developers.
 */


#ifndef __LINUX_MSHV_EVENTFD_H
#define __LINUX_MSHV_EVENTFD_H

#include <linux/poll.h>

#include "mshv.h"
#include "mshv_root.h"

/* struct to contain list of irqfds sharing an irq. Updates are protected by
 * partition.irqfds.resampler_lock
 */

struct mshv_irqfd_resampler {
 struct mshv_partition     *rsmplr_partn;
 struct hlist_head      rsmplr_irqfd_list;
 struct mshv_irq_ack_notifier rsmplr_notifier;
 struct hlist_node      rsmplr_hnode;
};

struct mshv_irqfd {
 struct mshv_partition      *irqfd_partn;
 struct eventfd_ctx      *irqfd_eventfd_ctx;
 struct mshv_guest_irq_ent      irqfd_girq_ent;
 seqcount_spinlock_t       irqfd_irqe_sc;
 u32         irqfd_irqnum;
 struct mshv_lapic_irq       irqfd_lapic_irq;
 struct hlist_node       irqfd_hnode;
 poll_table        irqfd_polltbl;
 wait_queue_head_t      *irqfd_wqh;
 wait_queue_entry_t       irqfd_wait;
 struct work_struct       irqfd_shutdown;
 struct mshv_irqfd_resampler     *irqfd_resampler;
 struct eventfd_ctx      *irqfd_resamplefd;
 struct hlist_node       irqfd_resampler_hnode;
};

void mshv_eventfd_init(struct mshv_partition *partition);
void mshv_eventfd_release(struct mshv_partition *partition);

void mshv_register_irq_ack_notifier(struct mshv_partition *partition,
        struct mshv_irq_ack_notifier *mian);
void mshv_unregister_irq_ack_notifier(struct mshv_partition *partition,
          struct mshv_irq_ack_notifier *mian);
bool mshv_notify_acked_gsi(struct mshv_partition *partition, int gsi);

int mshv_set_unset_irqfd(struct mshv_partition *partition,
    struct mshv_user_irqfd *args);

int mshv_irqfd_wq_init(void);
void mshv_irqfd_wq_cleanup(void);

struct mshv_ioeventfd {
 struct hlist_node    iovntfd_hnode;
 u64       iovntfd_addr;
 int       iovntfd_length;
 struct eventfd_ctx  *iovntfd_eventfd;
 u64       iovntfd_datamatch;
 int       iovntfd_doorbell_id;
 bool       iovntfd_wildcard;
};

int mshv_set_unset_ioeventfd(struct mshv_partition *pt,
        struct mshv_user_ioeventfd *args);

#endif /* __LINUX_MSHV_EVENTFD_H */

Messung V0.5
C=90 H=94 G=91

¤ Dauer der Verarbeitung: 0.10 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.