forked from Qortal/Brooklyn
* 0day explit mitigation * Memory corruption prevention * Privilege escalation prevention * Buffer over flow prevention * File System corruption defense * Thread escape prevention This may very well be the most intensive inclusion to BrooklynR. This will not be part of an x86 suite nor it will be released as tool kit. The security core toolkit will remain part of kernel base.
71 lines
1.8 KiB
C
71 lines
1.8 KiB
C
/*
|
|
* Industrial I/O software device interface
|
|
*
|
|
* Copyright (c) 2016 Intel Corporation
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 as published by
|
|
* the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __IIO_SW_DEVICE
|
|
#define __IIO_SW_DEVICE
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/device.h>
|
|
#include <linux/iio/iio.h>
|
|
#include <linux/configfs.h>
|
|
|
|
#define module_iio_sw_device_driver(__iio_sw_device_type) \
|
|
module_driver(__iio_sw_device_type, iio_register_sw_device_type, \
|
|
iio_unregister_sw_device_type)
|
|
|
|
struct iio_sw_device_ops;
|
|
|
|
struct iio_sw_device_type {
|
|
const char *name;
|
|
struct module *owner;
|
|
const struct iio_sw_device_ops *ops;
|
|
struct list_head list;
|
|
struct config_group *group;
|
|
};
|
|
|
|
struct iio_sw_device {
|
|
struct iio_dev *device;
|
|
struct iio_sw_device_type *device_type;
|
|
struct config_group group;
|
|
};
|
|
|
|
struct iio_sw_device_ops {
|
|
struct iio_sw_device* (*probe)(const char *);
|
|
int (*remove)(struct iio_sw_device *);
|
|
};
|
|
|
|
static inline
|
|
struct iio_sw_device *to_iio_sw_device(struct config_item *item)
|
|
{
|
|
return container_of(to_config_group(item), struct iio_sw_device,
|
|
group);
|
|
}
|
|
|
|
int iio_register_sw_device_type(struct iio_sw_device_type *dt);
|
|
void iio_unregister_sw_device_type(struct iio_sw_device_type *dt);
|
|
|
|
struct iio_sw_device *iio_sw_device_create(const char *, const char *);
|
|
void iio_sw_device_destroy(struct iio_sw_device *);
|
|
|
|
int iio_sw_device_type_configfs_register(struct iio_sw_device_type *dt);
|
|
void iio_sw_device_type_configfs_unregister(struct iio_sw_device_type *dt);
|
|
|
|
static inline
|
|
void iio_swd_group_init_type_name(struct iio_sw_device *d,
|
|
const char *name,
|
|
struct config_item_type *type)
|
|
{
|
|
#if IS_ENABLED(CONFIG_CONFIGFS_FS)
|
|
config_group_init_type_name(&d->group, name, type);
|
|
#endif
|
|
}
|
|
|
|
#endif /* __IIO_SW_DEVICE */
|