[PATCH 1/4] cobalt/kernel: add abstract inband work submission API
Jan Kiszka
jan.kiszka at siemens.com
Tue Jan 19 14:46:33 CET 2021
On 17.01.21 16:11, Philippe Gerum wrote:
> From: Philippe Gerum <rpm at xenomai.org>
>
> Provide an abstract interface for triggering work handlers on the
> in-band execution stage (aka "secondary mode" in the old jargon),
> which can be implemented using ipipe_post_root_work() from the I-pipe,
> or as a Dovetail-aware irq_work.
>
> No functional change is introduced in the pre-existing code.
>
> Signed-off-by: Philippe Gerum <rpm at xenomai.org>
> ---
> .../kernel/ipipe/pipeline/inband_work.h | 32 +++++++++++++++++++
> 1 file changed, 32 insertions(+)
> create mode 100644 include/cobalt/kernel/ipipe/pipeline/inband_work.h
>
> diff --git a/include/cobalt/kernel/ipipe/pipeline/inband_work.h b/include/cobalt/kernel/ipipe/pipeline/inband_work.h
> new file mode 100644
> index 000000000..12ef07b00
> --- /dev/null
> +++ b/include/cobalt/kernel/ipipe/pipeline/inband_work.h
> @@ -0,0 +1,32 @@
> +/*
> + * SPDX-License-Identifier: GPL-2.0
> + *
> + * Copyright (C) 2019 Philippe Gerum <rpm at xenomai.org>
> + */
> +
> +#ifndef _COBALT_KERNEL_IPIPE_INBAND_WORK_H
> +#define _COBALT_KERNEL_IPIPE_INBAND_WORK_H
> +
> +#include <linux/ipipe.h>
> +
> +/*
> + * This field must be named inband_work and appear first in the
> + * container work struct.
> + */
> +struct pipeline_inband_work {
> + struct ipipe_work_header work;
> +};
> +
> +#define PIPELINE_INBAND_WORK_INITIALIZER(__work, __handler) \
> + { \
> + .work = { \
> + .size = sizeof(__work), \
> + .handler = (void (*)(struct ipipe_work_header *)) \
> + __handler, \
> + }, \
> + }
> +
> +#define pipeline_post_inband_work(__work) \
> + ipipe_post_work_root(__work, inband_work.work)
> +
> +#endif /* !_COBALT_KERNEL_IPIPE_INBAND_WORK_H */
>
All 4 applied to next.
Thanks,
Jan
--
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
More information about the Xenomai
mailing list