#ifndef _ISM_H
#define _ISM_H
#include <linux/workqueue.h>
struct ism_dmb { … };
#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