cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

sw_trigger.h (1775B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Industrial I/O software trigger interface
      4 *
      5 * Copyright (c) 2015 Intel Corporation
      6 */
      7
      8#ifndef __IIO_SW_TRIGGER
      9#define __IIO_SW_TRIGGER
     10
     11#include <linux/module.h>
     12#include <linux/device.h>
     13#include <linux/iio/iio.h>
     14#include <linux/configfs.h>
     15
     16#define module_iio_sw_trigger_driver(__iio_sw_trigger_type) \
     17	module_driver(__iio_sw_trigger_type, iio_register_sw_trigger_type, \
     18		      iio_unregister_sw_trigger_type)
     19
     20struct iio_sw_trigger_ops;
     21
     22struct iio_sw_trigger_type {
     23	const char *name;
     24	struct module *owner;
     25	const struct iio_sw_trigger_ops *ops;
     26	struct list_head list;
     27	struct config_group *group;
     28};
     29
     30struct iio_sw_trigger {
     31	struct iio_trigger *trigger;
     32	struct iio_sw_trigger_type *trigger_type;
     33	struct config_group group;
     34};
     35
     36struct iio_sw_trigger_ops {
     37	struct iio_sw_trigger* (*probe)(const char *);
     38	int (*remove)(struct iio_sw_trigger *);
     39};
     40
     41static inline
     42struct iio_sw_trigger *to_iio_sw_trigger(struct config_item *item)
     43{
     44	return container_of(to_config_group(item), struct iio_sw_trigger,
     45			    group);
     46}
     47
     48int iio_register_sw_trigger_type(struct iio_sw_trigger_type *tt);
     49void iio_unregister_sw_trigger_type(struct iio_sw_trigger_type *tt);
     50
     51struct iio_sw_trigger *iio_sw_trigger_create(const char *, const char *);
     52void iio_sw_trigger_destroy(struct iio_sw_trigger *);
     53
     54int iio_sw_trigger_type_configfs_register(struct iio_sw_trigger_type *tt);
     55void iio_sw_trigger_type_configfs_unregister(struct iio_sw_trigger_type *tt);
     56
     57static inline
     58void iio_swt_group_init_type_name(struct iio_sw_trigger *t,
     59				  const char *name,
     60				  const struct config_item_type *type)
     61{
     62#if IS_ENABLED(CONFIG_CONFIGFS_FS)
     63	config_group_init_type_name(&t->group, name, type);
     64#endif
     65}
     66
     67#endif /* __IIO_SW_TRIGGER */