linux/include/linux/ism.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 *  Internal Shared Memory
 *
 *  Definitions for the ISM module
 *
 *  Copyright IBM Corp. 2022
 */
#ifndef _ISM_H
#define _ISM_H

#include <linux/workqueue.h>

struct ism_dmb {};

/* Unless we gain unexpected popularity, this limit should hold for a while */
#define MAX_CLIENTS
#define ISM_NR_DMBS

struct ism_dev {};

struct ism_event {};

struct ism_client {};

int ism_register_client(struct ism_client *client);
int  ism_unregister_client(struct ism_client *client);
static inline void *ism_get_priv(struct ism_dev *dev,
				 struct ism_client *client) {}

static inline void ism_set_priv(struct ism_dev *dev, struct ism_client *client,
				void *priv) {}

int  ism_register_dmb(struct ism_dev *dev, struct ism_dmb *dmb,
		      struct ism_client *client);
int  ism_unregister_dmb(struct ism_dev *dev, struct ism_dmb *dmb);
int  ism_move(struct ism_dev *dev, u64 dmb_tok, unsigned int idx, bool sf,
	      unsigned int offset, void *data, unsigned int size);

const struct smcd_ops *ism_get_smcd_ops(void);

#endif	/* _ISM_H */